Spring Boot用于部署/包装传统的基于Spring的战争

时间:2017-07-24 04:41:08

标签: spring spring-boot tomcat7 tomcat8

我有一个使用Spring的遗留Web应用程序。到目前为止,战争已部署在预先安装的tomcat容器的生产中。 tomcat容器将创建一个JNDI,并且该应用程序使用JNID连接到DB。

现在我想使用spring boot和嵌入式tomcat包装这个遗留应用程序。

我相信会创建2个应用程序上下文:一个是Spring Boot,一个是使用Spring的遗留应用程序。

使用Spring启动包装此旧版war应用程序的最佳方法是什么?

此外,我仍然希望在spring boot嵌入式tomcat中创建JNDI并与遗留应用程序共享。

顺便说一句,我试图使用这里提供的spring boot tomcat jndi示例: https://github.com/wilkinsona/spring-boot-sample-tomcat-jndi

使用Spring Boot包装服务的原因是创建Docker容器以与多个团队共享。

1 个答案:

答案 0 :(得分:-1)

使用Spring Boot“wrapper”包装现有WAR,以便不必重新配置现有代码库。将其添加到您的代码中。

 Context context = tomcat.addWebapp("myapp", Thread.currentThread().getContextClassLoader().getResource("myapp.war").g
etPath());

使用maven-dependency-plugin并设置spring-boot-maven-plugin以从资源中排除WAR文件(否则你将获得Spring Boot WAR中包含的WAR的两个副本):

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-dependency-plugin</artifactId>
    <version>3.0.0</version>
    <executions>
        <execution>
            <id>copy-dependencies</id>
            <phase>generate-resources</phase>
            <goals>
                <goal>copy-dependencies</goal>
            </goals>
            <configuration>
                <excludeTransitive>true</excludeTransitive>
                <includeArtifactIds>my-war-name-here</includeArtifactIds>
                <stripVersion>true</stripVersion>
                <outputDirectory>${project.basedir}/src/main/resources</outputDirectory>
            </configuration>
        </execution>
    </executions>
</plugin>


<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <version>1.5.3.RELEASE</version>
    <executions>
        <execution>
            <goals>
                <goal>repackage</goal>
            </goals>
            <configuration>
                <!-- Don't copy the war as a dependency, it's included as a resource -->
                <excludeArtifactIds>my-war-name-here</excludeArtifactIds>
            </configuration>
        </execution>
    </executions>
</plugin>