users@jersey.java.net

Re: MIME media type, application/xml, was not found - exception

From: Paul Sandoz <Paul.Sandoz_at_Sun.COM>
Date: Fri, 11 Apr 2008 15:58:31 +0200

Hi Rajesh,

The Java type RegistrationContext is annotated with @XmlType. JAXB
support currently only works for JAXB types annotated with @XmlRootElement.

Paul.

Rajesh T wrote:
> Hi,
>
> I am trying to return a JAXB Object from the sample program. I tried to
> modifying the Samples bundles with jersy
>
> Here is the exception I am getting. Any help appreciated.
> **
> **
> *Exception :*
>
> PWC1406: Servlet.service() for servlet WSRP REST Interface threw
> exceptionjava.lang.IllegalArgumentException: A message body writer for
> Java type, class
> com.sun.portal.wsrp.common.stubs.v2.RegistrationContext, and MIME media
> type, application/xml, was not found at
> com.sun.ws.rest.impl.application.MessageBodyFactory.getMessageBodyWriter(MessageBodyFactory.java:153)
> at
> com.sun.ws.rest.spi.container.AbstractContainerResponse.writeEntity(AbstractContainerResponse.java:257)
> at
> com.sun.ws.rest.spi.container.AbstractContainerResponse.writeEntity(AbstractContainerResponse.java:235)
> at
> com.sun.ws.rest.impl.container.servlet.HttpResponseAdaptor.commitAll(HttpResponseAdaptor.java:127)
> at
> com.sun.ws.rest.spi.container.servlet.ServletContainer.service(ServletContainer.java:141)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:831)
> at
> org.apache.catalina.core.ApplicationFilterChain.servletService(ApplicationFilterChain.java:411)
> at
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:290)
> at
> org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:271)
> at
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:202)
> at
> org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:632)
> at
> org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:577)
> at com.sun.enterprise._web.WebPipeline.invoke_
> <http://web.WebPipeline.invoke/>(WebPipeline.java:94) at
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:206)
> at
> org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:632)
> at
> org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:577)
> at
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:571)
> at
> org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1080)
> at
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:150)
> at
> org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:632)
> at
> org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:577)
> at
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:571)
> at
> org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1080)
> at
> org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:272)
> at
> com.sun.enterprise._web.connector.grizzly.DefaultProcessorTask.invokeAdapter_
> <http://web.connector.grizzly.DefaultProcessorTask.invokeAdapter/>(DefaultProcessorTask.java:637)
> at
> com.sun.enterprise._web.connector.grizzly.DefaultProcessorTask.doProcess_
> <http://web.connector.grizzly.DefaultProcessorTask.doProcess/>(DefaultProcessorTask.java:568)
> at
> com.sun.enterprise._web.connector.grizzly.DefaultProcessorTask.process_
> <http://web.connector.grizzly.DefaultProcessorTask.process/>(DefaultProcessorTask.java:813)
> at
> com.sun.enterprise._web.connector.grizzly.DefaultReadTask.executeProcessorTask_
> <http://web.connector.grizzly.DefaultReadTask.executeProcessorTask/>(DefaultReadTask.java:341)
> at
> com.sun.enterprise._web.connector.grizzly.DefaultReadTask.doTask_
> <http://web.connector.grizzly.DefaultReadTask.doTask/>(DefaultReadTask.java:263)
> at
> com.sun.enterprise._web.connector.grizzly.DefaultReadTask.doTask_
> <http://web.connector.grizzly.DefaultReadTask.doTask/>(DefaultReadTask.java:214)
> at com.sun.enterprise._web.portunif.PortUnificationPipeline_
> <http://web.portunif.PortUnificationPipeline/>$PUTask.doTask(PortUnificationPipeline.java:380)
> at com.sun.enterprise._web.connector.grizzly.TaskBase.run_
> <http://web.connector.grizzly.TaskBase.run/>(TaskBase.java:265)
> at com.sun.enterprise._web.connector.grizzly.ssl.SSLWorkerThread.run_
> <http://web.connector.grizzly.ssl.SSLWorkerThread.run/>(SSLWorkerThread.java:106)
>
>
>
>
> *Here is the program :*
>
> import com.sun.portal.wsrp.common.stubs.v2.RegistrationContext;
> import javax.ws.rs.ConsumeMime;
> import javax.ws.rs.GET;
> import javax.ws.rs.ProduceMime;
> import javax.ws.rs.Path;
> @Path("/registration")
> public class RegistrationRS {
>
> @GET
> @ProduceMime({"application/json", "application/xml"})
> public RegistrationContext getRegistration (){
> RegistrationContext regContext = new RegistrationContext();
> regContext.setRegistrationHandle("dummy-rest");
> regContext.setRegistrationState("valid".getBytes());
> return regContext;
> }
> }
>
> **
> *Here is the JAXBObject :*
> **
>
> package com.sun.portal.wsrp.common.stubs.v2;
> import javax.xml.bind.annotation.XmlAccessType;import
> javax.xml.bind.annotation.XmlAccessorType;import
> javax.xml.bind.annotation.XmlElement;import
> javax.xml.bind.annotation.XmlType;
>
> /** * <p>Java class for RegistrationContext complex type. * * <p>The
> following schema fragment specifies the expected content contained
> within this class. * * <pre> * &lt;complexType
> name="RegistrationContext"> * &lt;complexContent> * &lt;extension
> base="{urn:oasis:names:tc:wsrp:v2:types}RegistrationState"> *
> &lt;sequence> * &lt;element name="registrationHandle"
> type="{http://www.w3.org/2001/XMLSchema}string"/> *
> &lt;/sequence> * &lt;/extension> * &lt;/complexContent> *
> &lt;/complexType> *
> </pre> * * */_at_XmlAccessorType(XmlAccessType.FIELD)@XmlType(name =
> "RegistrationContext", propOrder = { "registrationHandle"})public
> class RegistrationContext extends RegistrationState{
> @XmlElement(required = true) protected String registrationHandle;
> /** * Gets the value of the registrationHandle property.
> * * @return * possible object is * {_at_link String
> } * */ public String getRegistrationHandle() {
> return registrationHandle; }
> /** * Sets the value of the registrationHandle property.
> * * @param value * allowed object is * {_at_link
> String } * */ public void setRegistrationHandle(String
> value) { this.registrationHandle = value; }
> }
>
>
> **
> *Here is the Provider :*
>
>
>
> package com.sun.portal.wsrp.producer.registration.impl;
> import com.sun.portal.wsrp.common.stubs.v2.RegistrationContext;import
> com.sun.ws.rest.impl.json.JSONJAXBContext;import
> com.sun.ws.rest.spi.service.ContextResolver;import
> java.util.Arrays;import java.util.HashMap;import
> java.util.HashSet;import java.util.Map;import java.util.Set;import
> javax.xml.bind.JAXBContext;import javax.ws.rs.ext.Provider;
>
> @Providerpublic final class WSRPContextResolver implements
> ContextResolver<JAXBContext> { private final JAXBContext
> context; private final Set<Class> types; private final
> Class[] cTypes = {RegistrationContext.class}; public
> WSRPContextResolver() throws Exception { Map<String, Object>
> props = new HashMap<String, Object>();
> props.put(JSONJAXBContext.JSON_NOTATION, "BADGERFISH");
> props.put(JSONJAXBContext.JSON_ROOT_UNWRAPPING, Boolean.FALSE);
> this.types = new HashSet(Arrays.asList(cTypes)); this.context =
> new JSONJAXBContext(cTypes, props); } public JAXBContext
> getContext(Class<?> objectType) { return
> (types.contains(objectType)) ? context : null; }}
>
> regards
> Rajesh T
>

-- 
| ? + ? = To question
----------------\
    Paul Sandoz
         x38109
+33-4-76188109