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

阅读更多
前时间做一项目,需要在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 ,统统无效。

            org.springframework.boot
            spring-boot-starter-data-jpa
            
                
                    org.apache.tomcat
                    tomcat-jdbc
                
                
                    org.apache.tomcat
                    tomcat-juli
                
                
                    org.hibernate
                    hibernate-entitymanager
                
                
                    org.hibernate
                    hibernate-core
                
            
        
        
          org.hibernate
          hibernate-core
          4.2.21.Final
          
              
                  org.jboss.logging
                  jboss-logging
              
          
      



添加版本匹配的jar包:
     

          org.jboss.logging
          jboss-logging
          3.1.3.GA
      

      
          org.hibernate
          hibernate-entitymanager
          4.2.21.Final
      

      
          org.hibernate
          hibernate-ehcache
          4.2.21.Final
      
      
          org.hibernate.javax.persistence
          hibernate-jpa-2.0-api
          1.0.1.Final
      

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

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

这一点非常重要,当时因为这个问题纠结了好几天,一直无法找到问题,最后在stackoverflow 某一个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)