【问题标题】:GWT Super Dev Mode RPC 404GWT 超级开发模式 RPC 404
【发布时间】:2014-05-28 17:54:09
【问题描述】:

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

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

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

谢谢!

【问题讨论】:

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


    【解决方案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

    【讨论】:

    • 谢谢,这个回答很有帮助。
    猜你喜欢
    • 1970-01-01
    • 2021-09-07
    • 2013-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多