我正在尝试编写一个简单的web应用程序并部署在jboss EAP6上。该应用程序名为"webapp",我能够构建并部署到jboss中。上下文根为/webapp。
然后,我可以访问localhost:8080/webapp,它返回一个从eclipse在/src/main/webapp生成的默认index.jsp打印的"Hello World"。
然而,当我尝试实际访问localhost:8080/webapp/sessionstup上的servlet时,我得到了以下错误:
JBWEB000065: HTTP Status 404 - /webapp/sessionsetup
JBWEB000309: type JBWEB000067: Status report
JBWEB000068: message /webapp/sessionsetup
JBWEB000069: description JBWEB000124: The requested resource is not available.
下面是我为servlet编写的简单代码:
@WebServlet("/sessionsetup")
public class SessionSetup extends HttpServlet{
private static final Logger log = LoggerFactory.getLogger(SessionSetup.class);
public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
log.info(this.toString());
log.info("Do get method is called");
response.setContentType("text/xml");
PrintWriter printer = response.getWriter();
printer.println("<html>");
printer.println("<head>" + "</head>");
printer.println("<body>");
printer.println("<h1>" + "Welcome! You are in session setup" + "</h1>");
printer.println("</body>");
printer.println("</html>");
printer.close();
}
}
有人能评论一下我可能会错过什么吗?有没有办法在没有这个错误的情况下找到一些日志信息?我试图在/standalone/log中查找server.log,但找不到任何内容。
可能有两个原因
(1) 您可以在jboss服务器中配置standalone.xml
虚拟服务器name="default host"enable welcome root="false">
在启用欢迎根中使用false而不是true
(2)您没有正确完成控制器的映射
问题已解决。这似乎是web.xml的一个问题——一旦删除它,servlet就可用了。
实际的问题应该是它在jboss中的部署方式(运行时名称)。
因此,如果您尝试访问上面的应用程序,它应该可以工作。
运行时名称:在服务器的运行时中应该知道部署的名称。这相当于部署文件的文件名,并将构成默认Java Enterprise Edition应用程序和模块名称等内容的基础。这通常与"名称"相同,但在某些情况下,用户可能希望在部署内容存储库中有两个具有相同"运行时名称"的部署(例如"foo.war"的两个版本),在这种情况下,部署需要具有不同的"名称"值,但具有相同的"运行时名称"。
这只是我对这个问题可能如何发生以及我解决问题的方式的经验。
这种问题发生在没有战争档案的情况下。当我部署时
hawtio
监控需要的jboss
jolokia
所以我只是手动下载.war文件并将其部署到我的jboss中,然后问题就解决了。
我认为您必须添加WEB-INF/jboss-WEB.xml文件,在该文件中您已经设置了上下文根
<jboss-web>
<context-root>contextroot</context-root>
</jboss-web>
清理服务器在许多情况下解决这个问题是可行的。。