2011-11-24 136 views
5

我正在尝试使用MyEclipse和JBoss 5作为应用程序服务器创建一个名为“web”的非常基本的Web项目。我创建了一个名为“pages”的包,里面有一个名为“UserInterface”的servlet。问题是当我部署项目并运行服务器时,我总是收到错误报告:HTTP状态404 - Servlet不可用。JBoss错误报告:HTTP状态404 - Servlet不可用

这是我的web.xml的一部分:

<servlet> 
    <servlet-name>UserInterface</servlet-name> 
    <servlet-class>pages.UserInterface</servlet-class> 
    </servlet> 

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

,我航行在浏览器中:http://localhost:8080/web/UserInterface

我在做什么错在这里?

感谢

+0

已部署的Web应用程序中的文件列表将很有用。你是否将它部署为.war? –

+1

也是使用context path = web部署的项目吗?你可以访问根本地主机:8080 /网络? –

+0

当服务器启动或应用程序正在部署时,您是否在日志或控制台输出中看到任何问题? – Santosh

回答

2

我仍然不知道什么是错的,但我创建了另一个名为user的servlet,并且在web.xml中,我在类之前添加了/ servlet并在浏览器中导航到它(http:// localhost :8080 /网络/ servlet /用户),它的工作。

<servlet> 
    <servlet-name>User</servlet-name> 
    <servlet-class>pages.User</servlet-class> 
    </servlet> 

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

谢谢大家的帮助!

2

HTTP状态404 - Servlet是不可用。

的servlet加载失败(如果servlet没有正确web.xml声明或URL是错误的,那么你应该不是看到“404 - 未找到资源”)。简而言之,<servlet-class>是错误的或具体的类文件不存在于/WEB-INF/classes

+0

Servlet异常会导致500错误吗? –

+0

@Andrei:只有在被'service()','doGet()'抛出时等等。但在这种情况下,servlet完全不可用。容器知道servlet的URL映射,但手头没有有效的工作实例,因为实例化/初始化失败。 – BalusC

+0

嗯,是的,但是我从我自己的蹩脚编码中肯定地知道,例如,如果我有一个带有引发NPE的init()重写方法的servlet,那么访问该servlet(例如在Jetty中)将返回一个HTTP 500. –

4

404意味着您尝试访问的URL不指向服务器上的现有资源。再次检查地址,也许“网络”(从http://localhost:8080/web/UserInterface)部分是不正确的,因为可能应用程序没有与该名称部署。默认情况下,应用程序上下文名称是从“的.war”文件的文件名derrived比如,如果你的文件是‘myApp.war’,您的应用程序应该可以在http://localhost:8080/myApp

另外,如果你在实际部署您的一个.ear文件中战争是EAR文件将包含的application.xml aplpication描述符可以将应用文件映射到特定的情况下,无事的.war文件名是什么,是这样的:

<module> 
    <web> 
     <web-uri>myApp.war</web-uri> 
     <context-root>theApp</context-root> 
    </web> 
    </module> 

最后,如果你使用JBoss Eclipse连接器从Eclipse中自动部署,有时会出现错误,并且事实上并没有正确部署你的应用(尽管应用本身没问题)。如果是这样的话,尝试手动将.war部署到应用程序服务器并检查它。

+1

阅读404消息。该URL绝对没有错。 – BalusC