致命异常是WAS AdminClient

时间:2012-11-12 18:59:06

标签: java websphere jmx

我正在尝试使用MBean监控Websphere 7环境,但遇到了很多问题。首先,使用下面发布的代码时收到以下异常:

  

com.ibm.websphere.management.exception.ConnectorException:无法   创建RMI连接器以连接到端口2809的主机localhost

以下是生成异常的代码:

import java.util.Properties;

import com.ibm.websphere.management.AdminClient;
import com.ibm.websphere.management.AdminClientFactory;


public class JustAdminClient {
private AdminClient adminClient;

private void initialize() throws Exception {
    try {
        // Initialize the AdminClient.
        Properties adminProps = new Properties();
        adminProps.setProperty("type", AdminClient.CONNECTOR_TYPE_RMI);
        adminProps.setProperty(AdminClient.CONNECTOR_SECURITY_ENABLED, "false"); 
        adminProps.setProperty(AdminClient.CONNECTOR_HOST, "localhost");
        adminProps.setProperty(AdminClient.CONNECTOR_PORT, "2809");
        adminClient = AdminClientFactory.createAdminClient(adminProps);
    } catch (Exception ex) {
        ex.printStackTrace(System.out);
        throw ex;
    }
}   // end method

/**
 * @param args
 */
public static void main(String[] args) {
    JustAdminClient adClient = new JustAdminClient();
    try {
        adClient.initialize();
    } catch (Exception e) {
        e.printStackTrace();
    }
}   // end main

}   // end class

其次,我正在运行WAS独立版,禁用安全性。我是否需要配置任何自签名证书?

我的security.xml显示:

<security:Security xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI"
  xmlns:orb.securityprotocol="http://www.ibm.com/websphere/appserver/schemas/5.0/orb.securityprotocol.xmi"
  xmlns:security="http://www.ibm.com/websphere/appserver/schemas/5.0/security.xmi" xmi:id="Security_1"
  useLocalSecurityServer="true" useDomainQualifiedUserNames="false" 
  issuePermissionWarning="true" activeProtocol="BOTH" 
  enforceJava2Security="false" enforceFineGrainedJCASecurity="false"
  appEnabled="true" dynamicallyUpdateSSLConfig="true" 
  allowBasicAuth="true" activeAuthMechanism="LTPA_1"
  activeUserRegistry="LocalOSUserRegistry" enabled="false" cacheTimeout="600"
  defaultSSLSettings="SSLConfig_RXCW510MONNode01_1" adminPreferredAuthMech="RSAToken_1">

根据链接:http://www-01.ibm.com/support/docview.wss?uid=swg21295051

注意,我可以通过WSadamin和包含以下内容的Java prog两种方式联系端口2809:

private void connect(String host,String port) throws Exception
    {
        String jndiPath="/WsnAdminNameService#JMXConnector";

        JMXServiceURL url = new JMXServiceURL("service:jmx:iiop://"+host+"/jndi/corbaname:iiop:"+host+":"+port+jndiPath);
        System.out.println("URL = " + url);
        //JMXServiceURL url = new JMXServiceURL("service:jmx:iiop://192.168.0.175:9100/jndi/JMXConnector");

        Hashtable h = new Hashtable();

        //Specify the user ID and password for the server if security is enabled on server.

        //Establish the JMX connection.
        System.out.println("Before JMXConnector");
        JMXConnector jmxc = JMXConnectorFactory.connect(url, h);

        //Get the MBean server connection instance.
        System.out.println("Before getMBeanServerConnection");
        mbsc = jmxc.getMBeanServerConnection();

        System.out.println("Connected to Application Server");
    }   // end method

有什么想法吗?我迷失了,并为长线程道歉,但最好先看看信息。

2 个答案:

答案 0 :(得分:0)

使用以下示例代码段和符号解决了我的问题。注意,要特别注意抛出异常和消息re:mssing classes;即专注于消息“无法创建”消息可能误导你

需要以下jar文件:

  • %WAS_HOME%\运行时\ com.ibm.jaxws.thinclient_7.0.0.jar %WAS_HOME%\插件\ com.ibm.ws.runtime.jar %WAS_HOME%\插件\部署工具\ ITP \ com.ibm.websphere.v7_7.0.0.v20080817 \ wasJars \ com.ibm.ws.admin.core.jar %WAS_HOME%\ runtimes \ com.ibm.ws.admin.client_7.0.0.jar需要 CONNECTOR_TYPE_SOAP。 CONNECTOR_TYPE_RMI无法连接;也许是基于堆栈跟踪消息的jar问题

public class JMXAdminClientSimple {

`private AdminClient adminClient;     private ObjectName nodeagent = null;

public void initialize() throws Exception {
    try {
        // Initialize the AdminClient.
        Properties props = new Properties();
          props.setProperty(AdminClient.CONNECTOR_HOST, "localhost");
          props.setProperty(AdminClient.CONNECTOR_PORT, "8880");
          props.setProperty(AdminClient.CONNECTOR_TYPE, AdminClient.CONNECTOR_TYPE_SOAP);
          props.setProperty(AdminClient.CONNECTOR_SECURITY_ENABLED, "false");
          props.setProperty(AdminClient.USERNAME, "");
          props.setProperty(AdminClient.PASSWORD, "");
          adminClient = AdminClientFactory.createAdminClient(props);

    } catch (Exception ex) {
        ex.printStackTrace(System.out);
        throw ex;
    }
}`    

答案 1 :(得分:0)

要在Sun / Oracle JRE上使用已禁用安全性的AdminClient API,您需要在类路径中使用以下JAR:

  • 运行时间/ com.ibm.ws.admin.client_7.0.0.jar
  • 运行时间/ com.ibm.ws.ejb.thinclient_7.0.0.jar
  • 运行时间/ com.ibm.ws.orb_7.0.0.jar

通过这些JAR,RMI也应该有效。