0

JBossにデプロイされたMBeanを呼び出そうとしていますが、次の例外があります。

java.rmi.UnmarshalException:引数のアンマーシャリング中にエラーが発生しました。ネストされた例外は次のとおりです。
    java.io.InvalidClassException:org.jboss.security.auth.callback.SecurityAssociationHandler; org.jboss.security.auth.callback.SecurityAssociationHandler; 逆シリアル化に無効なクラス
    sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:293)で
    sun.rmi.transport.Transport $ 1.run(Transport.java:159)で
    java.security.AccessController.doPrivileged(ネイティブメソッド)で
    sun.rmi.transport.Transport.serviceCall(Transport.java:155)で
    sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:535)で
    sun.rmi.transport.tcp.TCPTransport $ ConnectionHandler.run0(TCPTransport.java:790)で
    sun.rmi.transport.tcp.TCPTransport $ ConnectionHandler.run(TCPTransport.java:649)で
    java.util.concurrent.ThreadPoolExecutor $ Worker.runTask(ThreadPoolExecutor.java:886)で
    java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:908)で
    java.lang.Thread.run(Thread.java:637)で
原因:java.io.InvalidClassException:org.jboss.security.auth.callback.SecurityAssociationHandler; org.jboss.security.auth.callback.SecurityAssociationHandler; 逆シリアル化に無効なクラス
    java.io.ObjectStreamClass.checkDeserialize(ObjectStreamClass.java:713)で
    java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1733)で
    java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)で
    java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1947)で
    java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1871)で
    java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)で
    java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)で
    java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)で
    org.jboss.invocation.MarshalledInvocation.readExternal(MarshalledInvocation.java:665)で
    java.io.ObjectInputStream.readExternalData(ObjectInputStream.java:1792)で
    java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1751)で
    java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)で
    java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)で
    sun.rmi.server.UnicastRef.unmarshalValue(UnicastRef.java:306)で
    sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:290)で
    ...9もっと
原因:java.io.InvalidClassException:org.jboss.security.auth.callback.SecurityAssociationHandler; 逆シリアル化に無効なクラス
    java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:587)で
    java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1583)で
    java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1496)で
    java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1732)で
    ...22もっと

JBoss 5.1.0GAを使用していますが、クライアントコードは

    プロパティenv=new Properties();
            env.put(Context.INITIAL_CONTEXT_FACTORY、 "org.jnp.interfaces.NamingContextFactory");
            env.put(Context.URL_PKG_PREFIXES、 "org.jboss.naming:org.jnp.interfaces");
            env.put(Context.PROVIDER_URL、 "jnp:// localhost:1099");

            InitialContext ctx;
            ctx = new InitialContext(env);

            MBeanServerConnectionサーバー=(MBeanServerConnection)ctx.lookup( "jmx / rmi / RMIAdaptor");


               //CacheMgmtInterceptorMBeanへの参照を取得します

              String cache_service = "jboss:service = JNDIView";
               ObjectName mgmt_name = new ObjectName(cache_service);
               System.out.println(server.getMBeanInfo(mgmt_name).getClassName());
               Object [] obj = new String [1];
               obj [0] = new String( "hello Sapo pepe");
            Object temp = server.invoke(mgmt_name、 "sayHello"、obj、new String [] {"String"});
            System.out.println(temp);

JBOSS JNDI-Consoleにアクセスできるので、MBeanが機能しています。前もって感謝します

4

1 に答える 1

1

問題は、Eclipseがクラスパスにjbossクライアントjarを含まないクライアントを実行することでした。

解決策は、Eclipseの実行構成オプションの[クラスパス]タブにjarファイルを追加することでした。

于 2010-09-29T14:13:20.357 に答える