我正在尝试将我的应用分成模块而且我遇到了这个问题:
我在一个名为“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>
答案 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中...我认为它应该没有这样的黑客,所以我做错了。