|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
市场分额,java比asp高一点,因为C#是仿照java开发的,所以哦C#能做的java都能做到,但是java能做的,C#不一定都能做到。毕竟是抄袭吗。在GlassFish3中,存在大批的组件,作者具体剖析了其组件设置的架构、工具和使用办法,关于想要深切懂得GlassFish的开辟职员和体系办理职员有较好的自创意义。
1设置组件研讨
在GlasFish中,有大批的设置文件,很年夜一部分是主动发生的,为助于了解,我们有需要先将它吃透。它也有一个主域设置文件(位于%GlassFishV3%domainsdomain1configconfig.xml),它次要包含以下几个部分:
<br>
GlassFishconfig设置办理组件的构成
- ConfigBeans:关于对设置文件的elements、attributes、properties实行get/set/create/delete操纵,是一个底层API
- AdminMBeans:JMX客户端API,包含:GUI/CLI/HTMLadapters/remoteapps
- AdminValidator:考证设置,而且避免分歧法的设置改动
- Dynamic-reconfig:从头设置以后,能够不必重启服务器,及时失效
1.1设置元数据
在glassfish的config-api模块中包括了大批的设置元数据,有些是主动发生的,有些是手动发生的。
<br>
设置元数据
设置文件切合以下三个schema,这些schema主RelaxNG语法来举行属性扩大,一切的属性扩大在其自力的名空间中:
- sun-domain-1_2.dtd,
- ConfigBeans
- ValidationDescriptorsfile
1.2源代码剖析
- ConfigBeans:代码位于HK2核中的config模块,它包括了ConfigContext、ConfigEvent、Listeners的接口和完成。在GlassFish中的config-api模块中的serverbeans是由sun-domain_1_2.dtd主动发生的,手动发生的是ApplicationsHelper,ClustersHelper,ResourcesHelper等。
- AdminMBeans:供应JMX客户端(CLI/GUI/HTML-adapters/remoteapis)的会见和办理操纵。位于admin-core中的admin子模块中。
- ConfigValidator:考证metadatafiles,考证基本类,对客户化设置元素的考证等。
2监控组件研讨
我们能够经由过程以下5种体例会见GlassFish资本:
- 办理把持台
- 命令行工具asadmin
- Jconsole第三方工具
- 尺度的JMX编程接口
- 面向对象的AMX编程接口
JMX是GlassFish办理架构的基本,GlassFish的计划和完成都遵守了JMX标准,因而也完整撑持JMX。这类撑持表现在它的命令行办理工具asadmin和办理把持台的功效上,表现在第三方办理工具好比JConsole的对其会见的撑持上,也表现在经由过程尺度的或GlassFish独有的编程接口AMX对其资本的会见体例上。上面经由过程实例,来看看GlassFish是怎样撑持这几种体例对其资本举行会见的。
<br>
会见GlassFish资本的5种体例
办法1,经由过程办理把持台
起首,先经由过程办理把持台来创立一个数据库毗连池mypool。在扫瞄器的输出办理把持台地点:localhost:4848。接纳缺省的用户名“admin”及其暗码“adminadmin”登录。乐成登录后,在右边的树型菜单中,睁开“资本”-“JDBC”-“毗连池”。在主面板中,点击“新建”。在面板“新建JDBC毗连池(步骤1,共2步)”中,输出“称号”为mypool,“资本范例”选为“javax.sql.DataSource”,“数据库供给商”选为“JavaDB”。在接下来的“新建JDBC毗连池(步骤2,共2步)”中,能够看到数据库毗连池的各项缺省设置。将在“池设置”一栏中的“余暇超时”值由缺省的300改成777。点击“完成”。至此,我们经由过程办理把持台完成了对数据库毗连池mypook的创立,并修正了其余暇超时的值。
办法2,经由过程命令行工具asadmin
接上去,我们经由过程命令行的asadmin来检察这一资本。- asadminlistserver.resource*
复制代码 运转了局以下:- server.resource-ref.jdbc/__CallFlowPoolserver.resource-ref.jdbc/__TimerPoolserver.resource-ref.jdbc/__defaultserver.resourcesserver.resources.jdbc-connection-pool.DerbyPoolserver.resources.jdbc-connection-pool.__CallFlowPoolserver.resources.jdbc-connection-pool.__TimerPoolserver.resources.jdbc-connection-pool.mypoolserver.resources.jdbc-resource.jdbc/__CallFlowPoolserver.resources.jdbc-resource.jdbc/__TimerPoolserver.resources.jdbc-resource.jdbc/__default
复制代码 这里列出的MBean是用GlassFish本人的DottedName来标识的。接着经由过程asadmin的子命令get来检察对象mypool的属性:- asadmingetserver.resources.jdbc-connection-pool.mypool.*
复制代码 大概进一步检察余暇超时(idle-timeout-in-seconds)的属性值。- asadmingetserver.resources.jdbc-connection-pool.mypool.idle-timeout-in-seconds
复制代码 了局以下:- server.resources.jdbc-connection-pool.mypool.idle-timeout-in-seconds=777
复制代码 至此,我们完成了利用命令行的办理工具asadmin对mypool的会见。这里asadmin经由过程GlassFish扩大的DottedName定名体例来会见MBean的。DottedName是GlassFish命令行工具asadmin界说的一套商定。在这套商定的撑持下,asadmin的三个子命令(list、set和get)能够经由过程一个由“.”分开的字串寻址到GlassFish中的MBean。
办法3,经由过程第三方工具JConsole
接上去,我们要经由过程JConsole来会见对象mypool。在JConsole的登录面板中,选择远处历程:localhost:8686(8686是GlassFish缺省的办理端口),用户名一样为admin,暗码adminadmin。登录出去后所看到的是关于GlassFish使用服务器运转时的信息,点击“MBean”。睁开树型布局“com.sun.appserv”-“jdbc-connection-pool”-“mypool”-“config”-“属性”。能够看到我们所体贴的毗连池mypool的信息。属性idle-timeout-in-seconds的值为777。修正777为888。在回到办理把持台或命令行工具asadmin一样能够看到方才在JConsole所作的修正已失效。以上申明三种工具对GlassFish资本的修正是等效的。接上去经由过程编程的体例来会见数据库毗连池mypool。
办法4,经由过程尺度的JMX编程体例
尺度的JMX体例的代码以下:- importjavax.management.*;importjavax.management.remote.*;publicclassJMX_demo{publicJMX_demo()throwsException{//创立JMX的URLJMXServiceURLurl=newJMXServiceURL("service:jmx:rmi:///jndi/rmi://localhost:8686/jmxrmi");java.util.Mapenv=newjava.util.Hashtable();//缺省用户名和其口令String[]creds={"admin","adminadmin"};env.put(JMXConnector.CREDENTIALS,creds);//创建毗连JMXConnectorconnector=JMXConnectorFactory.connect(url,env);MBeanServerConnectionmbsc=connector.getMBeanServerConnection();//要会见的MBean的ObjectNameObjectNamembeanName=newObjectName("com.sun.appserv:type=jdbc-connection-pool,name=mypool,category=config");//所要会见的属性idle-timeout-in-secondsSystem.out.println("UsingJMX,jdbcpoolidletimeout:"+mbsc.getAttribute(mbeanName,"idle-timeout-in-seconds"));}publicstaticvoidmain(finalString[]args)throwsException{newJMX_demo();}}
复制代码 运转了局以下:- UsingJMX,jdbcpoolidletimeout:888
复制代码 办法5,经由过程AMX编程体例
AMX体例的代码以下:- importcom.sun.appserv.management.DomainRoot;importcom.sun.appserv.management.client.AppserverConnectionSource;importcom.sun.appserv.management.client.TLSParams;importcom.sun.appserv.management.util.misc.ExceptionUtil;importcom.sun.appserv.management.config.*;importjava.net.ConnectException;importjava.util.Map;/***此类为演示利用AMX体例会见服务器真个MBean的演示代码。*/publicclassAMX_demo{publicAMX_demo()throwsException{//DomainAdminServer的呆板名或IP地点finalStringhost="localhost";//JMX办理端口,缺省8686。finalintport=8686;//办理员名finalStringuser="admin";//办理员暗码finalStringpassword="adminadmin";TLSParamstlsParams=null;//毗连到JMXserverAppserverConnectionSourceconn=newAppserverConnectionSource(AppserverConnectionSource.PROTOCOL_RMI,host,port,user,password,tlsParams,null);conn.getJMXConnector(true);//DomainRoot和JDBCConnectionPoolConfig就是所说的DCP组件DomainRootmDomainRoot=conn.getDomainRoot();//猎取JDBCConnectionPool的列表Mappools=mDomainRoot.getDomainConfig().getJDBCConnectionPoolConfigMap();JDBCConnectionPoolConfigmypool=(JDBCConnectionPoolConfig)pools.get("mypool");System.out.println("UsingDCP,jdbcpoolidletimeout:"+mypool.getIdleTimeoutInSeconds());}publicstaticvoidmain(finalString[]args)throwsException{newAMX_demo();}}
复制代码 运转了局以下:- UsingDCP,jdbcpoolidletimeout:888
复制代码 注重,接纳AMX的体例时,在项目标库路径上要到场appserv-ext.jar和javaee.jar。
关于作者
张华,临时处置Java方面的开辟事情,有搜刮引擎、两头件使用服务器、互联网、云盘算等范畴的行业履历,今朝正在处置基于Power的假造化手艺研发。博客地点:http://blog.csdn.net/quqi99
由于这些智能化家电的市场需求没有预期的高,Sun放弃了该项计划。就在Oak几近失败之时,随着互联网的发展,Sun看到了Oak在计算机网络上的广阔应用前景,于是改造了Oak, |
|