简体   繁体   English

为什么会出现EJB java.rmi.MarshalException:CORBA MARSHAL异常?

[英]Why do i get an EJB java.rmi.MarshalException: CORBA MARSHAL exception?

I'm trying to add items using a JSP page which has a couple of images too. 我正在尝试使用具有两个图像的JSP页面添加项目。 I declared the variables to retrieve images as strings so i can get the URL and store the url in the database. 我声明了变量以将图像检索为字符串,以便获取URL并将URL存储在数据库中。

I'm using EJB and JPA for database purposes. 我将EJB和JPA用于数据库目的。

my code for the servlet 我的servlet代码

ItemDetails id;
ItemBeanRemote ib;
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {

   String id = request.getParameter("id");
   String name = request.getParameter("name");
   double price = Double.valueOf(request.getParameter("price"));
   String imgurl = request.getParameter("imgurl");
   String imgurl2 = request.getParameter("imgurl2");
   String location = request.getParameter("loc");

   id = new ItemDetails(id, name, price, imgurl, imgurl2, location);

    ib.addItem(id);
        response.sendRedirect("View.jsp");

}

@Override
public void init() {
    try {
        Context initial = new InitialContext();
        ib = (ItemBeanRemote) initial.lookup("itembean");
    } catch (Exception ex) {
        System.err.println("Caught an exception:");
        ex.printStackTrace();
    }

//ejb class that has the code to the addItem method //具有addItem方法代码的ejb类

@Override
public void addEvent(ItemDetails details) {
    try {
        tblItem utt = new tblItem(details.getItemID(),details.getItemName(),
                details.getPrice(),details.getImgUrl(),details.getImgUrl2(),details.getLocation());
        em.persist(utt);
    } catch (Exception ex) {
        throw new EJBException(ex);
    }

//item details is a class is a POJO with getters and setters // item details是一个类,是带有getter和setter的POJO

//tblItem is the java class that was created using an entity manager which has auto generated code from JPA. // tblItem是使用实体管理器创建的Java类,该实体管理器具有从JPA自动生成的代码。

And the exception 而且例外

javax.ejb.EJBException: java.rmi.MarshalException: CORBA MARSHAL 1330446343 No; javax.ejb.EJBException:java.rmi.MarshalException:CORBA MARSHAL 1330446343否; nested exception is: org.omg.CORBA.MARSHAL: ----------BEGIN server-side stack trace---------- org.omg.CORBA.MARSHAL: FINE: 00810007: Underflow in BufferManagerReadStream after last fragment in message vmcid: OMG minor code: 7 completed: No at com.sun.proxy.$Proxy154.endOfStream(Unknown Source) at com.sun.corba.ee.impl.encoding.BufferManagerReadStream.underflow(BufferManagerReadStream.java:122) at com.sun.corba.ee.impl.encoding.CDRInputStream_1_1.grow(CDRInputStream_1_1.java:111) 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:433) at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.readValueTag(CDRInputStream_1_0.java:1672) at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.read_value(CDRInputStream_1_0.java:918) at com.sun.corba.ee.impl.encoding.CDRInputObject.read_value(CDRInputObject.java:518) at com.sun.corba.ee.impl.presentation.rmi.DynamicMetho 嵌套的异常是:org.omg.CORBA.MARSHAL:---------- BEGIN服务器端堆栈跟踪---------- org.omg.CORBA.MARSHAL:罚款:00810007:消息vmcid中的最后一个片段之后BufferManagerReadStream中的下溢:OMG次要代码:7完成:com.sun.corba.ee.impl.encoding.BufferManagerReadStream.underflow(在com.sun.proxy。$ Proxy154.endOfStream(未知源)处为否com.sun.corba.ee.impl.encoding.CDRInputStream_1_1.grow(CDRInputStream_1_1.java:111)处的BufferManagerReadStream.java:122)com.sun.corba.ee.impl.encoding.CDRInputStream_1_2.alignAndCheck(CDRInputStream_1_2.java: 126)com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.read_long(CDRInputStream_1_0.java:433)com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.readValueTag(CDRInputStream_1_0.java:1672) com.sun.corba.ee.impl.encoding.CDRInputObject.read_value(CDRInputObject.java:518)上的.sun.corba.ee.impl.encoding.CDRInputStream_1_0.read_value(CDRInputStream_1_0.java:918) .ee.impl.presentation.rmi.DynamicMetho dMarshallerImpl$14.read(DynamicMethodMarshallerImpl.java:383) at com.sun.corba.ee.impl.presentation.rmi.DynamicMethodMarshallerImpl.readArguments(DynamicMethodMarshallerImpl.java:450) at com.sun.corba.ee.impl.presentation.rmi.ReflectiveTie._invoke(ReflectiveTie.java:171) at com.sun.corba.ee.impl.protocol.ServerRequestDispatcherImpl.dispatchToServant(ServerRequestDispatcherImpl.java:528) at com.sun.corba.ee.impl.protocol.ServerRequestDispatcherImpl.dispatch(ServerRequestDispatcherImpl.java:199) at com.sun.corba.ee.impl.protocol.MessageMediatorImpl.handleRequestRequest(MessageMediatorImpl.java:1549) at com.sun.corba.ee.impl.protocol.SharedCDRClientRequestDispatcherImpl.marshalingComplete(SharedCDRClientRequestDispatcherImpl.java:119) at com.sun.corba.ee.impl.protocol.ClientDelegateImpl.invoke(ClientDelegateImpl.java:258) at com.sun.corba.ee.impl.presentation.rmi.StubInvocationHandlerImpl.privateInvoke(StubInvocationHandlerImpl.java:198) at com.sun.corba.ee.impl.presentation.rmi.StubInvoc dMarshallerImpl $ 14.read(DynamicMethodMarshallerImpl.java:383)位于com.sun.corba.ee.impl.presentation.rmi.DynamicMethodMarshallerImpl.readArguments(DynamicMethodMarshallerImpl.java:450)位于com.sun.corba.ee.impl.presentation。 .com.sun.corba.ee.impl.protocol.ServerRequestDispatcherImpl.dispatchToServant(ServerRequestDispatcherImpl.java:528)上的.ReflectiveTie._invoke(ReflectiveTie.java:171)在com.sun.corba.ee.impl.protocol.ServerRequestDispatcherImpl.dispatch上的。 (ServerRequestDispatcherImpl.java:199)com.sun.corba.ee.impl.protocol.MessageMediatorImpl.handleRequestRequest(MessageMediatorImpl.java:1549)com.sun.corba.ee.iprotoprotocol.SharedCDRClientRequestDispatcherImpl.marshalingComplete(SharedCDRClientRequest。 :119),位于com.sun.corba.ee.impl.protocol.ClientDelegateImpl.invoke(ClientDelegateImpl.java:258),位于com.sun.corba.ee.impl.presentation.rmi.StubInvocationHandlerImpl.privateInvoke(StubInvocationHandlerImpl.java:198) ),网址为com.sun.corba.ee.impl.presentation.rmi.StubInvoc ationHandlerImpl.invoke(StubInvocationHandlerImpl.java:150) at com.sun.corba.ee.impl.presentation.rmi.codegen.CodegenStubBase.invoke(CodegenStubBase.java:226) at com.olympics2016.beans.__EventBeanRemote_Remote_DynamicStub.addEvent(com/olympics2016/beans/__EventBeanRemote_Remote_DynamicStub.java) at com.olympics2016.beans._EventBeanRemote_Wrapper.addEvent(com/olympics2016/beans/_EventBeanRemote_Wrapper.java) at com.olympics2016.servlets.AddEventServlet.doPost(AddEventServlet.java:42) at javax.servlet.http.HttpServlet.service(HttpServlet.java:707) at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1682) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:318) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:160) at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:734) at org.apache.catalina.core.StandardPipeline.invok com.sun.corba.ee.impl.presentation.rmi.codegen.CodegenStubBase.invoke(CodegenStubBase.java:226)上的ationHandlerImpl.invoke(StubInvocationHandlerImpl.java:150)在com.olympics2016.beans .__ EventBeanRemote_Remote_DynamicStub。 com.olympics2016.beans._EventBeanRemote_Wrapper.addEvent(com / olympics2016 / beans / _EventBeanRemote_Wrapper.java)上的com.olympics2016.beans.servlets.AddEvent.Servlet上的olympics2016 / beans / __ EventBeanRemote_Remote_DynamicStub.java)。的org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1682)的javax.servlet.http.HttpServlet.service(HttpServlet.java:790)的.http.HttpServlet.service(HttpServlet.java:707) org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:318)位于org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:160)位于org.apache.catalina.core.StandardPipeline.doInvoke( StandardPipeline.java:734),位于org.apache.catalina.core.StandardPipeline.invok e(StandardPipeline.java:673) at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:99) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:174) at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:415) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:282) at com.sun.enterprise.v3.services.impl.ContainerMapper$HttpHandlerCallable.call(ContainerMapper.java:459) at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:167) at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:201) at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:175) at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:235) at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119) at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:284) at org.glassfish.grizzly. e(StandardPipeline.java:673)位于com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:99)位于org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:174)位于org.apache org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:282)上的.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:415)在com.sun.enterprise.v3.services.impl.ContainerMapper $ HttpHandlerCallable org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java)上的.call(ContainerMapper.java:459)在com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:167) :201)在org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:175)在org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:235)在org.glassfish。在org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:284)上的grizzly.filterchain.ExecutorResolver $ 9.execute(ExecutorResolver.java:119)在org.glassfish.grizzly处。 filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:201) at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:133) at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:112) at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77) at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:561) at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:112) at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:117) at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:56) at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:137) at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:565) at org.glassfish.grizzly.threadpool.AbstractThreadPool$W org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:133)的filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:201)在org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:112) org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77)org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:561)org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent (AbstractIOStrategy.java:112)at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:117)at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access $ 100(WorkerThreadIOStrategy.java:56)在org.glassfish。 org.glassfish.grizzly.threadpool.AbstractThreadPool $ Worker.doWork(AbstractThreadPool.java:565)上的.grizzly.strategies.WorkerThreadIOStrategy $ WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:137)在org.glassfish.grizzly.threadpool.AbstractThreadPool $ W orker.run(AbstractThreadPool.java:545) at java.lang.Thread.run(Thread.java:745) orker.run(AbstractThreadPool.java:545)at java.lang.Thread.run(Thread.java:745)

----------END server-side stack trace---------- vmcid: OMG minor code: 7 completed: No ---------- END服务器端堆栈跟踪---------- vmcid:OMG次要代码:7已完成:否

Marshal Exception can occur due to one of the reasons as below : 1) when remote method call is done and no marshaling is done of Java Object and thus the argument or return value will not reach to remote method or to server. 发生元帅异常可能是由于以下原因之一:1)当完成远程方法调用并且未对Java Object进行封送处理时,参数或返回值将不会到达远程方法或服务器。

2) If the protocol we are using in RMI is of different versions at sender and receivers side. 2)如果我们在RMI中使用的协议在发送方和接收方具有不同的版本。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM