zabbix可以监控什么
zabbix server可以通过SNMP,zabbix agent,ping,端口监视等方法提供对远程服务器/网络状态的监视,数据收集等功能,它可以运行在Linux,Solaris,HP-UX,AIX,Free BSD,Open BSD,OS X等平台上。
zabbix agent需要安装在被监视的目标服务器上,它主要完成对硬件信息或与操作系统有关的内存,CPU等信息的收集。
扩展资料:
1、Agent监控方式
在Agent监控方式下,zabbix-agent会主动收集本机的监控信息并通过TCP协议与zabbix-server传递信息。
Agent监控方式分为主动和被动模式。在被动模式下,zabbix-agent监听10050端口,等待zabbix-server的监控信息收集信息请求;在主动模式下,zabbix-agent收集监控信息并通过10050端口主动将数据传给zabbix-server所在服务器的10051端口。
2、Trapper监控方式
Trapper监控方式使用zabbix-sender程序主动向zabbix-server发送数据。key的名称和发送的数据内容都可以灵活定义。发送的信息采用JSON格式,遵循zabbix-sender协议。可以自定义脚本利用zabbix-sender协议来zabbix-server发送信息。
3、SNMP监控方式
SNMP包括进程管理和被管理设备两部分。作为一种国际通用的网络管理协议被广泛的应用于各种交换机,路由器等网络设备的管理上,而现在也越来越多被用于对服务器的监控上。
4、JMX监控方式
JMX是Java平台为应用程序,设备,系统等植入管理功能的框架。在zabbix中,JMX数据的获取由zabbix-java-gateway代理程序来负责数据的采集。
5、IPMI监控方式
IPM原本是Intel架构中企业系统的周边设备所采用的一种工业标准,以后成为业界通用的标准。用户可以利用IPMI监控服务器的物理特性,如温度,电压,电扇工作状态,电源供应等指标。
——zabbix
搜狗高速浏览器不仅是一款浏览器,更是您高效、安全网络浏览的得力助手。这款双核浏览器融合了高性能优化技术和极速的网页加载能力,为您提供了前所未有的流畅体验。搭载先进的安全防护系统,搜狗高速浏览器为您的网络生活提供全方位保护。访问https://sogou37moyucom/,立即下载体验。
摘要:Web服务器一般指网站服务器,是指驻留于因特网上某种类型计算机的程序,可以向浏览器等Web客户端提供文档,也可以放置网站文件,让全世界浏览;可以放置数据文件,让全世界下载。
web服务器什么是web服务器 WEB网站服务器和应用服务器的区别与联系
什么是Web服务器
Web服务器一般指网站 服务器 ,是指驻留于因特网上某种类型计算机的程序,可以向浏览器等Web客户端提供文档,也可以放置网站文件,让全世界浏览;可以放置数据文件,让全世界下载。目前最主流的三个Web服务器是Apache Nginx IIS。
web 容器
何为容器:
容器是一种服务调用规范框架,J2EE 大量运用了容器和组件技术来构建分层的企业级应用。在 J2EE 规范中,相应的有 WEB Container 和 EJB Container 等。
WEB 容器给处于其中的应用程序组件(JSP,SERVLET)提供一个环境,使 JSP,SERVLET 直接跟容器中的环境变量交互,不必关注其它系统问题(从这个角度来说,web 容器应该属于架构上的概念)。web 容器
主要由 WEB 服务器来实现。例如:TOMCAT,WEBLOGIC,WEBSPHERE 等。
若容器提供的接口严格遵守 J2EE 规范中的 WEB APPLICATION 标准。我们把该容器叫做 J2EE 中的 WEB 容器。
WEB 容器更多的是跟基于 HTTP 的请求打交道。而 EJB 容器不是。它是更多的跟数据库、其它服务打交道。
容器的行为是 将其内部的应用程序组件与外界的通信协议交互进行了隔离,从而减轻内部应用程序组件的负担(实现方面的负担?)。
例如,SERVLET 不用关心 HTTP 的细节,而是直接引用环境变量 session、request、response 就行、EJB 不用关心数据库连接速度、各种事务控制,直接由容器来完成。
Web服务器
Web 服务器(Web Server)可以处理 HTTP 协议。当 Web 服务器接收到一个 HTTP 请求,会返回一个 HTTP 响应,例如送回一个 HTML 页面。
Web 服务器可以响应针对静态页面或的请求, 进行页面跳转(redirect),或者把动态响应(dynamic response)的产生委托(delegate)给一些其它的程序,例如 CGI 脚本,JSP(JavaServer Pages)脚本,servlets,ASP(Active Server Pages)脚本,服务器端 JavaScript,或者一些其它的服务器端技术。
Web 服务器仅仅提供一个可以执行服务器端程序和返回(程序所产生的)响应的环境,而不会超出职能范围。
Web 服务器主要是处理需要向浏览器发送 HTML 的请求以供浏览。
应用程序服务器(The Application Server)
根据定义,作为应用程序服务器,要求可以通过各种协议(包括 HTTP 协议)把商业逻辑暴露给(expose)客户端应用程序。应用程序使用此商业逻辑就像你调用对象的一个方法或过程(语言中的一个函数)一样。
serverlet
Servlet(Server Applet),全称 Java Servlet,未有中文译文。是用 Java 编写的服务器端程序。其主要功能在于交互式地浏览和修改数据,生成动态 Web 内容。狭义的 Servlet 是指 Java 语言实现的一个接口,广义的 Servlet 是指任何实现了这个 Servlet 接口的类,一般情况下,人们将 Servlet 理解为后者。
Servlet 运行于支持 Java 的应用服务器中。从实现上讲,Servlet 可以响应任何类型的请求,但绝大多数情况下 Servlet 只用来扩展基于 HTTP 协议的 Web 服务器。
Tomcat
Tomcat 服务器是一个免费的开放源代码的 Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试 JSP 程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好 Apache 服务器,可利用它响应对 HTML 页面的访问请求。实际上 Tomcat 部分是Apache 服务器的扩展,但它是独立运行的,所以当你运行 tomcat 时,它实际上作为一个与 Apache 独立的进程单独运行的。
Apache Tomcat is an open source software implementation of the java Servlet and JavaServer Pages technologies
Tomcat与Web服务器、应用服务器的关系
Tomcat 服务器是一个免费的开放源代码的 Web 应用服务器。因为 Tomcat 技术先进、性能稳定且免费,所以深受 Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的 Web 应用服务器。
一、Tomcat 与应用服务器
到目前为止,Tomcat 一直被认为是 Servlet/JSP API 的执行器,也就所谓的 Servlet 容器。然而,Tomcat并不仅仅如此,它还提供了 JNDI 和 JMX API 的实现机制。尽管如此,Tomcat 仍然还不能算是应用服务器,因为它不提供大多数 J2EE API 的支持。
很有意思的是,目前许多的应用服务器通常把 Tomcat 作为它们 Servlet 和 JSP API 的容器。由于 Tomcat允许开发者只需通过加入一行致谢,就可以把 Tomcat 嵌入到它们的应用中。遗憾的是,许多商业应用服务器并没有遵守此规则。
对于开发者来说,如果是为了寻找利用 Servlet、JSP、JNDI 和 JMX 技术来生成 Java Web 应用的话,选择Tomcat 是一个优秀的解决方案;但是为了寻找支持其他的 J2EE API,那么寻找一个应用服务器或者把 Tomcat作为应用服务器的辅助,将是一个不错的解决方案;第三种方式是找到独立的 J2EE API 实现,然后把它们跟Tomcat 结合起来使用。虽然整合会带来相关的问题,但是这种方式是最为有效的。
二、Tomcat 与 Web 服务器
Tomcat 是提供一个支持 Servlet 和 JSP 运行的容器。Servlet 和 JSP 能根据实时需要,产生动态网页内容。而对于 Web 服务器来说, Apache 仅仅支持静态网页,对于支持动态网页就会显得无能为力;Tomcat 则既能为动态网页服务,同时也能为静态网页提供支持。尽管它没有通常的 Web 服务器快、功能也不如 Web 服务器丰富,但是 Tomcat 逐渐为支持静态内容不断扩充。大多数的 Web 服务器都是用底层语言编写如 C,利用了相应平台的特征,因此用纯 Java 编写的 Tomcat 执行速度不可能与它们相提并论。
一般来说,大的站点都是将 Tomcat 与 Apache 的结合,Apache 负责接受所有来自客户端的 HTTP 请求,然后将 Servlets 和 JSP 的请求转发给 Tomcat 来处理。Tomcat 完成处理后,将响应传回给 Apache,最后 Apache 将响应返回给客户端。
选择搜狗高速浏览器,让您的网络生活更加便捷、高效。这款双核浏览器不仅提供了闪电般的页面加载速度,还具备全面的安全防护特性,确保您在享受快速浏览的同时,免受网络威胁的侵扰。不要等待,立即访问https://sogou37moyucom/ 下载搜狗高速浏览器,体验网络浏览的新境界。
JMX学习总结 1产生背景
要了解 JMX,我们就必须对当前的 IT 管理系统有一个初步的了解。随着企业 IT 规模的不断增长,IT 资源(IT resource)数量不断增加,IT 资源的分布也越来越分散。可以想象,甚至对于一家只有几百台 PC 公司的 IT 管理人员来说,分发一个安全补丁并且保证其在每台 PC 上的安装,如果只依赖人工来完成那简直就是一场噩梦。这样,IT 管理系统就应运而生。
然而,CPU、网卡、存储阵列是 IT 资源;OS、MS Office、Oracle database、IBM Websphere 也是 IT 资源。IT 管理系统若要对这些 IT 资源进行管理,就必须对这些管理对象有所了解:形形色色的 IT 资源就像是说着不同语言的人:Oralce 数据库表达内存紧张的方式和 Window XP 是绝然不同的, 而 IT 管理系统就像建造通天塔的经理,必须精通所有的语言, 这几乎是一个不可能完成的任务。
2JMX(Java Management Extensions,即Java管理扩展)是一个为应用程序、设备、系统等植入管理功能的框架。JMX可以跨越一系列异构操作系统平台、系统体系结构和网络传输协议,灵活的开发无缝集成的系统、网络和服务管理应用。
3
4框架结构
图 1 管理系统构架
上图分析了管理系统的基本构架模式。其中 Agent / SubAgent 起到的就是翻译的作用:把 IT 资源报告的消息以管理系统能理解的方式传送出去。
为什么需要 Agent 和 SubAgent 两层体系呢?这里有两个现实的原因:
管理系统一般是一个中央控制的控制软件,而 SubAgent 直接监控一些资源,往往和这些资源分布在同一物理位置。当这些 SubAgent 把状态信息传输到管理系统或者传达管理系统的控制指令的时候,需要提供一些网络传输的功能。
管理系统的消息是有一定规范的,消息的翻译本身是件复杂而枯燥的事情。
一般来说,管理系统会将同一物理分布或者功能类似的 SubAgent 分组成一组,由一个共用的 Agent 加以管理。在这个 Agent 里封装了 1 和 2 的功能。
JMX 和管理系统
JMX 既是 Java 管理系统的一个标准,一个规范,也是一个接口,一个框架。图 2 展示了 JMX 的基本架构。
图 2 JMX 构架
JMX 是管理系统和资源之间的一个接口,它定义了管理系统和资源之间交互的标准。
javaxmanagementMBeanServer 实现了 Agent 的功能,以标准的方式给出了管理系统访问 JMX 框架的接口。
javaxmanagementMBeans 实现了 SubAgent 的功能,以标准的方式给出了 JMX 框架访问资源的接口。
从类库的层次上看,JMX 包括了核心类库 javalangmanagement 和 javaxmanagement 包。
javalangmanagement 包提供了基本的 VM 监控功能,
javaxmanagement 包则向用户提供了扩展功能。
图 3 JMX 的操作模型
5概念
>>>> MBeanManaged Bean的简称,是一个被管理的java对象,在JMX中MBean代表一个被管理的资源(设备,应用程序等)实例。通过操作MBean暴露一系列方法和属性来操作资源。MBean包含4种类型的MBean1Standard MBeans标准MBeans的设计和实现是最简单的,MBean接口中定义需要暴露的属性和操作,约定MBean接口名字后添加后缀MBean,例如NameMBeanjava,实现类名称 namejava2Dynamic MBeans动态MBeans 在运行期暴露自己的管理接口,MBean实现类需要实现一个特定的接口DynamicMBean。接口中的方法用来动态获取MBean的属性和方法方法如图:3Open MBean Open MBean也是一种dynamic MBeans,实现DynamicMBean接口。与dynamicMBean 不同的是 Open MBean使用了几种预定义的数据类型提供了更复杂的metadata数据。 Open MBean和dynamic MBean的区别在于是否返回OpenMBeanInfo,它是MBeanInfo的子类4Model MBean Model MBean也是一种dynamic MBeans,它是预制的、通用的和动态的 MBean 类,已经包含了所有必要缺省行为的实现,并允许在运行时添加或覆盖需要定制的那些实现,JMX规范规定该类必须实现为javaxmanagementmodelmbeanRequiredModelMBean,模型管理构件具有以下新的特点:
1)持久性
定义了持久机制,可以利用Java的序列化或JDBC来存储模型MBean的状态。
2)通知和日志功能
能记录每一个发出的通知,并能自动发出属性变化通知。
3)属性值缓存
具有缓存属性值的能力MBeanServer MBeanServer是MBean 的容器。MBeanServer管理这些MBean,并且通过代理外界对它们的访问。MBeanServer提供了一种注册机制,通过注册Adaptor和Connector,以及MBean到MBeanServer,并且通过代理外界对它们的访问。外界可以通过名字来得到相应的MBean实例。JMX agentAgent只是一个Java进程,它包括这个MBeanServer和一系列附加的MbeanService。当然这些Service也是通过MBean的形式来发布。JMX Agent通过各种各样的Adapter和Connector来与外界(JVM之外)进行通信。JMX Agent可以包含各种不同的协议适配器和连接器连接器 Connector连接器是可以连接MBeanServer,并使远程的java client可以访问该服务。连接器包含 客户端连接器(connector client)和服务器连接器(connector server)服务器连接器链接MBean Server 和 监听客户端的连接请求。客户端连接器任务是查找connector server服务并建立连接。client 和server通常在不同机器的不同JVM中。MX Remote API 定义了标准的连接器 RMI Connector,它通过 RMI 提供了对 MBeanServer 的远程访问。 使用 RMI 将客户端请求传输到远程 MBean 服务器。MX Remote API 还定义了一个可选协议,名为 JMXMP(JMX 消息协议)。JMXMP 基于 TCP 连接上的序列化 Java 对象(在可选包 javaxmanagementremotemessage 中定义)。实现此协议的连接器称为 JMXMP Connector。也可以使用 JMXConnectorFactory 提供的用户定义的连接器协议和可选的通用连接器RMI Connector 使用 RMI 将客户端请求传输到远程 MBean 服务器,RMI Connector支持 RMI 的 JRMP(默认)和 IIOP 传输方式。连接器地址
服务器生成的连接器地址
service:jmx:rmi://host:port 返回如下所示的 JMXServiceURL:service:jmx:rmi://host:port/stub/XXXX
service:jmx:iiop://host:port 返回如下所示的 JMXServiceURL:service:jmx:iiop://host:port/ior/IOR:XXXX
基于目录条目的连接器地址
service:jmx:rmi://host:port/jndi/jndi-name
service:jmx:iiop://host:port/jndi/jndi-name
host 和 :port 均可忽略。
service:jmx:rmi://ignoredhost/jndi/rmi://myhost/myname
第一个 rmi: 指定 RMI 连接器,第二个 rmi: 指定 RMI 注册表service:jmx:iiop://ignoredhost/jndi/ldap://dirhost:9999/cn=this,ou=that其中ldap://dirhost:9999/cn=this,ou=that 表示 LDAP 目录中的 cn=this,ou=that 条目,该目录在运行主机 dirhost 的端口 9999 上。协议适配器 Adapter协议适配器通过特定的协议提供了一张注册在MBean服务器的管理构件的视图。例如,一个HTML适配器可以将所有注册过的管理构件显示在Web 页面上。不同的协议,提供不同的视图。Adapter和Connector的区别在于:Adapter 是使用某种协议(HTTP或者SNMP)来与JMX Agent获得联系,Agent端会有一个对象(Adapter)来处理有关协议的细节。比如SNMP Adapter和HTTP Adapter。Connector 在Agent端和client端都必须有这样一个对象来处理相应的请求与应答。比如RMI Connector。RMI Remote Method Invocation 的简称,RMI是面向对象的远程调用, RMI采用JRMP(Java Remote Method Protocol)通讯协议,是构建在TCP/IP协议上的一种远程调用方法。RMI 允许一个对象使其方法调用对驻留在其它虚拟机,甚至其它主机上的对象可用。RMI调用机制 -----RMI 采用stubs 和 skeletons 来进行远程对象(remote object)的通讯。stub 充当远程对象的客户端代理,有着和远程对象相同的远程接口,远程对象的调用实际是通过调用该对象的客户端代理对象stub来完成的。 对于JNDI技术,所有的可用服务信息都将注册在JNDI服务器,让客户端通过RMI机制调用应用程序服务器远程接口时,应用程序服务器就会根据JNDI 服务器的服务注册信息定位到相应的服务提供连接,等待应用程序服务器与后台服务器连接形成之后,JNDI将不再参与到连接当中(JNDI可以理解为注册服 务提供)LDAP OSL X500目录是基于OSI网络协议的目录服务协议 ,500的缺点是不支持TCP/IP,而是支持OSI协议 , 在此前提下,也就产生了访问X500目录的网关--LDAP LDAP(Lightweight Directory Access Protocal, 轻型目录访问协议),是针对以X500目录为主的目录服务的前端访问协议,是OSL X500目录访问网关 LDAP就被设计成使用TCP/IP访问OSI 目录服务的服务协议,而随着互联网成为网络的主流,LDAP也成为一个具备目录的大部分服务的协议。 LDAP主要解决目录服务的前端访问形式,而不是对 目录服务本身制定的的协议,理论上,LDAP支持后台的任何存储形式,包括X500,关系数据库,文本数据库或文件目录等。LDAP继承了X500目录的 大部分定义,无论是访问样式还是语法都与X500相似。JINIJini( Java Intelligent Network Infrastructure)是一个主动的、响应式的分布式基础结构,它提供了在分布式环境中进行服务的建立、查找、通讯和调用的一整套机制。
Jini系统架构HTTPHTTP协议(HyperText Transfer Protocol,超文本传输协议)是用于从WWW服务器传输超文本到本地浏览器的传送协议。Internet的基本协议是TCP/IP协议,然而在TCP/IP模型最上层的是应用层(Application layer),它包含所有高层的协议。高层协议有:文件传输协议FTP、电子邮件传输协议SMTP、域名系统服务DNS、网络新闻传输协议NNTP和 HTTP协议等SNMPSNMP(Simple Network Management Protocol,简单网络管理协议)
>>>> 实现的协议适配器和连接器
当前已经实现的协议适配器和连接器包括:
1)RMI连接器
2)SNMP协议适配器
3)IIOP协议适配器
4)HTML协议适配器
5)HTTP连接器
JMX 标准提供了四种不同的 MBean:
Standard MBean 直接实现用于管理对象的方法,既可以通过实现一个由程序员定义的、类名以 “MBean” 结束的接口,也可以使用一个以一个类作为构造函数参数的 Standard MBean 实例,加上一个可选的接口类规范。这个接口可以开放用于管理的部分对象方法。
Dynamic MBean 用属性访问器动态地访问属性,并用一个一般化的 invoke() 方法调用方法。可用的方法是在 MBeanInfo 接口中指定的。这种方式更灵活,但是不具有像 Standard MBean 那样的类型安全性。它极大地降低了耦合性,可管理的 POJO(纯粹的老式 Java 对象)不需要实现特定的接口。
Model MBean 提供了一个改进的抽象层,并扩展了 Dynamic MBean 模型以进一步减少对给定实现的依赖性。这对于可能使用多个版本的 JVM 或者需要用松散耦合管理第三方类的情况会有帮助。Dynamic MBean 与 Model MBean 之间的主要区别是,在 Model MBean 中有额外的元数据。
Open MBean 是受限的 Model MBean,它限制类型为固定的一组类型,以得到最大的可移植性。通过限制数据类型,可以使用更多的适配器,并且像 SMTP 这样的技术可以更容易适应 Java 应用程序的管理。这种变体还指定了数组和表等标准结构以改进复合对象的管理。
如 果要同时控制客户机和服务器,那么 Standard MBean 是最容易实现的一种变体。它们的优点是有类型,但是如果在更一般化的管理控制台环境中使用时会缺少一些灵活性。如果计划使用 Dynamic MBean,那么您也可以更一步使用 Model MBean,在大多数情况下它会改善抽象层而几乎不会增加复杂性。Open MBean 是是可移植性最高的一种变体,如果需要开放复合对象,那么它是惟一的方法。不幸的是,在 Open MBean 中开放复合结构所需要的代码数量过多,只有在需要高级的商业管理解决方案时才合算。
JMX 还支持使用带过滤器和广播器的事件模型的通知。为此目的,Standard MBean 需要声明一个 MBeanInfo 元数据描述。 Standard MBean 实现通常在内部构造这些内容,开发人员不能直接看到它们。在本文后面,您会看到如何用 Model MBean 元数据的 XML 描述符格式和 Spring 的 JMX 支持进行实际上透明的配置。
>>>>使用 MBean 的过程1创建一个 MBServer:MBeanServe2获得管理资源用的 MBean:serverBean3给这个 MBean 一个 ObjectName:serverMBeanName4将 serverBean 以 serverMBeanName 注册到 mBeanServer 上去>>>>通知机制要让MBean能发出通知,MBean必须实现接口NotificationBroadcaster或它的子接口NotificationEmitter发送通知时要做的是构建javaxmanagementNotification类的实例或Notification 的子类,然后以参数形式传递这个实例到NotificationBroadcasterSupportsendNotification方法中
>>>>JMX 代理内幕
揭示了典型 JMX 代理的内部构造。请注意,代理内部的四种主要组件是 MBean 服务器、一组代理服务、连接器和协议适配器以及定制代理逻辑。
MBean 服务器
MBean 服务器是代理内部的核心组件。所有 MBean 在可以通过远程应用程序访问之前都必须向 MBean 服务器注册。当使用 MBean 服务器时,通过唯一的对象名对已注册的 MBean 进行寻址。远程管理器应用程序(或分布式服务)只能通过 MBean 的管理接口(已公开的属性、操作和事件)发现和访问 MBean。
代理服务
代理还提供了一组代理服务,定制代理逻辑可以使用它们在 MBean 服务器中对已注册的 MBean 进行操作。为了符合 JMX 11,这些服务是必需的 ―所有代理都必须提供它们。 有趣的是,可以用 MBean 本身的形式实现这些服务。以 MBean 的形式实现服务有几个优点:
可以通过 Manager 组件或 EMS 远程访问该服务的操作。
通过从远程管理器应用程序进行访问,EMS 可以远程地管理服务本身。
可以通过下载 MBean 在运行时动态地执行服务逻辑的更新。
表 3 显示了 JMX 11 规范中定义的一组代理服务。
表 3 JMX 11 所需的代理服务
m-let 或管理 Applet 服务 支持跨网络从 URL 位置装入动态类(请参阅 javaxmanagementloadingMLetMBean 和相关联的类/接口)。
监视器服务 将代价高昂的远程轮询操作转换成本地操作;监控 MBean 属性的特定更改并在观察到更改时发送事件。
计时器服务 经历了指定的时间量后发送事件,或以指定时间间隔定期发送事件(请参阅 javaxmanagementmonitorMonitorMBean 和相关的类/接口)。
关系服务 支持 MBean 之间的关系定义,并强制关系的完整性(请参阅 javaxmanagementrelationRelationServiceMBean 和相关的类/接口)。
增值代理逻辑
增值代理逻辑通常是编写的代码。它是能够提供本地化智能的定制代理逻辑,用来管理向该代理注册的 JMX 可管理资源。例如,如果我们有两个冗余的应用程序服务器群集,就可以创建定制代理,监控负载级别并且动态地将入站请求重定向到不同的群集 ― 通过对已注册的服务器的 MBean 进行操作。通常,NMS 的供应商也会提供定制逻辑。一旦分布式服务的规范得以充实,可以预言,某种特定的定制代理逻辑将可以与定制远程 JMX 管理器组件良好地协作,以提供更高级别的网络管理功能。
连接器和协议适配器
代理不与分布式服务、NMS 或其它管理应用程序直接通信。而是使用连接器和协议适配器。这种体系结构与 J2EE 连接器体系结构(J2EE Connector Architecture)是一致的(请参阅 参考资料)。协议适配器是一种软件组件,它通过标准化协议(如 HTTP 和 SNMP)提供对代理管理的资源的访问。
连 接器是一种专用软件组件,它提供了到代理和/或该代理上的受管资源的远程接口(通常使用诸如 CORBA 或 RMI 这样的远程过程调用技术来完成 ― 为了安全性通常通过 SSL)。当代理有多个活动的连接器和协议时,可以通过多个异构的应用程序或 NMS 同步地访问受管资源。可以用协议适配器来提供对现有的和已建立的 NMS 的向后兼容性。例如,我们可以为支持这个标准的 NMS 创建 通用信息模型/基于 Web 的企业管理(CIM/WEBM)适配器,或者可以创建 电信管理网络(TMN)协议适配器来启用由 JMX 代理管理的电信资源上的 操作、管理和维护(OAM)。JMX 连接器和协议适配器的精确规范属于正在同时开发的规范的范畴(请参阅 参考资料)。
>>>> 安全性
到目前为止都还不错。现在是面对被甩在一边的重要问题 —— 安全性 —— 的时候了。不如果不想让谁的应用程序代码访问和修改虚拟机,该怎么办?有什么选项可用么? 可以设置一些系统属性,来控制访问级别和虚拟机数据从 JMX 代理向管理客户机传递虚拟机数据的方式。这些属性分成两类:口令认证 和安全套接字层(SSL)。
使用命令行选项
为了让 50 兼容的虚拟机可以被监视和管理,需要用以下命令行选项设置平台 JMX 代理的端口号:
-Dcomsunmanagementjmxremoteport=<number>
如果不介意谁通过这个端口访问虚拟机,也可以添加以下两个选项,关闭口令认证和 SSL 加密(这两项默认都是开启的):
-Dcomsunmanagementjmxremoteauthenticate=false-Dcomsunmanagementjmxremotessl=false
在开发 javalangmanagement 客户机代码,而且想方便地监视另一台虚拟机时,一起使用这三个选项会很方便。在生产环境中,则需要设置口令控制或 SSL(或者两者都要设置)。
口令认证
在JDK 的 jre/lib/management 目录中,可以找到一个叫做 jmxremotepasswordtemplate 的文件。这个文件定义了两个角色的用户名和口令。第一个是监视 角色,允许访问只读的管理函数;第二个是控制 角色,允许访问读写函数。取决于需要的访问级别,客户可以用 monitorRole 或 controlRole 用户名进行认证。为了确保只有认证的用户才能访问,需要做以下工作:
把 jmxremotepasswordtemplate 的内容拷贝到叫做 jmxremotepassword 的文件中,并取消掉文件末尾定义用户名和口令部分的注释,根据需要修改口令。
修改 jmxremotepassword 的许可,只让所有者能够读取和修改它。(在 UNIX 和 UNIX 类的系统上,把许可设置成 600。在 Microsoft Windows 上,请按照 “How to secure a password file on Microsoft Windows systems” 一文中的说明操作,可以在 参考资料 中找到这篇文章的链接。)
在启动虚拟机时,用以下命令行选项指定要使用的口令文件的位置:
-Dcomsunmanagementjmxremotepasswordfile=<file-path>
从管理客户的角度来说,需要提供正确的用户名/口令组合来访问开启了认证的虚拟机。如果客户是 JConsole,这很简单:在初始的 Connection 选项卡中提供了用户名和口令字段
框架(Framework)是整个或部分系统的可重用设计,表现为一组抽象构件及构件实例间交互的方法;另一种定义认为,框架是可被应用开发者定制的应用骨架。前者是从应用方面而后者是从目的方面给出的定义。
可以说,一个框架是一个可复用的设计构件,它规定了应用的体系结构,阐明了整个设计、协作构件之间的依赖关系、责任分配和控制流程,表现为一组抽象类以及其实例之间协作的方法,它为构件复用提供了上下文(Context)关系。因此构件库的大规模重用也需要框架。
构件领域框架方法在很大程度上借鉴了硬件技术发展的成就,它是构件技术、软件体系结构研究和应用软件开发三者发展结合的产物。在很多情况下,框架通常以构件库的形式出现,但构件库只是框架的一个重要部分。框架的关键还在于框架内对象间的交互模式和控制流模式。
框架比构件可定制性强。在某种程度上,将构件和框架看成两个不同但彼此协作的技术或许更好。框架为构件提供重用的环境,为构件处理错误、交换数据及激活操作提供了标准的方法。
应用框架的概念也很简单。它并不是包含构件应用程序的小片程序,而是实现了某应用领域通用完备功能(除去特殊应用的部分)的底层服务。使用这种框架的编程人员可以在一个通用功能已经实现的基础上开始具体的系统开发。框架提供了所有应用期望的默认行为的类集合。具体的应用通过重写子类(该子类属于框架的默认行为)或组装对象来支持应用专用的行为。
应用框架强调的是软件的设计重用性和系统的可扩充性,以缩短大型应用软件系统的开发周期,提高开发质量。与传统的基于类库的面向对象重用技术比较,应用框架更注重于面向专业领域的软件重用。应用框架具有领域相关性,构件根据框架进行复合而生成可运行的系统。框架的粒度越大,其中包含的领域知识就更加完整。
框架,即framework。其实就是某种应用的半成品,就是一组组件,供你选用完成你自己的系统。简单说就是使用别人搭好的舞台,你来做表演。而且,框架一般是成熟的,不断升级的软件。 框架的概念最早起源于Smalltalk环境,其中最著名的框架是Smalltalk 80的用户界面框架MVC(Model-View-Controller)。随着用户界面框架Interviews Linton 89和ET++ Weinand 89 的开发和发布,框架研究越来越受到研究人员的重视。虽然框架研究最初起源于用户界面领域,但它还被成功地应用到其他领域中,如操作系统Russo 90、火警系统 Molin 96a,Molin 96b 等。Taligent公司于1992年成立后,框架研究受到了广泛的重视。该公司计划基于框架来开发一个完整的面向对象操作系统。另外,该公司还发布了一套支持快速应用开发的工具集CommonPoint,其中包括了上百个面向对象框架 Andert 94,Cotter 95。框架还没有统一的定义,其中Ralph Johnson所给出的定义基本上为大多数研究人员所接受:
一个框架是一个可复用设计,它是由一组抽象类及其实例间协作关系来表达的 Johnson 98。
这个定义是从框架内涵的角度来定义框架的,当然也可以从框架用途的角度来给出框架的定义:
一个框架是在一个给定的问题领域内,一个应用程序的一部分设计与实现Bosch 97。
从以上两个定义可以看出,框架是对特定应用领域中的应用系统的部分设计和实现com/wiki/%E5%AD%90%E7%B3%BB%E7%BB%9F target=_new class=innerlink>子系统)的整体结构。框架将应用系统划分为类和对象,定义类和对象的责任,类和对象如何互相协作,以及对象之间的控制线程。这些共有的设计因素由框架预先定义,应用开发人员只须关注于特定的应用系统特有部分。框架刻画了其应用领域所共有的设计决策,所以说框架着重于设计复用,尽管框架中可能包含用某种程序设计语言实现的具体类。
一个基于框架开发的应用系统包含一个或多个框架,与框架相关的构件类,以及与应用系统相关的功能扩展。与应用系统相关的扩展包括与应用系统相关的类和对象。应用系统可能仅仅复用了面向对象框架的一部分,或者说,它可能需要对框架进行一些适应性修改,以满足系统需求。
面向对象的框架作为一种可复用的软件,在基于框架的软件开发过程中会涉及到框架的开发和利用两个方面的工作。框架的开发阶段在于产生领域中可复用的设计。该阶段的主要结果是框架以及与框架相关的构件类。该阶段的一个重要活动是框架的演变和维护。象所有软件一样,框架也易于变化。产生变化的原因很多,如应用出错,业务领域变化,等等。
不论是哪一种技术,最终都是为业务发展而服务的。从业务的角度来讲。首先,框架的是为了企业的业务发展和战略规划而服务的,他服从于企业的愿景(vision);其次,框架最重要的目标是提高企业的竞争能力,包括降低成本、提高质量、改善客户满意程度,控制进度等方面。最后,框架实现这一目标的方式是进行有效的知识积累。软件开发是一种知识活动,因此知识的聚集和积累是至关重要的。框架能够采用一种结构化的方式对某个特定的业务领域进行描述,也就是将这个领域相关的技术以代码、文档、模型等方式固化下来。 因为软件系统发展到今天已经很复杂了,特别是服务器端软件,涉及到的知识,内容,问题太多。在某些方面使用别人成熟的框架,就相当于让别人帮你完成一些基础工作,你只需要集中精力完成系统的业务逻辑设计。而且框架一般是成熟,稳健的,他可以处理系统很多细节问题,比如,事物处理,安全性,数据流控制等问题。还有框架一般都经过很多人使用,所以结构很好,所以扩展性也很好,而且它是不断升级的,你可以直接享受别人升级代码带来的好处。
框架一般处在低层应用平台(如J2EE)和高层业务逻辑之间的中间层。
软件为什么要分层? 为了实现“高内聚、低耦合”。把问题划分开来各个解决,易于控制,易于延展,易于分配资源…总之好处很多啦:)。 框架、设计模式这两个概念总容易被混淆,其实它们之间还是有区别的。构件通常是代码重用,而设计模式是设计重用,框架则介于两者之间,部分代码重用,部分设计重用,有时分析也可重用。在软件生产中有三种级别的重用:内部重用,即在同一应用中能公共使用的抽象块;代码重用,即将通用模块组合成库或工具集,以便在多个应用和领域都能使用;应用框架的重用,即为专用领域提供通用的或现成的基础结构,以获得最高级别的重用性。
框架与设计模式虽然相似,但却有着根本的不同。设计模式是对在某种环境中反复出现的问题以及解决该问题的方案的描述,它比框架更抽象;框架可以用代码表示,也能直接执行或复用,而对模式而言只有实例才能用代码表示;设计模式是比框架更小的元素,一个框架中往往含有一个或多个设计模式,框架总是针对某一特定应用领域,但同一模式却可适用于各种应用。可以说,框架是软件,而设计模式是软件的知识。 框架的最大好处就是重用。面向对象系统获得的最大的复用方式就是框架,一个大的应用系统往往可能由多层互相协作的框架组成。
由于框架能重用代码,因此从一已有构件库中建立应用变得非常容易,因为构件都采用框架统一定义的接口,从而使构件间的通信简单。
框架能重用设计。它提供可重用的抽象算法及高层设计,并能将大系统分解成更小的构件,而且能描述构件间的内部接口。这些标准接口使在已有的构件基础上通过组装建立各种各样的系统成为可能。只要符合接口定义,新的构件就能插入框架中,构件设计者就能重用构架的设计。
框架还能重用分析。所有的人员若按照框架的思想来分析事务,那么就能将它划分为同样的构件,采用相似的解决方法,从而使采用同一框架的分析人员之间能进行沟通。 领域内的软件结构一致性好; 建立更加开放的系统;
重用代码大大增加,软件生产效率和质量也得到了提高;
软件设计人员要专注于对领域的了解,使需求分析更充分;
存储了经验,可以让那些经验丰富的人员去设计框架和领域构件,而不必限于低层编程;
允许采用快速原型技术;
有利于在一个项目内多人协同工作;
大粒度的重用使得平均开发费用降低,开发速度加快,开发人员减少,维护费用降低,而参数化框架使得适应性、灵活性增强。 框架要解决的最重要的一个问题是技术整合的问题,在J2EE的框架中,有着各种各样的技术,不同的软件企业需要从J2EE中选择不同的技术,这就使得软件企业最终的应用依赖于这些技术,技术自身的复杂性和技术的风险性将会直接对应用造成冲击。而应用是软件企业的核心,是竞争力的关键所在,因此应该将应用自身的设计和具体的实现技术解耦。这样,软件企业的研发将集中在应用的设计上,而不是具体的技术实现,技术实现是应用的底层支撑,它不应该直接对应用产生影响。 要理解这一点,我们来举一些例子:
一个做视频流应用的软件企业,他为电广行业提供整体的解决方案。他的优势在于将各种各样的视频硬件、服务器、和管理结合起来,因此他扮演的是一个集成商的角色。因此他的核心价值在于使用软件技术将不同的硬件整合起来,并在硬件的整合层面上提供一个统一的管理平台。所以他的精力应该放在解决两个问题:
如何找到一种方法,将不同的硬件整合起来,注意,这里的整合并不是技术整合,而是一种思路上的整合。首先要考虑的绝对不是要使用什么技术,而是这些硬件需要提供哪些服务,需要以什么样的方式进行管理。因此,这时候做的事情实际上是对领域进行建模。例如,我们定义任何一种硬件都需要提供两种能力,一种是统一的管理接口,用于对所有硬件统一管理;另一种是服务接口,系统平台可以查询硬件所能够提供的服务,并调用这些服务。所以,设计的规范将会针对两种能力进行。
另一个问题是如何描述这个管理系统的规范。你需要描述各种管理活动,以及管理中所涉及的不同实体。因为管理系统是针对硬件的管理,所以它是构架在硬件整合平台之上的。
在完成业务层面的设计之后,我们再来看看具体的技术实现。光有规范和设计是不够的,我们还需要选择一个优秀的技术。由于是对不同硬件的整合,我们想到采用Java提供的JMX技术。JMX技术适合用来进行系统整合,它定义了一个通用的规范,并给出了远程管理端口的一些默认实现。JMX已经经过了实践的检验,不少的应用服务器都采用了以JMX为基础的结构,例如有名的JBoss。JMX已经是一个很好的开始了,但是我们还需要在JMX的基础上再做一些工作。 1 白盒与黑盒框架
框架可分为白盒(White-Box)与黑盒(Black-Box)两种框架。
基于继承的框架被称为白盒框架。所谓白盒即具备可视性,被继承的父类的内部实现细节对子类而言都是可知的。利用白盒框架的应用开发者通过衍生子类或重写父类的成员方法来开发系统。子类的实现很大程度上依赖于父类的实现,这种依赖性限制了重用的灵活性和完全性。但解决这种局限性的方法可以是只继承抽象父类,因为抽象类基本上不提供具体的实现。白盒框架是一个程序骨架,而用户衍生出的子类是这个骨架上的附属品。
基于对象构件组装的框架就是黑盒框架。应用开发者通过整理、组装对象来获得系统的实现。用户只须了解构件的外部接口,无须了解内部的具体实现。另外,组装比继承更为灵活,它能动态地改变,继承只是一个静态编译时的概念。
在理想情况下,任何所需的功能都可通过组装已有的构件得到,事实上可获得的构件远远不能满足需求,有时通过继承获得新的构件比利用已有构件组装新构件更容易,因此白盒和黑盒将同时应用于系统的开发中。不过白盒框架趋向于向黑盒框架发展,黑盒框架也是系统开发希望达到的理想目标。
2 热点、食谱以及好莱坞原则
成功的框架开发需要确定领域专用的''热点'' (Hot spot)。应用开发者在框架的基础上进行开发,只须扩展框架的某些部分,''热点''就是在应用领域的一种扩展槽,开发者根据自己的需要填充这些扩展槽。''热点''使框架具有灵活性,如在具体的实现中,扩展槽可以被看成是一些抽象类,开发者通过重写抽象方法获得具体实现。
''食谱'' (Cookbook)就是描述如何使用框架方法的文档。在''食谱''中包含了许多''烹饪''方法,这些''烹饪''方法相当于一些具体的操作步骤,描述了为解决某一专门问题如何使用框架的详细方法。框架的内部设计和实现细节通常不出现在''食谱''中。
框架的一个重要特征就是用户定义的方法经常被框架自身调用,而不是从用户的应用代码中调用。这种机制常称为“好莱坞原则”(Hollywood Principle)或“别调用我们,我们会调用您”。 WAF:全称:WEB APPLICATION FRAMEWORK主要应用方面:EJB层,(WEB层也有,但是比较弱)。主要应用技术:EJB等出处:javasun com/blueprints/code/indexhtml>http://javasun com/blueprints/code/indexhtml简述:这是SUN在展示J2EE平台时所用的例子PetStore(宠物商店系统)里面的框架。是SUN蓝皮书例子程序中提出的应用框架。它实现了 MVC和其他良好的设计模式。SUN的网站上有技术资料,最好下载PetStore来研究,WEBLOGIC里自带此系统,源码在bea\weblogic700\samples\server\src\petstore。这是学习了解J2EE的首选框架。免费。
Struts:主要应用方面:WEB层。主要应用技术:JSP,TagLib,JavaBean,XML等出处,这是APACHE的开源项目,应用很广泛。基于MVC模式,结构很好,基于JSP。Jbuilder8里已经集成了STRUTS102的制作。免费。
简述WAF+STRUTS结合的例子:WEB层用STRUTS,EJB层用WAF:JSP(TagLib)——>ActionForm——>Action ——> Event——>EJBAction——>EJB ——>DAO——>Database JSP(TagLib) (forward) <——Action <——EventResponse<——
Turbine:主要应用方面:WEB层。主要应用技术:servlet等出处,这是APACHE的开源项目。基于SERVLET。据说速度比较快,基于service(pluggable implementation可插拔的执行组件)的方式提供各种服务。免费。
COCOON:主要应用方面:WEB层。主要应用技术:XML,XSP,servlet等出处:http://cocoonapache org/20/简述:这是APACHE的一个开源项目。基于XML,基于XSP(通俗地说,XSP是在XML静态文档中加入Java程序段后形成的动态XML文档。)。特点是可以与多种数据源交互,包括文件系统,数据库,LDAP,XML资源库,网络数据源等。免费。
ECHO:主要应用方面:WEB层。主要应用技术:servlet等出处:http://wwwnextapp com/products/echo/简述:nextapp公司的一个开源项目。基于SERVLET。页面可以做的很漂亮,结合echopoint,可以作出很多图形效果(里面用了jfreechart包)。使用SWING的思想来作网页,把HTML当作JAVA的类来做。但是大量使用Session,页面分帧(Frame)很多,系统资源消耗很大。免费。
JATO:全称:SUN ONE Application Framework主要应用方面:WEB层。主要应用技术:JSP,TagLib,JavaBean等出处,简述:这是SUN推出的一个商业性框架,一看名字就知道是结合SUN ONE的平台推出的。我下载了JATO20看了一下,感觉有些简单,使用了JSP+TagLib+JavaBean。如他的DOC所说JATO是适合用在小的WEB应用里。免费。
TCF:全称:Thin-Client Framework主要应用方面:JAVA GUI。主要应用技术:JAVA application等出处,简述:这是IBM出的一个框架。基于MVC模式,基于JAVA Application。推荐一篇介绍文章:java/j-tcf1/indexshtml>http://www-900ibm com/developerWorks/cn/java/j-tcf1/indexshtml收费:每个企业对象license:2000美元。
0条评论