无法将应用程序部署到Tomcat

时间:2013-05-20 04:26:41

标签: java tomcat

我试着从Tomcat 7开始 我在Eclipse中创建了应用程序。这是我的web.xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" id="WebApp_ID" version="2.4">

<welcome-file-list>
 <welcome-file>
  view.jsp
 </welcome-file>
</welcome-file-list>

<servlet>
 <servlet-name>myServlet</servlet-name>
 <servlet-class>/servlets/myServlet</servlet-class>
</servlet>
<servlet-mapping>
 <servlet-name>myServlet</servlet-name>
 <url-pattern>/myServlet</url-pattern>
</servlet-mapping>
</web-app>

我从Apache的网站下载了最新的Tomcat,并将JAVA_HOME添加到catalina.bat。启动Tomcat后,我进入了Manager app并选择了我的应用程序但获得了404.在地址栏中 - http://localhost:8080/ThreeRest/
另一个奇怪的事情是应用程序没有部署到webapps目录,而是部署到wtpwebapps文件夹中。

tomcat-users.xml的另一个问题。如果我加上这个:

<role rolename="manager"/>
<role rolename="manager-gui"/>
<role rolename="admin"/>
<user username="tomcat" password="tomcat" roles="admin,manager,manager-gui"/>

它只在一个会话中工作。当我停止tomcat时,它会从文件中删除。

2 个答案:

答案 0 :(得分:2)

<servlet-class>应该是

<servlet-class>servlets.myServlet</servlet-class>

因为你在这里指定的包不是路径。

请注意,您必须通过

访问您的网站
http://localhost:8080/ThreeRest/myServlet

http://localhost:8080/ThreeRest/

在您的网络应用根文件夹中显示view.jsp

修改: 部署后,Web应用程序的文件夹结构应如下所示:(/表示目录)

tomcat-home/
 |- webapps/
   |- rest/ //<-- Context-Root (Web-app's name)
     |- view.jsp //<-- *.html, *.jsp files
     |- WEB-INF/
        |- web.xml
        |- lib/
          |- *.jar files
        |- classes/ //<-- ALL your servlets go here
          |- servlets/ //<-- with the required package/folder structure
            |- myServlet.class

答案 1 :(得分:1)

好的,用于servlet声明的示例配置:

假设您正在创建一个servlet(HelloServlet位于包x.y.z中):

所以代码就像:

package x.y.z;

//imports here

public class HelloServlet extends HttpServlet {

....Code here

}

现在在web.xml中,如果我想映射这个servlet,我会做类似的事情:

 <servlet>
     <servlet-name>myservlet</servlet-name>
     <servlet-class>
           x.y.z.HelloServlet
     </servlet-class>
 </servlet>

 <servlet-mapping>
     <servlet-name>myservlet</servlet-name>
     <url-pattern>/myservlet</url-pattern>
 </servlet-mapping>

这就足够了,一旦app在tomcat中部署,说上下文名称是 testservlet ,那么我可以访问这个servlet,如:

 http://<ip>:<port on which tomcat is running>/testservlet/myservlet