【问题标题】:@WebServlet annotation and GWT RPC@WebServlet 注解和 GWT RPC
【发布时间】:2012-01-05 12:07:14
【问题描述】:

在我在 glassfishv3 中运行的 GWT 项目中,一切正常,但是当我将 servlet url 模式映射从 web.xml 更改为 servlet 类中的 @WebServlet 注释时,GWT rpc 可以找到 servlet!

请注意,其他常用的 servlet 可以使用此注解 (WebServlet),而 GWT RPC 不起作用。

是什么原因?

RGDS

【问题讨论】:

  • 请注意,其他常用的 Servlet 可以正常使用这个注解,只是 GWT RPC 有问题
  • 你有没有得到这个答案?

标签: java gwt servlets rpc


【解决方案1】:

您是否将web.xml中web-app的版本号设置为正确的servlet版本,因为该功能仅从3.0开始可用:

<web-app xmlns="http://java.sun.com/xml/ns/javaee"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
      version="3.0"> 

【讨论】:

  • 是的,它是第 3 版,其他 servlet 使用这种映射(@WebServlet)但 GWT remoteServiceServlet 不起作用
【解决方案2】:

好的,我终于得到了这个工作,但有一些警告。我能够让它在 Intellij 中的 Tomcat 中运行,并作为部署到 Tomcat 7 容器的 WAR。

如果不使用 -noserver,我无法让它在开发模式下工作。我相信这是因为内置的 Jetty 服务器不兼容 JSR315,但没有证据证明这一点,因为我没有尝试确定 gwt-dev jar 中的 jetty 版本。

诀窍是您需要完全限定 WebServlet 中的路径。因此,如果您的远程服务接口具有“bar”的相对路径并且您的模块名称(在 gwt.xml 中重命名为)是“foo”,那么您需要在 WebServlet 中设置“/foo/bar”的路径和它会起作用的。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-02-19
  • 2013-05-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-26
  • 1970-01-01
相关资源
最近更新 更多