我的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。但这是失败的。请帮助。 我已经包含了所有的weblogic服务器库来连接到jndi和 用于赞美的远程业务接口。
客户代码:
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继承;嵌套异常是: java.lang.ClassNotFoundException:com.myeclipse.ejb3.MyBeanRemote] 在 weblogic.jndi.internal.ExceptionTranslator.toNamingException(ExceptionTranslator.java:74) 在 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)at Ejb3_Client.MyBeanClient.main(MyBeanClient.java:33)引起: java.rmi.UnmarshalException:无法解组类 java.lang.Object继承;嵌套异常是: java.lang.ClassNotFoundException:com.myeclipse.ejb3.MyBeanRemote at at weblogic.rjvm.ResponseImpl.unmarshalReturn(ResponseImpl.java:244)at at weblogic.rmi.cluster.ClusterableRemoteRef.invoke(ClusterableRemoteRef.java:348) 在 weblogic.rmi.cluster.ClusterableRemoteRef.invoke(ClusterableRemoteRef.java:259) 在weblogic.jndi.internal.ServerNamingNode_1030_WLStub.lookup(未知 来源)at weblogic.jndi.internal.WLContextImpl.lookup(WLContextImpl.java:392) ... 3更多引起:java.lang.ClassNotFoundException: com.myeclipse.ejb3.MyBeanRemote at java.net.URLClassLoader $ 1.run(URLClassLoader.java:200)at java.security.AccessController.doPrivileged(Native Method)at java.net.URLClassLoader.findClass(URLClassLoader.java:188)at java.lang.ClassLoader.loadClass(ClassLoader.java:307)at sun.misc.Launcher $ AppClassLoader.loadClass(Launcher.java:301)at at java.lang.ClassLoader.loadClass(ClassLoader.java:252)at weblogic.ejb.container.internal.RemoteBusinessIntfProxy.readObject(RemoteBusinessIntfProxy.java:200) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 在java.lang.reflect.Method.invoke(Method.java:597)at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:974) 在 java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1849) 在 java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753) at 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) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329) at java.io.ObjectInputStream.readObject(ObjectInputStream.java:351) 在 weblogic.utils.io.ChunkedObjectInputStream.readObject(ChunkedObjectInputStream.java:197) 在 weblogic.rjvm.MsgAbbrevInputStream.readObject(MsgAbbrevInputStream.java:564) 在 weblogic.utils.io.ChunkedObjectInputStream.readObject(ChunkedObjectInputStream.java:193) 在weblogic.rmi.internal.ObjectIO.readObject(ObjectIO.java:62)at weblogic.rjvm.ResponseImpl.unmarshalReturn(ResponseImpl.java:240)... 7更多
我搜索了很多但是发现问题为什么它不能解组远程接口。
答案 0 :(得分:0)
出现上述错误的原因主要是因为在某些实现了Serializable接口的Java文件中,您可以将这些文件还原为以前的版本