rmi - 通过远程 Java 独立应用程序使用 EJB 3.1 bean

标签 rmi java-ee-6 glassfish-3 corba netbeans-7

我一直在尝试使用 Java EE 6 创建一个基于应用程序服务器的应用程序,该应用程序将从 GWT Web 应用程序接收作业对象,而这些作业将从 Java 独立应用程序中提取。我一直认为 EJB 模型会为我提供简单的远程处理方法,因为我的客户端应用程序应该能够在不同的机器上运行。

我使用 Glassfish 3.1 和 Netbeans 7.0.1 作为我的 IDE,我也使用 eclipse Java EE 来重现同样的问题。

我一直面临着接下来的困难:

  • InitialContext 不是很容易找到,它是使用远程处理的唯一方法吗?我不应该能够使用 @EJB/@Inject 使用一些配置文件从我的独立应用程序中进行一些自动代码注入(inject)吗?
  • 我发现了一些方法(未直接在文档中找到)要使 InitialContext 机制正常工作,我需要将其添加到我的库中:gf-client-module.jarweld-osgi-bundle.jar
  • 我一直收到下一个错误:
Exception in thread "main" javax.ejb.EJBException: java.rmi.MarshalException: CORBA MARSHAL 1330446343 No; nested exception is: 
    org.omg.CORBA.MARSHAL: FINE: IOP00810007: Underflow in BufferManagerReadStream after last fragment in message  vmcid: OMG  minor code: 7  completed: No
    at ContentCreator._JobDispatcherRemote_Wrapper.getSimpleJobForProcessing(ContentCreator/_JobDispatcherRemote_Wrapper.java)
    at javaapplication1.JavaApplication1.main(JavaApplication1.java:35)
Caused by: java.rmi.MarshalException: CORBA MARSHAL 1330446343 No; nested exception is: 
    org.omg.CORBA.MARSHAL: FINE: IOP00810007: Underflow in BufferManagerReadStream after last fragment in message  vmcid: OMG  minor code: 7  completed: No
    at com.sun.corba.ee.impl.javax.rmi.CORBA.Util.mapSystemException(Util.java:267)
    at com.sun.corba.ee.impl.presentation.rmi.StubInvocationHandlerImpl.privateInvoke(StubInvocationHandlerImpl.java:213)
    at com.sun.corba.ee.impl.presentation.rmi.StubInvocationHandlerImpl.invoke(StubInvocationHandlerImpl.java:152)
    at com.sun.corba.ee.impl.presentation.rmi.codegen.CodegenStubBase.invoke(CodegenStubBase.java:227)
    at ContentCreator.__JobDispatcherRemote_Remote_DynamicStub.getSimpleJobForProcessing(ContentCreator/__JobDispatcherRemote_Remote_DynamicStub.java)
    ... 2 more
Caused by: org.omg.CORBA.MARSHAL: FINE: IOP00810007: Underflow in BufferManagerReadStream after last fragment in message  vmcid: OMG  minor code: 7  completed: No
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:525)
    at com.sun.corba.ee.spi.orbutil.logex.corba.CorbaExtension.makeException(CorbaExtension.java:248)
    at com.sun.corba.ee.spi.orbutil.logex.corba.CorbaExtension.makeException(CorbaExtension.java:95)
    at com.sun.corba.ee.spi.orbutil.logex.WrapperGenerator.handleFullLogging(WrapperGenerator.java:387)
    at com.sun.corba.ee.spi.orbutil.logex.WrapperGenerator.access$400(WrapperGenerator.java:107)
    at com.sun.corba.ee.spi.orbutil.logex.WrapperGenerator$2.invoke(WrapperGenerator.java:511)
    at com.sun.corba.ee.spi.orbutil.proxy.CompositeInvocationHandlerImpl.invoke(CompositeInvocationHandlerImpl.java:99)
    at $Proxy24.endOfStream(Unknown Source)
    at com.sun.corba.ee.impl.encoding.BufferManagerReadStream.underflow(BufferManagerReadStream.java:128)
    at com.sun.corba.ee.impl.encoding.CDRInputStream_1_1.grow(CDRInputStream_1_1.java:113)
    at com.sun.corba.ee.impl.encoding.CDRInputStream_1_2.alignAndCheck(CDRInputStream_1_2.java:126)
    at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.read_long(CDRInputStream_1_0.java:496)
    at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.readValueTag(CDRInputStream_1_0.java:1810)
    at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.read_value(CDRInputStream_1_0.java:1040)
    at com.sun.corba.ee.impl.encoding.CDRInputObject.read_value(CDRInputObject.java:531)
    at com.sun.corba.ee.impl.presentation.rmi.DynamicMethodMarshallerImpl$14.read(DynamicMethodMarshallerImpl.java:384)
    at com.sun.corba.ee.impl.presentation.rmi.DynamicMethodMarshallerImpl.readResult(DynamicMethodMarshallerImpl.java:483)
    at com.sun.corba.ee.impl.presentation.rmi.StubInvocationHandlerImpl.privateInvoke(StubInvocationHandlerImpl.java:203)
    ... 5 more

我一直面临在我的场景中远程使用 Java EE 6 的问题,但对这些问题几乎没有任何帮助,我们将不胜感激。

最佳答案

在我的例子中,我有相同的堆栈消息“消息 vmcid 中的最后一个片段之后 BufferManagerReadStream 中的下溢:OMG 次要代码:7”

在我的项目中,我有一个未实现 Serializable 接口(interface)的嵌套对象。实现界面解决了我的问题。

关于rmi - 通过远程 Java 独立应用程序使用 EJB 3.1 bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7751951/

相关文章:

java.lang.ClassCastException : com. sun.proxy.$Proxy1 无法转换为

java - 如何在 NetBeans 中运行 RMI?

java-ee-6 - CDI 注入(inject)如何在 MDB 和 @Scheduled bean 中工作?

java - EJB 拦截器与 CDI 拦截器

java - RMI 和引用/代理类

java - java RMI 远程对象(服务器)是单例吗?

dependency-injection - 当injectionpoint.getBean()可以为null时的CDI

java - Netbeans 更新后无法调试项目

mysql - JPA:MySQL 说表不存在,但它实际上存在