Groovlet не работает в проекте GWT, контейнер: встроенный пристань в Google Plugin
Вопрос
Я работаю над приложением GWT, которое использует GWT-RPC. Я только что сделал тестовый Groovlet, чтобы увидеть, сработает ли он, но побежал в некоторые проблемы
Вот мой Groovlet
package groovy.servlet;
print "testing the groovlet";
Каждое руководство сказало, что нам не нужно ничего подкласса, и просто простой сценарий будет действовать в качестве сервлета.
моя web.xml выглядит так -
<!-- 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
Когда я бегу как -> веб-приложение, я получаю следующую ошибку с молы:
[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)
Что я пропустил ?
Решение
Вы строите новый класс там, не продлевая класс HTTPServlet (или Groovy.servlet.grovyservlet).
Groovyservlet. является Сервле, что затем интерпретирует ваш канальный скрипт.
Чтобы настроить это в Web.xml Вы используете
<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>
А потом в файле с именем что-то .groovy Somewhere под вашим веб-корень вы можете написать
out.println 'testing the groovlet'
Объекты request
, response
, session
, params
И другие также присутствуют в вашем распоряжении. Так что вы, например, можете написать
out.println "Hello ${params['name']}"
Более подробная информация о http://groovy.codehaus.org/grovlet.