我的应用程序在开发模式(使用GWT-RPC调用)下运行良好,但是每当我尝试使用生产模式(通过删除URL的?gwt.codesvr=127.0.0.1:9997部分)对其进行测试时,它通常会给我一个空白页。

我手动检查了VoitureTourisme.html文件,并将voitureTourisme.nocache.js文件的路径修改为可以正常工作的路径(这意味着我的Web.xml配置不正确,对吗?那为什么它可以在开发模式下工作?)

现在看起来像这样<script language="javascript" src="voitureTourisme/voitureTourisme.nocache.js"></script>但它曾经是
src="com.devsys.calculateur.voitureTourisme.VoitureTourisme/com.devsys.calculateur.voitureTourisme.VoitureTourisme.nocache.js"当我第一次编译时。
因为我尝试了不同的变体并编译了几次,所以现在我在战争中得到了2个模块文件夹:“voitureTourisme”,另一个具有完整路径,如上所示。

我敢肯定我会混淆如何正确配置VoitureTourisme.gwt.xml和Web.XML文件,因为如果这样做的话,我就不必手动更正已编译的html文件。
在我手动修复它(我不必这样做)之后,我的RPC调用显示404错误,因为他们没有找到用于服务的servlet(错误的url)。

希望你能告诉我什么地方错了,为什么要用我的配置

Web.xml

<?xml version="1.0" encoding="utf-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
    <!-- TODO: Add <servlet> tags for each servlet here. -->
    <!-- TODO: Add <servlet-mapping> tags for each <servlet> here. -->
    <!-- TODO: Optionally add a <welcome-file-list> tag to display a welcome file. -->
     <!-- Servlets -->
  <servlet>
    <servlet-name>calculateurDataService</servlet-name>
    <servlet-class>com.devsys.calculateur.voitureTourisme.server.form.CalculateurDataServiceImpl</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>calculateurDataService</servlet-name>
    <url-pattern>/com.devsys.calculateur.voitureTourisme.VoitureTourisme/calculateurDataService</url-pattern>
  </servlet-mapping>
</web-app>

VoitureTourisme.gwt.xml
<module>
    <inherits name="com.google.gwt.user.User"/>
    <inherits name="com.google.gwt.user.theme.standard.Standard"/>
    <inherits name="com.devsys.util.XmlUtil"/>
    <inherits name="com.devsys.util.UrlUtil"/>
    <inherits name="com.google.gwt.i18n.I18N"/>
    <entry-point class="com.devsys.calculateur.voitureTourisme.client.VoitureTourisme"/>
</module>

我也有使用的服务界面
@RemoteServiceRelativePath("calculateurDataService")

那是对的吗?我应该使用它吗?

最佳答案

我认为问题与模块名称有关。在继承开始之前,尝试添加gwt.xml的这一行:

<module rename-to='voituretourisme'>

然后在您的web.xml文件中尝试更改为:
<url-pattern>/voituretourisme/calculateurDataService</url-pattern>

您的html文件应类似于:
<script language="javascript" src="voituretourisme/voituretourisme.nocache.js"></script>

注意区分大小写,我相信这应该正确编译,并且可以在开发模式和生产模式下工作。

08-16 16:47