users@jersey.java.net

[Jersey] Re: Question about PackagesResourceConfig usage

From: Martin Matula <martin.matula_at_oracle.com>
Date: Thu, 10 Mar 2011 18:38:42 +0100

Sure, are you volunteering for doing that?
Martin

On 10.3.2011 16:01, Petr Jurák wrote:
> Hi Martin,
> should we extend jersey samples with this and add some more details
> about this configuration on wiki to make it more clear? What do you
> think?
> Petr
>
> 2011/3/10 Martin Matula<martin.matula_at_oracle.com>:
>> The attached project works fine for me with GF 3.0.1.
>> Martin
>>
>>
>> On 9.3.2011 22:27, NBW wrote:
>>
>> On Wed, Mar 9, 2011 at 4:14 PM, Martin Matula<martin.matula_at_oracle.com>
>> wrote:
>>> The sample in the guide does not ask you to annotate the class, because it
>>> still registers the servlet in web.xml - we need to update that part of the
>>> guide - it is confusing and incomplete.
>> OK.
>>> What version of GlassFish are you using?
>> I am trying this test out in GF 3.1 fcs
>>
>>> What do you mean you tried it before with GFv3&Servlet 2.5? GFv3 is
>>> JavaEE6 - i.e. supports servlet 3.0.
>> That was a typo, should have said servlet 3.0. It was a different
>> application written with Jersey 1.0 and I took that other approach with the
>> deployment descriptorless project, a class that extended Application etc. I
>> just mentioned it as an example of a different way I have deployed in the
>> past with success, sorry for any confusion around that.
>>
>>> Can you send me your project?
>> Not easily. Is there a jersey sample that takes this approach?
>>
>>> Where exactly (in what package) is your FooTest class?
>> FooTest is in package com.myapp.api
>> TestApplication is in package com.myapp.ws.rs
>> -Noah
>>>
>>>
>>> On 9.3.2011 22:07, NBW wrote:
>>>
>>> Hi Martin,
>>> Thanks for your suggestion. I gave it a shot but no joy. I added back the
>>> sun-web.xml with context-root set appropriately, left out the web.xml and
>>> annotated my 'application' class which extends PackagesResourceConfig with
>>> @ApplicationPath("/") (even though this is not in the example in the user's
>>> guide).
>>> In a previous Jersey 1.0 application that I wrote and deployed to GFv3&
>>> Servlet 2.5 I had things set up like so:
>>> no web.xml
>>> no sun-web.xml
>>> a class that extended Application and was annotated with
>>> @ApplicationPath("/api")
>>> and things worked, my Root resource classes were 'auto discovered' in that
>>> case.
>>> -Noah
>>>
>>> On Wed, Mar 9, 2011 at 3:46 PM, Martin Matula<martin.matula_at_oracle.com>
>>> wrote:
>>>> Hi,
>>>> You need to annotate your application class with @ApplicationPath("/")
>>>> annotation. This replaces the servlet and servlet mapping entry in the
>>>> web.xml. You still need to keep the sun-web.xml to specify application
>>>> context path:
>>>> <sun-web-app error-url="">
>>>> <context-root>/contextRoot</context-root>
>>>> </sun-web-app>
>>>> Martin
>>>>
>>>> ----- Original Message -----
>>>> From: emailnbw_at_gmail.com
>>>> To: users_at_jersey.java.net
>>>> Sent: Wednesday, March 9, 2011 8:59:30 PM GMT +01:00 Amsterdam / Berlin /
>>>> Bern / Rome / Stockholm / Vienna
>>>> Subject: [Jersey] Question about PackagesResourceConfig usage
>>>>
>>>> I was trying to try out the approach of deploying my Jersey service by
>>>> extending PackagesResourceConfig as is done in Example 2.8 of the User's
>>>> Guide [1]. My class looks like this:
>>>> package com.myapp.ws.rs;
>>>> public class TestApplication extends PackagesResourceConfig {
>>>> public TestApplication() {
>>>> super("com.myapp.api");
>>>> }
>>>> }
>>>> I have a Servlet 3.0 web.xml file, however, it simply contains the<web
>>>> app ..> element. I also have a 3.0 sun-web.xml which is empty right now
>>>> save for the DOCTYPE and an empty<sun-web-app> element.
>>>> My Provider resource class looks like this (some content omitted):
>>>> @Path("/foo")
>>>> @Stateless
>>>> public class FooTest {
>>>> @EJB
>>>> FooBean aFooBean;
>>>> @GET
>>>> @Produces(MediaType.APPLICATION_JSON)
>>>> @Path("/hw")
>>>> public Response getHW() {
>>>> return Response.ok("hello, world").build();
>>>> }
>>>> ....
>>>> I get a 404 when I try to access http://localhost:8080/contextRoot/foo/hw
>>>> where contextRoot is the cr for my web app. This test code deploys and works
>>>> fine when I take the servlet 2.5 web.xml approach of using the Jersey
>>>> ServletContainer servlet.
>>>> Any hints as to what I am missing with this other approach? Thanks,
>>>> -Noah
>>>> [1]
>>>> - http://jersey.java.net/nonav/documentation/latest/user-guide.html#d4e194
>>