注明:本文转载自网上,原文地址(该地址已经不能访问了):
http://hi.baidu.com/lff0305/blog/item/cb80ac3107ccdca05fdf0e3e.html
前提:需要通过JMX访问WebSphere的AdminClient API采集监控数据时,如果WebSphere启用了管理安全性,就不能直接访问,而必须配置安全证书。
基本上没什么可说的, 使用SOAP, 需要把ws_runtime.jar放到classpath中. 这个ws_runtime.jar可以搜索一下WAS6.1的安装目录, 有两个, 应该都能用.
Properties adminProps = new Properties(); adminProps.setProperty("type", AdminClient.CONNECTOR_TYPE_SOAP); adminProps.setProperty("host", "192.168.1.100"); adminProps.setProperty("port", "8880"); adminClient = AdminClientFactory.createAdminClient(adminProps); ObjectName objName = new ObjectName("WebSphere:name=JVM,process=server1,platform=proxy,node=test-e4dd24fa82Node02,j2eeType=JVM,J2EEServer=server1,version=6.1.0.0,type=JVM,mbeanIdentifier=JVM,cell=test-e4dd24fa82Node02Cell,spec=1.0"); Object value = adminClient.getAttribute(objName, "freeMemory"); System.out.println(value);
上面紫色的部分不是能通用的, 需要查询下自己的WAS Server.
运行结果:
2009-6-2 17:56:33 com.ibm.websphere.management.AdminClientFactory警告: ADMC0046W 2009-6-2 17:56:33 com.ibm.ws.management.connector.interop.JMXClassLoader警告: Could not find tmx4jTransform.jar in null/etc/tmx4jTransform.jar - Interoperability to older versions of WebSphere is disabled 2009-6-2 17:56:34 com.ibm.ws.ssl.config.SSLConfigManager信息: ssl.disable.url.hostname.verification.CWPKI0027I31406800
这个很简单, 但是正常运行的前提是WAS6.1 的安全关掉了 (登录不需要密码, 只需要用户名) 如果安全没有关掉, 及其麻烦, 以后详细写~~需要注意的一点: WAS6.1只支持到JDK/JRE5.0, 所以上面的Java环境应该在JDK/JRE5.0中运行. 在JDK/JRE6.0中运行将报错.
继续前面的. 如果启用了安全(WAS6.1默认的), 会出现下面的错误:
-6-4 10:25:49 com.ibm.websphere.management.AdminClientFactory 警告: ADMC0046W2009-6-4 10:25:50 com.ibm.ws.management.connector.interop.JMXClassLoader 警告: Could not find tmx4jTransform.jar in null/etc/tmx4jTransform.jar - Interoperability to older versions of WebSphere is disabled2009-6-4 10:25:50 com.ibm.ws.ssl.config.SSLConfigManager 信息: ssl.disable.url.hostname.verification.CWPKI0027Icom.ibm.websphere.management.exception.ConnectorException: ADMC0016E: 系统无法创建 SOAP 连接器以连接到端口 8880 上的主机 192.168.1.100。
如何判断安全已经启用了? 比较简单 , 如果WAS6.1 要求输入用户名和密码, 同时浏览器中查看控制台的协议是HTTPS, 那么就说明安全启用了 (默认的应该是启用的)
下面的步骤比较麻烦, 是WAS6.1特殊的. 因为需要WAS6.1的证书. 在WAS6.0里面, 这个步骤很简单, 默认的证书能直接用, 但是WAS6.1就不行, 默认的证书不能用, 必须生成自己的证书并配置到WAS6.1里面.
首先, 进入 <WAS_HOME>AppServer/bin, 运行ikeyman.bat文件, 进入证书配置工具:
点击添加:
选择类型JKS, 首先生成KeyStore. 目录设定为c:\test , 名称是store.jks
点击 OK , 之后会询问密码: 这里要输入KeyStre的密码: (密码要记住! 后面会用到)
点击OK, 返回主界面. 下面列表中很多默认的证书, 没有用, Ctrl-A 全选, 然后点击右侧的DELETE, 都删掉:
删掉后, 创建自签署证书:
在弹出的界面中, 输入必填的信息. 基本上都是证书的标识, 可以填入自己的一些信息:
点击OK. 这时KeyStore就创建完毕了. 这里需要把它导出, 稍后创建TrustStore用:
点击右下角的Extract Certificate... , 导出证书. 这里命名为cert.arm, 放到c:\test下面:
OK, 此时KeyStore就生成完毕了. 下面生成TrustStore. 再次点击New: (这次用的文件名是trust.jks , 同样放到了c:\test下面, 同样要记住TrustStore的密码)
同样, 把下面没有用的证书删掉. 然后点击 Add:
原创:本人实践过程中这一步有点问题,需要 先在下拉列表中选择“签署者证书”。
在弹出的界面中选择刚刚导出的cert.arm文件:
这时会询问Label. 随便填点文本:
点击OK, TrustStore生成完毕了.
这时 , 查看c:\test 文件夹, 里面应该有三个文件 : store.jks (KeyStore), cert.arm (导出文件), trust.jks (TrustStore文件)。
下面的工作就是让WAS6.1应用这些KeyStore和TrustStore。
登录WAS6.1控制台, 点击 Security - SSL certificate and key management - Key stores and certificates 选项:
点击 new :
在界面中输入KeyStore的名称(这里用testKeyStore), Path(刚刚创建的, c:\test\store.jks), 密码 (创建的时候使用的密码, 这里用到了!!) 类型选择JKS:
一样的步骤, 加入TrustStore.jks:
这样, 自己生成的证书就导入到WAS中了. 下面要让WAS使用它. 点击证书配置项:
点击当前节点:
然后选择刚刚创建好的KeyStore和TrustStore, 然后点击"Get Certificate Alias", 获得别名.
之后, 点击OK 保存更改. 这时, WAS6.1的配置就完毕了. 重启WAS , 再重新登录控制台, 就可以在浏览器的证书信息中查看到刚才使用ikeyman生成证书时输入的一些信息了. 如果使用Firefox等浏览器, 可能还需要加入一个Exception, 因为这个证书是我们自己生成的, 不是Firefox认为"安全的"机构生成的, 所以会报告安全警告. 当Firefox询问的时候加入Exception, 忽略它就行了.
下面就是Java程序了.
把test文件夹拷贝到Java程序运行的机器上, 这里有两种方法.
第一种, 修改程序:
在创建adminClient前面加入下面的代码, 定义Keystore 和 TrustStore. 注意程序里面用到了上面生成KeyStore/TrustStore的口令!
adminProps.setProperty(AdminClient.USERNAME, "websphere"); adminProps.setProperty(AdminClient.PASSWORD, "websphere"); adminProps.setProperty(AdminClient.CONNECTOR_SECURITY_ENABLED, "true"); adminProps.setProperty("javax.net.ssl.trustStore", "c:/test/trust.jks"); adminProps.setProperty("javax.net.ssl.keyStore", "c:/test/store.jks"); adminProps.setProperty("javax.net.ssl.trustStorePassword", "password for keystore"); adminProps.setProperty("javax.net.ssl.keyStorePassword", "password for truststore");
然后在文档(1) 中的程序就能正常运行了.
第二种, 导入生成的KeyStore.jks 到 Java程序运行的JRE中 , 就不用运行的时候指定了: 目标密匙口令, 即JDK/JRE中默认的, 如果没改过就是changeit; 源密匙口令即上面生成KeyStore的口令 (又一次用到了)
之后, 上面代码里面的青色的部分就可以忽略了. 注意运行Java程序的JRE/JDK, 应该指定为上面命令行导入目标的JDK/JRE, 即 -destkeystore 中的参数.
使用证书监控WebSphere示例代码(本人追加的)
Properties adminProps = new Properties(); adminProps.setProperty(AdminClient.CONNECTOR_TYPE, AdminClient.CONNECTOR_TYPE_SOAP); adminProps.setProperty(AdminClient.CONNECTOR_HOST, "localhost"); adminProps.setProperty(AdminClient.CONNECTOR_PORT, "8880"); adminProps.setProperty(AdminClient.USERNAME, "chenfeng"); adminProps.setProperty(AdminClient.PASSWORD, "chenfeng"); adminProps.setProperty(AdminClient.CACHE_DISABLED, "false"); // WebSphere服务器是否已启用管理安全性 adminProps.setProperty(AdminClient.CONNECTOR_SECURITY_ENABLED, "true"); adminProps.setProperty(AdminClient.CONNECTOR_AUTO_ACCEPT_SIGNER, "true"); adminProps.setProperty("javax.net.ssl.trustStore","D:/JavaTools/IBM/MyKey/trust.jks"); adminProps.setProperty("javax.net.ssl.keyStore","D:/JavaTools/IBM/MyKey/store.jks"); adminProps.setProperty("javax.net.ssl.trustStorePassword","chenfeng222"); adminProps.setProperty("javax.net.ssl.keyStorePassword", "chenfeng111"); AdminClient adminClient = AdminClientFactory.createAdminClient(adminProps); // 这里只是最简单了获取了domainName String domainName = adminClient.getDomainName();
后记:终于搞定,转载这么一篇文章那叫一个累啊,二十多张图片,下载再上传,还要排版。不过值得!
相关推荐
was相关资料: Websphere安装步骤 websphere安装后配置说明 Websphere实用手册 WebSphere+v6.1配置文档
Websphere6.1集群安装和配置 Websphere6.1集群安装和配置 Websphere6.1集群安装和配置
IBM WebSphere 6.1 ND 集群安装配置
1.MyEclipse6.0中Websphere6.1的配置; 2.Websphere6.1基本配置.
该文档描述监控启用全局安全后ND环境下的WebSphere6.1的部署。
WebSphere 6.1 db2 数据源
当用JMX技术去连接websphere服务器的时候,需要创建AdminClient对象,但是如果websphere server开启了SSL验证功能,就是登陆console的时候需要输入用户名和密码,那么就需要用到上面说的先导入证书才行。这个文档里...
websphere6.1集群安装旗舰版Websphere6.1forWindowsXP集群安装和配置旗舰版一、概述日常使用中为了保证Websphere系统可用性,提高系统性能,一般处理方法为配置集群,本文记录创建、配置WebSphere6.1集群的整个过程...
WAS高手资料-基于WAS 6.1的WebSphere Portal 6.1 Cluster配置详解
WAS6.1 IBM HTTP SERVER配置SSL.
websphere 6.1中配置DM7数据源
详细描述WebSphere 6.1在Linux上安装步骤,IBMHttpServer的安装步骤,以及数据源的配置,分布式集群的配置
安装部署websphere6.1 文档 安装节点 配置数据源 启动
IBM Websphere 6.1 linux 3 安装图解.doc
详细图解介绍WebSphere v6.1 ND版本在Unix和Linux环境中的安装配置。
WebSphere v6.1 ND在Unix_Linux环境中安装和配置
描述Websphere 6.1版本在linuxAS4下的安装过程。包括WAS的安装、HTTP的安装、打补丁和调整几个优化参数。
2、Websphere6.1配置数据源实践.doc 3、WebSphere中流行数据库连接池的配置(Oracle、SQL Server、Sybase、MySQL).doc 4、在myEclipse6中配置websphere6及部署工程实践.doc 5、WAS ND安装手册.pdf 6、WAS+6[1].1安装...
通过jdk自带的工具生成自验证证书、在websphere上设置https,was7.0和was8.5都可以,自己运行成功一步一步截图的