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

时间:2013-06-25 07:42:42

标签: interface weblogic ejb-3.0 jndi

我的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更多

     

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

1 个答案:

答案 0 :(得分:0)

出现上述错误的原因主要是因为在某些实现了Serializable接口的Java文件中,您可以将这些文件还原为以前的版本