如何通过远程接口将对象发送到EJB

时间:2015-11-28 16:03:16

标签: java java-ee ejb

你好,我有一个Web应用程序,其中包含带有远程接口的类库,带有bean的EJB模块和Struts 2 Web应用程序。每当我尝试通过远程接口向EJB发送自定义对象时,我都会遇到以下异常。

javax.ejb.EJBException: java.rmi.MarshalException: CORBA MARSHAL 1330446393 Maybe; nested exception is: 
    org.omg.CORBA.MARSHAL: ----------BEGIN server-side stack trace----------
org.omg.CORBA.MARSHAL: WARNING: 00810057: Could not load class newp.Employee  vmcid: OMG  minor code: 57 completed: Maybe
    at com.sun.proxy.$Proxy225.couldNotFindClass(Unknown Source)

无法传递任何自定义对象。类实现了可序列化。通过接口从ejb检索对象时,IT工作正常。有人可以帮忙吗?

2 个答案:

答案 0 :(得分:1)

正如@Spyros k所说,您应首先将自定义类结构包含到服务器中。这意味着您必须将自己的CustomObject.java类放入服务器中。您应该知道EJB发送对象不是发送精确的类对象,它只是服务器的引用,需要转换为类类型。由于JVM,所有Java标准类都在服务器中,但是如果您有自定义类发送引用是不够的,并且您必须在另一侧具有类结构来强制转换接收的引用。 所以在服务器端你应该有这样的东西:

YourCustomObject obj = (YourCustomObject) EjbObject.returnRefernce();

如果您没有另一侧的YourCustomObject.java类,那么你怎么能投它呢? 我建议阅读有关RMI的信息,以了解有关此结构的更多信息。

答案 1 :(得分:0)

类newp.Employee应该包含在Server端的类路径中。 服务器需要类定义来反序列化输入。