Grab a latest snapshot of CXF, check out the samples\jax_rs\content_negotiation 
demo. The spring configuration can be found in [1]. An example of using JSON to 
do post can be found in system test: 
trunk\systests\src\test\java\org\apache\cxf\systest\jaxrs\JAXRSClientServerBookTest.java

[1]. http://cwiki.apache.org/CXF20DOC/jax-rs-jsr-311.html

Cheers,
Jervis

> -----Original Message-----
> From: Vespa, Anthony J [mailto:[EMAIL PROTECTED]
> Sent: 2008年1月12日 1:43
> To: [email protected]
> Subject: Issues with JSON based Service and Jettison
> 
> Hello,
> 
> I cannot seem to get a JSON based servive to work properly.  Does anyone
> have a complete end to end example using the spring config to set up
> jettison?  Ideally I want to be able to use a post or a get to a service
> using JSON both on request and response.
> 
> I am accessing the service via /message/ABC123DEF456/4
> I am using Jettison and am getting the following exceptions:
> 
> Jan 11, 2008 12:36:27 PM
> org.apache.cxf.interceptor.AttachmentInInterceptor handleMessage
> INFO: AttachmentInInterceptor skipped in HTTP GET method
> Jan 11, 2008 12:36:27 PM
> org.apache.cxf.binding.http.interceptor.DispatchInterceptor
> handleMessage
> INFO: Invoking GET on /message/ABC123DEF456/4
> Jan 11, 2008 12:36:27 PM
> org.apache.cxf.binding.http.interceptor.URIParameterInInterceptor
> handleMessage
> INFO: URIParameterInterceptor handle message on path
> [/message/ABC123DEF456/4] with content-type [null]
> Jan 11, 2008 12:36:27 PM org.apache.cxf.phase.PhaseInterceptorChain
> doIntercept
> INFO: Interceptor has thrown exception, unwinding now
> org.apache.cxf.interceptor.Fault: SINGLE_PART_REQUIRED
>         at
> org.apache.cxf.binding.http.interceptor.URIParameterInInterceptor.handle
> Message(URIParameterInInterceptor.java:82)
>         at
> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorC
> hain.java:207)
>         at
> org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiati
> onObserver.java:78)
>         at
> org.apache.cxf.transport.servlet.ServletDestination.doMessage(ServletDes
> tination.java:79)
>         at
> org.apache.cxf.transport.servlet.ServletController.invokeDestination(Ser
> vletController.java:264)
>         at
> org.apache.cxf.transport.servlet.ServletController.invoke(ServletControl
> ler.java:123)
>         at
> org.apache.cxf.transport.servlet.AbstractCXFServlet.invoke(AbstractCXFSe
> rvlet.java:170)
>         at
> org.apache.cxf.transport.servlet.AbstractCXFServlet.doGet(AbstractCXFSer
> vlet.java:152)
>         at javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
>         at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
>         at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applica
> tionFilterChain.java:290)
>         at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilt
> erChain.java:206)
>         at
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperVa
> lv
> e.java:233)
>         at
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValv
> e.java:175)
>         at
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java
> :128)
>         at
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java
> :102)
>         at
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.
> java:109)
>         at
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:2
> 63)
>         at
> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:84
> 4)
>         at
> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.proce
> ss(
> Http11Protocol.java:584)
>         at
> org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
>         at java.lang.Thread.run(Thread.java:595)
> Jan 11, 2008 12:36:27 PM org.apache.cxf.phase.PhaseInterceptorChain
> doIntercept
> INFO: Interceptor has thrown exception, unwinding now
> java.lang.IllegalStateException: Invalid JSON namespace:
> http://cxf.apache.org/bindings/xformat
>         at
> org.codehaus.jettison.mapped.MappedNamespaceConvention.getJSONNam
> espace(
> MappedNamespaceConvention.java:148)
>         at
> org.codehaus.jettison.mapped.MappedNamespaceConvention.createKey(M
> appedN
> amespaceConvention.java:155)
>         at
> org.codehaus.jettison.mapped.MappedXMLStreamWriter.writeStartElement(
> Map
> pedXMLStreamWriter.java:220)
>         at
> org.apache.cxf.staxutils.StaxUtils.writeStartElement(StaxUtils.java:182)
> )
> 
> 
> I set up my jettison properties in my beans.xml as such following other
> examples on this list:
> 
>     <jaxws:endpoint id="jBoardService"
> implementor="com.cbs.bos.ws.json.BoardServiceImpl"
> address="/jBoardService"
> bindingUri="http://apache.org/cxf/binding/http";>
> <jaxws:properties>
> <entry key="Content-Type" value="text/plain"/>
> </jaxws:properties>
> <jaxws:serviceFactory>
> <bean class="org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean">
> <property name="wrapped" value="false"/>
> <property name="properties">
> <map>
> <entry>
> <key><value>javax.xml.stream.XMLInputFactory</value></key>
> <bean class="org.codehaus.jettison.mapped.MappedXMLInputFactory">
> <constructor-arg>
> <map>
> <entry key="http://BoardService.json.bos.cbs.com/";
> value="jBoardService"/>
> <entry key="http://BoardServiceImpl.json.bos.cbs.com/";
> value="jBoardServiceImpl"/>
> </map>
> </constructor-arg>
> </bean>
> </entry>
> <entry>
> <key><value>javax.xml.stream.XMLOutputFactory</value></key>
> <bean class="org.codehaus.jettison.mapped.MappedXMLOutputFactory">
> <constructor-arg>
> <map>
> <entry key="http://BoardService.json.bos.cbs.com/";
> value="jBoardService"/>
> <entry key="http://BoardServiceImpl.json.bos.cbs.com/";
> value="jBoardServiceImpl"/>
> </map>
> </constructor-arg>
> </bean>
> </entry>
> </map>
> </property>
> </bean>
> </jaxws:serviceFactory>
> </jaxws:endpoint>

----------------------------
IONA Technologies PLC (registered in Ireland)
Registered Number: 171387
Registered Address: The IONA Building, Shelbourne Road, Dublin 4, Ireland

Reply via email to