2010-04-25 7 views
0

Je travaille sur une application GWT qui utilise GWT-RPC. Je viens de faire un groovlet de test pour voir si cela a fonctionné, mais couru quelques problèmesGroovlet ne fonctionne pas dans le projet GWT, conteneur: embarqué dans Google google plugin

voici mon groovlet

package groovy.servlet; 
print "testing the groovlet"; 

Chaque tutoriel a dit que nous ne avons pas besoin de sous-classe quoi que ce soit, et juste un script simple serait agir comme une servlet.

mon web.xml ressemble à ceci -

<!-- groovy --> 
<servlet> 
     <servlet-name>testGroovy</servlet-name> 
     <servlet-class>groovy.servlet.testGroovy</servlet-class> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>testGroovy</servlet-name> 
     <url-pattern>*.groovy</url-pattern> 
    </servlet-mapping 

Quand j'Exécuter en tant que -> application web, i l'erreur suivante de la jetée:

[WARN] failed testGroovy 
javax.servlet.UnavailableException: Servlet class groovy.servlet.testGroovy is not a javax.servlet.Servlet 
at org.mortbay.jetty.servlet.ServletHolder.checkServletType(ServletHolder.java:377) 
at org.mortbay.jetty.servlet.ServletHolder.doStart(ServletHolder.java:234) 
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:39) 
at org.mortbay.jetty.servlet.ServletHandler.initialize(ServletHandler.java:616) 
at org.mortbay.jetty.servlet.Context.startContext(Context.java:140) 
at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1220) 
at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:513) 
at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:448) 
at com.google.gwt.dev.shell.jetty.JettyLauncher$WebAppContextWithReload.doStart(JettyLauncher.java:447) 
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:39) 
at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130) 
at org.mortbay.jetty.handler.RequestLogHandler.doStart(RequestLogHandler.java:115) 
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:39) 
at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130) 
at org.mortbay.jetty.Server.doStart(Server.java:222) 
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:39) 
at com.google.gwt.dev.shell.jetty.JettyLauncher.start(JettyLauncher.java:543) 
at com.google.gwt.dev.DevMode.doStartUpServer(DevMode.java:421) 
at com.google.gwt.dev.DevModeBase.startUp(DevModeBase.java:1035) 
at com.google.gwt.dev.DevModeBase.run(DevModeBase.java:783) 
at com.google.gwt.dev.DevMode.main(DevMode.java:275) 

Qu'est-ce que je manque?

+0

Par curiosité, pourquoi utiliser groovy.servlet comme le paquet pour vous classe? Les bocaux groovy sont-ils également déployés? – Vinny

Répondre

0

Vous construisez une nouvelle classe à cet emplacement, sans étendre la classe HttpServlet (ni groovy.servlet.GroovyServlet). GroovyServlet est le servlet, qui interprète alors votre script groovy.

Pour le configurer dans web.xml vous utilisez

<servlet> 
    <servlet-name>GroovyServlet</servlet-name> 
    <servlet-class>groovy.servlet.GroovyServlet</servlet-class> 
</servlet> 
<servlet-mapping> 
    <servlet-name>GroovyServlet</servlet-name> 
    <url-pattern>*.groovy</url-pattern> 
</servlet-mapping> 

Et puis dans un fichier nommé something.groovy somwhere sous votre racine web, vous pouvez écrire

out.println 'testing the groovlet' 

Les objets request, response , session, params et d'autres sont également présents à votre disposition. Alors que vous pouvez par exemple écrire

out.println "Hello ${params['name']}" 

Plus d'infos sur http://groovy.codehaus.org/Groovlet