Hi John
You're nearly there, please do
<jaxrs:server id="defectResource" address="/">
<jaxrs:serviceBeans>
<ref bean="defectResourceBean"/>
</jaxrs:serviceBeans>
<jaxrs:providers>
<ref bean="jaxbProvider"/>
</jaxrs:providers>
</jaxrs:server>
<jaxrs:server>
This way you can associate multiple JAXB providers with slightly different
settings with multiple endpoints in the same context....
I'm sorry yourself and some other users are havig some hard time in seeing the simple apps up and running. I think CXF JAXRS docs
have plenty of info but a GettingStarted guide and FAQ are needed urgently...
thanks, Sergey
----- Original Message -----
From: "John Klassa" <[email protected]>
To: <[email protected]>
Sent: Thursday, November 19, 2009 1:10 AM
Subject: Re: pretty printing XML
Hi Sergey,
I found some other sample XML on the web, and it appears to amount to this:
<bean id="jaxbProvider"
class="org.apache.cxf.jaxrs.provider.JAXBElementProvider">
<property name="marshallerProperties">
<map>
<entry key="jaxb.formatted.output">
<value type="java.lang.Boolean">true</value>
</entry>
</map>
</property>
</bean>
Yet, even this doesn't work (nor does "TRUE"). The XML still comes back without whitespace, when I make a REST call, and with no
particular formatting.
I know it's at least looking at this value because when I try to, e.g., change it to "marshallerPropertiesx" (to put a typo in it),
it complains, and suggests "marshallerProperties" for me. So, I think the setting is fine. Somehow, CXF and JAXB just aren't
connecting the dots.
I'm using a Spring-based approach now, to my knowledge. My web.xml says:
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>WEB-INF/beans.xml</param-value>
</context-param>
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<servlet>
<servlet-name>CDETSWSAPI</servlet-name>
<display-name>CDETS Web Services API</display-name>
<servlet-class>
org.apache.cxf.transport.servlet.CXFServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>CDETSWSAPI</servlet-name>
<url-pattern>/v1/*</url-pattern>
</servlet-mapping>
while my beans.xml says:
<bean id="defectResourceBean"
class="com.cisco.cdets.wsapi.resources.DefectResource"/>
<jaxrs:server id="defectResource" address="/">
<jaxrs:serviceBeans>
<ref bean="defectResourceBean"/>
</jaxrs:serviceBeans>
</jaxrs:server>
<bean id="jaxbProvider"
class="org.apache.cxf.jaxrs.provider.JAXBElementProvider">
<property name="marshallerProperties">
<map>
<entry key="jaxb.formatted.output">
<value type="java.lang.Boolean">true</value>
</entry>
</map>
</property>
</bean>
Any ideas?
Thanks!
On Nov 18, 2009, at 3:36 PM, Sergey Beryozkin wrote:
Hi
I'm sorry, that property has to be of type java.lang.Boolean according
to the Marshaller docs. I'm not sure right now how to specify from
Spring that a given map value should be of Boolean type, does anyone
know how to do it ?
I'll give it a try tomorrow
Thanks, Sergey
-----Original Message-----
From: John Klassa [mailto:[email protected]]
Sent: 18 November 2009 18:39
To: [email protected]
Subject: Re: pretty printing XML
Sorry... I meant to say that the primary docs (for JAX-RS in CXF) is
where I got the same XML from. It doesn't work for me, though. So, I
went looking online, and found the osdir.com reference to doing it
programmatically.
Regardless, just looking to get it to work via a configuration setting.
:-)
On Nov 18, 2009, at 1:35 PM, John Klassa wrote:
Saw this thread:
http://osdir.com/ml/users-cxf-apache/2009-09/msg00014.html
but am wondering how this would be done in a config file. I saw an
example somewhere that says to use:
<bean id="jaxbProvider"
class="org.apache.cxf.jaxrs.provider.JAXBElementProvider">
<property name="marshallerProperties" ref="propertiesMap"/>
</bean>
<util:map id="propertiesMap" map-class="java.util.Hashtable">
<entry key="jaxb.formatted.output" value="true"/>
</util:map>
This seems to have no effect, however.
Basically, I'm trying to get my JAX-RS resources to come back looking
"nice".