Groovlet 无法在 GWT 项目、容器中工作:在 google 插件中嵌入 Jetty

发布于 2024-08-30 08:03:14 字数 2435 浏览 2 评论 0原文

我正在开发一个使用 GWT-RPC 的 GWT 应用程序。 我刚刚做了一个测试 groovlet 来看看它是否有效,但是遇到了一些问题,

这是我的 groovlet

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

每个教程都说我们不需要子类化任何东西,只需一个简单的脚本即可充当 servlet。

我的 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)

我错过了什么?

I am working on a GWT application which uses GWT-RPC.
I just made a test groovlet to see if it worked, but ran into some problems

here's my groovlet

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

Every tutorial said we don't need to subclass anything, and just a simple script would act as a servlet.

my web.xml looks like this -

<!--  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

When I Run as -> web application,
i get the following error from jetty :

 [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)

What did I miss ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

意中人 2024-09-06 08:03:14

您正在那里构建一个新类,而不是扩展 HttpServlet 类(或 groovy.servlet.GroovyServlet)。

GroovyServlet 是 servlet,它解释您的 groovy 脚本。

要在 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>

,您可以使用 然后在 Web 根目录下名为 somet.groovy 的文件中,您可以编写

out.println 'testing the groovlet'

对象 requestresponsesessionparams 和其他内容也可供您使用。例如,您可以

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

http://groovy.codehaus.org/Groovlet 编写更多信息

You're building a new class there, not extending the HttpServlet class (or the groovy.servlet.GroovyServlet either).

GroovyServlet is the servlet, that then interprets your groovy script.

To set it up in web.xml you use

<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>

And then in a file named something.groovy somwhere under your web root you can write

out.println 'testing the groovlet'

The objects request, response, session, params and others are also present at your disposal. So that you for instance can write

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

More info at http://groovy.codehaus.org/Groovlet

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文