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