@WebServlet 注释和 GWT RPC
在我在 glassfishv3 中运行的 GWT 项目中,一切正常,但是当我将 servlet url 模式映射从 web.xml 更改为 servlet 类内的 @WebServlet 注释时,GWT rpc 可以找到 servlet!
请注意,其他常见的 servlet(WebServlet)可以使用此注释,而只有 GWT RPC 不起作用。
原因是什么?
RGDS
In my GWT project running in glassfishv3, everything is worked properly, but when I change my servlet url patterns mapping from web.xml to @WebServlet annotation inside servlet classes, GWT rpc cand find the servlet!
note that, other usual servlets work with this annotation(WebServlet) and just GWT RPC doesnt work.
what is the reason?
RGDS
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您是否将 web.xml 中
web-app
的版本号设置为正确的 servlet 版本,因为此功能仅从 3.0 开始可用:Did you set the version number of
web-app
in the web.xml to the correct servlet version, because this feature is available only since 3.0:好吧,我终于成功了,但有一些警告。我能够让它在 Intellij 内的 Tomcat 中工作,并作为部署到 Tomcat 7 容器的 WAR 进行部署。
如果不使用 -noserver,我无法让它在开发模式下工作。我相信这是因为内置的 Jetty 服务器不兼容 JSR315,但没有证据表明这一点,因为我没有尝试确定 gwt-dev jar 中的 jetty 版本。
诀窍是您需要完全限定 WebServlet 中的路径。因此,如果您的远程服务接口的相对路径为“bar”,并且您的模块名称(gwt.xml中的rename-to)为“foo”,那么您需要在WebServlet中设置“/foo/bar”的路径并它会起作用的。
Ok, I finally got this working but with some caveats. I was able to get it working in Tomcat within Intellij and as a deployed WAR to a Tomcat 7 container.
I was NOT able to get it working in dev-mode without using -noserver. I believe this is because the built-in Jetty server is not JSR315 compatible but have no evidence of this as I've not tried to determine what version of jetty is in the gwt-dev jar.
The trick is you need to fully qualify the path in WebServlet. So if your remote service interface has the relative path of "bar" and your module name (rename-to in gwt.xml) is "foo" then the path you need to set the path of "/foo/bar" in WebServlet and it will work.