JBoss wildfly 10禁止访问spring mvc Web应用程序

Posted

技术标签:

【中文标题】JBoss wildfly 10禁止访问spring mvc Web应用程序【英文标题】:JBoss wildfly 10 forbidden access for spring mvc web app 【发布时间】:2016-12-25 08:57:59 【问题描述】:

我有一个运行在 JBoss 4.2 中的 spring mvc 应用程序。我正在尝试将此网络应用程序迁移到 JBoss wildfly 10(wildfly-10.0.0.Final 版本)。该应用程序部署成功,但是当我尝试访问 http://localhost:8080/myApp/ 时,服务器会返回 "Forbidden"。如果我尝试访问http://localhost:8080/myApp/web/buscador/init 服务器响应“未找到”。

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

    <!-- char encoding -->
    <filter>
        <filter-name>encodingFilter</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
        </init-param>
        <init-param>
            <param-name>forceEncoding</param-name>
            <param-value>true</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>encodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/myAppApplicationContext.xml</param-value>
    </context-param>

    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

    <!-- servlet dispatcher de Spring -->
    <servlet>
        <servlet-name>myApp</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>/WEB-INF/myAppApplicationContext.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>myApp</servlet-name>
        <url-pattern>/web/*</url-pattern>
    </servlet-mapping>

    <!-- DWR -->
    <servlet>
        <display-name>DWR Servlet</display-name>
        <servlet-name>dwr-invoker</servlet-name>
        <servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>
        <init-param>
            <param-name>debug</param-name>
            <param-value>true</param-value>
        </init-param>
    </servlet>

    <servlet-mapping>
        <servlet-name>dwr-invoker</servlet-name>
        <url-pattern>/dwr/*</url-pattern>
    </servlet-mapping>

    <!-- displaytag -->
    <servlet>
        <display-name>DisplaySource</display-name>
        <servlet-name>DisplaySource</servlet-name>
        <servlet-class>org.displaytag.sample.DisplaySourceServlet</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>DisplaySource</servlet-name>
        <url-pattern>*.source</url-pattern>
    </servlet-mapping>

    <mime-mapping>
        <extension>css</extension>
        <mime-type>text/css</mime-type>
    </mime-mapping>

    <jsp-config>
        <taglib>
            <taglib-uri>http://displaytag.sourceforge.net</taglib-uri>
            <taglib-location>/WEB-INF/tld/displaytag.tld</taglib-location>
        </taglib>
    </jsp-config>

    <filter>
        <filter-name>ResponseOverrideFilter</filter-name>
        <filter-class>org.displaytag.filter.ResponseOverrideFilter</filter-class>
    </filter>

    <filter-mapping>
        <filter-name>ResponseOverrideFilter</filter-name>
        <url-pattern>/web/*</url-pattern>
    </filter-mapping>

    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>

</web-app>

这是一个请求映射:

    @RequestMapping("/buscador/init")
public String initForm(ModelMap model, HttpServletRequest request)         

    //anadimos los datos de la gestion de incidencias al modelo
    model.addAttribute(Constantes.ATTRIBUTE_OFICINA_CTA, oficinaCTA);

    return Views.VIEW_BUSCADOR_OFICINA;

我认为这个问题是由于 spring-mvn 请求映射,因为使用另一个框架可以正常工作。

部署应用时的日志:

2016-08-19 08:23:22,611 INFO  [org.jboss.as.server.deployment] (MSC service thread 1-4) WFLYSRV0027: Starting deployment of "myApp.war" (runtime-name: "myApp.war")
2016-08-19 08:23:27,178 INFO  [org.wildfly.extension.undertow] (ServerService Thread Pool -- 75) WFLYUT0021: Registered web context: /myApp
2016-08-19 08:23:27,365 INFO  [org.jboss.as.server] (DeploymentScanner-threads - 2) WFLYSRV0010: Deployed "myApp.war" (runtime-name : "myApp.war")

【问题讨论】:

您使用的是哪个版本的 Wildfly 10?如果可能,请使用此处的最新版本 wildfly.org/downloads 我使用的是 wildfly-10.0.0.Final 版本。我尝试使用 wildfly-9.0.2.Final 并获得相同的问题。谢谢@SkyWalker 您是否将其部署为 myApp.war?你有 jboss-web.xml 吗? 另外,在没有您的应用程序的情况下启动服务器。完成启动后,进行部署并将部署的日志条目粘贴到此问题上。部署它的上下文可能会显示在日志中。 @jpkrohling 我将其部署为 myApp.war。我没有 jboss-web.xml。我已经添加了日志。谢谢 【参考方案1】:

战争终于被破坏了

【讨论】:

以上是关于JBoss wildfly 10禁止访问spring mvc Web应用程序的主要内容,如果未能解决你的问题,请参考以下文章

JBoss(Wildfly 10)不能远程访问

JBoss(Wildfly 10)不能远程访问

JBoss(Wildfly 10)不能远程访问

更改 Wildfly(JBoss) 访问日志中的日期格式

Java EE 远程客户的访问EJB实现实例(Jboss wildfly)

当我无法访问 CLI 工具时,如何关闭 JBoss Wildfly?