当我将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>
问题是,单个Tomcat服务器可以部署多个应用程序,每个应用程序都在其所谓的 上下文中 。应用程序部署在该webapps文件夹中,并且每个文件夹都映射到一个 上下文 ,而该ROOT文件夹是默认上下文(无上下文)。
webapps
ROOT
要访问Tomcat上的应用程序,请在URL后面指定 上下文 。例如,如果您Test在webapps/Test文件夹中有一个应用程序(上下文),则可以这样访问它:
Test
webapps/Test
http://localhost:8080/Test
但是ROOT文件夹中的应用程序没有上下文,只需访问即可访问localhost:8080。这就是你的情况。Tomcat在ROOT文件夹中直接寻找您的应用程序,但文件夹中有您的应用程序ROOT/war。换句话说,RPC调用期望该myproject文件夹位于该ROOT文件夹下而不是该ROOT/war文件夹下。这就是为什么它不起作用。
localhost:8080
ROOT/war
myproject
如果您仍然希望将war文件夹包含在ROOT文件夹中,则必须将更url-pattern改为/war/myProject/call。
war
url-pattern
/war/myProject/call