GWT Tomcat问题到RPC调用

时间:2011-04-13 13:34:34

标签: java gwt tomcat rpc

当我将war文件部署到TOMCAT(tomcat / webapps / ROOT / war)时,GWT RPC调用似乎不起作用。

它给了我一个错误:

  

请求的资源   (/ war / myproject / call)不是   可用。

如果我更改目录结构,然后直接部署war内容(不是war目录本身),如(tomcat / webapps / ROOT / project.html,project.css,project等... )然后它可以工作。

有人可以向我解释发生了什么事吗?

我认为可能存在问题:

<servlet>
<servlet-name>callServlet</servlet-name>
<servlet-class>com.myproject.server.dao.Call</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>callServlet</servlet-name>
<url-pattern>/myproject/call</url-pattern>
</servlet-mapping>

3 个答案:

答案 0 :(得分:4)

问题在于,单个Tomcat服务器可以部署多个应用程序,每个应用程序都在其所谓的上下文中。应用程序部署在webapps文件夹中,每个文件夹都映射到一个上下文,而ROOT文件夹是默认的(无上下文)。

要在Tomcat上访问应用程序,请在URL后指定上下文。例如,如果您在Test文件夹中有一个应用程序(上下文)webapps/Test,则可以像这样访问它:

http://localhost:8080/Test

ROOT文件夹中的应用程序没有上下文,只需转到localhost:8080即可访问。这是你的情况。 Tomcat直接在ROOT文件夹中查找您的应用程序,但您的应用程序位于ROOT/war文件夹中。换句话说,RPC调用期望myproject文件夹位于ROOT文件夹下,而不是ROOT/war文件夹下。这就是它无法正常工作的原因。

如果您仍希望将war文件夹放在ROOT文件夹中,则必须将url-pattern更改为/war/myProject/call

答案 1 :(得分:1)

我找到了解决方案,它与Tomcat的操作方式有关。

  1. 打开项目战争目录
  2. 选择所有文件(html / jsp,图像,WEB-INF等...)
  3. 将所有文件压缩为单个project.zip archieve
  4. 将project.zip重命名为project.war
  5. 将project.war复制到Tomcat / webapps /
  6. 重启Tomcat服务器
  7. 您现在会注意到webapps目录中的project.war已经解压缩到项目目录中,如果打开它,您将找到所有.war内容(html / jsp,图像,WEB-INF等...)
  8. 从此处http://localhost/projecthttp://localhost/project/index.html或index.jsp。
  9. 访问它

    错误是:我只将war目录(不是内容)压缩到project.war。

答案 2 :(得分:0)

看起来,servlet没有为你初始化war尝试将SERVLET标记更改为 即添加标签

<load-on-startup>1</load-on-startup>

此标记确保应加载servlet

 <servlet>
 <servlet-name>callServlet</servlet-name>
 <servlet-class>com.myproject.server.dao.Call</servlet-class>
 <load-on-startup>1</load-on-startup>
 </servlet> 

希望这会起作用