users@glassfish.java.net

Re: heisenbug in JAXB while using JAX-WS in v1 UR1?

From: <glassfish_at_javadesktop.org>
Date: Fri, 09 Feb 2007 09:24:16 PST

On a whim, I installed the pre-release of Java 6 for MacOS X and configured v1 UR1 to
run on it, in hopes that it would either magically resolve my issue or at least give a more
informative stack trace. I think I got the latter.

The NanoDictionary class mentioned here is our home-grown workaround to the well-known
bug that prevents one from using Map as a return type from a service operation.

    (the root cause of which is https://jaxb.dev.java.net/issues/show_bug.cgi?id=268 )

In our particular use-case, our service needs to return a List of such maps.

Interestingly, this is something that we can do successfully in one service, but not in two.
More specifically: we can have a service that returns a List of NanoDictionary successfully,
in any number of operations within that service. But when we add a second service that
contains an operation that returns a List of dictionaries then this exception occurrs.



java.lang.IllegalArgumentException: Can not set java.util.ArrayList field net.nanonation.rccl.service.jaxws.CheckFileVersionsResponse._return to net.nanonation.rccl.util.NanonationDictionary
       at com.sun.xml.ws.encoding.soap.EncoderDecoder.createJAXBBeanPayload(EncoderDecoder.java:261)
       at com.sun.xml.ws.encoding.soap.EncoderDecoder.createDocLitPayloadValue(EncoderDecoder.java:193)
       at com.sun.xml.ws.encoding.soap.EncoderDecoder.createPayload(EncoderDecoder.java:162)
       at com.sun.xml.ws.encoding.soap.ServerEncoderDecoder.toInternalMessage(ServerEncoderDecoder.java:156)
       at com.sun.xml.ws.protocol.soap.server.SOAPMessageDispatcher.setResponseInContext(SOAPMessageDispatcher.java:364)
       at com.sun.xml.ws.protocol.soap.server.SOAPMessageDispatcher.getResponse(SOAPMessageDispatcher.java:288)
       at com.sun.xml.ws.protocol.soap.server.SOAPMessageDispatcher$SoapInvoker.invoke(SOAPMessageDispatcher.java:601)
       at com.sun.xml.ws.protocol.soap.server.SOAPMessageDispatcher.receive(SOAPMessageDispatcher.java:145)
       at com.sun.xml.ws.server.Tie.handle(Tie.java:88)
       at com.sun.enterprise.webservice.JAXWSServlet.doPost(JAXWSServlet.java:195)
       at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
       at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
       at org.apache.catalina.core.ApplicationFilterChain.servletService(ApplicationFilterChain.java:397)
       at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:278)
       at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:566)
       at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:536)
       at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:240)
       at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:179)
       at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:566)
       at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:73)
       at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:182)
       at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:566)
       at com.sun.enterprise.web.VirtualServerPipeline.invoke(VirtualServerPipeline.java:120)
       at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:939)
       at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:137)
       at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:566)
       at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:536)
       at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:939)
       at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:239)
       at com.sun.enterprise.web.connector.grizzly.ProcessorTask.invokeAdapter(ProcessorTask.java:667)
       at com.sun.enterprise.web.connector.grizzly.ProcessorTask.processNonBlocked(ProcessorTask.java:574)
       at com.sun.enterprise.web.connector.grizzly.ProcessorTask.process(ProcessorTask.java:844)
       at com.sun.enterprise.web.connector.grizzly.ReadTask.executeProcessorTask(ReadTask.java:287)
       at com.sun.enterprise.web.connector.grizzly.ReadTask.doTask(ReadTask.java:212)
       at com.sun.enterprise.web.connector.grizzly.TaskBase.run(TaskBase.java:252)
       at com.sun.enterprise.web.connector.grizzly.WorkerThread.run(WorkerThread.java:75)
Caused by: java.lang.IllegalArgumentException: Can not set java.util.ArrayList field net.nanonation.rccl.service.jaxws.CheckFileVersionsResponse._return to net.nanonation.rccl.util.NanonationDictionary
       at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:146)
       at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:150)
       at sun.reflect.UnsafeObjectFieldAccessorImpl.set(UnsafeObjectFieldAccessorImpl.java:63)
       at java.lang.reflect.Field.set(Field.java:656)
       at com.sun.xml.bind.v2.runtime.reflect.Accessor$FieldReflection.set(Accessor.java:195)
       at com.sun.xml.bind.v2.runtime.reflect.NullSafeAccessor.set(NullSafeAccessor.java:36)
       at com.sun.xml.bind.v2.runtime.reflect.Accessor.setUnadapted(Accessor.java:116)
       at com.sun.xml.bind.v2.runtime.JAXBContextImpl$6.set(JAXBContextImpl.java:806)
       at com.sun.xml.ws.encoding.EncoderDecoderBase.setWrapperChildValue(EncoderDecoderBase.java:108)
       at com.sun.xml.ws.encoding.soap.EncoderDecoder.createJAXBBeanPayload(EncoderDecoder.java:256)
       ... 35 more
java.lang.IllegalArgumentException: Can not set java.util.ArrayList field net.nanonation.rccl.service.jaxws.CheckFileVersionsResponse._return to net.nanonation.rccl.util.NanonationDictionary
java.lang.IllegalArgumentException: Can not set java.util.ArrayList field net.nanonation.rccl.service.jaxws.CheckFileVersionsResponse._return to net.nanonation.rccl.util.NanonationDictionary
       at com.sun.xml.ws.encoding.soap.EncoderDecoder.createJAXBBeanPayload(EncoderDecoder.java:261)
       at com.sun.xml.ws.encoding.soap.EncoderDecoder.createDocLitPayloadValue(EncoderDecoder.java:193)
       at com.sun.xml.ws.encoding.soap.EncoderDecoder.createPayload(EncoderDecoder.java:162)
       at com.sun.xml.ws.encoding.soap.ServerEncoderDecoder.toInternalMessage(ServerEncoderDecoder.java:156)
       at com.sun.xml.ws.protocol.soap.server.SOAPMessageDispatcher.setResponseInContext(SOAPMessageDispatcher.java:364)
       at com.sun.xml.ws.protocol.soap.server.SOAPMessageDispatcher.getResponse(SOAPMessageDispatcher.java:288)
       at com.sun.xml.ws.protocol.soap.server.SOAPMessageDispatcher$SoapInvoker.invoke(SOAPMessageDispatcher.java:601)
       at com.sun.xml.ws.protocol.soap.server.SOAPMessageDispatcher.receive(SOAPMessageDispatcher.java:145)
       at com.sun.xml.ws.server.Tie.handle(Tie.java:88)
       at com.sun.enterprise.webservice.JAXWSServlet.doPost(JAXWSServlet.java:195)
       at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
       at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
       at org.apache.catalina.core.ApplicationFilterChain.servletService(ApplicationFilterChain.java:397)
       at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:278)
       at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:566)
       at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:536)
       at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:240)
       at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:179)
       at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:566)
       at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:73)
       at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:182)
       at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:566)
       at com.sun.enterprise.web.VirtualServerPipeline.invoke(VirtualServerPipeline.java:120)
       at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:939)
       at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:137)
       at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:566)
       at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:536)
       at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:939)
       at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:239)
       at com.sun.enterprise.web.connector.grizzly.ProcessorTask.invokeAdapter(ProcessorTask.java:667)
       at com.sun.enterprise.web.connector.grizzly.ProcessorTask.processNonBlocked(ProcessorTask.java:574)
       at com.sun.enterprise.web.connector.grizzly.ProcessorTask.process(ProcessorTask.java:844)
       at com.sun.enterprise.web.connector.grizzly.ReadTask.executeProcessorTask(ReadTask.java:287)
       at com.sun.enterprise.web.connector.grizzly.ReadTask.doTask(ReadTask.java:212)
       at com.sun.enterprise.web.connector.grizzly.TaskBase.run(TaskBase.java:252)
       at com.sun.enterprise.web.connector.grizzly.WorkerThread.run(WorkerThread.java:75)
Caused by: java.lang.IllegalArgumentException: Can not set java.util.ArrayList field net.nanonation.rccl.service.jaxws.CheckFileVersionsResponse._return to net.nanonation.rccl.util.NanonationDictionary
       at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:146)
       at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:150)
       at sun.reflect.UnsafeObjectFieldAccessorImpl.set(UnsafeObjectFieldAccessorImpl.java:63)
       at java.lang.reflect.Field.set(Field.java:656)
       at com.sun.xml.bind.v2.runtime.reflect.Accessor$FieldReflection.set(Accessor.java:195)
       at com.sun.xml.bind.v2.runtime.reflect.NullSafeAccessor.set(NullSafeAccessor.java:36)
       at com.sun.xml.bind.v2.runtime.reflect.Accessor.setUnadapted(Accessor.java:116)
       at com.sun.xml.bind.v2.runtime.JAXBContextImpl$6.set(JAXBContextImpl.java:806)
       at com.sun.xml.ws.encoding.EncoderDecoderBase.setWrapperChildValue(EncoderDecoderBase.java:108)
       at com.sun.xml.ws.encoding.soap.EncoderDecoder.createJAXBBeanPayload(EncoderDecoder.java:256)
       ... 35 more
java.lang.IllegalArgumentException: Can not set java.util.ArrayList field net.nanonation.rccl.service.jaxws.CheckFileVersionsResponse._return to net.nanonation.rccl.util.NanonationDictionary
       at com.sun.xml.ws.encoding.soap.EncoderDecoder.createJAXBBeanPayload(EncoderDecoder.java:261)
       at com.sun.xml.ws.encoding.soap.EncoderDecoder.createDocLitPayloadValue(EncoderDecoder.java:193)
       at com.sun.xml.ws.encoding.soap.EncoderDecoder.createPayload(EncoderDecoder.java:162)
       at com.sun.xml.ws.encoding.soap.ServerEncoderDecoder.toInternalMessage(ServerEncoderDecoder.java:156)
       at com.sun.xml.ws.protocol.soap.server.SOAPMessageDispatcher.setResponseInContext(SOAPMessageDispatcher.java:364)
       at com.sun.xml.ws.protocol.soap.server.SOAPMessageDispatcher.getResponse(SOAPMessageDispatcher.java:288)
       at com.sun.xml.ws.protocol.soap.server.SOAPMessageDispatcher$SoapInvoker.invoke(SOAPMessageDispatcher.java:601)
       at com.sun.xml.ws.protocol.soap.server.SOAPMessageDispatcher.receive(SOAPMessageDispatcher.java:145)
       at com.sun.xml.ws.server.Tie.handle(Tie.java:88)
       at com.sun.enterprise.webservice.JAXWSServlet.doPost(JAXWSServlet.java:195)
       at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
       at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
       at org.apache.catalina.core.ApplicationFilterChain.servletService(ApplicationFilterChain.java:397)
       at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:278)
       at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:566)
       at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:536)
       at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:240)
       at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:179)
       at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:566)
       at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:73)
       at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:182)
       at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:566)
       at com.sun.enterprise.web.VirtualServerPipeline.invoke(VirtualServerPipeline.java:120)
       at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:939)
       at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:137)
       at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:566)
       at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:536)
       at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:939)
       at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:239)
       at com.sun.enterprise.web.connector.grizzly.ProcessorTask.invokeAdapter(ProcessorTask.java:667)
       at com.sun.enterprise.web.connector.grizzly.ProcessorTask.processNonBlocked(ProcessorTask.java:574)
       at com.sun.enterprise.web.connector.grizzly.ProcessorTask.process(ProcessorTask.java:844)
       at com.sun.enterprise.web.connector.grizzly.ReadTask.executeProcessorTask(ReadTask.java:287)
       at com.sun.enterprise.web.connector.grizzly.ReadTask.doTask(ReadTask.java:212)
       at com.sun.enterprise.web.connector.grizzly.TaskBase.run(TaskBase.java:252)
       at com.sun.enterprise.web.connector.grizzly.WorkerThread.run(WorkerThread.java:75)
Caused by: java.lang.IllegalArgumentException: Can not set java.util.ArrayList field net.nanonation.rccl.service.jaxws.CheckFileVersionsResponse._return to net.nanonation.rccl.util.NanonationDictionary
       at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:146)
       at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:150)
       at sun.reflect.UnsafeObjectFieldAccessorImpl.set(UnsafeObjectFieldAccessorImpl.java:63)
       at java.lang.reflect.Field.set(Field.java:656)
       at com.sun.xml.bind.v2.runtime.reflect.Accessor$FieldReflection.set(Accessor.java:195)
       at com.sun.xml.bind.v2.runtime.reflect.NullSafeAccessor.set(NullSafeAccessor.java:36)
       at com.sun.xml.bind.v2.runtime.reflect.Accessor.setUnadapted(Accessor.java:116)
       at com.sun.xml.bind.v2.runtime.JAXBContextImpl$6.set(JAXBContextImpl.java:806)
       at com.sun.xml.ws.encoding.EncoderDecoderBase.setWrapperChildValue(EncoderDecoderBase.java:108)
       at com.sun.xml.ws.encoding.soap.EncoderDecoder.createJAXBBeanPayload(EncoderDecoder.java:256)
       ... 35 more
[Message sent by forum member 'pohl' (pohl)]

http://forums.java.net/jive/thread.jspa?messageID=202923