活到老,学到老
BlogJava
::
首页
::
联系
::
聚合
::
管理
9 Posts :: 1 Stories :: 2 Comments :: 0 Trackbacks
常用链接
我的随笔
我的评论
我的参与
最新评论
留言簿
给我留言
查看公开留言
查看私人留言
我参与的团队
随笔分类
Java企业开发(3)
Jvm,Java Core(1)
Web(1)
设计模式(3)
随笔档案
2011年4月 (4)
2011年3月 (1)
2010年2月 (2)
2010年1月 (1)
搜索
最新评论
1. re: 观察者模式
感觉例子不是特别好~~
--晴天
2. re: JMX In Action 总结(二)--HelloWorld例子
写得很不错。多谢分享。
--兵丸网络
阅读排行榜
1. URI和URL的区别(5957)
2. JMX In Action 总结(二)--HelloWorld例子(2950)
3. JMX In Action 总结(一)(2259)
4. Restful Web Services 读书笔记(一)(2026)
5. java Class文件解析实例(1399)
评论排行榜
1. JMX In Action 总结(二)--HelloWorld例子(1)
2. 观察者模式(1)
3. 策略模式(0)
4. JMX In Action 总结(一)(0)
5. Restful Web Services 读书笔记(一)(0)
2011年4月3日
#
观察者模式
摘要: 概念:观察者模式定义了一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新。 举个网上商城的例子,比如很多顾客对某个商品感兴趣,把商品收藏,当该商品降价、促销、有货了等事件发生时,就会发Email通知顾客。 UML图...
阅读全文
posted @
2011-04-07 22:29
simon.shen 阅读(320) |
评论 (1)
|
编辑
收藏
策略模式
从今天开始,把常用的设计模式都简单的整理一遍,希望每个星期能至少整理2个模式吧,先从简单的策略模式开始。
概念:
它定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法的变化不会影响到使用算法的客户。
策略模式很简单,实际上就是OO中的多态,举个例子,某商场要进行促销,对于普通顾客打88折,对于银卡客户在88折基础上再满400减160,对于金卡客户在88折基础上再满400减200。
UML图如下所示:
接口DiscountStrategy代码如下:
public
interface
DiscountStrategy
{
public
double
discount(
double
sum);
}
类GeneralDiscountStrategy类代码如下:
public
class
GeneralDiscountStrategy
implements
DiscountStrategy
{
@Override
public
double
discount(
double
sum)
{
return
sum
*
0.88
;
}
}
类SilverDiscountStrategy类代码如下:
public
class
SilverDiscountStrategy
implements
DiscountStrategy
{
@Override
public
double
discount(
double
sum)
{
sum
=
sum
*
0.88
;
int
t
=
(
int
) sum
/
400
;
sum
=
sum
-
t
*
16
0
;
return
sum;
}
}
类GoldenDiscountStrategy代码如下:
public
class
GoldenDiscountStrategy
implements
DiscountStrategy
{
@Override
public
double
discount(
double
sum)
{
sum
=
sum
*
0.88
;
int
t
=
(
int
) sum
/
400
;
sum
=
sum
-
t
*
200
;
return
sum;
}
}
类Cashier代码如下:
public
class
Cashier
{
private
DiscountStrategy discountStrategy
=
new
GeneralDiscountStrategy();
public
void
getDiscountStrategy(CustomerLevel customerLevel)
{
switch
(customerLevel)
{
case
GENERAL:
discountStrategy
=
new
GeneralDiscountStrategy();
break
;
case
SILVER:
discountStrategy
=
new
SilverDiscountStrategy();
break
;
case
GOLDEN:
discountStrategy
=
new
GeneralDiscountStrategy();
break
;
}
}
public
double
calculate(
double
price,
int
num)
{
return
discountStrategy.discount(price
*
num);
}
}
posted @
2011-04-06 22:56
simon.shen 阅读(341) |
评论 (0)
|
编辑
收藏
JMX In Action 总结(二)--HelloWorld例子
摘要: 这篇写一个简单的HelloWorld例子。 首先准备环境,我使用的JDK1.6,1.5应该也可以。还需要去oracle下载JMX RI包,地址为:http://www.oracle.com/technetwork/java/javase/tech/download-jsp-141676.html,下载...
阅读全文
posted @
2011-04-05 16:20
simon.shen 阅读(2950) |
评论 (1)
|
编辑
收藏
JMX In Action 总结(一)
这是我读了JMX In Action以后的总结,这篇文章是这个系列的第一篇,主要介绍一下什么是JMX,为什么要使用JMX?以及简单阐述一下JMX的架构。
什么是JMX?
首先看一下
维基百科的定义:JMX(Java Management Extensions,即Java管理扩展)是Java平台上为应用程序、设备、系统等植入管理功能的框架。
JMX可以跨越一系列异构操作系统平台、系统体系结构和网络传输协议,灵活的开发无缝集成的系统、网络和服务管理应用。
随着企业 IT 规模的不断增长,IT 资源(IT resource)数量不断增加,IT 资源的分布也越来越分散。IT资源主要包括网络和应用等。管理网络(硬件)的主要工具是
简单网络管理协议(SNMP),硬件厂商一般都会在设备中提供SNMP hooks,但SNMP开发不是件容易的事情,而且需要掌握特定的语言,对JAVA开发者绝非易事。
有些企业开发的应用的时候,是不会考虑运行时配置和管理问题。有些企业直接在产品中开发管理工具和界面。也有一些企业直接使用应用服务器或web服务器的管理工具。
现实世界的IT资源管理需求主要有以下一些:
1、监控平台和硬件的健康。硬件可以通过SNMP,WEB服务器和应用服务器可以通过他们自己的管理工具。数据库也是一样等。
2、配置应用层面的资源。比如配置应用在查询结果中每页显示的数量,配置数据库连接池,或者外部请求数等。
3、收集应用程序的统计信息。如多少成功订单,多少失败订单等。
4、日志级别,改变日志级别。出问题的时候,可以通过改变日志级别来打印调试信息,快速定位问题。
5、监视服务器的性能、负载,通过email、sms等通知关键性事件,比如服务器负载超过预设的界限。
要满足这些需求往往是非常昂贵和困难的,管理员通常需要通过不同的工具来管理不同的服务和硬件。 如果使用JMX,创建一个满足上面需求的管理系统将是廉价、更加灵活、所需时间更短。
使用JMX的好处
1、非常容易使用。特别是对一个JAVA程序员,要理解SNMP是困难的。而JMX对他来说非常容易。
2、利用现有的技术:现有的管理工具可以插入JMX,JMX提供了很多协议(SNMP、HTTP)和传输方式(如RMI),如果原有的应用和设备没有提供管理能力,则可以创建JMX代理提供管理能力。
3、模块化。以模块化的方式创建你的管理环境。
4、警告、事件和统计信息。
JMX提供了一套通知系统,充分利用了面向对象优势,通知提供了不仅仅是数据,而是一个有分布式JAVA对象,封装了数据和行为。例如,你发送了一个服务器负载的通知,里面还包含了一个显示负载重要性的级别的机制,说白了就是对象里面有个方法,可以判定负载的严重程度。
5、快速的监控解决方案。不同的开发人员只需要自己开发MBean,而不需要花很多的时间在相互的协作上面,这些MBean分布在不同的主机上,但可以通过一个管理工具就可以管理所有的这些应用。
JMX的一些术语
1、可管理资源(
Manageable resource
)
可以是任何的应用、设备、或者其他存在的实体,能够被java访问和包装。是被JMX MBean管理的资源。
2、MBean(Managed Bean)
是满足某些命名规则和继承JMX 规范的java类,为可管理资源的管理和访问暴露接口。通过属性和行为来暴露接口。有这3类:Standard, Dynamic, and Model MBeans。
3、MBean Server
管理一组MBean的JAVA类。是JMX 管理环境核心。是MBean的注册器。
4、JMX Agent
JMX代理是为管理一组MBean提供一系列服务的java进程。是一个MBean Server的容器,它还提供了一些有用的服务:创建MBean之间的关系,动态加载类,简单的监控服务,定时器服务。Agent有一个协议适配器和连接器集合能使外部程序连接到他们。
5、Protocol adapters and connectors
协议适配器和连接器是位于JMX Agent内部的对象。把Agent暴露给管理程序和协议。一个Agent可以有很多适配器和连接器。
6、Management application
连接到JMX Agent的用户应用程序。
7、Notification
通知是Mbean或者Mbean server发送的java对象,他们封装了事件、警告、或者其他的一般信息。其他的Mbean或者java对象可以注册成为监听器来接受通知。
8、Instrumentation(设备化)
用MBean暴露一个可管理资源的过程。
JMX架构
JMX架构主要分为三层:
Distributed layer
,
Agent layer
,
Instrumentation layer,如下图所示:
1、
Distributed layer(分布式层)
属于JMX架构的最外层,这层主要负责使JMX Agent能对外部程序可用。 又分为两种:一种通过不同的协议(如SNMP,HTTP)来为MBean提供可见性。
另一种是把Agent API暴露给其他的分布式技术如RMI。
2、
The agent layer
(代理层)
它包含的最主要的组件是MBean Server,它还包括4个代理服务使管理MBean更加容易,它们分别是: 定时器(timer)、监控服务、动态MBean加载、和MBean关系服务。Agent可以和被管理的资源在同一个主机上,也可以是远程的。
3、
The instrumentation layer
这是最靠近资源的一层,它包含了注册在Agent里面的MBean。
4、
Notifications
除了架构中的三层以外,JMX提供了一个通知机制,类似于JAVA事件模型。通知机制是管理系统的最后必须的组件。Agent和MBean可以使用通知机制来发送警告或信息给管理应用。
以上就是JMX架构的主要内容,下一篇构建一个HelloWorld的JMX程序。
posted @
2011-04-03 23:08
simon.shen 阅读(2259) |
评论 (0)
|
编辑
收藏
Copyright @ simon.shen
Powered by:
.Text
and
ASP.NET
Theme by:
.NET Monster