我的 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 类;嵌套异常是:weblogic.jndi.internal.WLContextImpl.translateException(WLContextImpl.java: 439) 在 weblogic.jndi.internal.WLContextImpl.lookup(WLContextImpl.java:395) 在 weblogic.jndi.internal.WLContextImpl.lookup(WLContextImpl.java:380) 在 javax.naming.InitialContext.lookup(InitialContext.java:392) ) 在 Ejb3_Client.MyBeanClient.main(MyBeanClient.java:33) 引起:java.rmi.UnmarshalException:解组类 java.lang.Object 失败;嵌套异常是:java.lang.ClassNotFoundException: com.myeclipse.ejb3。
我进行了很多搜索,但发现它无法解组远程接口的问题。