によって返されるために、私はRMIのリモートインタフェースがあります。をシリアル化したMBeanServerConnection RMIのリモートメソッド
public interface JMXManager extends Remote {
public MFSMBeanServerConnection getMBeanServerConnection(String className)
throws RemoteException;
}
}
MFSMBeanServerConnection
とMFSMBeanServerConnectionImpl
私はMBeanServerConnectionををシリアル化するために作成された:オン
public interface MFSMBeanServerConnection extends Serializable {
public MBeanServerConnection getMBeanServerConnection();
}
public class MFSMBeanServerConnectionImpl implements MFSMBeanServerConnection {
private static final long serialVersionUID = 1006978249744538366L;
/**
* @serial
*/
private MBeanServerConnection mBeanServerConnection;
public MFSMBeanServerConnectionImpl() {}
public MFSMBeanServerConnectionImpl(MBeanServerConnection mBeanServerConnection) {
this.mBeanServerConnection = mBeanServerConnection;
}
public MBeanServerConnection getMBeanServerConnection() {
return mBeanServerConnection;
}
private void readObject(ObjectInputStream aInputStream) throws ClassNotFoundException,
IOException {
aInputStream.defaultReadObject();
mBeanServerConnection = (MBeanServerConnection) aInputStream.readObject();
}
private void writeObject(ObjectOutputStream aOutputStream) throws IOException {
aOutputStream.defaultWriteObject();
aOutputStream.writeObject(mBeanServerConnection);
}
private void readObjectNoData() throws ObjectStreamException {
}
}
をクライアント側私が持っている
JMXManager jmxm= (JMXManager) registry.lookup("JMXManager");
MFSMBeanServerConnection mfsMbsc = jmxm.getMBeanServerConnection(className);
on the seco NDラインは、私は例外を取得:
- は、クライアントが1 MBeanServerConnectionをを取る彼らのMBeanServerConnectionを格納する1台のまたは複数のJMXサーバ
- によって使用されます。
java.rmi.UnmarshalException: error unmarshalling return; nested exception is: java.io.WriteAbortedException: writing aborted; java.io.NotSerializableException: javax.management.remote.rmi.RMIConnector$RemoteMBeanServerConnection at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:173) at java.rmi.server.RemoteObjectInvocationHandler.invokeRemoteMethod(RemoteObjectInvocationHandler.java:178) at java.rmi.server.RemoteObjectInvocationHandler.invoke(RemoteObjectInvocationHandler.java:132) at $Proxy0.getMBeanServerConnection(Unknown Source)
私の目標は、RMIサーバーを作成することですそのMBeanを使用(操作)する
私は間違っていますか? javax.management.MBeanServerConnectionをシリアル化して、リモートインタフェースで使用できるようにするにはどうすればよいですか?