users@jersey.java.net

Re: [Jersey] Jersey Guice JSP how to?

From: Paul Sandoz <Paul.Sandoz_at_oracle.com>
Date: Thu, 29 Jul 2010 15:42:01 +0200

Hi Zhanming,

Are you sure you copied the resource classes from the Bookstore
project? The log states that scanning did not find any resources in
the package "com.sun.jersey.samples.bookstore.resources" indicating
that there are not root resource classes (classes annotated with
@Path) in that package.

The following is incorrect:

> filter("/*").through(ServletContainer.class, params);

it needs to be:

   filter("/*").through(GuiceContainer.class, params);

I cannot explain why startup is slow. Perhaps you can send me a maven
project and i can investigate further? I am not sure it is an issue
with Jersey because the two logging statements do not originate from
Jersey.

Paul.

On Jul 25, 2010, at 11:00 AM, Zhanming Qi wrote:

>
> Hi,
>
> I use Jersey 1.3 and jersey-guice in maven2
> java doc from this URL:
> https://jersey.dev.java.net/nonav/apidocs/latest/contribs/jersey-guice/com/sun/jersey/guice/spi/container/servlet/package-summary.html
>
> Jersey's samples bookstore works fine, when not use guice.
>
> My listener is like this:
>
> public class MyGuiceConfig extends GuiceServletContextListener {
> @Override
> protected Injector getInjector() {
> return Guice.createInjector(new ServletModule() {
>
> @Override
> protected void configureServlets() {
> bind(Login.class);
> Map<String, String> params = new HashMap<String, String>();
> // com.sun.jersey.config.feature.Redirect
> params.put(ResourceConfig.FEATURE_REDIRECT, "true");
> // com.sun.jersey.config.feature.ImplicitViewables
> params.put(ResourceConfig.FEATURE_IMPLICIT_VIEWABLES, "true");
> // com.sun.jersey.config.property.WebPageContentRegex
> params.put(ServletContainer.PROPERTY_WEB_PAGE_CONTENT_REGEX,
> "/(images|css|jsp)/.*");
> // com.sun.jersey.config.property.packages
> params.put(PackagesResourceConfig.PROPERTY_PACKAGES,
> "com.sun.jersey.samples.bookstore.resources");
> serve("/*").with(GuiceContainer.class, params);
> }
> });
> }
> }
>
> If don't bind something. will show some exception.
>
> com.sun.jersey.api.container.ContainerException: The ResourceConfig
> instance
> does not contain any root resource classes.
> at
> com
> .sun
> .jersey
> .server
> .impl
> .application.RootResourceUriRules.<init>(RootResourceUriRules.java:
> 100)
> at
> com
> .sun
> .jersey
> .server
> .impl
> .application.WebApplicationImpl._initiate(WebApplicationImpl.java:
> 1013)
> at
> com.sun.jersey.server.impl.application.WebApplicationImpl.access
> $600(WebApplicationImpl.java:153)
> at
> com.sun.jersey.server.impl.application.WebApplicationImpl
> $11.f(WebApplicationImpl.java:652)
> at
> com.sun.jersey.server.impl.application.WebApplicationImpl
> $11.f(WebApplicationImpl.java:649)
> at com.sun.jersey.spi.inject.Errors.processWithErrors(Errors.java:
> 177)
> at
> com
> .sun
> .jersey
> .server
> .impl
> .application.WebApplicationImpl.initiate(WebApplicationImpl.java:649)
> at
> com
> .sun
> .jersey
> .guice
> .spi.container.servlet.GuiceContainer.initiate(GuiceContainer.java:
> 115)
>
> then I bind a simple class Login.class
>
> and can not use filter like this:
> filter("/*").through(ServletContainer.class, params);
> this is javax.servlet.ServletException,
> Filters must be bound as singletons.
> Key[type=com.sun.jersey.spi.container.servlet.ServletContainer,
> annotation=[none]] was not bound in singleton scope.
>
> Then use serve("/*").with(GuiceContainer.class, params);
> There is no exception,bbut it did not work for jsp template.
>
> By the way, it starts very slow, during maven jetty:run. but did not
> have
> any exception.
> here is my jetty-maven plugin, when use jersey-guice, it took a long
> time to
> start.
>
> <plugin>
> <groupId>org.mortbay.jetty</groupId>
> <artifactId>jetty-maven-plugin</artifactId>
> <version>7.1.5.v20100705</version>
> <configuration>
> <systemProperties>
> <systemProperty>
> <name>logback.configurationFile</name>
> <value>./src/main/resources/logback.xml</value>
> </systemProperty>
> </systemProperties>
> <connectors>
> <connector
> implementation="org.eclipse.jetty.server.nio.SelectChannelConnector">
> <port>${http.port}</port>
> <maxIdleTime>60000</maxIdleTime>
> </connector>
> </connectors>
> <scanIntervalSeconds>10</scanIntervalSeconds>
> <webAppConfig>
> <contextPath>${jetty-contextPath}</contextPath>
> </webAppConfig>
> <stopPort>9966</stopPort>
> <stopKey>stop</stopKey>
> <requestLog
> implementation="org.eclipse.jetty.server.NCSARequestLog">
> <filename>./target/yyyy_mm_dd.request.log</filename>
> <retainDays>90</retainDays>
> <append>true</append>
> <extended>true</extended>
> <logTimeZone>GMT</logTimeZone>
> </requestLog>
> </configuration>
> </plugin>
>
> here is console log
> 2010-07-25 16:51:42.186:INFO::jetty-7.1.5.v20100705
> 2010-07-25 16:51:43.613:INFO::No Transaction manager found - if your
> webapp
> requires one, please configure one.
> 2010-07-25 16:53:20.253:WARN::Skipping PostConstruct annotation on
> com.sun.jersey.server.impl.ejb.EJBInjectionInterceptor.init: has
> parameters
> 2010-7-25 16:53:21 com.sun.jersey.api.core.PackagesResourceConfig init
> 信息: Scanning for root resource and provider classes in the
> packages:
> com.sun.jersey.samples.bookstore.resources
> 2010-7-25 16:53:21
> com.sun.jersey.guice.spi.container.GuiceComponentProviderFactory
> register
> 信息: Registering foo.Login as a root resource class
> 2010-7-25 16:53:21
> com.sun.jersey.server.impl.application.WebApplicationImpl
> _initiate
> 信息: Initiating Jersey application, version 'Jersey: 1.3
> 06/17/2010 04:53 PM'
> 2010-7-25 16:53:22
> com.sun.jersey.guice.spi.container.GuiceComponentProviderFactory
> getComponentProvider
> 信息: Binding foo.Login to GuiceManagedComponentProvider with the
> scope
> "PerRequest"
> 2010-07-25 16:53:22.498:INFO::Opened
> C:\opt\eclipse-SDK-3.6-win32\workspace\foo\target
> \2010_07_25.request.log
> [INFO] Started Jetty Server
> 2010-07-25 16:53:22.514:INFO::Started
> SelectChannelConnector_at_0.0.0.0:80
> [INFO] Starting scanner at interval of 10 seconds.
>
> during these tow lines:
> 2010-07-25 16:51:43.613:INFO::No Transaction manager found - if your
> webapp
> requires one, please configure one.
> 2010-07-25 16:53:20.253:WARN::Skipping PostConstruct annotation on
> com.sun.jersey.server.impl.ejb.EJBInjectionInterceptor.init: has
> parameters
>
> It takes about 2 mins. and show me a warn. and CPU use about 50% and
> 150M
> memory.
> This is too large cost during development.
>
>
> Any idea? Thanks a lot!
>
> Zhanming
> --
> View this message in context: http://jersey.576304.n2.nabble.com/Jersey-Guice-JSP-how-to-tp5334589p5334589.html
> Sent from the Jersey mailing list archive at Nabble.com.
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe_at_jersey.dev.java.net
> For additional commands, e-mail: users-help_at_jersey.dev.java.net
>