2011-12-06 2 views
6

나는 다음과 같은 인터페이스가 있습니다클래스의 직렬화 도움말 (org.omg.CORBA.MARSHAL : WARNUNG : IOP00810011 : 예외 ... 오류)

public interface Ranged 
{ 
    public Object getRangeStart(); 
    public Object getRangeEnd(); 

    public void setRangeStart(Object rangeStart); 
    public void setRangeEnd(Object rangeEnd); 
} 

다음과 같은 구현 클래스 :

public class DateRange implements Ranged, Serializable 
{ 
    private static final long serialVersionUID=SerialVersionUID.getSerialVersionUID(); 
    public DateRange() 
    { 

    } 

    private Date dateFrom; 
    private Date dateTo; 

    public Object getRangeStart() 
    { 
    return (Date)dateFrom; 
    } 

    public Object getRangeEnd() 
    { 
    return (Date)dateTo; 
    } 

    public void setRangeStart(Object from) 
    { 
    this.dateFrom = (Date)from; 
    } 

    public void setRangeEnd(Object to) 
    { 
    this.dateTo = (Date)to; 
    } 
} 

나는 다음과 같은 방법으로 DATERANGE 클래스를 사용

... 
private DateRange creationDate; 
private Date rangeStart; 
private Date rangeStop; 
... 

public DateRange getCreationDate() 
{ 
    SimpleDateFormat sdf_incoming = new SimpleDateFormat("yyyy-MM-dd"); 
    SimpleDateFormat sdf_outgoing = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); 

    creationDate = null; 

    try 
    { 
    if (!isDateRange()) 
    { 
     if (!rangeStart.toString().equals("")) 
     { 
     creationDate = new DateRange(); 
     creationDate.setRangeStart(sdf_outgoing.parse(sdf_incoming.format(rangeStart) + TIME_0)); 
     creationDate.setRangeEnd(sdf_outgoing.parse(sdf_incoming.format(rangeStart) + TIME_24)); 
     } 
    } 
    else 
    { 
     if (!rangeStart.toString().equals("") && rangeStop.toString().equals("")) 
     { 
     creationDate = new DateRange(); 
     creationDate.setRangeStart(sdf_outgoing.parse(sdf_incoming.format(rangeStart) + TIME_0)); 
     creationDate.setRangeEnd(sdf_outgoing.parse(MAX_DATE)); 
     } 
     else if (rangeStart.toString().equals("") && !rangeStop.toString().equals("")) 
     { 
     creationDate = new DateRange(); 
     creationDate.setRangeStart(sdf_outgoing.parse(MIN_DATE)); 
     creationDate.setRangeEnd(sdf_outgoing.parse(sdf_incoming.format(rangeStop) + TIME_24)); 
     } 
     else 
     // both set 
     { 
     creationDate = new DateRange(); 
     creationDate.setRangeStart(sdf_outgoing.parse(sdf_incoming.format(rangeStart) + TIME_0)); 
     creationDate.setRangeEnd(sdf_outgoing.parse(sdf_incoming.format(rangeStop) + TIME_24)); 
     } 
    } 
    } 
    catch (ParseException e) 
    { 
    e.printStackTrace(); 
    } 

return creationDate; 
} 
... 

이 클라이언트 측에서 발생하고 때를 creat을 ionDate를 직렬화하고 서버 측에 전달하면 다음 오류가 발생합니다.

[exec] 2011-12-06T13:34:00.132+0100|WARNING|glassfish3.1|javax.enterprise.resource.corba.ORBUtil|_ThreadID=17;_ThreadName=Thread-1;|IOP00810011: Exception from readValue on ValueHandler in CDRInputStream [exec] org.omg.CORBA.MARSHAL: WARNUNG: IOP00810011: Exception from readValue on ValueHandler in CDRInputStream vmcid: OMG minor code: 11 completed: Maybe [exec] at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) [exec] at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) [exec] at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) [exec] at java.lang.reflect.Constructor.newInstance(Constructor.java:513) [exec] at com.sun.corba.ee.spi.orbutil.logex.corba.CorbaExtension.makeException(CorbaExtension.java:248) [exec] at com.sun.corba.ee.spi.orbutil.logex.corba.CorbaExtension.makeException(CorbaExtension.java:95) [exec] at com.sun.corba.ee.spi.orbutil.logex.WrapperGenerator.handleFullLogging(WrapperGenerator.java:387) [exec] at com.sun.corba.ee.spi.orbutil.logex.WrapperGenerator.access$400(WrapperGenerator.java:107) [exec] at com.sun.corba.ee.spi.orbutil.logex.WrapperGenerator$2.invoke(WrapperGenerator.java:511) [exec] at com.sun.corba.ee.spi.orbutil.proxy.CompositeInvocationHandlerImpl.invoke(CompositeInvocationHandlerImpl.java:99) [exec] at $Proxy157.valuehandlerReadException(Unknown Source) [exec] at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.readRMIIIOPValueType(CDRInputStream_1_0.java:1022) [exec] at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.read_value(CDRInputStream_1_0.java:1123) [exec] at com.sun.corba.ee.impl.encoding.CDRInputObject.read_value(CDRInputObject.java:531) [exec] at com.sun.corba.ee.impl.io.IIOPInputStream.inputObjectField(IIOPInputStream.java:2162) [exec] at com.sun.corba.ee.impl.io.IIOPInputStream.inputClassFields(IIOPInputStream.java:2404) [exec] at com.sun.corba.ee.impl.io.IIOPInputStream.inputObject(IIOPInputStream.java:1224) [exec] at com.sun.corba.ee.impl.io.IIOPInputStream.simpleReadObject(IIOPInputStream.java:425) [exec] at com.sun.corba.ee.impl.io.ValueHandlerImpl.readValueInternal(ValueHandlerImpl.java:308) [exec] at com.sun.corba.ee.impl.io.ValueHandlerImpl.readValue(ValueHandlerImpl.java:274) [exec] at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.readRMIIIOPValueType(CDRInputStream_1_0.java:1015) [exec] at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.read_value(CDRInputStream_1_0.java:1123) [exec] at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.read_value(CDRInputStream_1_0.java:935) [exec] at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.read_abstract_interface(CDRInputStream_1_0.java:928) [exec] at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.read_abstract_interface(CDRInputStream_1_0.java:918) [exec] at com.sun.corba.ee.impl.encoding.CDRInputObject.read_abstract_interface(CDRInputObject.java:557) [exec] at com.sun.corba.ee.impl.io.IIOPInputStream.readObjectDelegate(IIOPInputStream.java:391) [exec] at com.sun.corba.ee.impl.io.IIOPInputStream.readObjectOverride(IIOPInputStream.java:544) [exec] at java.io.ObjectInputStream.readObject(ObjectInputStream.java:345) [exec] at java.util.ArrayList.readObject(ArrayList.java:593) [exec] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [exec] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) [exec] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) [exec] at java.lang.reflect.Method.invoke(Method.java:597) [exec] at com.sun.corba.ee.impl.io.IIOPInputStream.invokeObjectReader(IIOPInputStream.java:1832) [exec] at com.sun.corba.ee.impl.io.IIOPInputStream.inputObject(IIOPInputStream.java:1214) [exec] at com.sun.corba.ee.impl.io.IIOPInputStream.simpleReadObject(IIOPInputStream.java:425) [exec] at com.sun.corba.ee.impl.io.ValueHandlerImpl.readValueInternal(ValueHandlerImpl.java:308) [exec] at com.sun.corba.ee.impl.io.ValueHandlerImpl.readValue(ValueHandlerImpl.java:274) [exec] at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.readRMIIIOPValueType(CDRInputStream_1_0.java:1015) [exec] at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.read_value(CDRInputStream_1_0.java:1123) [exec] at com.sun.corba.ee.impl.encoding.CDRInputObject.read_value(CDRInputObject.java:531) [exec] at com.sun.corba.ee.impl.io.IIOPInputStream.inputObjectField(IIOPInputStream.java:2162) [exec] at com.sun.corba.ee.impl.io.IIOPInputStream.inputClassFields(IIOPInputStream.java:2404) [exec] at com.sun.corba.ee.impl.io.IIOPInputStream.inputObject(IIOPInputStream.java:1224) [exec] at com.sun.corba.ee.impl.io.IIOPInputStream.simpleReadObject(IIOPInputStream.java:425) [exec] at com.sun.corba.ee.impl.io.ValueHandlerImpl.readValueInternal(ValueHandlerImpl.java:308) [exec] at com.sun.corba.ee.impl.io.ValueHandlerImpl.readValue(ValueHandlerImpl.java:274) [exec] at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.readRMIIIOPValueType(CDRInputStream_1_0.java:1015) [exec] at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.read_value(CDRInputStream_1_0.java:1123) [exec] at com.sun.corba.ee.impl.encoding.CDRInputObject.read_value(CDRInputObject.java:531) [exec] at com.sun.corba.ee.impl.presentation.rmi.DynamicMethodMarshallerImpl$14.read(DynamicMethodMarshallerImpl.java:384) [exec] at com.sun.corba.ee.impl.presentation.rmi.DynamicMethodMarshallerImpl.readArguments(DynamicMethodMarshallerImpl.java:451) [exec] at com.sun.corba.ee.impl.presentation.rmi.ReflectiveTie.invoke(ReflectiveTie.java:172) [exec] at com.sun.corba.ee.impl.protocol.CorbaServerRequestDispatcherImpl.dispatchToServant(CorbaServerRequestDispatcherImpl.java:528) [exec] at com.sun.corba.ee.impl.protocol.CorbaServerRequestDispatcherImpl.dispatch(CorbaServerRequestDispatcherImpl.java:199) [exec] at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleRequestRequest(CorbaMessageMediatorImpl.java:1624) [exec] at com.sun.corba.ee.impl.protocol.SharedCDRClientRequestDispatcherImpl.marshalingComplete(SharedCDRClientRequestDispatcherImpl.java:126) [exec] at com.sun.corba.ee.impl.protocol.CorbaClientDelegateImpl.invoke(CorbaClientDelegateImpl.java:273) [exec] at com.sun.corba.ee.impl.presentation.rmi.StubInvocationHandlerImpl.privateInvoke(StubInvocationHandlerImpl.java:200) [exec] at com.sun.corba.ee.impl.presentation.rmi.StubInvocationHandlerImpl.invoke(StubInvocationHandlerImpl.java:152) [exec] at com.sun.corba.ee.impl.presentation.rmi.codegen.CodegenStubBase.invoke(CodegenStubBase.java:227) [exec] at ch.ethz.id.wai.lakshmi.engine.ejb._LakshmiServerInterfaceBeanRemote_Remote_DynamicStub.submitOrderContext(ch/ethz/id/wai/lakshmi/engine/ejb/__LakshmiServerInter faceBeanRemote_Remote_DynamicStub.java) [exec] at ch.ethz.id.wai.lakshmi.engine.ejb._LakshmiServerInterfaceBeanRemote_Wrapper.submitOrderContext(ch/ethz/id/wai/lakshmi/engine/ejb/_LakshmiServerInterfaceBeanRemot e_Wrapper.java) [exec] at ch.ethz.id.wai.web.controller.Controller.submitOrder(Controller.java:49) [exec] at ch.ethz.id.wai.doi.DoiListController.submitOrder(DoiListController.java:56) [exec] at ch.ethz.id.wai.web.controller.ListController.selectData(ListController.java:54) [exec] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [exec] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) [exec] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) [exec] at java.lang.reflect.Method.invoke(Method.java:597) [exec] at com.sun.el.parser.AstValue.invoke(AstValue.java:234) [exec] at com.sun.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:297) [exec] at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105) [exec] at com.sun.faces.facelets.tag.jsf.core.DeclarativeSystemEventListener.processEvent(EventHandler.java:131) [exec] at javax.faces.component.UIComponent$ComponentSystemEventListenerAdapter.processEvent(UIComponent.java:2508) [exec] at javax.faces.event.SystemEvent.processListener(SystemEvent.java:106) [exec] at com.sun.faces.application.ApplicationImpl.processListeners(ApplicationImpl.java:2129) [exec] at com.sun.faces.application.ApplicationImpl.invokeComponentListenersFor(ApplicationImpl.java:2077) [exec] at com.sun.faces.application.ApplicationImpl.publishEvent(ApplicationImpl.java:286) [exec] at com.sun.faces.application.ApplicationImpl.publishEvent(ApplicationImpl.java:244) [exec] at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:108) [exec] at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) [exec] at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139) [exec] at javax.faces.webapp.FacesServlet.service(FacesServlet.java:410) [exec] at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1534) [exec] at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:281) [exec] at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) [exec] at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655) [exec] at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595) [exec] at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:98) [exec] at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:91) [exec] at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:162) [exec] at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:326) [exec] at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:227) [exec] at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:170) [exec] at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:822) [exec] at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:719) [exec] at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1013) [exec] at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:225) [exec] at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137) [exec] at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104) [exec] at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90) [exec] at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79) [exec] at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54) [exec] at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59) [exec] at com.sun.grizzly.ContextTask.run(ContextTask.java:71) [exec] at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532) [exec] at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513) [exec] at java.lang.Thread.run(Thread.java:619) [exec] Caused by: java.lang.NullPointerException [exec] at com.sun.corba.ee.impl.orbutil.ClassInfoCache$ClassInfo.(ClassInfoCache.java:156) [exec] at com.sun.corba.ee.impl.orbutil.ClassInfoCache.get(ClassInfoCache.java:281) [exec] at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.read_value(CDRInputStream_1_0.java:1097) [exec] at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.read_value(CDRInputStream_1_0.java:935) [exec] at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.read_abstract_interface(CDRInputStream_1_0.java:928) [exec] at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.read_abstract_interface(CDRInputStream_1_0.java:918) [exec] at com.sun.corba.ee.impl.encoding.CDRInputObject.read_abstract_interface(CDRInputObject.java:557) [exec] at com.sun.corba.ee.impl.io.IIOPInputStream.readObjectDelegate(IIOPInputStream.java:391) [exec] at com.sun.corba.ee.impl.io.IIOPInputStream.readObjectOverride(IIOPInputStream.java:544) [exec] at java.io.ObjectInputStream.readObject(ObjectInputStream.java:345) [exec] at java.util.HashMap.readObject(HashMap.java:1030) [exec] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [exec] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) [exec] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) [exec] at java.lang.reflect.Method.invoke(Method.java:597) [exec] at com.sun.corba.ee.impl.io.IIOPInputStream.invokeObjectReader(IIOPInputStream.java:1832) [exec] at com.sun.corba.ee.impl.io.IIOPInputStream.inputObject(IIOPInputStream.java:1214) [exec] at com.sun.corba.ee.impl.io.IIOPInputStream.simpleReadObject(IIOPInputStream.java:425) [exec] at com.sun.corba.ee.impl.io.ValueHandlerImpl.readValueInternal(ValueHandlerImpl.java:308) [exec] at com.sun.corba.ee.impl.io.ValueHandlerImpl.readValue(ValueHandlerImpl.java:274) [exec] at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.readRMIIIOPValueType(CDRInputStream_1_0.java:1015) [exec] ... 98 more [exec] |#] [exec]

내가 누락 된 것이 있습니까? 나는 정말로 길을 잃었다. DateRange는 Serializable을 구현하고 (java.util) Date는 직렬화 가능해야합니다. 자세한 정보가 필요한 경우 알려주십시오.

+0

오류가 발견되었습니다. 서버 측에 DateRange 클래스가 없으므로 서버가이를 역 직렬화하는 방법을 알지 못했습니다 ... – Francesco

+0

대답을 게시하고 직접 수락 할 수 있습니다. – Chris

답변

5

오류가 발견되었습니다. DateRange 클래스는 서버 측에 없으므로 서버는이를 역 직렬화하는 방법을 알지 못했습니다.

0

다른 범죄자와 비슷한 오류가있었습니다. 특히 GlassFish 3.1.2.2 (Java 8u60과 함께 실행)의 Windows 설치가 있고 glassfish는 "C : \ Program Files"디렉토리에 설치되었습니다. 이것이 문제였습니다. glassfish를 공간이없는 다른 경로로 옮기면 해결됩니다.

내 특별한 디자인은 다음과 같이 @EJB를 사용하여 주입되는 @Remote 인터페이스입니다.

인터페이스

@Remote 
public interface MyInterface { 
    Collection<MyEntity> getEntities(); 
} 

구현

@Stateless(mappedName"myMappedName") 
public class MyImplementation implements MyInterface { ... } 

folowing에

@Stateless 
public class MyUserClass { 

    @EJB(lookup = "myMappedName") 
    MyInterface myInterfaceInstance; 

    public void SomeFunction { 
     Collection<MyEntity> entities = myInterfaceInstance.getEntities(); 

모든 패키지 사용자 :

EAR 
|____WAR (EJB @Remote Interface, Entity, @Remote user) 
| 
|____WAR (EJB @Remote class) 

remoteCodeBase에서 클래스 간 변환을 찾으려고 할 때 com.sun.corba.ee.impl.util.Utility # loadClassOfType에 문제가 있습니다.