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(StandardWrapperValv
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.process(
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.getJSONNamespace(
MappedNamespaceConvention.java:148)
        at
org.codehaus.jettison.mapped.MappedNamespaceConvention.createKey(MappedN
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>


Reply via email to