前时间做一项目,需要在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部署
这一点非常重要,当时因为这个问题纠结了好几天,一直无法找到问题,最后在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("/*");
}
}
分享到:
相关推荐
本资源举例FineReport,若有帮助,望好评一下下啦,谢谢
jboss-spring-int-vfs.jar
从Tomcat移植到JBoss所需要新增的两个jar包:jboss-as-sprint-int-5.0.0.GA.jar 和 jboss-spring-int-vfs.jar
解决jboss启动报错vfs解析异常问题,缺少依赖包问题。包含jboss-as-sprint-int-5.0.0.GA.jar jboss-spring-int-vfs.jar
jboss-eap-7.1.0 jboss-eap-7.1.0 jboss-eap-7.1.0 jboss-eap-7.1.0 jboss-eap-7.1.0
jboss-eap-fp-src-4.3.0.CP05_FP01.zip jboss-eap-fp-src-4.3.0.CP05_FP01.zip
jboss-eap-7.2.6-patch,jboss补丁包
jboss-eap-6.4.0.zip
jboss-eap-7.0.0-installer.jar~ ~
它能够动态更新有关热部署的规则。联系请随时与以下联系人询问我任何问题。 Drools视频教程: : 常问问题1)演示? 2)为什么我不能在开发环境中动态更新规则? 在开发阶段,不建议使用Intellij IDEA之类的工具进行...
spring-boot-jboss 示例spring-boot-jboss-initial - 在 JBoss 上不起作用的初始版本。 spring-boot-jboss-final - 适用于 JBoss 的固定版本。
jboss官方下载,支持jdk8。JBoss支持EJB 1.1和EJB 2.0 EJB3.0的规范,它是一个管理EJB的容器和服务器。类似于Sun's J2SDK Enterprise Edition(J2EE),JBoss的目标是一个源代码开放的J2EE环境。但是JBoss核心服务仅...
Spring Boot 在 JBoss EAP 6.x、Wildfly、Tomcat 和 Standalone 中工作 这个简单的 REST Web 服务展示了如何打包一个 spring-boot war,使其既可执行又可部署到 JBoss、Tomcat、Wildfly。 它源自的 Spring spring-...
尝试在 Java6 + JBoss5 上部署 Spring Boot 战争的尝试和错误的残骸。这是不完整的。 忘记删除 spring-boot-starter-tomcat。 java.lang.UnsupportedClassVersionError: org/apache/catalina/authenticator/...
jboss-native-2.0.8-windows-ssl
jboss-as-sprint-int-5.0.0.GA.jar jboss-spring-int-vfs.jar
jboss-as-sprint-int-5.0.0.GA
jboss-eap-6.2.0,javaweb的服务器,性能稳定, 比jboss4更好用
jboss-eap-6.3.0软件和源码.zip
官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装