users@jersey.java.net

Re: [Jersey] Jersey and JAXB issue

From: Pavel Bucek <Pavel.Bucek_at_Sun.COM>
Date: Mon, 19 Jul 2010 15:44:32 +0200

Hello Ci-Ci,

you probably don't have any provider in your project so not finding one
is not an issue.

I just recreated your app (modified jersey helloworld sample) and it is
working for me;

GET http://localhost:9998/auth/username/authenticate

returns

<?xml version="1.0" encoding="UTF-8" standalone="yes"?><User><username>sam</username><status>active</status></User>

(I fixed some typos but I presume that is not the cause of your
problem). Can you share your project or minimal failing testcase (better
alternative)?

Pavel


On 7/19/10 2:26 AM, Ci-Ci Thomson wrote:
> I have an application using Jersey 1.3 and JAXB to return the XML
> representation. I had a similar application working with Jersey
> 1.0.3, but I must be missing something with this new version because
> it cannot find any provider classes from the ScanningResourceConfig
> and it cannot find an appropriate message body writer.
>
> Part of my JAXB bean:
>
> @XmlAccessorType(XmlAccessType.FIELD)
> @XmlType(name = "User", propOrder = {
> "id",
> "username",
> "status"
> })
> @XmlRootElement(name = "User")
> public class User {
>
> @XmlElement(required = true)
> protected BigInteger id;
> @XmlElement(required = true)
> protected String username;
> @XmlElement(required = true)
> protected String status;
>
>
> Root Resource class:
> @Path("/auth")
> public class TestController
> {
>
> @Context
> UriInfo uriInfo;
> @Context
> Request request;
> @Path("/{username}/authenticate")
> @GET
> @Produces("application/xml")
> public User authenticate(@PathParam("username")String username)
> {
> System.out.println("USER: " + username);
> User user = new User();
> user.setName="sam";
> user.setStatus="active";
> return user;
> }
> }
>
> Jul 18, 2010 7:50:35 PM com.sun.jersey.api.core.PackagesResourceConfig
> init
> INFO: Scanning for root resource and provider classes in the packages:
> com.ea.mythic.ops.pa_auth_service.controllers
> Jul 18, 2010 7:50:35 PM com.sun.jersey.api.core.ScanningResourceConfig
> logClasses
> INFO: Root resource classes found:
> class com.ea.mythic.ops.pa_auth_service.controllers.TestController
> class com.ea.mythic.ops.pa_auth_service.controllers.AccountController
> Jul 18, 2010 7:50:35 PM com.sun.jersey.api.core.ScanningResourceConfig
> init
> INFO: No provider classes found.
> Jul 18, 2010 7:50:35 PM
> com.sun.jersey.server.impl.application.WebApplicationImpl _initiate
> INFO: Initiating Jersey application, version 'Jersey: 1.3 06/17/2010
> 04:53 PM'
> Jul 18, 2010 7:50:41 PM com.sun.jersey.spi.container.ContainerResponse
> write
> SEVERE: A message body writer for Java class
> com.ea.mythic.ops.pa_auth_service.db.user.User, and Java type class
> com.ea.mythic.ops.pa_auth_service.db.user.User, and MIME media type
> application/xml was not found
>
> Jul 18, 2010 7:50:41 PM com.sun.jersey.spi.container.ContainerResponse
> write
> SEVERE: The registered message body writers compatible with the MIME
> media type are:
> application/xml ->
> com.sun.jersey.core.impl.provider.entity.XMLJAXBElementProvider$App
> com.sun.jersey.core.impl.provider.entity.DocumentProvider
> com.sun.jersey.core.impl.provider.entity.SourceProvider$SourceWriter
> com.sun.jersey.core.impl.provider.entity.XMLRootElementProvider$App
> com.sun.jersey.core.impl.provider.entity.XMLListElementProvider$App
> */* ->
> com.sun.jersey.core.impl.provider.entity.FormProvider
> com.sun.jersey.core.impl.provider.entity.StringProvider
> com.sun.jersey.core.impl.provider.entity.ByteArrayProvider
> com.sun.jersey.core.impl.provider.entity.FileProvider
> com.sun.jersey.core.impl.provider.entity.InputStreamProvider
> com.sun.jersey.core.impl.provider.entity.DataSourceProvider
> com.sun.jersey.core.impl.provider.entity.XMLJAXBElementProvider$General
> com.sun.jersey.core.impl.provider.entity.ReaderProvider
> com.sun.jersey.core.impl.provider.entity.DocumentProvider
> com.sun.jersey.core.impl.provider.entity.StreamingOutputProvider
> com.sun.jersey.core.impl.provider.entity.SourceProvider$SourceWriter
> com.sun.jersey.server.impl.template.ViewableMessageBodyWriter
> com.sun.jersey.core.impl.provider.entity.XMLRootElementProvider$General
> com.sun.jersey.core.impl.provider.entity.XMLListElementProvider$General
>
> Jul 18, 2010 7:50:41 PM com.sun.jersey.spi.container.ContainerResponse
> traceException
> SEVERE: Mapped exception to response: 500 (Internal Server Error)
> javax.ws.rs.WebApplicationException
> at
> com.sun.jersey.spi.container.ContainerResponse.write(ContainerResponse.java:273)
> at
> com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1140)
> at
> com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1053)
> at
> com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1043)
>
> Thanks for any help in advance.
>
> Ci-Ci