欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Jboss EAP 6.4下spring-boot项目部署相关问题

程序员文章站 2022-03-09 13:13:28
...
前时间做一项目,需要在jboss EAP6.4下部署,最开始没有深入了解jboss,当时接触spring-boot框架也没多久,所以打算直接使用spring-boot进行开发,结果部署的时候出现了很多问题

1、启动失败
    spring-boot用的1.4.3版本,其中默认hibernate-jpa这个jar是2.1版本,jboss-logging是3.3.0版本,但是Jboss EAP6.4下的hibernate-jpa是2.0;jboss-logging是3.1.5版本,造成冲突。
    解决方法:一是更换jboss本身的jar,审计这两个版本;二是更换项目的jar,这个涉及到项目的jar非常多,但是因为不能动服务器上的jboss,所以只能修改本地,pom修改如下:
移除boot本身自带的jar。期间也有什么修改jboss-deployment-structrue.xml ,统统无效。
<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.apache.tomcat</groupId>
                    <artifactId>tomcat-jdbc</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.apache.tomcat</groupId>
                    <artifactId>tomcat-juli</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.hibernate</groupId>
                    <artifactId>hibernate-entitymanager</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.hibernate</groupId>
                    <artifactId>hibernate-core</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
          <groupId>org.hibernate</groupId>
          <artifactId>hibernate-core</artifactId>
          <version>4.2.21.Final</version>
          <exclusions>
              <exclusion>
                  <groupId>org.jboss.logging</groupId>
                  <artifactId>jboss-logging</artifactId>
              </exclusion>
          </exclusions>
      </dependency>



添加版本匹配的jar包:
     
<dependency>
          <groupId>org.jboss.logging</groupId>
          <artifactId>jboss-logging</artifactId>
          <version>3.1.3.GA</version>
      </dependency>

      <dependency>
          <groupId>org.hibernate</groupId>
          <artifactId>hibernate-entitymanager</artifactId>
          <version>4.2.21.Final</version>
      </dependency>

      <dependency>
          <groupId>org.hibernate</groupId>
          <artifactId>hibernate-ehcache</artifactId>
          <version>4.2.21.Final</version>
      </dependency>
      <dependency>
          <groupId>org.hibernate.javax.persistence</groupId>
          <artifactId>hibernate-jpa-2.0-api</artifactId>
          <version>1.0.1.Final</version>
      </dependency>

这里为甚不直接降低spring-boot的版本呢,主要是spring-boot依赖的这些包都比较新,在1.1以后基本都是引用当时最新的依赖包。

2、jboss EAP6.4 不支持无web.xml部署

这一点非常重要,当时因为这个问题纠结了好几天,一直无法找到问题,最后在* 某一个spring配置相关 的回答中找到了这个问题,spring-boot本身就是无配置化,所以开始就没往这方方面去考虑,最后添加web启动方式,项目部署成功,访问正常

@Configuration
public class WebApplicationInitializerImpl implements WebApplicationInitializer {

    @Override
    public void onStartup(ServletContext servletContext) throws ServletException {
        XmlWebApplicationContext appContext = new XmlWebApplicationContext();
        appContext.setConfigLocation("classpath:dispatcher-servlet.xml");
        ServletRegistration.Dynamic dispatcher = servletContext.addServlet("dispatcher",
                new DispatcherServlet(appContext));
        dispatcher.setLoadOnStartup(1);
        //此处一定是/*,不然会在jboss下无线重定向
        dispatcher.addMapping("/*");
    }

}
相关标签: jboss spring-boot