gwt-在继承的模块中访问servlet时出现问题

gwt-在继承的模块中访问servlet时出现问题,gwt,gwt-rpc,Gwt,Gwt Rpc,我试图将我的应用程序划分为多个模块,但我遇到了以下问题: 我在一个名为“WebVisualization”的模块中有一个小部件MapServiceWidget,它使用RPC从MapService RPC接口获取数据。我在另一个名为“led”的GWT模块中继承了这个模块(我将“webvis…”打包到带有源代码的jar中,添加到模块“led”定义中)。然后我尝试在第二个(“led”)模块中创建这个小部件并获取消息 “未找到访问/led/mapservice的问题原因” 并确保找不到它,因为mapse

我试图将我的应用程序划分为多个模块,但我遇到了以下问题:

我在一个名为“WebVisualization”的模块中有一个小部件MapServiceWidget,它使用RPC从MapService RPC接口获取数据。我在另一个名为“led”的GWT模块中继承了这个模块(我将“webvis…”打包到带有源代码的jar中,添加到模块“led”定义中)。然后我尝试在第二个(“led”)模块中创建这个小部件并获取消息

“未找到访问/led/mapservice的问题原因”

并确保找不到它,因为mapservice是在继承的“WebVisualization”模块中定义的

问题是为什么它在“led”模块中寻找servler实现,而不是在定义它的“WebVisualization”中?我检查了所有模块定义和web.xml文件好几次,并查阅了文档,似乎还可以。。但事实并非如此。如果我的描述不清楚,我可以发布一些配置/源文件

这是WebVisualization模块的web.xml

<!-- Servlets -->
<servlet>
    <servlet-name>mapservice</servlet-name>
    <servlet-class>pl.gmike.webvis.server.MapServiceImpl</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>mapservice</servlet-name>
    <url-pattern>/webvisualisation/mapservice</url-pattern>
</servlet-mapping>

地图服务
pl.gmike.webvis.server.MapServiceImpl
地图服务
/网络可视化/地图服务
对于led,它只是普通生成的示例文件

<!-- Servlets -->
<servlet>
    <servlet-name>greetServlet</servlet-name>
    <servlet-class>pl.led.server.GreetingServiceImpl</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>greetServlet</servlet-name>
    <url-pattern>/led/greet</url-pattern>
</servlet-mapping>

greetServlet
pl.led.server.GreetingServiceImpl
greetServlet
/领导/问候

您似乎遇到了类路径问题。也许可以检查WebVisualization.jar是否位于WEB应用程序的WEB-INF/lib目录中。

似乎遇到了类路径问题。也许可以检查您的WebVisualization.jar是否位于WEB应用程序的WEB-INF/lib目录中。

我让它工作了。我刚刚将servlet和servlet映射条目添加到“led”模块web.xml中,所以现在看起来像这样:

<!-- Servlets -->
<servlet>
    <servlet-name>greetServlet</servlet-name>
    <servlet-class>pl.led.server.GreetingServiceImpl</servlet-class>
</servlet>

<servlet>
    <servlet-name>mapservice</servlet-name>
    <servlet-class>pl.gmike.webvis.server.MapServiceImpl</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>greetServlet</servlet-name>
    <url-pattern>/led/greet</url-pattern>
</servlet-mapping>

<servlet-mapping>
    <servlet-name>mapservice</servlet-name>
    <url-pattern>/led/mapservice</url-pattern>
</servlet-mapping>

greetServlet
pl.led.server.GreetingServiceImpl
地图服务
pl.gmike.webvis.server.MapServiceImpl
greetServlet
/领导/问候
地图服务
/led/地图服务
正如您所看到的,mapservice servlet在这里被映射到/led/mapservice URL,GWT似乎在这里查找它,而在原始的“WebVisualization”模块web.xml中它被映射到/weVisualization/mapservice

我对这个解决方案不是很满意,它可以工作,但它需要在WebApps web.xml中为继承模块中我想要使用或在继承模块中某处使用的每个servlet添加一个servlet映射


我仍然想知道为什么在编译/链接期间,WebApps web.xml中没有包含继承模块的servlet定义和映射。。。我认为它应该在没有这些黑客的情况下工作,所以我有点做错了

我让它工作了。我刚刚将servlet和servlet映射条目添加到“led”模块web.xml中,所以现在看起来像这样:

<!-- Servlets -->
<servlet>
    <servlet-name>greetServlet</servlet-name>
    <servlet-class>pl.led.server.GreetingServiceImpl</servlet-class>
</servlet>

<servlet>
    <servlet-name>mapservice</servlet-name>
    <servlet-class>pl.gmike.webvis.server.MapServiceImpl</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>greetServlet</servlet-name>
    <url-pattern>/led/greet</url-pattern>
</servlet-mapping>

<servlet-mapping>
    <servlet-name>mapservice</servlet-name>
    <url-pattern>/led/mapservice</url-pattern>
</servlet-mapping>

greetServlet
pl.led.server.GreetingServiceImpl
地图服务
pl.gmike.webvis.server.MapServiceImpl
greetServlet
/领导/问候
地图服务
/led/地图服务
正如您所看到的,mapservice servlet在这里被映射到/led/mapservice URL,GWT似乎在这里查找它,而在原始的“WebVisualization”模块web.xml中它被映射到/weVisualization/mapservice

我对这个解决方案不是很满意,它可以工作,但它需要在WebApps web.xml中为继承模块中我想要使用或在继承模块中某处使用的每个servlet添加一个servlet映射


我仍然想知道为什么在编译/链接期间,WebApps web.xml中没有包含继承模块的servlet定义和映射。。。我认为它应该在没有这些黑客的情况下工作,所以我有点做错了

你是对的,它不在那里,但我已经将它添加到WEB-INF/lib中,仍然得到相同的错误。我在Eclipse的托管模式下运行它,在控制台中收到消息“警告:找不到:/led/mapservice的文件”。我们可以看到web.xml文件的相关部分吗?您是对的,它不在那里,但我已将其添加到web-INF/lib中,仍然会收到相同的错误。我在Eclipse的托管模式下运行它,并在控制台中收到消息“警告:找不到:/led/mapservice的文件”。我们可以看到web.xml文件的相关部分吗?