[ https://issues.apache.org/jira/browse/CXF-2234?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Tom updated CXF-2234: --------------------- Description: The UserService: [code] @javax.jws.WebService public interface UserService extends AbstractService<User, Users> { } [/code] The AbstractService: @javax.jws.WebService public interface AbstractService<T, Ts> { public Ts list(); } The UserServiceImpl: @javax.jws.WebService(endpointInterface = "nl.knowledgeplaza.profiler.services.UserService", serviceName = "users") // the "ws" prefix is handled by the container public class UserServiceImpl implements UserService { public Users list() { try { if (slf4j.isDebugEnabled()) slf4j.debug("list User"); // find all List<User> lList = User.findAll(); if (slf4j.isDebugEnabled()) slf4j.debug("list User size={}", lList.size()); // create a collection so JAXB knows what to do Users lUsers= new Users(lList); // done return lUsers; } catch (RuntimeException e) { slf4j.error(ExceptionUtil.describe(e), e); throw e; } } } UnitTests start the SOAP end point as follows: javax.xml.ws.Endpoint.publish(cWSUserAddress, new UserServiceImpl()); The unittest: @org.junit.Test public void listUsersSOAP() { // create a proxy to the service JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean(); factory.getInInterceptors().add(new LoggingInInterceptor()); factory.getOutInterceptors().add(new LoggingOutInterceptor()); factory.setServiceClass(UserService.class); factory.setAddress(cWSUserAddress); UserService lUserService = (UserService)factory.create(); // make the call Users lUsers = lUserService.list(); // check it org.fest.assertions.Assertions.assertThat( lUsers.getUser().size() ).isGreaterThan(0); } The call arrives serverside, the code is correctly executed and 4 User entities have been fetched from the database. The JAXB marshalling then runs into problems, resulting in a value of null being returned on the clients side, and failing the unittest on a NPE. The trace: May 22, 2009 11:29:00 AM org.apache.cxf.interceptor.LoggingOutInterceptor$LoggingCallback onClose INFO: Outbound Message --------------------------- ID: 2 Address: http://localhost:9000/ws/user Encoding: UTF-8 Content-Type: text/xml Headers: {SOAPAction=[""], Accept=[*/*]} Payload: <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><ns1:list xmlns:ns1="http://services.profiler.knowledgeplaza.nl/" /></soap:Body></soap:Envelope> -------------------------------------- [33299...@qtp-22864463-1] 2009-05-22 11:29:06,296 DEBUG nl.knowledgeplaza.profiler.services.UserServiceImpl.list(UserServiceImpl.java:48) list User [EL Fine]: 2009-05-22 11:29:07.093--ServerSession(15545028)--Connection(13749345)--Thread(thread[33299...@qtp-22864463-1,5,main])--SELECT id, username, middlename, email, lastname, callname, firstname, version FROM KP_USER [33299...@qtp-22864463-1] 2009-05-22 11:29:08,750 DEBUG nl.knowledgeplaza.profiler.services.UserServiceImpl.list(UserServiceImpl.java:52) list User size=4 May 22, 2009 11:29:11 AM org.apache.cxf.phase.PhaseInterceptorChain doIntercept INFO: Interceptor has thrown exception, unwinding now org.apache.cxf.interceptor.Fault: Marshalling Error: class nl.knowledgeplaza.profiler.services.support.Users nor any of its super class is known to this context. at org.apache.cxf.jaxb.JAXBEncoderDecoder.marshall(JAXBEncoderDecoder.java:159) at org.apache.cxf.jaxb.io.DataWriterImpl.write(DataWriterImpl.java:169) at org.apache.cxf.interceptor.AbstractOutDatabindingInterceptor.writeParts(AbstractOutDatabindingInterceptor.java:105) at org.apache.cxf.interceptor.BareOutInterceptor.handleMessage(BareOutInterceptor.java:68) at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:236) at org.apache.cxf.interceptor.OutgoingChainInterceptor.handleMessage(OutgoingChainInterceptor.java:74) at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:236) at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:89) at org.apache.cxf.transport.http_jetty.JettyHTTPDestination.serviceRequest(JettyHTTPDestination.java:302) at org.apache.cxf.transport.http_jetty.JettyHTTPDestination.doService(JettyHTTPDestination.java:265) at org.apache.cxf.transport.http_jetty.JettyHTTPHandler.handle(JettyHTTPHandler.java:70) at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765) at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:230) at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) at org.mortbay.jetty.Server.handle(Server.java:324) at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:535) at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:880) at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:747) at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212) at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404) at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409) at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:520) Caused by: javax.xml.bind.MarshalException - with linked exception: [javax.xml.bind.JAXBException: class nl.knowledgeplaza.profiler.services.support.Users nor any of its super class is known to this context.] at com.sun.xml.bind.v2.runtime.MarshallerImpl.write(MarshallerImpl.java:328) at com.sun.xml.bind.v2.runtime.MarshallerImpl.marshal(MarshallerImpl.java:254) at javax.xml.bind.helpers.AbstractMarshallerImpl.marshal(AbstractMarshallerImpl.java:75) at org.apache.cxf.jaxb.JAXBEncoderDecoder.writeObject(JAXBEncoderDecoder.java:441) at org.apache.cxf.jaxb.JAXBEncoderDecoder.marshall(JAXBEncoderDecoder.java:138) ... 21 more Caused by: javax.xml.bind.JAXBException: class nl.knowledgeplaza.profiler.services.support.Users nor any of its super class is known to this context. at com.sun.xml.bind.v2.runtime.XMLSerializer.reportError(XMLSerializer.java:242) at com.sun.xml.bind.v2.runtime.XMLSerializer.reportError(XMLSerializer.java:257) at com.sun.xml.bind.v2.runtime.XMLSerializer.childAsXsiType(XMLSerializer.java:649) at com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl$1.serializeBody(ElementBeanInfoImpl.java:151) at com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl$1.serializeBody(ElementBeanInfoImpl.java:185) at com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl.serializeBody(ElementBeanInfoImpl.java:305) at com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl.serializeRoot(ElementBeanInfoImpl.java:312) at com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl.serializeRoot(ElementBeanInfoImpl.java:71) at com.sun.xml.bind.v2.runtime.XMLSerializer.childAsRoot(XMLSerializer.java:490) at com.sun.xml.bind.v2.runtime.MarshallerImpl.write(MarshallerImpl.java:325) ... 25 more Caused by: javax.xml.bind.JAXBException: class nl.knowledgeplaza.profiler.services.support.Users nor any of its super class is known to this context. at com.sun.xml.bind.v2.runtime.JAXBContextImpl.getBeanInfo(JAXBContextImpl.java:566) at com.sun.xml.bind.v2.runtime.XMLSerializer.childAsXsiType(XMLSerializer.java:644) ... 32 more May 22, 2009 11:29:12 AM org.apache.cxf.interceptor.LoggingInInterceptor logging INFO: Inbound Message ---------------------------- ID: 2 Encoding: UTF-8 Content-Type: text/xml; charset=utf-8 Headers: {content-type=[text/xml; charset=utf-8], Content-Length=[415], Server=[Jetty(6.1.15)]} Payload: <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><ns1:listResponse xmlns:ns1="http://services.profiler.knowledgeplaza.nl/"><soap:Fault><faultcode>soap:Server</faultcode><faultstring>Marshalling Error: class nl.knowledgeplaza.profiler.services.support.Users nor any of its super class is known to this context.</faultstring></soap:Fault></ns1:listResponse></soap:Body></soap:Envelope> -------------------------------------- The Users class is just a collection workaround as suggested in CXF's documentation: @XmlRootElement(name = "users") public class Users implements Serializable { public Users() { setUser(new ArrayList<User>()); } // upon JAXB unmarshalling of an empty collection, the setUser is NOT called and the collection would be null instead of empty public Users(Collection<User> c) { setUser(c); } private Collection<User> iCollection; public Collection<User> getUser() { return iCollection; } public void setUser(Collection<User> c) { iCollection = c; } public List<User> asList() { return new ArrayList<User>(iCollection); } } was: The UserService: @javax.jws.WebService public interface UserService extends AbstractService<User, Users> { } The AbstractService: @javax.jws.WebService public interface AbstractService<T, Ts> { public Ts list(); } The UserServiceImpl: @javax.jws.WebService(endpointInterface = "nl.knowledgeplaza.profiler.services.UserService", serviceName = "users") // the "ws" prefix is handled by the container public class UserServiceImpl implements UserService { public Users list() { try { if (slf4j.isDebugEnabled()) slf4j.debug("list User"); // find all List<User> lList = User.findAll(); if (slf4j.isDebugEnabled()) slf4j.debug("list User size={}", lList.size()); // create a collection so JAXB knows what to do Users lUsers= new Users(lList); // done return lUsers; } catch (RuntimeException e) { slf4j.error(ExceptionUtil.describe(e), e); throw e; } } } UnitTests start the SOAP end point as follows: javax.xml.ws.Endpoint.publish(cWSUserAddress, new UserServiceImpl()); The unittest: @org.junit.Test public void listUsersSOAP() { // create a proxy to the service JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean(); factory.getInInterceptors().add(new LoggingInInterceptor()); factory.getOutInterceptors().add(new LoggingOutInterceptor()); factory.setServiceClass(UserService.class); factory.setAddress(cWSUserAddress); UserService lUserService = (UserService)factory.create(); // make the call Users lUsers = lUserService.list(); // check it org.fest.assertions.Assertions.assertThat( lUsers.getUser().size() ).isGreaterThan(0); } The call arrives serverside, the code is correctly executed and 4 User entities have been fetched from the database. The JAXB marshalling then runs into problems, resulting in a value of null being returned on the clients side, and failing the unittest on a NPE. The trace: May 22, 2009 11:29:00 AM org.apache.cxf.interceptor.LoggingOutInterceptor$LoggingCallback onClose INFO: Outbound Message --------------------------- ID: 2 Address: http://localhost:9000/ws/user Encoding: UTF-8 Content-Type: text/xml Headers: {SOAPAction=[""], Accept=[*/*]} Payload: <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><ns1:list xmlns:ns1="http://services.profiler.knowledgeplaza.nl/" /></soap:Body></soap:Envelope> -------------------------------------- [33299...@qtp-22864463-1] 2009-05-22 11:29:06,296 DEBUG nl.knowledgeplaza.profiler.services.UserServiceImpl.list(UserServiceImpl.java:48) list User [EL Fine]: 2009-05-22 11:29:07.093--ServerSession(15545028)--Connection(13749345)--Thread(thread[33299...@qtp-22864463-1,5,main])--SELECT id, username, middlename, email, lastname, callname, firstname, version FROM KP_USER [33299...@qtp-22864463-1] 2009-05-22 11:29:08,750 DEBUG nl.knowledgeplaza.profiler.services.UserServiceImpl.list(UserServiceImpl.java:52) list User size=4 May 22, 2009 11:29:11 AM org.apache.cxf.phase.PhaseInterceptorChain doIntercept INFO: Interceptor has thrown exception, unwinding now org.apache.cxf.interceptor.Fault: Marshalling Error: class nl.knowledgeplaza.profiler.services.support.Users nor any of its super class is known to this context. at org.apache.cxf.jaxb.JAXBEncoderDecoder.marshall(JAXBEncoderDecoder.java:159) at org.apache.cxf.jaxb.io.DataWriterImpl.write(DataWriterImpl.java:169) at org.apache.cxf.interceptor.AbstractOutDatabindingInterceptor.writeParts(AbstractOutDatabindingInterceptor.java:105) at org.apache.cxf.interceptor.BareOutInterceptor.handleMessage(BareOutInterceptor.java:68) at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:236) at org.apache.cxf.interceptor.OutgoingChainInterceptor.handleMessage(OutgoingChainInterceptor.java:74) at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:236) at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:89) at org.apache.cxf.transport.http_jetty.JettyHTTPDestination.serviceRequest(JettyHTTPDestination.java:302) at org.apache.cxf.transport.http_jetty.JettyHTTPDestination.doService(JettyHTTPDestination.java:265) at org.apache.cxf.transport.http_jetty.JettyHTTPHandler.handle(JettyHTTPHandler.java:70) at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765) at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:230) at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) at org.mortbay.jetty.Server.handle(Server.java:324) at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:535) at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:880) at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:747) at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212) at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404) at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409) at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:520) Caused by: javax.xml.bind.MarshalException - with linked exception: [javax.xml.bind.JAXBException: class nl.knowledgeplaza.profiler.services.support.Users nor any of its super class is known to this context.] at com.sun.xml.bind.v2.runtime.MarshallerImpl.write(MarshallerImpl.java:328) at com.sun.xml.bind.v2.runtime.MarshallerImpl.marshal(MarshallerImpl.java:254) at javax.xml.bind.helpers.AbstractMarshallerImpl.marshal(AbstractMarshallerImpl.java:75) at org.apache.cxf.jaxb.JAXBEncoderDecoder.writeObject(JAXBEncoderDecoder.java:441) at org.apache.cxf.jaxb.JAXBEncoderDecoder.marshall(JAXBEncoderDecoder.java:138) ... 21 more Caused by: javax.xml.bind.JAXBException: class nl.knowledgeplaza.profiler.services.support.Users nor any of its super class is known to this context. at com.sun.xml.bind.v2.runtime.XMLSerializer.reportError(XMLSerializer.java:242) at com.sun.xml.bind.v2.runtime.XMLSerializer.reportError(XMLSerializer.java:257) at com.sun.xml.bind.v2.runtime.XMLSerializer.childAsXsiType(XMLSerializer.java:649) at com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl$1.serializeBody(ElementBeanInfoImpl.java:151) at com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl$1.serializeBody(ElementBeanInfoImpl.java:185) at com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl.serializeBody(ElementBeanInfoImpl.java:305) at com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl.serializeRoot(ElementBeanInfoImpl.java:312) at com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl.serializeRoot(ElementBeanInfoImpl.java:71) at com.sun.xml.bind.v2.runtime.XMLSerializer.childAsRoot(XMLSerializer.java:490) at com.sun.xml.bind.v2.runtime.MarshallerImpl.write(MarshallerImpl.java:325) ... 25 more Caused by: javax.xml.bind.JAXBException: class nl.knowledgeplaza.profiler.services.support.Users nor any of its super class is known to this context. at com.sun.xml.bind.v2.runtime.JAXBContextImpl.getBeanInfo(JAXBContextImpl.java:566) at com.sun.xml.bind.v2.runtime.XMLSerializer.childAsXsiType(XMLSerializer.java:644) ... 32 more May 22, 2009 11:29:12 AM org.apache.cxf.interceptor.LoggingInInterceptor logging INFO: Inbound Message ---------------------------- ID: 2 Encoding: UTF-8 Content-Type: text/xml; charset=utf-8 Headers: {content-type=[text/xml; charset=utf-8], Content-Length=[415], Server=[Jetty(6.1.15)]} Payload: <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><ns1:listResponse xmlns:ns1="http://services.profiler.knowledgeplaza.nl/"><soap:Fault><faultcode>soap:Server</faultcode><faultstring>Marshalling Error: class nl.knowledgeplaza.profiler.services.support.Users nor any of its super class is known to this context.</faultstring></soap:Fault></ns1:listResponse></soap:Body></soap:Envelope> -------------------------------------- The Users class is just a collection workaround as suggested in CXF's documentation: @XmlRootElement(name = "users") public class Users implements Serializable { public Users() { setUser(new ArrayList<User>()); } // upon JAXB unmarshalling of an empty collection, the setUser is NOT called and the collection would be null instead of empty public Users(Collection<User> c) { setUser(c); } private Collection<User> iCollection; public Collection<User> getUser() { return iCollection; } public void setUser(Collection<User> c) { iCollection = c; } public List<User> asList() { return new ArrayList<User>(iCollection); } } > Unmarshalling with JAXB of a method that is defined in an inherited interface > results in an NPE exception > --------------------------------------------------------------------------------------------------------- > > Key: CXF-2234 > URL: https://issues.apache.org/jira/browse/CXF-2234 > Project: CXF > Issue Type: Bug > Components: JAXB Databinding > Affects Versions: 2.2.2 > Environment: WindowsXP-SP3, Eclipse 3.4 > Reporter: Tom > > The UserService: > [code] > @javax.jws.WebService > public interface UserService extends AbstractService<User, Users> > { > } > [/code] > The AbstractService: > @javax.jws.WebService > public interface AbstractService<T, Ts> > { > public Ts list(); > } > The UserServiceImpl: > @javax.jws.WebService(endpointInterface = > "nl.knowledgeplaza.profiler.services.UserService", serviceName = "users") // > the "ws" prefix is handled by the container > public class UserServiceImpl > implements UserService > { > public Users list() > { > try > { > if (slf4j.isDebugEnabled()) slf4j.debug("list User"); > > // find all > List<User> lList = User.findAll(); > if (slf4j.isDebugEnabled()) slf4j.debug("list User > size={}", lList.size()); > > // create a collection so JAXB knows what to do > Users lUsers= new Users(lList); > > // done > return lUsers; > } > catch (RuntimeException e) > { > slf4j.error(ExceptionUtil.describe(e), e); > throw e; > } > } > } > UnitTests start the SOAP end point as follows: > javax.xml.ws.Endpoint.publish(cWSUserAddress, new UserServiceImpl()); > The unittest: > @org.junit.Test > public void listUsersSOAP() > { > // create a proxy to the service > JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean(); > factory.getInInterceptors().add(new LoggingInInterceptor()); > factory.getOutInterceptors().add(new LoggingOutInterceptor()); > factory.setServiceClass(UserService.class); > factory.setAddress(cWSUserAddress); > UserService lUserService = (UserService)factory.create(); > > // make the call > Users lUsers = lUserService.list(); > > // check it > org.fest.assertions.Assertions.assertThat( > lUsers.getUser().size() ).isGreaterThan(0); > } > The call arrives serverside, the code is correctly executed and 4 User > entities have been fetched from the database. The JAXB marshalling then runs > into problems, resulting in a value of null being returned on the clients > side, and failing the unittest on a NPE. > The trace: > May 22, 2009 11:29:00 AM > org.apache.cxf.interceptor.LoggingOutInterceptor$LoggingCallback onClose > INFO: Outbound Message > --------------------------- > ID: 2 > Address: http://localhost:9000/ws/user > Encoding: UTF-8 > Content-Type: text/xml > Headers: {SOAPAction=[""], Accept=[*/*]} > Payload: <soap:Envelope > xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><ns1:list > xmlns:ns1="http://services.profiler.knowledgeplaza.nl/" > /></soap:Body></soap:Envelope> > -------------------------------------- > [33299...@qtp-22864463-1] 2009-05-22 11:29:06,296 DEBUG > nl.knowledgeplaza.profiler.services.UserServiceImpl.list(UserServiceImpl.java:48) > list User > [EL Fine]: 2009-05-22 > 11:29:07.093--ServerSession(15545028)--Connection(13749345)--Thread(thread[33299...@qtp-22864463-1,5,main])--SELECT > id, username, middlename, email, lastname, callname, firstname, version FROM > KP_USER > [33299...@qtp-22864463-1] 2009-05-22 11:29:08,750 DEBUG > nl.knowledgeplaza.profiler.services.UserServiceImpl.list(UserServiceImpl.java:52) > list User size=4 > May 22, 2009 11:29:11 AM org.apache.cxf.phase.PhaseInterceptorChain > doIntercept > INFO: Interceptor has thrown exception, unwinding now > org.apache.cxf.interceptor.Fault: Marshalling Error: class > nl.knowledgeplaza.profiler.services.support.Users nor any of its super class > is known to this context. > at > org.apache.cxf.jaxb.JAXBEncoderDecoder.marshall(JAXBEncoderDecoder.java:159) > at org.apache.cxf.jaxb.io.DataWriterImpl.write(DataWriterImpl.java:169) > at > org.apache.cxf.interceptor.AbstractOutDatabindingInterceptor.writeParts(AbstractOutDatabindingInterceptor.java:105) > at > org.apache.cxf.interceptor.BareOutInterceptor.handleMessage(BareOutInterceptor.java:68) > at > org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:236) > at > org.apache.cxf.interceptor.OutgoingChainInterceptor.handleMessage(OutgoingChainInterceptor.java:74) > at > org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:236) > at > org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:89) > at > org.apache.cxf.transport.http_jetty.JettyHTTPDestination.serviceRequest(JettyHTTPDestination.java:302) > at > org.apache.cxf.transport.http_jetty.JettyHTTPDestination.doService(JettyHTTPDestination.java:265) > at > org.apache.cxf.transport.http_jetty.JettyHTTPHandler.handle(JettyHTTPHandler.java:70) > at > org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765) > at > org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:230) > at > org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) > at org.mortbay.jetty.Server.handle(Server.java:324) > at > org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:535) > at > org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:880) > at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:747) > at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212) > at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404) > at > org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409) > at > org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:520) > Caused by: javax.xml.bind.MarshalException > - with linked exception: > [javax.xml.bind.JAXBException: class > nl.knowledgeplaza.profiler.services.support.Users nor any of its super class > is known to this context.] > at > com.sun.xml.bind.v2.runtime.MarshallerImpl.write(MarshallerImpl.java:328) > at > com.sun.xml.bind.v2.runtime.MarshallerImpl.marshal(MarshallerImpl.java:254) > at > javax.xml.bind.helpers.AbstractMarshallerImpl.marshal(AbstractMarshallerImpl.java:75) > at > org.apache.cxf.jaxb.JAXBEncoderDecoder.writeObject(JAXBEncoderDecoder.java:441) > at > org.apache.cxf.jaxb.JAXBEncoderDecoder.marshall(JAXBEncoderDecoder.java:138) > ... 21 more > Caused by: javax.xml.bind.JAXBException: class > nl.knowledgeplaza.profiler.services.support.Users nor any of its super class > is known to this context. > at > com.sun.xml.bind.v2.runtime.XMLSerializer.reportError(XMLSerializer.java:242) > at > com.sun.xml.bind.v2.runtime.XMLSerializer.reportError(XMLSerializer.java:257) > at > com.sun.xml.bind.v2.runtime.XMLSerializer.childAsXsiType(XMLSerializer.java:649) > at > com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl$1.serializeBody(ElementBeanInfoImpl.java:151) > at > com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl$1.serializeBody(ElementBeanInfoImpl.java:185) > at > com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl.serializeBody(ElementBeanInfoImpl.java:305) > at > com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl.serializeRoot(ElementBeanInfoImpl.java:312) > at > com.sun.xml.bind.v2.runtime.ElementBeanInfoImpl.serializeRoot(ElementBeanInfoImpl.java:71) > at > com.sun.xml.bind.v2.runtime.XMLSerializer.childAsRoot(XMLSerializer.java:490) > at > com.sun.xml.bind.v2.runtime.MarshallerImpl.write(MarshallerImpl.java:325) > ... 25 more > Caused by: javax.xml.bind.JAXBException: class > nl.knowledgeplaza.profiler.services.support.Users nor any of its super class > is known to this context. > at > com.sun.xml.bind.v2.runtime.JAXBContextImpl.getBeanInfo(JAXBContextImpl.java:566) > at > com.sun.xml.bind.v2.runtime.XMLSerializer.childAsXsiType(XMLSerializer.java:644) > ... 32 more > May 22, 2009 11:29:12 AM org.apache.cxf.interceptor.LoggingInInterceptor > logging > INFO: Inbound Message > ---------------------------- > ID: 2 > Encoding: UTF-8 > Content-Type: text/xml; charset=utf-8 > Headers: {content-type=[text/xml; charset=utf-8], Content-Length=[415], > Server=[Jetty(6.1.15)]} > Payload: <soap:Envelope > xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><ns1:listResponse > > xmlns:ns1="http://services.profiler.knowledgeplaza.nl/"><soap:Fault><faultcode>soap:Server</faultcode><faultstring>Marshalling > Error: class nl.knowledgeplaza.profiler.services.support.Users nor any of > its super class is known to this > context.</faultstring></soap:Fault></ns1:listResponse></soap:Body></soap:Envelope> > -------------------------------------- > The Users class is just a collection workaround as suggested in CXF's > documentation: > @XmlRootElement(name = "users") > public class Users > implements Serializable > { > public Users() { setUser(new ArrayList<User>()); } // upon JAXB > unmarshalling of an empty collection, the setUser is NOT called and the > collection would be null instead of empty > public Users(Collection<User> c) { setUser(c); } > > private Collection<User> iCollection; > public Collection<User> getUser() { return iCollection; } > public void setUser(Collection<User> c) { iCollection = c; } > > public List<User> asList() { return new ArrayList<User>(iCollection); } > } -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.