我正在尝试使用JSR-160类访问已启用安全性的WebSphere 7 AppServer。如果我定义了指向各种WebSphere lib目录的java.ext.dirs系统属性,我可以得到以下连接:
Hashtable env = new Hashtable();
env.put("java.naming.factory.initial", "com.ibm.websphere.naming.WsnInitialContextFactory");
env.put("java.naming.provider.url", "corbaloc:iiop:myhost:2809/WsnAdminNameService");
env.put("jmx.remote.credentials", new String[] { "admin", "password" });
JMXConnector connector = JMXConnectorFactory.connect(new JMXServiceURL("service:jmx:rmi:///jndi/JMXConnector"), env);
但是一旦我访问MBean上的stats
属性,我就会收到以下错误:
javax.management.JMRuntimeException:
>> SERVER (id=4773e3aa, host=myhost) TRACE START:
>> javax.management.JMRuntimeException: ADMN0022E: Access is denied for the getStats operation on J2CResourceAdapter MBean because of insufficient or empty credentials.
我已经用Google搜索过去两天我想象的各种解决方案,但没有任何作用。
实际上是否可以通过JSR-160查询受保护的WebSphere AppServer中的MBean属性?
答案 0 :(得分:1)
使用JSR-160连接到不安全的WebSphere实例非常简单。正如您所注意到的,当连接到安全实例时,事情变得更加复杂。您需要在类路径中拥有正确的库,并且还需要设置一些配置文件(sas.client.props
和ssl.client.props
)。就个人而言,我能够在我的计算机上配置它,但当一位同事让我在他的计算机上进行设置时,我们无法使其正常工作。
如果您想避免这些麻烦,并且您唯一的要求是使用标准JMX API(但您不关心底层协议),那么您可以使用以下文档中描述的方法: