如何在JBOSS EAP 6.4上运行Jhipster 5.4.0 war

如何在JBOSS EAP 6.4上运行Jhipster 5.4.0 war,jboss,jhipster,jboss-eap-6,Jboss,Jhipster,Jboss Eap 6,我们正试图在JBOSS EAP 6.4上部署jhipster应用程序, 我对JPA2.1和验证2有很多问题, 问题是JBOSS是JavaEE6,但是jhipster使用了一个全新的JavaEE7特性。我们添加了jboss-deployment-structure.xml文件,以避免使用某些模块 现在我解决了JPA2.1的问题和验证,但仍然有一个问题 这是 jboss-deployment-structure.xml <?xml version="1.0" encoding="UTF-8

我们正试图在JBOSS EAP 6.4上部署jhipster应用程序, 我对JPA2.1和验证2有很多问题, 问题是JBOSS是JavaEE6,但是jhipster使用了一个全新的JavaEE7特性。我们添加了jboss-deployment-structure.xml文件,以避免使用某些模块

现在我解决了JPA2.1的问题和验证,但仍然有一个问题

这是 jboss-deployment-structure.xml

  <?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure>
    <deployment>

        <exclude-subsystems>
            <subsystem name="jpa" />


                <subsystem name="jaxrs"/>


        </exclude-subsystems>
        <exclusions>
            <!-- WFCORE-209 workaround -->
            <module name="javaee.api" />

            <module name="javax.persistence.api" />
            <module name="org.hibernate" />
            <module name="org.apache.log4j" />
            <module name="org.slf4j"/>
            <module name="org.apache.commons.logging"/>

            <module name="com.fasterxml.jackson.core.databind"/>
            <module name="com.fasterxml.jackson.module.afterburner"></module>

            <module name="com.fasterxml.jackson.databind.Module" />
            <module name="com.fasterxml.jackson.core.jackson-core" />
            <module name="com.fasterxml.jackson.core.jackson-annotations" />
            <module name="com.fasterxml.jackson.core.jackson-databind" />
            <module name="com.fasterxml.jackson.jaxrs.jackson-jaxrs-json-provider" />
            <module name="org.jboss.resteasy.resteasy-jackson2-provider" />
            <module name="org.jboss.resteasy.resteasy-jackson-provider" />
            <module name="com.fasterxml.jackson.datatype.jackson-datatype-jdk8" />
            <module name="com.fasterxml.jackson.datatype.jackson-datatype-jsr310" />


            <module name="javax.persistence.api" />
            <module name="org.hibernate" />
            <module name="org.hibernate.javax.persistence" />
            <module name="org.hibernate.validator" />
            <module name="javax.validation.api" />
            <module name="javax.el"/>
            <module name="javax.faces.api"/>
            <module name="org.hibernate.validator"/>

        </exclusions>


        <dependencies>
            <!-- WFCORE-209 workaround -->

          <!--  <module name="javax.validation.api" export="true"/>
          -->
            <!-- This one always goes last. -->
           <!-- <module name="javax.api" >
            <imports>
                <exclude-set>
                    <path name="javax/ws/rs"/>
                    <path name="javax/ws/rs/core"/>
                    <path name="javax/ws/rs/ext"/>
                    <path name="javax/validation"/>
                    <path name="javax/validation/bootstrap"/>
                    <path name="javax/validation/constraints"/>
                    <path name="javax/validation/groups"/>
                    <path name="javax/validation/metadata"/>
                    <path name="javax/validation/spi"/>
                </exclude-set>

            </imports>
            </module>-->
        </dependencies>

    </deployment>
</jboss-deployment-structure>

这是最后一个错误

原因:java.lang.IllegalAccessError:javax/el/elatil 在javax.el.ELManager.getExpressionFactory(ELManager.java:61)[javax.el-3.0.0.jar:3.0.0] 在org.hibernate.validator.messageinterpolator.ResourceBundleMessageInterpolator.buildExpressionFactory(ResourceBundleMessageInterpolator.java:88)[hibernate-validator-6.0.12.Final.jar:6.0.12.Final] 位于org.hibernate.validator.MessageInterpolator.ResourceBundleMessageInterpolator.(ResourceBundleMessageInterpolator.java:47)[hibernate-validator-6.0.12.Final.jar:6.0.12.Final] 在org.hibernate.validator.internal.engine.ConfigurationImpl.getDefaultMessageInterpolator(ConfigurationImpl.java:474)[hibernate-validator-6.0.12.Final.jar:6.0.12.Final] 在org.hibernate.validator.internal.engine.ConfigurationImpl.getDefaultMessageInterpolatorConfiguredWithClassLoader(ConfigurationImpl.java:650)[hibernate-validator-6.0.12.Final.jar:6.0.12.Final] 在org.hibernate.validator.internal.engine.configurationmpl.getMessageInterpolator(configurationmpl.java:397)[hibernate-validator-6.0.12.Final.jar:6.0.12.Final] 在org.hibernate.validator.internal.engine.validatoryImpl.(validatoryImpl.java:183)[hibernate-validator-6.0.12.Final.jar:6.0.12.Final] 在org.hibernate.validator.HibernateValidator.buildValidatorFactory(HibernateValidator.java:38)[hibernate-validator-6.0.12.Final.jar:6.0.12.Final] 在org.hibernate.validator.internal.engine.configurationmpl.buildValidatorFactory(configurationmpl.java:364)[hibernate-validator-6.0.12.Final.jar:6.0.12.Final] 在javax.validation.validation.buildDefaultValidatorFactory(validation.java:103)[validation-api-2.0.1.Final.jar:] 在org.hibernate.cfg.beanvalidation.TypeSafeActivator.getValidatorFactory(TypeSafeActivator.java:501)[hibernate-core-5.2.17.Final.jar:5.2.17.Final] 在org.hibernate.cfg.beanvalidation.TypeSafeActivator.activate(TypeSafeActivator.java:84)[hibernate-core-5.2.17.Final.jar:5.2.17.Final] 在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)[rt.jar:1.8.031] 在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)[rt.jar:1.8.031] 在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)[rt.jar:1.8.031] 在java.lang.reflect.Method.invoke(Method.java:483)[rt.jar:1.8.031] 在org.hibernate.cfg.beanvalidation.BeanValidationIntegrator.integrate(BeanValidationIntegrator.java:132)[hibernate-core-5.2.17.Final.jar:5.2.17.Final]


尝试将hibernate验证程序从版本6更改为版本5

1) 从spring boot starter web中排除hibernate验证程序:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <exclusions>
        <exclusion>
            <groupId>org.hibernate.validator</groupId>
            <artifactId>hibernate-validator</artifactId>
        </exclusion>
    </exclusions>
</dependency>

org.springframework.boot
SpringBootStarterWeb
org.hibernate.validator
休眠验证器
2) 添加hibernate验证程序版本5:

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-validator</artifactId>
    <version>5.4.2.Final</version>
</dependency>

org.hibernate
休眠验证器
5.4.2.最终版本

我使用jhipster 5.6.1的应用程序使用此方法。我从SpringBoot文档中阅读了关于LocalValidatoryFactoryBean的兼容性。我使用的是eap 6.4.8

您知道,部署JHipster应用程序的推荐方法是可执行jar或其docker映像。我无法帮助您解决JBoss问题,但我只是想警告您,您正在走一条艰难的道路。希望有人能帮助你。