試圖學習Ant/Tomcat,我遇到了部署我的戰爭的一些困難。我在catalina,localhost或localhost_access日誌中沒有發現任何錯誤,所以我確信它只是一個配置問題。 Ant構建運行良好。部署戰爭。當我到localhost:8080/antDemo/hello時,我得到了一個404代碼。將戰爭部署到tomcat配置問題
有一件事對我來說很奇怪,當我導航到tomcat/webapps/antDemo時,我只能看到HelloServlet.java文件和一個META-INF文件夾,當我期望看到一個web.xml和一個類文件夾或類似的東西。
我讀過很多堆棧溢出問題(雖然感覺像一個白癡不能排序),但沒有運氣。
幫助會很好,但更重要的是,朝着全面的信息資源方向發展,不僅解釋瞭如何配置這樣的事情,而且爲什麼需要這樣配置。獲取爲什麼一直難以找到......並且是最重要的部分。
項目結構:
tomcatdemo
|-src
|---HelloServlet.java
|-WebContent
|---WEB-INF
|------classes
|---------HelloServlet.class
|------web.xml
|-build.xml
HelloServlet.java
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class HelloServlet extends HttpServlet{
public void doGe(HttpServletRequest request, HttpServletResponse response)
throws IOException{
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<body>");
out.println("<h1>Hello Servlet Get</h1>");
out.println("</body>");
out.println("</html>");
}
}
的build.xml
<?xml version="1.0" encoding="UTF-8"?>
<project default="clean" basedir=".">
<property name="tomcat" value="C:\tomcat"/>
<property name="tomcat.deployment" value="${tomcat}/webapps"/>
<property name="tomcat.bin" value="${tomcat}/bin"/>
<property name="base" value="."/>
<property name="source" value="${base}/src"/>
<target name="clean">
<delete file="${tomcat.deployment}/antDemo.war"/>
<antcall target="compile"/>
</target>
<target name="compile">
<javac srcdir="src" destdir="${base}/WebContent/WEB-INF/classes" classpath="C:/tomcat/lib/servlet-api.jar"/>
<antcall target="deployTarget"/>
</target>
<target name="warTarget">
<war warFile="antDemo.war" webxml="${base}/WebContent/WEB-INF/web.xml">
<fileset dir="${source}"/>
</war>
<antcall target="deployTarget"/>
</target>
<target name="deployTarget">
<copy file="${base}/antDemo.war" todir="${tomcat.deployment}" />
<antcall target="startTomcat"/>
</target>
<target name="startTomcat">
<exec executable="${tomcat.bin}/startup.bat">
<env key="CATALINA_HOME" value="${tomcat}"/>
</exec>
</target>
<target name="stopTomcat">
<exec executable="${tomcat.bin}/shutdown.bat">
<env key="CATALINA_HOME" value="${tomcat}"/>
</exec>
</target>
</project>
的web.xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN"
"http://java.sun.com/j2ee/dtds/web-app_2_2.dtd">
<web-app>
<display-name>myServletWAR, a first Web Application</display-name>
<description>
</description>
<servlet>
<servlet-name>Hello</servlet-name>
<servlet-class>HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Hello</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
</web-app>
編輯: 戰爭結構如下(和它顯然是錯誤的)
antDemo
|-META-INF
|----MANIFEST.MF
|-HelloServlet.java
請發送你的'war'結構。 – AlexR
@AlexR Tomcat是怎麼膨脹的?在/ tomcat/webapps/antDemo/ – Brad
構建WAR文件後,其結構是什麼?您可以通過從.war重命名爲.zip來解壓WAR。如果WAR文件沒有正確創建,這可能會有所幫助。話雖如此,我會期待在服務器日誌中出現錯誤。 –