I updated CXFNonSpringJaxrsServlet to support the injection of simple properties for service and Application classes, providers and interceptors, few people have asked about it, Carl-Eric, others, so it makes sense to add some simple support, ex:
<init>
<param-name>jaxrs.interceptors</param-name>
<param-value>
  org.bar.MyClass
  (property=value, property2=value)
</param-value>
</init>

MyClass is expected to have setProperty and setproeprt1 methods, with a primitive or List class type

Cheers, Sergey

On 27/09/11 11:57, Muller, Anthony wrote:
Thanks very much Sergey, I will try this.

Regards,
Anthony

-----Original Message-----
From: Sergey Beryozkin [mailto:[email protected]]
Sent: mardi 27 septembre 2011 12:36
To: [email protected]
Subject: Re: CXF 2.3.3 - JSON output - java.lang.IllegalStateException: Invalid 
JSON namespace

Hi

The default Jettison provider expects a namespace-to-prefix map set up.
If you don't realy need the prefixes on the receiving end then the
simplest option is to configure JSONProvider with an "ignoreNamespaces"
property, otherwise you'd need to provide a map, here is more info:

http://cxf.apache.org/docs/jax-rs-data-bindings.html#JAX-RSDataBindings-ConfiguringJSONprovider

The thing is how to configure it given that you are using
CXFNonSpringJAXRSServlet.

One option is to extend JSONProvider and only set "ignoreNamespace" or
"namespaceMap" property as needed on the superclass. And register it
with the servlet using a jaxrs.providers parameter.

Another option is try registering Jackson.

I should probably do some enhancement for users be able to set simple
properties on providers registered from web.xml...

Cheers, Sergey


On 27/09/11 10:41, Muller, Anthony wrote:
Hello,

I have an issue when I try to get a JSON output, using a JAXB object, of my 
REST webservice. (XML output is ok.)

My webservice is running without using Spring.

Can you help me? I don't know how to fix it despite browsing many websites from 
Google.

Cheers,
Anthony


The exception is:
javax.ws.rs.WebApplicationException: java.lang.IllegalStateException: Invalid 
JSON namespace: http://www.w3.org/2001/XMLSchema-instance
                  at 
org.apache.cxf.jaxrs.provider.JSONProvider.writeTo(JSONProvider.java:291)
                  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:255)
                  at 
org.apache.cxf.interceptor.OutgoingChainInterceptor.handleMessage(OutgoingChainInterceptor.java:77)
                  at 
org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:255)
                  at 
org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:113)
                  at 
org.apache.cxf.transport.servlet.ServletDestination.invoke(ServletDestination.java:97)
                  at 
org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:461)
                  at 
org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:149)
                  at 
com.sap.bip.rs.server.servlet.BIPServletController.invoke(BIPServletController.java:90)
                  at 
org.apache.cxf.transport.servlet.AbstractCXFServlet.invoke(AbstractCXFServlet.java:148)
                  at 
org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:179)
                  at 
org.apache.cxf.transport.servlet.AbstractHTTPServlet.doGet(AbstractHTTPServlet.java:108)
                  at 
javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
                  at 
org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:159)
                  at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
                  at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
                  at 
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
                  at 
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
                  at 
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
                  at 
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
                  at 
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:555)
                  at 
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
                  at 
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
                  at 
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:852)
                  at 
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
                  at 
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
                  at java.lang.Thread.run(Thread.java:722)
Caused by: java.lang.IllegalStateException: Invalid JSON namespace: 
http://www.w3.org/2001/XMLSchema-instance
                  at 
org.codehaus.jettison.mapped.MappedNamespaceConvention.getJSONNamespace(MappedNamespaceConvention.java:248)
                  at 
org.codehaus.jettison.mapped.MappedNamespaceConvention.createAttributeKey(MappedNamespaceConvention.java:233)
                  at 
org.codehaus.jettison.mapped.MappedXMLStreamWriter.writeAttribute(MappedXMLStreamWriter.java:216)
                  at 
org.apache.cxf.staxutils.DelegatingXMLStreamWriter.writeAttribute(DelegatingXMLStreamWriter.java:71)
                  at 
org.apache.cxf.jaxrs.provider.JSONUtils$IgnoreContentJettisonWriter.writeAttribute(JSONUtils.java:204)
                  at 
org.apache.cxf.staxutils.DelegatingXMLStreamWriter.writeAttribute(DelegatingXMLStreamWriter.java:71)
                  at 
com.sun.xml.internal.bind.v2.runtime.output.XMLStreamWriterOutput.attribute(XMLStreamWriterOutput.java:122)
                  at 
com.sun.xml.internal.bind.v2.runtime.XMLSerializer.attribute(XMLSerializer.java:403)
                  at 
com.sun.xml.internal.bind.v2.runtime.XMLSerializer.writeXsiNilTrue(XMLSerializer.java:764)
                  at 
com.sun.xml.internal.bind.v2.runtime.property.SingleElementLeafProperty.serializeBody(SingleElementLeafProperty.java:91)
                  at 
com.sun.xml.internal.bind.v2.runtime.ClassBeanInfoImpl.serializeBody(ClassBeanInfoImpl.java:306)
                  at 
com.sun.xml.internal.bind.v2.runtime.XMLSerializer.childAsXsiType(XMLSerializer.java:664)
                  at 
com.sun.xml.internal.bind.v2.runtime.property.ArrayElementNodeProperty.serializeItem(ArrayElementNodeProperty.java:54)
                  at 
com.sun.xml.internal.bind.v2.runtime.property.ArrayElementProperty.serializeListBody(ArrayElementProperty.java:157)
                  at 
com.sun.xml.internal.bind.v2.runtime.property.ArrayERProperty.serializeBody(ArrayERProperty.java:141)
                  at 
com.sun.xml.internal.bind.v2.runtime.ClassBeanInfoImpl.serializeBody(ClassBeanInfoImpl.java:306)
                  at 
com.sun.xml.internal.bind.v2.runtime.XMLSerializer.childAsSoleContent(XMLSerializer.java:561)
                  at 
com.sun.xml.internal.bind.v2.runtime.ClassBeanInfoImpl.serializeRoot(ClassBeanInfoImpl.java:290)
                  at 
com.sun.xml.internal.bind.v2.runtime.XMLSerializer.childAsRoot(XMLSerializer.java:462)
                  at 
com.sun.xml.internal.bind.v2.runtime.MarshallerImpl.write(MarshallerImpl.java:314)
                  at 
com.sun.xml.internal.bind.v2.runtime.MarshallerImpl.marshal(MarshallerImpl.java:161)
                  at 
org.apache.cxf.jaxrs.provider.JSONProvider.marshal(JSONProvider.java:344)
                  at 
org.apache.cxf.jaxrs.provider.JSONProvider.marshal(JSONProvider.java:377)
                  at 
org.apache.cxf.jaxrs.provider.JSONProvider.writeTo(JSONProvider.java:283)


Reply via email to