2011-01-19 102 views
2

我想我的应用程序分为模块和我被困在这个问题在访问的servlet:GWT - 问题继承模块

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

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

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

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

这是webvisualisation模块

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

web.xml和对领导的,它只是普通的生成样本文件

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

看来你撞到一个classpath的问题。也许检查您的webvisualisation.jar是否在您的Web应用程序的WEB-INF/lib目录中。

+0

你是对的,它不在那里,但我已经将它添加到WEB-INF/lib并仍然有相同的错误。我在Eclipse中以托管模式运行它,并在控制台“WARNING:No found found for:/ led/mapservice”中看到了此消息。 – mike 2011-01-19 22:02:26

0

我明白了。我只是增加了servlet和servlet映射条目为“主导”模块的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> 

正如你可以看到地图服务的servlet在这里映射到/ LED /地图服务的网址,让GWT似乎寻找它,不像在原始的“webvisualisation”模块web.xml中,它被映射到/ wevisualisation/mapservice。

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

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