【问题标题】:jboss web application deploying but not foundjboss Web 应用程序正在部署但未找到
【发布时间】:2011-04-18 11:18:38
【问题描述】:

好的,尝试将 War 部署到 JBoss 4.0.4.CR2(不,我无法升级)并且在启动期间我没有遇到任何异常,但是每当我尝试访问应用程序时,我都会收到 404。我已经检查每个日志,我没有发现任何异常。

下面是我的 web.xml 文件:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<servlet>
    <servlet-name>GroupMaintenance</servlet-name>
    <servlet-class>com.example.servlet.GroupMaintenance</servlet-class>
</servlet>

<servlet>
    <servlet-name>ApplicationMaintenance</servlet-name>
    <servlet-class>com.example.servlet.ApplicationMaintenance</servlet-class>
</servlet>

<servlet>
    <servlet-name>EmailMaintenance</servlet-name>
    <servlet-class>com.example.servlet.EmailMaintenance</servlet-class>
</servlet>

<servlet>
    <servlet-name>FraudDefinitions</servlet-name>
    <servlet-class>com.example.servlet.FraudDefinitions</servlet-class>
</servlet>

<servlet>
    <servlet-name>UrlMaintenance</servlet-name>
    <servlet-class>com.example.servlet.UrlMaintenance</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>EmailMaintenance</servlet-name>
    <url-pattern>/email_maintenance</url-pattern>
</servlet-mapping>

<servlet-mapping>
    <servlet-name>FraudDefinitions</servlet-name>
    <url-pattern>/fraud_definitions</url-pattern>
</servlet-mapping>

<servlet-mapping>
    <servlet-name>UrlMaintenance</servlet-name>
    <url-pattern>/url_maintenance</url-pattern>
</servlet-mapping>

<servlet-mapping>
    <servlet-name>GroupMaintenance</servlet-name>
    <url-pattern>/group_maintenance</url-pattern>
</servlet-mapping>

<servlet-mapping>
    <servlet-name>ApplicationMaintenance</servlet-name>
    <url-pattern>/application_maintenance</url-pattern>
</servlet-mapping>

<session-config>
    <session-timeout>
        30
    </session-timeout>
</session-config>

<welcome-file-list>
    <welcome-file>/group_maintenance</welcome-file>
</welcome-file-list>

<login-config>
    <auth-method>FORM</auth-method>
    <realm-name>Example Form-Based Authentication Area</realm-name>
    <form-login-config>
        <form-login-page>/jsp/login.jsp</form-login-page>
        <form-error-page>/jsp/error.jsp</form-error-page>
    </form-login-config>
</login-config>

<security-constraint>
    <web-resource-collection>
        <web-resource-name>Protected Area</web-resource-name>
        <url-pattern>/jsp/*</url-pattern>            
        <http-method>DELETE</http-method>
        <http-method>GET</http-method>
        <http-method>POST</http-method>
        <http-method>PUT</http-method>
    </web-resource-collection>
    <auth-constraint>
        <role-name>access_write</role-name>
    </auth-constraint>  
</security-constraint>    
<security-constraint>
    <web-resource-collection>
        <web-resource-name>Protected Area</web-resource-name>
        <url-pattern>/WebAdmin</url-pattern>            
        <http-method>DELETE</http-method>
        <http-method>GET</http-method>
        <http-method>POST</http-method>
        <http-method>PUT</http-method>
    </web-resource-collection>
    <auth-constraint>
        <role-name>access_write</role-name>
    </auth-constraint>  
</security-constraint> 

<security-role>
    <role-name>access_write</role-name>
</security-role> 

<resource-ref>
    <description>DB Connection</description>
    <res-ref-name>ownerDS</res-ref-name>                      
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
</resource-ref>
<resource-ref>
    <description>DB Connection</description>
    <res-ref-name>ownerDS</res-ref-name>                      
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
</resource-ref>

我已经玩了大约三个小时了,但无济于事。我已经将其他 Web 应用程序部署到同一个实例,没有任何问题。我认为它很小,但我没有看到它。

更新:我注释掉了登录配置和安全约束,我可以访问定义的 servlet 映射。在其中一个安全约束中,我将保护区定义为

security-constraint>
<web-resource-collection>
    <web-resource-name>Protected Area</web-resource-name>
    <url-pattern>/WebAdmin</url-pattern>            
    <http-method>DELETE</http-method>
    <http-method>GET</http-method>
    <http-method>POST</http-method>
    <http-method>PUT</http-method>
</web-resource-collection>
<auth-constraint>
    <role-name>write</role-name>
</auth-constraint>  

我猜这里的某些东西配置不正确。我没有映射到 WebAdmin 的 servlet,但希望将安全约束应用于此 WebAdmin.war 中的所有 servlet。

【问题讨论】:

  • 信息不足。 WAR 文件的名称是什么?您是如何尝试访问它的?
  • 仔细检查战争是否绑定到您使用的确切网址。
  • warfile 的名称是 WebAdmin.war。我正在尝试通过 localhost:8080/WebAdmin 访问它
  • 还应该提到这在 Weblogic 中运行良好。如果这很重要。
  • 你有 jboss-web.xml 吗?你能把“jboss-web.xml”文件的内容发过来吗?

标签: java web-applications jboss


【解决方案1】:

检查您是否在部署后启动了应用程序。

我不知道 JBoss 应用服务器到底是怎样的,但在 Weblogic 中,应用程序部署成功后应该“开始服务请求”。

【讨论】:

  • 是的,根据 jmx-console 它是启动的。
  • 你说的URL是localhost:8080/WebAdmin 索引文件重定向到哪里?您描述的 servlet 映射中是否有重定向目标??
  • welcome-file-list 设置为 URL 模式中的 /group_maintenance。
【解决方案2】:

只是一个想法......

当您启动 jboss 服务器时,您确定它正在启动您部署战争的实例吗?您可能已将您的战争部署到错误的服务器实例。

我认为在 Jboss 404 中启动的默认实例是默认的,因此请确保您将战争部署为默认而不是生产。 反之亦然,如果要启动的默认实例是生产。

【讨论】:

    【解决方案3】:
    1. 你能检查你的战争地点吗?
    2. 很高兴看到日志
    3. 进程是否正在运行?
    4. 您能否将您的战争重命名为其他名称并重试?

    【讨论】:

      【解决方案4】:

      您检查了您的application.xml 文件吗? application.xml 应该同时引用您的 jar 和 war 模块。以下是我正在谈论的示例:

      <application>
          <display-name>admin-ear</display-name>
          <module>
              <ejb>admin-core.jar</ejb>
          </module>
          <module>
              <web>
                  <web-uri>admin-web.war</web-uri>
                  <context-root>/admin</context-root>
              </web>
          </module>
      </application>
      

      【讨论】:

        猜你喜欢
        • 2013-03-16
        • 1970-01-01
        • 2013-04-22
        • 1970-01-01
        • 2018-12-14
        • 2018-09-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多