springboot打包war部署到weblogic,涉及Filter以及Filter中的@Value处理


基于Maven构建。

1:修改pom.xml配置文件

<packaging>warpackaging>

<dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-webartifactId>

            
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.bootgroupId>
                    <artifactId>spring-boot-starter-tomcatartifactId>
                exclusion>
            exclusions>
        dependency>

        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-tomcatartifactId>
            <scope>providedscope>
        dependency>

2:修改Application

@ServletComponentScan
@SpringBootApplication
public class XtqmServerApplication  extends SpringBootServletInitializer implements WebApplicationInitializer {

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(XtqmServerApplication.class);
    }

    public static void main(String[] args) {
        SpringApplication.run(XtqmServerApplication.class, args);
    }

}

3:Filter

@Component
@WebFilter(filterName = "xtqmFilter", urlPatterns = {"/xtqm/*"})
public class XtqmFilter implements Filter {
    @Override
    public void init(FilterConfig filterConfig){}

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {

    }

    @Override
    public void destroy(){}

}

(1)必须覆写init与destroy方法,否则部署到weblogic中会报抽象方法异常错误;

(2)在Filter中不能直接使用@Value获取配置文件中的变量信息,通过静态工具类的方式实现:

@Component
public class SecretProperty {

    private static String secres;

    public static String getSecres() {
        return secres;
    }

    @Value("${jk.secret}")
    public void setSecres(String secres) {
        this.secres = secres;
    }
}

4:weblogic.xml

<?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://java.sun.com/xml/ns/javaee
                  http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd
                  http://xmlns.oracle.com/weblogic/weblogic-web-app
                  http://xmlns.oracle.com/weblogic/weblogic-web-app/1.4/weblogic-web-app.xsd">
    <wls:container-descriptor>
        <wls:prefer-application-packages>
            <wls:package-name>org.slf4jwls:package-name>
        wls:prefer-application-packages>
    wls:container-descriptor>
    
    <wls:context-root>/xxxwls:context-root>
wls:weblogic-web-app>