私の ejb 3 クラスとリモート インターフェイスは次のとおりです。
package com.myeclipse.ejb3;
import java.io.Serializable;
public interface IMyBean extends Serializable
{
public void doSomething();
}
リモートインターフェース:
package com.myeclipse.ejb3;
import javax.ejb.Remote;
@Remote
public interface MyBeanRemote extends IMyBean {
}
ステートレス EJB:
package com.myeclipse.ejb3;
import javax.ejb.Stateless;
@Stateless(mappedName="ejb/MyBean")
public class MyBean implements MyBeanRemote
{
public void doSomething()
{
System.out.println("Hello world");
}
}
プロジェクトは weblogic で jar ファイルとして正常にデプロイされます。ejb を呼び出すスタンドアロン クライアントを開発しました。しかし、これは失敗しています。親切に助けてください。jndi に接続するためのすべての weblogic サーバー ライブラリと、コンパイル用のリモート ビジネス インターフェイスを含めました。
クライアントコード:
package Ejb3_Client;
import java.util.Properties;
import javax.naming.InitialContext;
import javax.naming.NamingException;
public class MyBeanClient {
/**
* @param args
*/
public static void main(String[] args)
{
// TODO Auto-generated method stub
try {
Properties p = new Properties();
p.put("java.naming.factory.initial", "weblogic.jndi.WLInitialContextFactory");
p.put("java.naming.provider.url", "t3://172.21.123.70:8001");
InitialContext ctx = new InitialContext(p);
MyBeanRemote bean = (MyBeanRemote) ctx.lookup("ejb/MyBean#com.myeclipse.ejb3.MyBeanRemote");
System.out.println("bean instance "+ bean);
bean.doSomething();
System.out.println("bean worked");
} catch (NamingException e) {
e.printStackTrace();
}
}
}
しかし、私はこの例外を受けています:
javax.naming.CommunicationException [ルート例外は java.rmi.UnmarshalException: クラス java.lang.Object の非整列化に失敗しました。ネストされた例外は次のとおりです。 439) weblogic.jndi.internal.WLContextImpl.lookup(WLContextImpl.java:395) で weblogic.jndi.internal.WLContextImpl.lookup(WLContextImpl.java:380) で javax.naming.InitialContext.lookup(InitialContext.java:392) で) at Ejb3_Client.MyBeanClient.main(MyBeanClient.java:33) 原因: java.rmi.UnmarshalException: クラス java.lang.Object の非整列化に失敗しました。ネストされた例外: java.lang.ClassNotFoundException: com.myeclipse.ejb3.
私はたくさん検索しましたが、なぜリモートインターフェイスを非整列化できないのかという問題を見つけました。