users@jersey.java.net

Re: [Jersey] Viewable is not able to resolve jsp path when integrated with Guice

From: Dinesh Narayanan <ndchandar_at_gmail.com>
Date: Thu, 15 Oct 2009 19:21:02 -0700

Paul,Thank you for your solution and it worked as expected. I also observed
that once the "serve" method was replaced with "filter" method, I do not
need DefaultWrapperServlet anymore. WebPageContentRegex was working as
expected.

Thanks
Dinesh

On Thu, Oct 15, 2009 at 6:58 AM, Paul Sandoz <Paul.Sandoz_at_sun.com> wrote:

> Hi,
> I think the problem is a bug in Guice and the way it wraps the
> HttpServletRequest. A similar issue occurred with JRuby rack:
>
>
> http://kenai.com/projects/jruby-rack/lists/issues/archive/2009-05/message/2
>
> But there is a work around.
>
> First ensure that the jsp is accessible directly thus verifying that the
> following works:
>
> serveRegex("/(dojo|css|jsp)/.*").with(DefaultWrapperServlet.class);
>
> Then replace the servlet declaration:
>
> serve("/*").with(GuiceContainer.class, params);
>
> with a filter declaration:
>
> filter("/*").through(GuiceContainer.class, params);
>
> If you uses Guice's serveRegex feature you no longer require that
> Jersey's WebPageContentRegex be set.
>
> Paul.
>
> On Oct 14, 2009, at 11:04 AM, Paul Sandoz wrote:
>
>
> On Oct 14, 2009, at 1:17 AM, Dinesh Narayanan wrote:
>
> Paul,
> I was testing this in Jetty 6.1.19. I did not get any deployment error. I
> got this error when I was accessing HelloWorldResource.
>
>
> I do not think Jersey is logging that error, so it must be originating from
> somewhere else.
>
> It might be that for JSP support Jetty requires a certain layout for the
> webapp.
>
> Have you tried deploying as a war in say GlassFish or Tomcat?
>
> If you have a simple maven project available can you send it to me?
>
> Paul.
>
> Thanks
> Dinesh
>
> On Tue, Oct 13, 2009 at 3:48 AM, Paul Sandoz <Paul.Sandoz_at_sun.com> wrote:
>
>> Hi Dinesh,
>>
>> Are you using WebSphere? or Jetty?
>>
>> The following error is odd:
>>
>> ERROR: PWC6117: File
>>> "/Users/ndchandar/IdeaProjects/GuicyMyBrocade/MiniMyBrocadeWeb/src/main/webapp/helloworld"
>>> not found
>>>
>>
>>
>> Was there a deployment error?
>>
>> Note that i have not actually tried using the Guice integration with JSP
>> support.
>>
>> Paul.
>>
>>
>> On Oct 12, 2009, at 11:15 AM, Dinesh Narayanan wrote:
>>
>> Hello,
>>> When I integrate Guice with JAX-RS, Viewable is not able to resolve my
>>> jsp path. I get a 404 error (Problem accessing
>>> /MiniMyBrocadeWeb/myAccount/helloWorld.jsp.)
>>>
>>> I did my integration based on the following email thread (
>>> http://n2.nabble.com/WebPageContentRegex-and-Guice-integration-td3615214.html
>>> )
>>>
>>> Example:
>>> -------------
>>> A) My HelloWorldResource:
>>>
>>> @Path("/helloworld")
>>> @RequestScoped
>>> public class HelloWorldResource {
>>> private static final Logger logger =
>>> Logger.getLogger(HelloWorldResource.class);
>>>
>>> @Context
>>> private UriInfo uriInfo;
>>>
>>> private String name;
>>> private int no;
>>>
>>> public String getName() {
>>> return name;
>>> }
>>>
>>> public void setName(String name) {
>>> this.name = name;
>>> }
>>>
>>> public int getNo() {
>>> return no;
>>> }
>>>
>>> public void setNo(int no) {
>>> this.no = no;
>>> }
>>>
>>> @GET
>>> @Produces("text/html")
>>> public Viewable get() {
>>> logger.info("inside HelloWorldResource get()");
>>> logger.info("uri info "+uriInfo);
>>> logger.info("abs path "+uriInfo.getAbsolutePath());
>>> logger.info("baseUri "+uriInfo.getBaseUri());
>>> logger.info("getPath "+uriInfo.getPath());
>>>
>>> this.name = "Dinesh";
>>> this.no = 007;
>>>
>>> return new Viewable("/myAccount/helloWorld.jsp", this);
>>>
>>> }
>>> }
>>>
>>> B) MyGuiceServletConfig:
>>>
>>> public class MyGuiceServletConfig extends GuiceServletContextListener {
>>>
>>> private static final Logger logger =
>>> Logger.getLogger(MyGuiceServletConfig.class);
>>>
>>> @Override
>>> protected Injector getInjector() {
>>>
>>> final ServletModule servletModule = new ServletModule() {
>>> @Override
>>> protected void configureServlets() {
>>> logger.info("inside configureServlets method");
>>>
>>> //bind resources
>>> bind(HelloWorldResource.class);
>>>
>>> // this serves the static content
>>> //
>>> serveRegex("/(dojo|dijit|dojox|util|js)/.*").with(DefaultWrapperServlet.class);
>>>
>>> Map<String, String> params = new HashMap<String,
>>> String>();
>>> params.put("com.sun.jersey.config.feature.Redirect",
>>> "true");
>>>
>>> params.put("com.sun.jersey.config.feature.ImplicitViewables", "true");
>>> params.put("com.sun.jersey.config.property.packages",
>>>
>>> "com.brocade.webportal.common;com.brocade.webportal.myAccount.resource;com.brocade.webportal.myHome.resource");
>>>
>>> //
>>> params.put("com.sun.jersey.config.property.WebPageContentRegex",
>>> "/(dojo|dijit|dojox|util|js)/.*");
>>>
>>> serve("/*").with(GuiceContainer.class, params);
>>> }
>>> };
>>>
>>> return Guice.createInjector(servletModule);
>>> }
>>>
>>> }
>>>
>>> C) 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>MyBrocade</display-name>
>>>
>>> <listener>
>>>
>>> <listener-class>com.brocade.webportal.config.MyGuiceServletConfig</listener-class>
>>> </listener>
>>>
>>> <filter>
>>> <filter-name>guiceFilter</filter-name>
>>> <filter-class>com.google.inject.servlet.GuiceFilter</filter-class>
>>> </filter>
>>>
>>> <filter-mapping>
>>> <filter-name>guiceFilter</filter-name>
>>> <url-pattern>/*</url-pattern>
>>> </filter-mapping>
>>>
>>> </web-app>
>>>
>>> The logs indicate the following error
>>> ERROR: PWC6117: File
>>> "/Users/ndchandar/IdeaProjects/GuicyMyBrocade/MiniMyBrocadeWeb/src/main/webapp/helloworld"
>>> not found
>>>
>>> What was I missing here?
>>>
>>> Thanks
>>> Dinesh
>>>
>>>
>>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe_at_jersey.dev.java.net
>> For additional commands, e-mail: users-help_at_jersey.dev.java.net
>>
>>
>
>
>