0

我正在尝试开始使用超级开发模式。我正在运行超级开发模式,并且有一个 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>

除此之外,有什么方法可以让这不那么复杂吗?也许一些新功能可以解决其中一些令人头疼的问题?我希望一旦我知道如何为其他开发人员设置环境!并且希望不会使推向生产变得更加困难(即希望最小的配置/代码更改)。

谢谢!

4

1 回答 1

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

于 2014-05-28T21:52:13.373 回答