参考链接:
springboot应用部署到weblogic 基本步骤_popuui123的博客-优快云博客_weblogic部署springboot
使用idea创建springboot项目并打成war包发布到weblogic上_MT_xiaoshutong的博客-优快云博客
背景:
因为某些原因,需要进行weblogic 搭建、部署、测试。在搭建好weblogic,需要创建一个简单的war包,进行部署测试。完成之后,自己做个简单记录。
版本:
idea 2021.3.2 (Ultimate Edition)
springboot 2.4.0
weblogic 12.2.1
步骤
主要分为三步
1. 创建springboot 项目,配置pom文件。
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.peanut2</groupId>
<artifactId>demo-all</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<groupId>com.peanut2</groupId>
<artifactId>war-test</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<name>war-test</name>
<description>war-test</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-legacy</artifactId>
<version>2.0.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
<!-- 加exclusions去除打包时的内置tomcat-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
<exclusion>
<groupId>tomcat-embed-el</groupId>
<artifactId>org.apache.tomcat.embed</artifactId>
</exclusion>
</exclusions>
</dependency>
<!--增加servlet依赖根据需要选择2.5或者3.0的-->
<!--<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<!– <scope>test</scope>–>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<!– <scope>provided</scope>–>
</dependency>
<!– 上下任选其一 –>
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-servlet-api</artifactId>
<version>8.5.23</version>
<!– <scope>provided</scope>–>
</dependency>-->
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<attachClasses>true</attachClasses>
<archive>
<manifestEntries>
<Weblogic-Application-Version>${project.version}</Weblogic-Application-Version>
</manifestEntries>
<manifest>
<addClasspath>true</addClasspath>
<addClasspath>lib/</addClasspath>
</manifest>
</archive>
<!-- <webResources>-->
<!-- <resource>-->
<!-- <directory>${project.basedir}/src/main/resources/static</directory>-->
<!-- </resource>-->
<!-- </webResources>-->
<warName>${project.artifactId}</warName>
</configuration>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<!-- <version>2.1.1.RELEASE</version>-->
<configuration>
<classifier>BOOT</classifier>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
2. 创建测试的controller,配置启动类。
新建的controller类
package com.peanut2.wartest;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @author by peanut
* @Classname IndexController
* @Description
* @Version 1.0.0
* @Date 2022/8/23 8:36
*/
@RestController
@RequestMapping("/index")
public class IndexController {
@GetMapping(value = "/first")
public String first() {
return "Hello World first";
}
}
springboot 启动类配置:
package com.peanut2.wartest;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
import org.springframework.web.WebApplicationInitializer;
@SpringBootApplication
public class WarTestApplication extends SpringBootServletInitializer implements WebApplicationInitializer {
public static void main(String[] args) {
SpringApplication.run(WarTestApplication.class, args);
System.out.println("WarTestApplication 启动成功 \n");
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(WarTestApplication.class);
}
}
3. 也是最重要的一点,创建weblogic.xml配置文件,并且在打包时,将其打入WEB-INF目录下。
<?xml version="1.0" encoding="UTF-8"?>
<wls:weblogic-web-app
xmlns:wls="http://xmlns.oracle.com/weblogic/weblogic-web-app"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://xmlns.oracle.com/weblogic/weblogic-web-app
http://xmlns.oracle.com/weblogic/weblogic-web-app/1.4/weblogic-web-app.xsd">
<wls:weblogic-version>12.2.1</wls:weblogic-version>
<wls:context-root>/</wls:context-root> <!-- 这里根据实际需求修改为自己部署后所需启动路径,这里是使用根路径-->
<wls:container-descriptor>
<!-- <wls:prefer-application-packages>-->
<!-- <wls:package-name>org.slf4j.*</wls:package-name>-->
<!-- <wls:package-name>org.springframework.*</wls:package-name>-->
<!-- <wls:package-name>javax.validation.*</wls:package-name>-->
<!-- </wls:prefer-application-packages>-->
<!-- <wls:prefer-web-inf-classes>true</wls:prefer-web-inf-classes>-->
<wls:prefer-application-packages>
<wls:package-name>org.springframework.*</wls:package-name>
<wls:package-name>com.fasterxml.jackson.*</wls:package-name>
<wls:package-name>org.slf4j.*</wls:package-name>
</wls:prefer-application-packages>
<wls:show-archived-real-path-enabled>true</wls:show-archived-real-path-enabled>
</wls:container-descriptor>
</wls:weblogic-web-app>
配置相关的选项
进行编译打包
4. 进行weblogic部署以及测试。
将打包之后的war包,上传weblogic运行,进行接口测试。这里就不详细说了。
备注:
该方式可能不适合全部场景。因为我没有配置web.xml,配置web.xml后一直提示 weblogic.application.ModuleException: java.io.FileNotFoundException: Could not open ServletContext resource [/com.peanut2.wartest.WarTestApplication],只能暂时先去掉了web.xml