2015-11-07 57 views
0

我试图使用命令行部署一个非常简单的HttpServlet到TomEE 1.7.2,但我没有运气。代码如下所示:从命令行部署一个简单的HttpServlet到TomEE

@WebServlet("/HttpServlet") 
public class SimpleHttpServlet extends HttpServlet { 

    @Override 
    public void doGet(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>"); 
    } 
} 

我使用下面的命令编译类:

javac -cp "$TOMEE/lib/*" SimpleHttpServlet.java 

一切看起来好,因为我只得到以下警告:

warning: Supported source version 'RELEASE_6' from annotation processor 'org.apache.openjpa.persistence.meta.AnnotationProcessor6' less than -source '1.8' 
1 warning 

要创建战争我做了以下事情:

jar cf SimpleHttpServlet.war SimpleHttpServlet.class 

我开始TomEE使用bin/startup.sh与部署我的战争:

bin/tomee.sh deploy path/to/my/SimpleHttpServlet.war 

我得到以下输出:

deploying /.../SimpleHttpServlet.war 
Nov 05, 2015 5:39:50 PM org.apache.openejb.client.EventLogger log 
INFO: RemoteInitialContextCreated{providerUri=http://localhost:8080/tomee/ejb} 
Application deployed successfully at "/.../SimpleHttpServlet.war" 
App(id=/.../apache-tomee-plus-1.7.2/apps/SimpleHttpServlet) 
    EjbJar(id=SimpleHttpServlet, path=/.../apache-tomee-plus-1.7.2/apps/SimpleHttpServlet) 
    WebApp(context-root=/SimpleHttpServlet, id=SimpleHttpServlet, path=/.../apache-tomee-plus-1.7.2/apps/SimpleHttpServlet) 

如果我去http://localhost:8080/manager/html我可以看到我的战争,都没有问题。然而,当我去http://localhost:8080/SimpleHttpServlet/HttpServlet我从TomEE得到404:

HTTP Status 404 - /SimpleHttpServlet/HttpServlet/ 
type Status report 
message /SimpleHttpServlet/HttpServlet/ 
description The requested resource is not available. 
Apache Tomcat (TomEE)/7.0.62 (1.7.2) 

据我了解,当使用@WebServletweb.xml不是强制性的。我错过了什么?

谢谢!

NYG

回答

0

war file的布局不正确。您的servlet的类文件现在位于/中,但必须位于/WEB-INF/classes

+0

而且它工作!非常感谢! – nyg