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