GWT超级开发模式RPC 404

时间:2014-05-28 17:54:09

标签: java gwt gwt-rpc gwt-super-dev-mode

我正在尝试开始使用超级开发模式。我有超级开发模式运行,并有一个Web服务器提供我的主html页面,在那里我能够'开发模式'并重新编译模块。现在我试图让这个页面访问我的RequestFactory和RPC servlet。我启动了常规开发模式,并在localhost:8888 / gwtRequest上提供了servlet。所以现在我有三台服务器正在运行:

http://localhost:9876/ - GWT Code Server
http://localhost:8080/ - Mongoose web server serving /war directory
http://localhost:8888/ - GWT Dev Mode running servlets

如何将我的应用指向正确的servlet容器?这些服务器都是必需的吗?我现在得到一个404,因为它正在查看http://localhost:8080/gwtRequest

以下是web.xml的片段:

<servlet>
  <servlet-name>requestFactoryServlet</servlet-name>
  <servlet-class>com.example.server.util.ExampleRequestFactoryServlet</servlet-class>
</servlet>

<servlet-mapping>
  <servlet-name>requestFactoryServlet</servlet-name>
  <url-pattern>/gwtRequest</url-pattern>
</servlet-mapping>

过去,有什么方法可以让这个错综复杂吗?也许一些新功能会解决一些令人头疼的问题?我希望一旦我知道如何设置其他开发人员的环境!并且希望不要太难以推动生产(即希望最小化配置/代码更改)。

谢谢!

1 个答案:

答案 0 :(得分:1)

您只需要2台服务器:

  • 提供静态文件和服务器端代码(servlet)的服务器。这包括您的应用程序版本编译为JavaScript(您不需要经常更新它!)。这可以是嵌入在DevMode中的服务器,但也可以是独立的Jetty或Tomcat等,或者像Maven中的tomcat7-maven-plugin或jetty-maven-plugin或Gradle中的jetty插件。
  • SuperDevMode的CodeServer

请注意,如果您使用GWT-RPC,则您希望启动服务器,并将gwt.codeserver.port系统属性设置为CodeServer的端口(假设它们位于同一台计算机上)。这样,当您的浏览器(运行比您编译到JS并部署到服务器的更新的客户端代码)与您的servlet通信时,那个将从CodeServer加载GWT-RPC序列化策略。否则,GWT-RPC可能会因IncompatibleRemoteServiceException而失败。

另见https://stackoverflow.com/a/18333050/116472