I'm somewhat familiar with Spring, trying to learn Guice, and I'm
pretty sure I'm missing something simple. Nonetheless my reading and
searching has yet to produce any insights, so I'll reveal my
foolishness here.
My problem appears to be that Guice is not instantiating the
GreetingServiceImpl class. (I'm using the auto-created GWT
GreetingService application as a learning point.)
The specific error I am getting comes when I click "Send" (sending my
name to the server). Tomcat prints the following:
Stack Trace:
[java] INFO: Marking servlet greetServlet as unavailable
[java] May 11, 2010 11:20:33 AM
org.apache.catalina.core.StandardWrapperValve invoke
[java] SEVERE: Allocate exception for servlet greetServlet
[java] java.lang.InstantiationException:
com.~~~.server.GreetingServiceImpl
[java] at java.lang.Class.newInstance0(Class.java:340)
[java] at java.lang.Class.newInstance(Class.java:308)
[java] at
org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:
1104)
...
So, here's what I have. (I've provided a lot - sorry it's a bit long.
At the same time, let me know if I need to provide something more.)
I've included the following jars from Guice2.0.zip:
* aopalliance.jar
* guice-2.0.jar
* guice-servlet-2.0.jar
==================
My GreetingServiceImpl class is as follows:
... package and imports ...
@SuppressWarnings("serial")
public class GreetingServiceImpl extends RemoteServiceServlet
implements GreetingService
{
private final SecurityHandlerService securityHandlerService;
private final AuthenticationHandlerService
authenticationHandlerService;
@Inject
GreetingServiceImpl(SecurityHandlerService securityHandlerService,
AuthenticationHandlerService
authenticationHandlerService)
{
this.securityHandlerService = securityHandlerService;
this.authenticationHandlerService =
authenticationHandlerService;
}
public String greetServer(String input) throws
IllegalArgumentException
{
... uses both securityHandlerService and
authenticationHandlerService ...
}
}
=========================
My GuiceServletContextListener impl:
... package and imports ...
public class SkyclientGuiceServletConfig extends
GuiceServletContextListener
{
@Override
protected Injector getInjector()
{
return Guice.createInjector(new ServletModule());
}
}
==================
My Abstract Module:
... package and imports ...
public class SkyclientBusModule extends AbstractModule
{
@Override
public void configure()
{
System.out.println("\t * Configuring SkyclientBusModule!");
bind(SecurityHandlerService.class).to(SecurityHandlerServiceImpl.class);
bind(AuthenticationHandlerService.class).to(AuthenticationHandlerServiceImpl.class);
}
}
=============
My web.xml is as follows:
... xml and doctype ...
<web-app>
<!-- Guice Stuff -->
<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>
<listener>
<listener-class>com.~~~.server.SkyclientGuiceServletConfig</
listener-class>
</listener>
<!-- Servlets -->
<servlet>
<servlet-name>greetServlet</servlet-name>
<servlet-class>com.~~~.server.GreetingServiceImpl</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>greetServlet</servlet-name>
<url-pattern>/skyclient/greet</url-pattern>
</servlet-mapping>
<!-- Default page to serve -->
<welcome-file-list>
<welcome-file>SkyClient.html</welcome-file>
</welcome-file-list>
</web-app>
===========================
Again - sorry it's so long. Is there something obvious I'm missing?
--
You received this message because you are subscribed to the Google Groups
"google-guice" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/google-guice?hl=en.