Jboss部署Springboot项目
示例项目地址:https://gitee.com/refiner/jboss-demo
环境
- jboss-as-7.1.1.Final
- JDK1.7
说明:Jboss7.1与高版本的JDK1.8是不兼容的。如果服务器或本地以Jboss1.7作为web容器且安装的是JDK1.8,那么你推荐将JDK换成1.8以下的,可以是1.7的。当然如果你不想将安装好的JDK卸载掉,也可以使用记事本进入到Jboss的安装目录下,找到bin目录下的文件 standalone.bat (Windows)或者 standalone.sh (Linux),打开文件后找到 java_home 变量设置它的值为你jdk1.7的安装路径,(前提是你的jboss环境变量配置正确, JBOSS_HOME 你的jboss路径path,加 %jboss_home%\bin )。
当然,如果是使用的Jboss8(已更名为WildFly),就可以使用JDK1.8或OpenJDK8
Springboot项目
- 使用框架SpringBoot + Shiro简单的项目
对Springboot项目l做一定处理
修改启动方式
@SpringBootApplication
public class DemoApplication extends SpringBootServletInitializer implements WebApplicationInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(DemoApplication.class ).bannerMode(Banner.Mode.OFF);
}
public static void main(String[] args) {
new SpringApplicationBuilder(DemoApplication.class).run(args);
}
}
修改pom.xml文件
- 修改打包方式为war
<packaging>war</packaging>
- 去除Springboot项目中内置tomcat,并增加servlet依赖
<!-- spring 依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<!-- 移除嵌入式tomcat插件 -->
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
- 修改guava包的版本以适配JDK1.7(如果没有使用到guava则跳过)
<!-- 如果某个模块使用了更高版本的guava,请将高版本的guava排除 -->
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>20.0</version>
</dependency>
- 如果使用了mysql-8.x.x版本的jar,也请进行修改(如果没有使用到则跳过)
<!-- 如果使用了mysql-connector-java.8.x.x的版本的依赖,也请将其排除 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
增加适配Jboss的配置文件
说明:这些配置文件放置在webapp/WEB-INF目录下(webapp和resources文件夹同级),如果不存在此目录,手动进行创建
- web.xml
说明:Jboss仍然需要web.xml中的filter配置来为shiro权限框架的引导,不能通过@Bean的方式注入
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
<!--shiro安全认证过滤器,filter-name的值会在spring(或springMVC)的配置文件中使用-->
<filter>
<filter-name>shiroFilter</filter-name>
<!--使用的是springWeb的拦截器代理,具体实现在springmvc-shiro中配置-->
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
<init-param>
<param-name>targetFilterLifecycle</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>shiroFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- 配置处理.do的请求并转发,如果不需要则可不配置 -->
<!-- DispatcherServlet Config start -->
<servlet>
<servlet-name>springMvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<description>spring mvc 配置文件</description>
<param-name>contextConfigLocation</param-name>
<param-value><!-- classpath:applicationContext.xml --></param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springMvc</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<!-- DispatcherServlet Config end -->
</web-app>
- jboss-web.xml
说明:配置web容器的上下文路,即ContextPath
<?xml version="1.0" encoding="UTF-8"?>
<jboss-web>
<context-root>/</context-root>
</jboss-web>
- jboss-deployment-structure.xml
说明:配置去除Jboss内置的冲突jar,如slf4j
<?xml version='1.0' encoding='UTF-8'?>
<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.1">
<deployment>
<exclusions>
<module name="org.slf4j" />
</exclusions>
</deployment>
</jboss-deployment-structure>
说明:如果使用的是Jboss8(WildFly),则还需要排除jackson的相关依赖,如果出现其他冲突的,也可用同样的方法进行排除
<?xml version='1.0' encoding='UTF-8'?>
<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.1">
<deployment>
<exclusions>
<!-- 排除slf4j -->
<module name="org.slf4j" />
<!-- 如果要排除jackson,下方的一个都不能少 -->
<module name="com.fasterxml.jackson.core.jackson-core" />
<module name="com.fasterxml.jackson.core.jackson-annotations" />
<module name="com.fasterxml.jackson.core.jackson-databind" />
<module name="com.fasterxml.jackson.datatype.jackson-datatype-jdk8" />
<module name="com.fasterxml.jackson.datatype.jackson-datatype-jsr310" />
<module name="com.fasterxml.jackson.jaxrs.jackson-jaxrs-json-provider" />
<module name="org.jboss.resteasy.resteasy-jackson2-provider" />
<module name="org.jboss.resteasy.resteasy-jackson-provider" />
</exclusions>
</deployment>
</jboss-deployment-structure>