[ https://issues.apache.org/jira/browse/GERONIMO-3793?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12563173#action_12563173 ]
Daniel Kulp commented on GERONIMO-3793: --------------------------------------- Cedric, Can you send the full stack trace? Also, can you try adding an @XmlType annotation with a name attribute in addition to the XmlRootElement? That may allow it to work OK as their will be a type in addition to the global element. > "Not Known To This Context" JAXBException when attempting to return complex > data type from a @WebMethod > ------------------------------------------------------------------------------------------------------- > > Key: GERONIMO-3793 > URL: https://issues.apache.org/jira/browse/GERONIMO-3793 > Project: Geronimo > Issue Type: Bug > Security Level: public(Regular issues) > Components: webservices > Environment: Windows XP x86-32, IBM J9 1.5.0 SR5, Geronimo w/ > Tomcat+OpenEJB+Axis2 > Reporter: Cedric Hurst > Fix For: 2.0.x > > Attachments: ComplexDataTypeWSExampleEAR.ear, geronimo.log > > > I'm attempting to return a @XmlRootElement annotated object called "Customer" > from a @WebMethod. When calling the service, I get the following error in > the server log: > javax.xml.bind.JAXBException: > [Lcom.gmail.at.cedrichurst.complexDataTypeWSExampleEJB.domain.Customer; is > not known to this context > at > com.sun.xml.bind.v2.runtime.XMLSerializer.reportError(XMLSerializer.java:223) > at > com.sun.xml.bind.v2.runtime.XMLSerializer.reportError(XMLSerializer.java:238) > at > com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl$1.serializeBody(ElementBeanInfoImpl.java:85) > at > com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl$1.serializeBody(ElementBeanInfoImpl.java:127) > at > com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl.serializeBody(ElementBeanInfoImpl.java:244) > at > com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl.serializeRoot(ElementBeanInfoImpl.java:251) > at > com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl.serializeRoot(ElementBeanInfoImpl.java:33) > at > com.sun.xml.bind.v2.runtime.XMLSerializer.childAsRoot(XMLSerializer.java:461) > at > com.sun.xml.bind.v2.runtime.MarshallerImpl.write(MarshallerImpl.java:292) > ... 48 more > From what I understand, the return type should be added to the JaxB context > automatically. > Just to make sure I wasn't doing something wrong in my Customer class, I > added another method to my bean that returned a java.util.List of Strings. > When calling this method, I also got the same sort of error: > [javax.xml.bind.JAXBException: java.util.List is not known to this context] > javax.xml.ws.WebServiceException: javax.xml.bind.MarshalException > - with linked exception: > [javax.xml.bind.JAXBException: java.util.List is not known to this context] > at > org.apache.axis2.jaxws.ExceptionFactory.createWebServiceException(ExceptionFactory.java:174) > at > org.apache.axis2.jaxws.ExceptionFactory.makeWebServiceException(ExceptionFactory.java:69) > at > org.apache.axis2.jaxws.ExceptionFactory.makeWebServiceException(ExceptionFactory.java:127) > at > org.apache.axis2.jaxws.message.databinding.impl.JAXBBlockImpl$2.run(JAXBBlockImpl.java:405) > at > org.apache.axis2.java.security.AccessController.doPrivileged(AccessController.java:76) > at > org.apache.axis2.jaxws.message.databinding.impl.JAXBBlockImpl.marshalByType(JAXBBlockImpl.java:321) > at > org.apache.axis2.jaxws.message.databinding.impl.JAXBBlockImpl._outputFromBO(JAXBBlockImpl.java:209) > at > org.apache.axis2.jaxws.message.impl.BlockImpl.outputTo(BlockImpl.java:327) > at > org.apache.axis2.jaxws.message.impl.BlockImpl.serialize(BlockImpl.java:252) > at > org.apache.axiom.om.impl.llom.OMSourcedElementImpl.internalSerializeAndConsume(OMSourcedElementImpl.java:599) > at > org.apache.axiom.om.impl.llom.OMElementImpl.internalSerialize(OMElementImpl.java:785) > at > org.apache.axiom.om.impl.llom.OMElementImpl.internalSerializeAndConsume(OMElementImpl.java:814) > at > org.apache.axiom.om.impl.llom.OMElementImpl.internalSerialize(OMElementImpl.java:785) > at > org.apache.axiom.om.impl.llom.OMElementImpl.internalSerializeAndConsume(OMElementImpl.java:814) > at > org.apache.axiom.soap.impl.llom.SOAPEnvelopeImpl.serializeInternally(SOAPEnvelopeImpl.java:237) > at > org.apache.axiom.soap.impl.llom.SOAPEnvelopeImpl.internalSerialize(SOAPEnvelopeImpl.java:225) > at > org.apache.axiom.om.impl.llom.OMElementImpl.internalSerializeAndConsume(OMElementImpl.java:814) > at > org.apache.axiom.om.impl.llom.OMNodeImpl.serializeAndConsume(OMNodeImpl.java:421) > at > org.apache.axis2.transport.http.SOAPMessageFormatter.writeTo(SOAPMessageFormatter.java:68) > at > org.apache.axis2.transport.http.CommonsHTTPTransportSender.sendUsingOutputStream(CommonsHTTPTransportSender.java:294) > at > org.apache.axis2.transport.http.CommonsHTTPTransportSender.invoke(CommonsHTTPTransportSender.java:211) > at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:396) > at > org.apache.geronimo.axis2.ejb.EJBInterceptor.intercept(EJBInterceptor.java:94) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > at java.lang.reflect.Method.invoke(Method.java:615) > at > org.apache.openejb.core.interceptor.ReflectionInvocationContext$Invocation.invoke(ReflectionInvocationContext.java:146) > at > org.apache.openejb.core.interceptor.ReflectionInvocationContext.proceed(ReflectionInvocationContext.java:129) > at > org.apache.openejb.core.interceptor.InterceptorStack.invoke(InterceptorStack.java:73) > at > org.apache.openejb.core.stateless.StatelessContainer.invokeWebService(StatelessContainer.java:263) > at > org.apache.openejb.core.stateless.StatelessContainer._invoke(StatelessContainer.java:199) > at > org.apache.openejb.core.stateless.StatelessContainer.invoke(StatelessContainer.java:165) > at > org.apache.geronimo.axis2.ejb.EJBMessageReceiver.receive(EJBMessageReceiver.java:88) > at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:145) > at > org.apache.axis2.transport.http.HTTPTransportUtils.processHTTPPostRequest(HTTPTransportUtils.java:275) > at > org.apache.geronimo.axis2.Axis2WebServiceContainer.processPOSTRequest(Axis2WebServiceContainer.java:395) > at > org.apache.geronimo.axis2.Axis2WebServiceContainer.doService2(Axis2WebServiceContainer.java:265) > at > org.apache.geronimo.axis2.Axis2WebServiceContainer.doService(Axis2WebServiceContainer.java:204) > at > org.apache.geronimo.axis2.Axis2WebServiceContainer.invoke(Axis2WebServiceContainer.java:167) > at > org.apache.geronimo.tomcat.TomcatEJBWebServiceContext$EJBWebServiceValve.invoke(TomcatEJBWebServiceContext.java:180) > at > org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) > at > org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) > at > org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) > at > org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:563) > at > org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263) > at > org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844) > at > org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:584) > at > org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447) > at java.lang.Thread.run(Thread.java:801) > According to a thread in the OpenEJB mailing list: > http://www.nabble.com/Returning-complex-data-types-in-%40WebResult-tc15114306.html > ...it doesn't seem that these errors should be happening. > I attempted to test this under CXF, but ran into another issue which is > outlined in another JIRA. > EAR file and geronimo.log attached. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.