Hi,
I'm just new on JAX-RS and I did a little example on Jersey. I built two
provider classes that should print out the information of the classes called
"Car" and "Truck". If i do a GET request on the first ressource resource it
works. On the the second request i get the follwing message:
javax.servlet.ServletException: non-HTTP request or response
        at
com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:241)
        at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
        at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at
org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
        at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
        at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:235)
        at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
        at
org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:190)
        at
org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:92)
        at
org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.process(SecurityContextEstablishmentValve.java:126)
        at
org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.invoke(SecurityContextEstablishmentValve.java:70)
        at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
        at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
        at
org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:158)
        at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
        at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:330)
        at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:828)
        at
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:601)
        at
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
        at java.lang.Thread.run(Thread.java:619)
Here my web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="
http://www.w3.org/2001/XMLSchema-instance"
xmlns="
http://java.sun.com/xml/ns/javaee"
xmlns:web="
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="
http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID"
version="2.5">
  <display-name>JerseyTest</display-name>
  <servlet>
          <display-name>JAX_RS REST Servlet</display-name>
          <servlet-name>REST-Servlet</servlet-name>
  
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
   </servlet>
  <servlet-mapping>
          <servlet-name>REST-Servlet</servlet-name>
        <url-pattern>/services/*</url-pattern>
  </servlet-mapping>  
</web-app>
The Car class and the Truck class have the follwing format:
public class Car {
        private String marke;
        private String modell;
        
        public Car() {
        }
        
        public Car(String marke, String modell) {
                this.marke = marke;
                this.modell = modell;
        }
        
       //Getters and Setters
}
The first Ressource:
@Path("test2")
public class CarService {
        
        @GET
        @Path("car")
        @Produces(MediaType.TEXT_PLAIN)
        public Car getCar(@Context HttpHeaders headers) {
                MediaType type = headers.getMediaType();
                Car c1 = new Car("VW", "Passat");		
                return c1; 	
        }	
}
The other one:
@Path("test1")
public class TruckService {
        
        @GET
        @Path("truck")
        @Produces(MediaType.TEXT_PLAIN)
        public Truck getTruck(@Context HttpHeaders headers) {
                MediaType type = headers.getMediaType();
                Truck t1 = new Truck("Scania", "L2");
                return t1;	
        }
}
The first provider:
@Provider
@Produces(MediaType.TEXT_PLAIN)
public class TruckWriter implements MessageBodyWriter<Truck> {
        @Override
        public long getSize(Truck arg0, Class<?> arg1, Type arg2,
                        Annotation[] arg3, MediaType arg4) {
                // TODO Auto-generated method stub
                return -1;
        }
        @Override
        public boolean isWriteable(Class<?> arg0, Type arg1, Annotation[] arg2,
                        MediaType arg3) {
                // TODO Auto-generated method stub
                return true;
        }
        @Override
        public void writeTo(Truck t, Class<?> arg1, Type arg2,
                        Annotation[] arg3, MediaType arg4,
                        MultivaluedMap<String, Object> arg5, OutputStream outputStream)
                        throws IOException, WebApplicationException {
                        PrintWriter out = new PrintWriter(outputStream);		
                        out.write("Marke :" + t.getMarke());		
        }
}
And the second provider:
@Provider
@Produces(MediaType.TEXT_PLAIN)
public class CarWriter implements MessageBodyWriter<Car> {
        @Override
        public long getSize(Car arg0, Class<?> arg1, Type arg2, Annotation[] arg3,
                        MediaType arg4) {
                // TODO Auto-generated method stub
                return -1;
        }
        @Override
        public boolean isWriteable(Class<?> arg0, Type arg1, Annotation[] arg2,
                        MediaType arg3) {
                // TODO Auto-generated method stub
                return true;
        }
        @Override
        public void writeTo(Car car, Class<?> arg1, Type arg2, Annotation[] arg3,
                        MediaType arg4, MultivaluedMap<String, Object> arg5,
                        OutputStream outputStream) throws IOException, WebApplicationException {
                        PrintWriter out = new PrintWriter(outputStream);		
                        out.write(car.getMarke());	
                
        }
}
Has anybody an idea? Thanks
-- 
View this message in context: http://n2.nabble.com/Cannot-more-%40provider-classes-tp3136533p3136533.html
Sent from the Jersey mailing list archive at Nabble.com.