Jboss部署SpringBoot2 JPA

Jboss部署SpringBoot2 JPA

目录结构

.
└── webapp
    └── META-INF
        ├── jboss-deployment-structure.xml
        └── jboss-web.xml

jboss-deployment-structure.xml

<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure>
	<deployment>
		<exclude-subsystems>

			<!-- 排除 javax.persistence.api 依赖 -->
			<subsystem name="jpa" />
                        <subsystem name="org.hibernate" />
                        <subsystem name="org.hibernate.validator" />

			<!-- 排除 org.jboss.logging 依赖 -->
			<subsystem name="logging" />
		</exclude-subsystems>
		<exclusions>
			<!--<module name="javax.validation.api" />-->
			<!--<module name="org.hibernate.validator" />-->
			<!--Log4j exclude-->
			<module name="org.slf4j" />
			<module name="org.slf4j.impl" />

			<!-- 排除 javax.persistence.api 依赖 -->
			<module name="javaee.api" />
			<module name="javax.persistence.api" />
			<module name="org.hibernate" />
                        <module name="javax.validation.api"/>
                        <module name="org.hibernate.validator"/>
		</exclusions>
		<!--<resources>
			<resource-root path="lib" />
		</resources>
		<local-last value="true" />-->
		<dependencies>

			<!-- 排除 org.apache.httpcomponents 依赖 -->
			<!-- <module name="org.apache.httpcomponents" export="true"/> -->

			<!-- 排除 org.jboss.logging 依赖 -->
			<!-- <module name="org.jboss.logging" export="true" /> -->
                        <module name="javax.validation.api" export="true"/>
			<module name="javax.activation.api" export="true" />
			<module name="javax.annotation.api" export="true" />
			<module name="javax.ejb.api" export="true" />
			<module name="javax.el.api" export="true" />
			<module name="javax.enterprise.api" export="true" />
			<module name="javax.enterprise.deploy.api" export="true" />
			<module name="javax.inject.api" export="true" />
			<module name="javax.interceptor.api" export="true" />
			<module name="javax.jms.api" export="true" />
			<module name="javax.jws.api" export="true" />
			<module name="javax.mail.api" export="true" />
			<module name="javax.management.j2ee.api" export="true" />

			<!-- 排除 javax.persistence.api 依赖 -->
			<!-- <module name="javax.persistence.api" export="true" /> -->

			<module name="javax.resource.api" export="true" />
			<module name="javax.rmi.api" export="true" />
			<module name="javax.security.auth.message.api" export="true" />
			<module name="javax.security.jacc.api" export="true" />
			<module name="javax.servlet.api" export="true" />
			<module name="javax.servlet.jsp.api" export="true" />
			<module name="javax.transaction.api" export="true" />
			<module name="javax.validation.api" export="true" />
			<module name="javax.ws.rs.api" export="true" services="export" />
			<module name="javax.xml.bind.api" export="true" />
			<module name="javax.xml.registry.api" export="true" />
			<module name="javax.xml.soap.api" export="true" />
			<module name="javax.xml.ws.api" export="true" />
			<module name="javax.api" export="true" />

			<!-- 排除掉jboss的 slf4j 和 log4j 实现,使用我们程序自己的包 -->
			<!--<module name="org.apache.log4j" export="true" />-->
			<!--<module name="org.slf4j" export="true" />-->
			<!--<module name="org.apache.commons.logging" export="true" />-->
			<module name="org.jboss.logging.jul-to-slf4j-stub" export="true" />

		</dependencies>
	</deployment>
</jboss-deployment-structure>

jboss-web.xml

<!DOCTYPE jboss-web PUBLIC "-//JBoss//DTD Web Application 5.0//EN"  
"http://www.jboss.org/j2ee/dtd/jboss-web_5_0.dtd"> 
<jboss-web>
	<context-root>app</context-root>
</jboss-web>

有时启动后requestmapping无法正常加载,导致页面404,可以修改启动类如下

@SpringBootApplication
public class Application extends SpringBootServletInitializer {

    public static void main(String[] args) {
        new SpringApplicationBuilder()
                .sources(Application.class)
                .bannerMode(Banner.Mode.OFF)
                .run();
    }

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        return super.configure(builder.sources(Application.class));
    }

    /**
     * 自定义DispatcherServlet,拦截/*请求
     */
    @Bean
    public ServletRegistrationBean registryRestServlet(DispatcherServlet dispatcherServlet) {
        ServletRegistrationBean<?> registrationBean = new ServletRegistrationBean<>(dispatcherServlet);
        // 这个地方是重点,注意匹配/*
        registrationBean.addUrlMappings("/*");
        return registrationBean;
    }
}

使用了含javax.validation.api的情况

<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure>
  <deployment>
    <exclude-subsystems>
      <!-- 排除 javax.persistence.api 依赖 -->
      <subsystem name="jpa"/>
      <!-- 排除 org.jboss.logging 依赖 -->
      <subsystem name="logging"/>
      <subsystem name="jaxrs"/>
    </exclude-subsystems>
    <exclusions>
      <module name="javax.validation.api" />
      <module name="org.hibernate.validator" />
      <!--Log4j exclude-->
      <module name="org.slf4j" />
      <module name="org.slf4j.impl" />
      <module name="org.apache.httpcomponents" />

      <module name="javaee.api"/>
      <module name="javax.faces.api"/>
    </exclusions>
  </deployment>
</jboss-deployment-structure>
posted @ 2019-11-21 13:07  热咖啡与白猫  阅读(587)  评论(0编辑  收藏  举报