Weblogic上的Spring Boot应用程序部署会引发404错误

时间:2018-10-11 14:51:56

标签: spring spring-mvc spring-boot deployment weblogic

我已经完成了以下配置,并尝试了找到的几乎所有解决方案,但没有任何帮助。当我在war软件包中部署spring boot应用程序时。在weblogic日志中未记录任何错误,但应用程序抛出404错误。

web.xml

<listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:root-context.xml</param-value>
    </context-param>
    <context-param>  
    <param-name>spring.profiles.active</param-name>  
    <param-value>dev</param-value>  
    </context-param>  
    <context-param>  
    <param-name>spring.profiles.default</param-name>  
    <param-value>dev</param-value>  
</context-param>
<context-param>  
    <param-name>spring.liveBeansView.mbeanDomain</param-name>  
    <param-value>dev</param-value>  
</context-param>  

weblogic.xml

<?xml version="1.0" encoding="UTF-8"?>
<wls:weblogic-web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:wls="http://www.bea.com/ns/weblogic/90"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd http://www.bea.com/ns/weblogic/90 http://www.bea.com/ns/weblogic/90/weblogic-web-app.xsd">
    <wls:weblogic-version>12.1.2.0.0</wls:weblogic-version>
    <wls:context-root>/services/userModule/</wls:context-root>
    <wls:container-descriptor>
        <wls:prefer-application-packages>
            <wls:package-name>com.fasterxml</wls:package-name>
            <wls:package-name>org.slf4j</wls:package-name>
            <wls:package-name>org.springframework.*</wls:package-name>
        </wls:prefer-application-packages>
    </wls:container-descriptor>
</wls:weblogic-web-app>

application.properties

spring.profiles.default=default
spring.profiles.active=default
spring.liveBeansView.mbeanDomain=default

cms.config.monitor.dir=/server/location/application/artifacts
application.messages.file.name=application-messages
application.config.file.name=application-config

root-context.xml

它包含应用程序特定的配置。

ApplicationBegin.java

@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class, JpaRepositoriesAutoConfiguration.class}) 
public class ApplicationBegin extends SpringBootServletInitializer implements WebApplicationInitializer {

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

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

    }

由于编译失败,因此无法从pom.xml中排除tomcat服务器。在使用Spring Boot Starter Web时,有没有一种方法可以设置tomcat? pom.xml

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-logging</artifactId>
                </exclusion>

                <!-- THIS WILL BE EXCLUDE ONLY FOR WEBLOGIC DEPLOYMENT -->
                <!--  <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-tomcat</artifactId>
                </exclusion>  -->
            </exclusions>
        </dependency>

问题是应用程序可以在嵌入式tomcat上正常运行,但是即使在weblogic上部署时也没有抛出任何错误,它都无法正常工作。我应该在哪里看?

2 个答案:

答案 0 :(得分:0)

您可以尝试将类加载为父类吗?因此,Spring Boot将使用它自己的容器库。

答案 1 :(得分:0)

尝试了我从其他人那里找到的解决方案后,它无法解决我的问题,现在我已经以某种方式解决了它。我在该主题和解决方案上看到的所有类似问题,我最终都不知道实际上没有答案是解决方案,因为在大多数情况下,该问题是由于weblogic无法理解的错误配置而发生的。最糟糕的是它甚至不会引发错误。在我的情况下,除了application.properties文件和root-context.xml,我在/ WEB-INF位置中明确指定了web.xml文件,并在那里定义了context-config位置。一旦删除了web.xml并从上到下重构/过滤了项目依赖项,它就解决了该问题。 然后我意识到,如果您的配置正确,则甚至不需要在网络上针对此问题使用许多便捷的解决方案。例如,如果您正确使用spring boot jpa starter,则不需要配置jpavendor。 所以..如果您在weblogic上遇到这种部署问题,可以按照以下步骤操作-

  1. 仅部署应用程序的最小部分并使之可行 在网络上
  2. 然后添加关键的依赖项/配置,并在weblogic上逐一部署它们,并检查其是否有效
  3. 您应该始终先将引导应用程序运行到其他本地服务器上,以解决主要的配置问题。 好。