cxf-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Sergey Beryozkin <sberyoz...@gmail.com>
Subject Re: recommended way to get XML declaration to appear in REST service response
Date Thu, 25 Apr 2013 20:25:05 GMT
I saw you resolving this issue differently,
In this case, when using JAXRS, you'd have to use JAXBElementProvider 
directly, the option below should also work, but for JAXB classes, I 
think I mislead you with my suggestion given that you used DOMSource

Sergey
On 25/04/13 19:42, Poindexter, Miles wrote:
> Thank you Sergey,
> Yes, this is a REST service built on a JAXWS Provider.
> I have tried doing it two ways, one way uses an OSGi bundle activator to
> create the HTTP endpoint, and there is no configuration file. So I don't
> know how to set the JAXB Marshaller property, because the only object I'm
> seeing is the DOMSource.
>
> The other way I tried it is with regular JAXB annotations creating REST
> service and giving it an HTTP endpoint by using a blueprint configuration
> file.  This would be my preferred way to create REST services going
> forward.
> But I don't know how to set the JAXB Marshaller property in the blueprint
> file.  I tried this:
>
> <bean id="greetingBean" class="com.cn.dsa.service.GreetingServiceImpl"/>
>
>       <jaxrs:server id="greetingService" address="/greeting">
>          <jaxrs:serviceBeans>
>             <ref component-id="greetingBean" />
>          </jaxrs:serviceBeans>
>
>          <jaxrs:dataBinding>
>            <bean class="org.apache.cxf.jaxb.JAXBDataBinding">
>              <property name="marshallerProperties">
>                <map>
>                  <entry>
>                    <key><value>com.sun.xml.bind.xmlDeclaration</value></key>
>                    <value type="boolean">true</value>
>                  </entry>
>                </map>
>              </property>
>            </bean>
>          </jaxrs:dataBinding>
>
>       </jaxrs:server>
>
> But I get this error:
> org.apache.cxf.interceptor.Fault: Unmarshalling Error:
> javax.xml.transform.dom.DOMSource is not known to this context
> 	at
> org.apache.cxf.jaxrs.provider.DataBindingProvider.readFrom(DataBindingProvi
> der.java:76)
> 	at
> org.apache.cxf.jaxrs.utils.JAXRSUtils.readFromMessageBodyReader(JAXRSUtils.
> java:1189)
> 	at
> org.apache.cxf.jaxrs.utils.JAXRSUtils.readFromMessageBody(JAXRSUtils.java:1
> 137)
> 	at
> org.apache.cxf.jaxrs.utils.JAXRSUtils.processParameter(JAXRSUtils.java:686)
> 	at
> org.apache.cxf.jaxrs.utils.JAXRSUtils.processParameters(JAXRSUtils.java:646
> )
> 	at
> org.apache.cxf.jaxrs.interceptor.JAXRSInInterceptor.processRequest(JAXRSInI
> nterceptor.java:237)
> 	at
> org.apache.cxf.jaxrs.interceptor.JAXRSInInterceptor.handleMessage(JAXRSInIn
> terceptor.java:98)
> 	at
> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChai
> n.java:271)
> 	at
> org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationO
> bserver.java:121)
> 	at
> org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDe
> stination.java:239)
> 	at
> org.apache.cxf.transport.servlet.ServletController.invokeDestination(Servle
> tController.java:218)
> 	at
> org.apache.cxf.transport.servlet.ServletController.invoke(ServletController
> .java:163)
> 	at
> org.apache.cxf.transport.servlet.ServletController.invoke(ServletController
> .java:137)
> 	at
> org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringSer
> vlet.java:158)
> 	at
> org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(Abstract
> HTTPServlet.java:243)
> 	at
> org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPSer
> vlet.java:163)
> 	at javax.servlet.http.HttpServlet.service(HttpServlet.java:713)
> . . .
>
>
>
>

Mime
View raw message