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("/*");
}

}

你可能感兴趣的:(spring-boot)