Interface CommunicationException-无法解组在weblogic中查找ejb3的远程业务接口

Interface CommunicationException-无法解组在weblogic中查找ejb3的远程业务接口,interface,weblogic,ejb-3.0,jndi,Interface,Weblogic,Ejb 3.0,Jndi,我的EJB3类和远程接口如下: 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 MyBeanRe

我的EJB3类和远程接口如下:

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和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;嵌套异常为: java.lang.ClassNotFoundException:com.myeclipse.ejb3.MyBeanRemote] 在 weblogic.jndi.internal.ExceptionTranslator.tonamingeException(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)中 Ejb3_Client.MyBeanClient.main(MyBeanClient.java:33)由以下原因引起: java.rmi.UnmarshalException:未能解组类 java.lang.Object;嵌套异常是: java.lang.ClassNotFoundException:com.myeclipse.ejb3.MyBeanRemote位于 weblogic.rjvm.ResponseImpl.unmarshalReturn(ResponseImpl.java:244)位于 weblogic.rmi.cluster.ClusterableRemoteRef.invoke(ClusterableRemoteRef.java:348) 在 weblogic.rmi.cluster.ClusterableRemoteRef.invoke(ClusterableRemoteRef.java:259) 在weblogic.jndi.internal.ServerNamingNode_1030_WLStub.lookup(未知 来源)在 weblogic.jndi.internal.WLContextImpl.lookup(WLContextImpl.java:392) ... 3更多原因:java.lang.ClassNotFoundException: com.myeclipse.ejb3.MyBeanRemote位于 java.net.URLClassLoader$1.run(URLClassLoader.java:200)在 java.security.AccessController.doPrivileged(本机方法)位于 java.net.URLClassLoader.findClass(URLClassLoader.java:188)位于 loadClass(ClassLoader.java:307)位于 sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)位于 java.lang.ClassLoader.loadClass(ClassLoader.java:252)位于 weblogic.ejb.container.internal.RemoteBusinessIntfProxy.readObject(RemoteBusinessIntfProxy.java:200) 位于的sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法) invoke(NativeMethodAccessorImpl.java:39) 在 reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 位于java.lang.reflect.Method.invoke(Method.java:597) java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:974) 在 java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1849) 在 java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753) 位于java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329) 在 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) 在 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) weblogic.rjvm.ResponseImpl.unmarshalReturn(ResponseImpl.java:240)。。。 还有7个

我搜索了很多,但发现了为什么它不能解组远程接口的问题


出现上述错误的原因主要是因为在一些实现可序列化接口的java文件中,您可以将这些文件恢复到以前的版本

根据我在这里看到的内容,您的代码看起来是正确的:因此,您部署jar文件的方式可能不正确。你能描述一下它是如何部署的吗?它是否在weblogic控制台的部署区域中显示为
Active
?@better\u user\u mkstemp是的,它是活动的,没有错误。但是,通过将客户端类与无状态bean的包保持在同一个包中,我让它工作了。很好-如果你愿意,你可以将你的解决方案作为答案发布,这样其他人就可以看到它,而不必阅读评论。告诉我如何将问题作为答案发布,以及如何在上面打上正确的标记,就像我在其他问题上看到的那样回答正确。