gwt - 访问继承模块中的servlet的问题

时间:2011-01-19 18:12:58

标签: gwt gwt-rpc

我正在尝试将我的应用分成模块而且我遇到了这个问题:

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

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

确定无法找到它导致mapservice在继承的“webvisualisation”模块中定义。

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

这是webvisualisation模块的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>

而对于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>

2 个答案:

答案 0 :(得分:0)

似乎你遇到了类路径问题。也许检查一下你的webvisualisation.jar是否在web应用程序的WEB-INF / lib目录中。

答案 1 :(得分:0)

我得到了它的工作。我刚刚将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>

正如您可以看到mapservice servlet在此映射到/ led / mapservice URL,其中GWT似乎在寻找它,而不像原始的“webvisualisation”模块web.xml,它被映射到/ wevisualisation / mapservice。

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

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