users@jersey.java.net

Re: [Jersey] Re: Having problems getting Jersey up and running

From: Paul Sandoz <Paul.Sandoz_at_Sun.COM>
Date: Fri, 16 Jan 2009 17:56:49 +0100

On Jan 16, 2009, at 5:51 PM, Allan Ditzel wrote:

> Hi Paul,
>
> Thanks for your reply. It seems we were missing adding the jersey-
> core dependency. Since we're running in Java 6 we don't need many of
> the XML related jars. Now that we've included the core jar the
> SpringServlet is loading and correctly interacting with Spring for DI.
>

Great!

Note that in your web.xml you do not require the following:

         <!-- The following initialization parameter is only required
for
              registering Jersey managed classes. Spring-managed classes
              are automatically registered.
         -->
         <init-param>
             <param-name>com.sun.jersey.config.property.packages</
param-name>
             <param-value>com.company.path.web.rest</param-value>
         </init-param>

if all the root resource and provider classes are Spring beans. They
will automatically be registered by Spring.

Paul.

> Thank you very much for your help! I really appreciate it!
>
> Allan
>
> On Fri, Jan 16, 2009 at 9:54 AM, Paul Sandoz <Paul.Sandoz_at_sun.com>
> wrote:
>
> On Jan 16, 2009, at 3:44 PM, Allan Ditzel wrote:
>
>> Hi Paul,
>>
>> We are using ivy to handle our dependency management and are
>> pulling dependencies from that maven repo. Here is the snippet of
>> our ivy config:
>>
>> <dependency org="com.sun.jersey" name="jersey-server" rev="1.0.1"
>> conf="web,test"/>
>> <dependency org="com.sun.jersey" name="jersey-client" rev="1.0.1"
>> conf="web,test"/>
>> <dependency org="com.sun.jersey" name="jersey-json" rev="1.0.1"
>> conf="web,test"/>
>> <dependency org="com.sun.jersey" name="jersey-fastinfoset"
>> rev="1.0.1" conf="web,test"/>
>> <dependency org="com.sun.jersey" name="jersey-atom" rev="1.0.1"
>> conf="web,test"/>
>> <dependency org="com.sun.jersey.contribs" name="jersey-multipart"
>> rev="1.0.1" conf="web,test"/>
>> <dependency org="com.sun.jersey.contribs" name="jersey-spring"
>> rev="1.0.1" conf="web,test"/>
>> <dependency org="javax.ws.rs" name="jsr311-api" rev="1.0"
>> conf="web,test"/>
>>
>> Our lib directory ends up with the following jar files for the
>> above config:
>>
>> jersey-atom-1.0.1.jar
>> jersey-client-1.0.1.jar
>> jersey-fastinfoset-1.0.1.jar
>> jersey-json-1.0.1.jar
>> jersey-multipart-1.0.1.jar
>> jersey-server-1.0.1.jar
>> jersey-spring-1.0.1.jar
>> jsr311-api-1.0.jar
>>
>
> It looks like ivy is not pulling in the jars that the above jars are
> depending on (which is what happens when using maven). The following
> are the list of jars in the WEB-INF/lib of the spring-annotations
> sample (built from the trunk):
>
> activation-1.1.jar
> aopalliance-1.0.jar
> asm-3.1.jar
> aspectjrt-1.5.4.jar
> aspectjweaver-1.5.4.jar
> cglib-2.2.jar
> commons-logging-1.1.1.jar
> jaxb-api-2.1.jar
> jaxb-impl-2.1.jar
> jersey-core-1.0.2-SNAPSHOT.jar
> jersey-server-1.0.2-SNAPSHOT.jar
> jersey-spring-1.0.2-SNAPSHOT.jar
> jsr311-api-1.0.jar
> spring-2.5.6.jar
> spring-beans-2.5.6.jar
> spring-context-2.5.6.jar
> spring-core-2.5.6.jar
> spring-web-2.5.6.jar
> stax-api-1.0-2.jar
>
>
> I am guessing there should be an exception in the Tomcat logs
> stating that the Jersey Spring Servlet cannot be instantiated.
>
> Do you intend to use Spring or not? If not then you are using the
> wrong Servlet and should be using:
>
> com.sun.jersey.spi.container.servlet.ServletContainer
>
> as described in the dependencies document i sent a link to in the
> previous email. But note that you will still have a problem because
> you are not pulling other dependent jars as documented in the the
> dependencies document.
>
> Paul.
>
>> Also, we are deploying inside of Tomcat 6 with JDK 6.
>>
>> Best Regards,
>>
>> Allan
>>
>> On Fri, Jan 16, 2009 at 9:02 AM, Paul Sandoz <Paul.Sandoz_at_sun.com>
>> wrote:
>> Hi Allan,
>>
>> What are you using in your WEB-INF/lib ? what are the jars files.
>> This error indicates that Tomcat cannot find the servlet
>> "com.sun.jersey.spi.spring.container.servlet.SpringServlet" because
>> you do not have the correct jars. Please read the dependencies
>> document for what you require:
>>
>> https://jersey.dev.java.net/source/browse/*checkout*/jersey/tags/jersey-1.0.1/jersey/dependencies.html
>>
>> I am assuming you copied the web.xml from the spring-annotations
>> sample:
>>
>> http://download.java.net/maven/2/com/sun/jersey/samples/spring-annotations/1.0.1/spring-annotations-1.0.1-project.zip
>>
>> If you build this sample you can find all the dependent jars in the
>> location:
>>
>> target/spring-annotations/WEB-INF/lib
>>
>> Paul.
>>
>> On Jan 16, 2009, at 1:01 AM, Allan Ditzel wrote:
>>
>>> Sorry for the bump, but here's more that I've tried, just to give
>>> more context:
>>>
>>> I just tried just loading the spring servlet and letting spring
>>> instantiate the resource:
>>>
>>> <servlet>
>>> <servlet-name>Jersey Spring Web Application</servlet-name>
>>> <servlet-
>>> class>com.sun.jersey.spi.spring.container.servlet.SpringServlet</
>>> servlet-class>
>>> <load-on-startup>1</load-on-startup>
>>> </servlet>
>>> <servlet-mapping>
>>> <servlet-name>Jersey Spring Web Application</servlet-name>
>>> <url-pattern>/rest/*</url-pattern>
>>> </servlet-mapping>
>>>
>>> Spring config:
>>>
>>> <bean id="dynamicImageService" class="com.company.web.rest.DynamicImageResource
>>> "/>
>>>
>>> I still get the same 404 error when I try to access this service.
>>>
>>> On Thu, Jan 15, 2009 at 6:26 PM, Allan Ditzel <allan.ditzel_at_gmail.com
>>> > wrote:
>>> Hi,
>>>
>>> I was hoping someone might be able to help me out. I'm trying to
>>> get jersey integrated into our project at work, but it seems that
>>> the servlet isn't getting loaded. Here are my servlet and servlet
>>> mapping definitions:
>>>
>>> <servlet>
>>> <servlet-name>Jersey Spring Web Application</servlet-name>
>>> <servlet-
>>> class>com.sun.jersey.spi.spring.container.servlet.SpringServlet</
>>> servlet-class>
>>> <!-- The following initialization parameter is only
>>> required for
>>> registering Jersey managed classes. Spring-managed
>>> classes
>>> are automatically registered.
>>> -->
>>> <init-param>
>>> <param-name>com.sun.jersey.config.property.packages</
>>> param-name>
>>> <param-value>com.company.path.web.rest</param-value>
>>> </init-param>
>>> <load-on-startup>1</load-on-startup>
>>> </servlet>
>>> <servlet-mapping>
>>> <servlet-name>Jersey Spring Web Application</servlet-name>
>>> <url-pattern>/rest/*</url-pattern>
>>> </servlet-mapping>
>>>
>>> Whenever I try to access anything in:
>>>
>>> http://localhost:8080/portal/rest (for example: http://localhost:8080/portal/rest/image/foo.jpg)
>>> , I get the following error:
>>>
>>> HTTP Status 404 - Servlet Jersey Spring Web Application is not
>>> available
>>>
>>> type Status report
>>>
>>> message Servlet Jersey Spring Web Application is not available
>>>
>>> description The requested resource (Servlet Jersey Spring Web
>>> Application is not available) is not available.
>>>
>>> Apache Tomcat/6.0.18
>>>
>>>
>>> Here is the resource that will be backing that service:
>>>
>>> @Path("/images")
>>> public class DynamicImageResource {
>>> /** Logger */
>>> private static transient final Log log =
>>> LogFactory.getLog(DynamicImageResource.class);
>>>
>>> /**
>>> *
>>> * @param imageName
>>> * @return
>>> */
>>> @GET
>>> @Path("{imagename")
>>> @Produces("image/jpeg")
>>> public byte[] getImage(@PathParam("imagename") String
>>> imageName) {
>>> /* ... code ... */
>>> }
>>> }
>>>
>>> Thanks in advance!
>>>
>>> Allan
>>>
>>
>>
>
>