【问题标题】:How do I enable on-the-fly compilation of JSPs in Wildfly 9?如何在 Wildfly 9 中启用 JSP 的动态编译?
【发布时间】:2015-10-26 00:45:05
【问题描述】:

我正在使用 Wildfly 9.0.0.CR2。如何启用 JSP 的动态编译?我在另一个线程中找到了这个配置

    <subsystem xmlns="urn:jboss:domain:web:1.4" default-virtual-server="default-host" native="false">
        <configuration>
            <jsp-configuration development="true" check-interval="1" modification-test-interval="1" recompile-on-fail="true"/>
        </configuration>
    </subsystem>

但是,它不起作用,当我重新启动我的 JBoss 服务器时,导致 gin 出现以下异常......

    14:23:05,224 ERROR [org.jboss.as.server] (Controller Boot Thread) WFLYSRV0055: Caught exception during boot: org.jboss.as.controller.persistence.ConfigurationPersistenceException: WFLYCTL0085: Failed to parse configuration
        at org.jboss.as.controller.persistence.XmlConfigurationPersister.load(XmlConfigurationPersister.java:131)
        at org.jboss.as.server.ServerService.boot(ServerService.java:350)
        at org.jboss.as.controller.AbstractControllerService$1.run(AbstractControllerService.java:271)
        at java.lang.Thread.run(Thread.java:745)
    Caused by: javax.xml.stream.XMLStreamException: ParseError at [row,col]:[442,2]
Message: Unexpected element '{urn:jboss:domain:web:1.4}subsystem'
        at org.jboss.staxmapper.XMLMapperImpl.processNested(XMLMapperImpl.java:108)
        at org.jboss.staxmapper.XMLExtendedStreamReaderImpl.handleAny(XMLExtendedStreamReaderImpl.java:69)
        at org.jboss.as.server.parsing.StandaloneXml.parseServerProfile(StandaloneXml.java:1199)
        at org.jboss.as.server.parsing.StandaloneXml.readServerElement_1_4(StandaloneXml.java:457)
        at org.jboss.as.server.parsing.StandaloneXml.readElement(StandaloneXml.java:144)
        at org.jboss.as.server.parsing.StandaloneXml.readElement(StandaloneXml.java:106)
        at org.jboss.staxmapper.XMLMapperImpl.processNested(XMLMapperImpl.java:110)
        at org.jboss.staxmapper.XMLMapperImpl.parseDocument(XMLMapperImpl.java:69)
        at org.jboss.as.controller.persistence.XmlConfigurationPersister.load(XmlConfigurationPersister.java:123)
        ... 3 more

【问题讨论】:

  • 你能发布你的整个配置吗?

标签: java jsp jboss compilation wildfly


【解决方案1】:

这是一个 XML 解析问题,此错误消息 javax.xml.stream.XMLStreamException: ParseError 很明显。此特定行 Unexpected element{urn:jboss:domain:web:1.4}subsystem 的解析失败。

您可以查看 XML 模式文档来找出这些类型的 XML 解析问题。这些模式位于 WildFly 的 docs 文件夹下。

顺便说一下,您应该使用WildFly-9.0.1.Final 构建版本,因为这是最新的候选发布版本。

您很可能需要对 undertow 子系统进行更改。我在下面更新了一个示例:

 <subsystem xmlns="urn:jboss:domain:undertow:2.0">
            <buffer-cache name="default"/>
            <server name="default-server">
                <http-listener name="default" socket-binding="http" redirect-socket="https"/>
                <host name="default-host" alias="localhost">
                    <location name="/" handler="welcome-content"/>
                    <filter-ref name="server-header"/>
                    <filter-ref name="x-powered-by-header"/>
                </host>
            </server>
            <servlet-container name="default">
                <jsp-config development="true" check-interval="1" modification-test-interval="1" recompile-on-fail="true"/>
                <websockets/>
            </servlet-container>
            <handlers>
                <file name="welcome-content" path="${jboss.home.dir}/welcome-content"/>
            </handlers>
            <filters>
                <response-header name="server-header" header-name="Server" header-value="WildFly/9"/>
                <response-header name="x-powered-by-header" header-name="X-Powered-By" header-value="Undertow/1"/>
            </filters>
        </subsystem>

我强烈建议使用 CLI 进行此类更改:

/subsystem=undertow/servlet-container=default/setting=jsp:write-attribute(name=development,value=true)
/subsystem=undertow/servlet-container=default/setting=jsp:write-attribute(name=recompile-on-fail,value=true)
/subsystem=undertow/servlet-container=default/setting=jsp:write-attribute(name=check-interval,value=1)
/subsystem=undertow/servlet-container=default/setting=jsp:write-attribute(name=modification-test-interval,value=1)

这样您就可以避免这些 XML 解析错误,而无需找到确切的 XML 模式。

【讨论】:

    【解决方案2】:

    确保您正在加载 undertow 扩展程序。否则无法加载子系统配置。除此之外,您的语法是正确的。

    <extensions>
        <!-- other extensions here -->
        <extension module="org.wildfly.extension.undertow"/>
    </extensions>
    

    【讨论】:

    • 我在 WildFly 9.0.1 的架构下看不到 urn:jboss:domain:web:1.4 xml 命名空间。所以我不确定他的语法如何正确。此外org.wildfly.extension.undertow 扩展默认加载所有开箱即用的配置文件(独立或域)。
    • 它在 docs/schema/jboss-as-web_1_4.xsd 下,它的模式最高为 2.2 版,我相信你也可以使用。我在 9.0.1 本地测试了你的 jsp 配置,它对我来说很好。
    • 我现在明白了。可能与“web-containerType”的选择有关。我猜如果您使用的是 undertow,那么您需要在 undertow 子系统中进行更改。
    【解决方案3】:

    搜索子系统并将其添加到 jsp 配置中

    <subsystem xmlns="urn:jboss:domain:undertow:1.1"><br>. . . .<br>   <servlet-container name="default" default-buffer-cache="default" stack-trace-on-error="local-only">
       <jsp-config development="true" check-interval="1" modification-test-interval="1" recompile-on-fail="true"/>
    


    【讨论】:

      猜你喜欢
      • 2017-12-31
      • 1970-01-01
      • 2016-02-01
      • 2010-10-04
      • 1970-01-01
      • 2021-05-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多