ImageVerifierCode 换一换
格式:DOCX , 页数:14 ,大小:72.28KB ,
资源ID:17312964      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/17312964.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(WAS管理编程常用技巧Word文件下载.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

WAS管理编程常用技巧Word文件下载.docx

1、管理编程分为下面两种途径:1.直接调用 Mbean2.使用 WAS 的管理编程接口WebSphere JMX MbeansMbeans 介绍WAS 提供了各种类型的 Mbean, 封装了各种管理功能,如对 WAS 系统环境,J2EE 应用,J2EE 资源等的管理和监控。获得某个 Mbean:每个 MBean 都有一个 ObjectName,在使用该 MBean 之前必须先找到它。ObjectName 可以通过 AdminClient,以格式化的查询串进行查询。格式化的查询串可以选择性地包括以下的特性:域名、节点名、进程名、类型、名称等等。 一个查询串既可惟一标识单个 ObjectName,也可

2、以代表多个具有公共特性的 ObjectName。MBean 通常是以它们的类型进行分类的。 一些 MBean 类型(例如 Perf)会在应用服务器中提供单个的实例,但其他 MBean 类型(例如 servlet 和 EJB)会在应用服务器中提供多个实例。清单 1. 获得某个 server 上的类型为 JVM 的 MBean String query = “*:type=JVM,process=server1,node=node1,*” ; queryName = new ObjectName(query); Set mBeans = null; try mBeans = adminClient

3、.queryNames(queryName, null); catch (ConnectorException e) e.printStackTrace(); 我们也可以基于 JMX connector specification 和 JMX Remote application programming interface (API) (JSR 160) 来访问 Mbean。 参见 WAS 信息中心文章 “Create a JMX remote client program by using the JMX remote API”。在一个 WAS Network Deployment 环境中,

4、我们可以通过 AdminClient 连接到 dmgr,也可以直接去连接某个 nodeagent 或 server。 如果我们连接的是 dmgr ,那么通过 dmgr 去访问 nodeagent 和 server 上的 MBean 时,前提条件是这个 nodeagent 或 server 必须是启动的。访问 Mbean 的属性和法我们知道,调用 EJB 或 Web service 最终都要通过 Java 接口来进行, 但 Mbean 却不同。调用 Mbean 的法与 java 反射机制类似,要提供法名称,法的参数类型,最后才能 invoke 该法。访问 Mbean 的普通属性:清单 2. 访问

5、 Mbean 的普通属性Object heapsize = adminClient.getAttribute(mbean, heapSize) ;调用 Mbean 的法:清单 3. 调用 Mbean 的法 ObjectName jvmBean = MBeanFactory.getInstance().getJVMMBean (server.nodeName, server.serverName) ; String signature = java.lang.String ; server.hostIP = (String)adminClient.invoke(jvmBean, getIPAdd

6、ress, new Objectserver.hostName, signature) ;WebSphere management APIWAS 提供的管理编程接口包含在以 .ibm.websphere.management 开头的包中。下面介绍一下包中的实用 API。AdminClient 和 AdminServiceAdminClient 用于连接远程的 JVM,AdminService 用于连接本地 JVM,如果你的管理代码运行在和被管理的服务器相同的 JVM ,那可以使用 AdminService 接口。AdminService 具有和 AdminClient 类似的法,也能访问服务器

7、上的 Mbean。下面是获得 AdminClient 接口的代码:清单 4. 获得 AdminClient 接口的代码Properties props = new Properties(); props.put(AdminClient.CONNECTOR_TYPE, AdminClient.CONNECTOR_TYPE_SOAP); props.put(AdminClient.CONNECTOR_HOST, host.getHostIP(); props.put(AdminClient.CONNECTOR_PORT, host.getSoapport(); props.put(AdminCli

8、ent.CONNECTOR_AUTO_ACCEPT_SIGNER, true); if (isSecurityEnabled() props.setProperty(AdminClient.CONNECTOR_SECURITY_ENABLED, Boolean.toString(true); props.setProperty(AdminClient.USERNAME, host.getUsername(); props.setProperty(AdminClient.PASSWORD, host.getPasswd();AdminClient 既可以运行在 admin thin client

9、 中,也可以运行在 WAS server runtime 中。获得 AdminService 接口 :清单 5. 获得 AdminService 接口的代码 AdminService adminService = AdminServiceFactory.getAdminService() ;Wsadmin API 和 management API 之间的对应关系WAS 命令行脚本工具提供了几个管理对象 AdminApp, AdminTask, AdminConfig, AdminControl。它们分别对应不同的管理 API:1. AdminApp:AdminApp 对象的功能对应于两个包 .

10、ibm.websphere.management.application 和 .ibm.websphere.management.application.client。 通过这两个包下面的 API,我们可以安装 / 卸载,启动 / 停止一个 J2EE 应用。和应用管理相关的编程比较固定,本文没有过多介绍这些 API 的使用,读者可以参考本文提供的例子 ApplicationMgr.java,里面包含了应用安装和启停的示例。2. AdminControl: AdminControl 汇集了一些常用的 Mbean 的功能,如 Server Mbean。此外,它能直接调用任一个 Mbean 对象。所

11、以, AdminControl 提供的功能可以由 AdminClient/AdminService 来替换。3. AdminConfig: AdminConfig 对象对应于两个包 .ibm.websphere.management.configservice 和 .ibm.websphere.management.configservice.tasks。4. AdminTask: AdminTask 对象对应于两个包 .ibm.websphere.management.cmdframework 和 .ibm.websphere.management.cmdframework.provider

12、。本文主要介绍 AdminConfig 和 AdminTask 对应的管理编程。使用 ConfigServiceWAS 的配置信息有些可以通过 Mbean 去获得,如 cell/node/server 的名称,也可以通过 ConfigServer 去获取。而有些配置信息只能通过 ConfigService 去获得。 下面是使用 ConfigService 时会遇到的几个概念:ConfigData :config data 对应于 config 目录下的某个 xml 文件或 xml 文件的某个片段,通过操纵 config data,就可以读写该 xml 文件。ConfigType :config

13、 data 的类型。首先要知道你要访问配置信息的类型才能去访问。 通过 configService 的 getSupportedConfigObjectTypes() 法可以获得所有的 ConfigData 的类型信息。例如我们要获得 WAS 上所有的数据源的配置信息,通过查找上述类型列表,可以知道数据源的 ConfigType 为 DataSource。ConfigData Id :ConfigData 的唯一标识。如访问某个 ConfigData ?通过 ConfigData type 来查询 ConfigData通过 ConfigDataId 来创建 ConfigDataConfigDa

14、ta 和 ConfigDataId 的关系如下:清单 6. ConfigData 和 ConfigDataId 的转换关系 / 获得 ConfigData 的 ConfigDataId ConfigDataId configDataId = ConfigServiceHelper.getConfigDataId(configData) ; / 已知 ConfigDataId,得到其 ConfigData public ObjectName createConfigData(String dataId) ObjectName configData = null ; ConfigDataId id

15、 = new ConfigDataId(dataId) ; configData = ConfigServiceHelper.createObjectName(id) ; return configData ;使用 ConfigService 获得环境信息下面举例说明如用 MBean 和 ConfigService 获取集群信息,便读者的对比。关于更多其它环境信息的获取,读者可以参考本文例子 WASEnvHelper.java。清单 7. 通过 MBean 获得所有集群及集群成员 public void listClusterMembersFromMBean() Set clusters =

16、queryMBeanList(WebSphere:type=Cluster,* Iterator ci = clusters.iterator() ; while (ci.hasNext() ObjectName cluMBean = (ObjectName) ci.next(); try String clustername = cluMBean.getCanonicalName(); clustername = (String)adminClient.getAttribute(cluMBean, clusterName System.out.println(clustername); Cl

17、usterMemberData membersData = (ClusterMemberData)adminClient.invoke(cluMBean, getClusterMembers, new Object, signature) ; for (ClusterMemberData clusterMemberData : membersData) System.out.println(clusterMemberData.memberName); catch (Exception e) e.printStackTrace() ; 清单 8. 通过 ConfigService 获得所有集群及

18、集群成员 public HashMap listClusterMembersFromCfg() HashMap map = new HashMap() ; ObjectName pattern = ConfigServiceHelper.createObjectName(null, ServerCluster); ObjectName configData = configService.queryConfigObjects(session, null, pattern , null); for (int i = 0; i configData.length; i+) List members

19、 = new ArrayList String clustername = (String)configService.getAttribute(session , configDatai , name List _members = (ArrayList) configService.getAttribute( session, configDatai, members for (AttributeList member : _members) String name = (String)ConfigServiceHelper.getAttributeValue( member , memb

20、erName members.add(name) ; map.put(clustername, members) ; catch (Exception e) e.printStackTrace() ; return map ;创建新的配置创建配置的难点在于确立 AttributeList 的结构,尤其是对于嵌套复杂的 AttributeList,往往需要先写个读取的程序来判断里面每个对象的类型。下面是创建 JDBC Provider 和 Datasource 的实例。注意,在不同的 scope 下都有 resources.xml,所以在查询 resources.xml 中的 ConfigDat

21、a 时要先确定 scope。清单 9. 通过 ConfigService 获得所有集群及集群成员 public void createJDBCResource(AdminClient adminClient) Session session = new Session(); ConfigService configService = null ; configService = new ConfigServiceProxy(adminClient); ObjectName scope = configService.resolve(session, Node=kuNode05:Server=s

22、erver1)0; ObjectName pattern = ConfigServiceHelper.createObjectName(null, JDBCProvider ObjectName configData = configService.queryConfigObjects(session, scope, pattern , null); ObjectName parent = configData0 ; System.out.println(parent); AttributeList provAttrs = new AttributeList(); provAttrs.add(

23、new Attribute(, MyJDBCProvider);implementationClassName .mycompany.MyConnectionPoolDataSourcedescription,ApsectJDBC driver /create the provider ObjectName jdbcProv = configService.createConfigData(session, scope, , provAttrs); System.out.println(create the JDBC provider successfully. configService.a

24、ddElement(session,jdbcProv,classpath,-1); / Prepare the attribute list AttributeList dsAttrs = new AttributeList(); dsAttrs.add(new Attribute(myTestDSjndiNamejdbc/MyTestDS /create a new datasource ObjectName dataSource = configService.createConfigData(session, jdbcProv, DataSource,dsAttrs); / Add a

25、propertySet. AttributeList propSetAttrs = new AttributeList(); ObjectName resourcePropertySet = configService.createConfigData(session,dataSource, propertySet,propSetAttrs);create the DataSource successfully. configService.save(session, false); catch (Exception ex) ex.printStackTrace();修改已有配置下面的 upd

26、ateAttributelist 是一个通用的法,相对于设置好 Attributelist 里的值之后做一个提交。清单 10. 提交更新的通用法 / 设置新的属性值 ConfigServiceHelper.setAttributeValue(threadpool, minimumSize new Integer(int)pool.getMinSize() ;maximumSize new Integer(int)pool.getMaxSize() ; / 更新整个 Attributelist updateAttributelist(threadpool) ; public void updateAttributelist(AttributeList attrs) ConfigDataId id = ConfigServiceHelper.getConfigDataId(att

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1