Return-Path: X-Original-To: apmail-cxf-users-archive@www.apache.org Delivered-To: apmail-cxf-users-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id EEB9C1458 for ; Tue, 26 Apr 2011 13:40:02 +0000 (UTC) Received: (qmail 24476 invoked by uid 500); 26 Apr 2011 13:40:02 -0000 Delivered-To: apmail-cxf-users-archive@cxf.apache.org Received: (qmail 24341 invoked by uid 500); 26 Apr 2011 13:40:02 -0000 Mailing-List: contact users-help@cxf.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: users@cxf.apache.org Delivered-To: mailing list users@cxf.apache.org Delivered-To: moderator for users@cxf.apache.org Received: (qmail 20333 invoked by uid 99); 26 Apr 2011 13:38:34 -0000 X-ASF-Spam-Status: No, hits=0.7 required=5.0 tests=FREEMAIL_FROM,RCVD_IN_DNSWL_NONE,RFC_ABUSE_POST,SPF_NEUTRAL X-Spam-Check-By: apache.org Received-SPF: neutral (nike.apache.org: 62.38.3.33 is neither permitted nor denied by domain of karypid@gmail.com) Content-Type: text/plain; charset=utf-8; format=flowed; delsp=yes To: "users@cxf.apache.org" Subject: Re: Controlling the JAXB context [javax.xml.bind.JAXBException: class SomeClass nor any of its super class is known to this context.] References: Date: Tue, 26 Apr 2011 16:38:01 +0300 MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: "Alexandros Karypidis" Organization: armoniq Message-ID: In-Reply-To: User-Agent: Opera Mail/11.10 (Win32) X-Virus-Scanned: ClamAV version 0.94.2, clamav-milter version 0.94.2 on takeit01.mail.dc.hol.net X-Virus-Status: Clean X-Virus-Checked: Checked by ClamAV on apache.org Sorry about this question; just realized it's purely JAXB-related. I've gotten around it by using @XmlSeeAlso as follows: @XmlRootElement(name = "resultsPage") @XmlSeeAlso({ ArticleInfo.class }) public class ArticlePage extends ResultsPage { } On Tue, 26 Apr 2011 16:23:10 +0300, Alexandros Karypidis wrote: > Hello, > > I am using CXF 2.4.0 + Spring 3.0.5 to create JAX-RS services. In one > case I have a service for which I need to marshal a generic type. When I > go about doing this, I end up getting an exception like this: > > [javax.xml.bind.JAXBException: class my.package.ArticleInfo nor any of > its super class is known to this context.] > at > com.sun.xml.bind.v2.runtime.MarshallerImpl.write(MarshallerImpl.java:318) > at > com.sun.xml.bind.v2.runtime.MarshallerImpl.marshal(MarshallerImpl.java:172) > at > org.apache.cxf.jaxrs.provider.JSONProvider.marshal(JSONProvider.java:387) > at > org.apache.cxf.jaxrs.provider.JSONProvider.marshal(JSONProvider.java:420) > at > org.apache.cxf.jaxrs.provider.JSONProvider.writeTo(JSONProvider.java:300) > at > org.apache.cxf.jaxrs.interceptor.JAXRSOutInterceptor.serializeMessage(JAXRSOutInterceptor.java:256) > at > org.apache.cxf.jaxrs.interceptor.JAXRSOutInterceptor.processResponse(JAXRSOutInterceptor.java:144) > at > org.apache.cxf.jaxrs.interceptor.JAXRSOutInterceptor.handleMessage(JAXRSOutInterceptor.java:83) > at > org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:263) > at > org.apache.cxf.interceptor.OutgoingChainInterceptor.handleMessage(OutgoingChainInterceptor.java:77) > at > org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:263) > at > org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:118) > at > org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:208) > at > org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:223) > at > org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:166) > at > org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringServlet.java:113) > at > org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:184) > at > org.apache.cxf.transport.servlet.AbstractHTTPServlet.doGet(AbstractHTTPServlet.java:112) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:575) > > My data types are: > > @XmlRootElement(name = "resultsPage") > public class ResultsPage { > int pageOffset; > int count; > } > > @XmlRootElement(name = "resultsPage") > public class ArticlePage extends ResultsPage { > // no extra fields here; just specializes the generic > } > > @XmlRootElement(name = "resultsPage") > public class StaffPage extends ResultsPage { > // no extra fields here; just specializes the generic > > } > > How would I instruct CXF to include the classes ArticleInfo/StafInfo/etc > in the JAXBContext used to marshal/unmarshal the data?