当前位置: 首页 > 知识库问答 >
问题:

SpringBootWebXmlServlet在Web应用程序中启动时预加载失败:“/”

吴镜
2023-03-14

我正在尝试集成一个旧的weblogic应用程序来使用Okta SSO SAML2.0流。我已经使用@ServletCompenentScan成功地将应用程序与spring boot集成,并且能够成功地使用spring security进行基本身份验证。但是,当向SecurityConfiguration添加特定于SAML的配置时,应用程序在部署时会失败。关于okta saml,我将遵循本教程https://developer.okta.com/blog/2017/03/16/spring-boot-saml。Weblogic版本为12.2.1.3.0

The app deploys fine with the base spring security without the Okta Dependency.

Stacktrace

<Jun 12, 2018 4:50:58,129 PM CDT> <Error> <HTTP> <BEA-101216> <Servlet: "SpringBootWebXmlServlet" failed to preload on startup in Web application: "/".
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'springSecurityFilterChain' defined in class path resource [org/springframework/security/config/annotation/web/configuration/WebSecurityConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [javax.servlet.Filter]: Factory method 'springSecurityFilterChain' threw exception; nested exception is java.lang.IncompatibleClassChangeError: Implementing class
        at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:587)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1254)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1103)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:541)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:501)
        Truncated. see log file for complete stacktrace
Caused By: org.springframework.beans.BeanInstantiationException: Failed to instantiate [javax.servlet.Filter]: Factory method 'springSecurityFilterChain' threw exception; nested exception is java.lang.IncompatibleClassChangeError: Implementing class
        at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:185)
        at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:579)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1254)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1103)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:541)
        Truncated. see log file for complete stacktrace
Caused By: java.lang.IncompatibleClassChangeError: Implementing class
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
        at weblogic.utils.classloaders.GenericClassLoader.defineClassInternal(GenericClassLoader.java:1113)
        at weblogic.utils.classloaders.GenericClassLoader.defineClass(GenericClassLoader.java:1046)
        Truncated. see log file for complete stacktrace

>


Pom Dependencies


<dependencies>
    <dependency>
        <!-- Import dependency management from Spring Boot -->
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-dependencies</artifactId>
        <version>1.1.5.RELEASE</version>
        <type>pom</type>
        <scope>import</scope>
    </dependency>
    <dependency>
        <groupId>org.apache.geronimo.specs</groupId>
        <artifactId>geronimo-j2ee_1.4_spec</artifactId>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>weblogic</groupId>
        <artifactId>wls-api</artifactId>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
        <version>2.0.2.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-tomcat</artifactId>
        <version>2.0.2.RELEASE</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-security</artifactId>
        <version>2.0.2.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.security.extensions</groupId>
        <artifactId>spring-security-saml-dsl</artifactId>
        <version>1.0.0.M3</version>
    </dependency>
</dependencies>


    SecurityConfiguration.java



    @EnableWebSecurity
    @Configuration
    public class SecurityConfiguration extends WebSecurityConfigurerAdapter{
        @Override
        protected void configure(final HttpSecurity http) throws Exception {
            super.configure(http);
            http
                .authorizeRequests()
                    .antMatchers("/saml*").permitAll()
                    .anyRequest().authenticated()
                    .and()
                .apply(saml())
                    .serviceProvider()
                        .keyStore()
                            .storeFilePath("...")
                            .password("...")
                            .keyname("...")
                            .keyPassword("...")
                            .and()
                        .protocol("https")
                        .hostname(String.format("%s:%s", "...", "..."))
                        .basePath("/")
                        .and()
                    .identityProvider()
                    .metadataFilePath("...");
        }
    }

共有1个答案

景稳
2023-03-14

我已经找到了我的问题的答案感谢马特提供的链接。

There were conflicting dependencies being pulled in so I had to specify the preferred ones in the weblogic.xml
Heres the code.
<?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>com.fasterxml.jackson.*</wls:package-name>
            <wls:package-name>org.slf4j.*</wls:package-name>
            <wls:package-name>org.springframework.*</wls:package-name>
            <wls:package-name>org.bouncycastle.*</wls:package-name>
            <wls:package-name>antlr.*</wls:package-name>
            <wls:package-name>org.opensaml.*</wls:package-name>
            <wls:package-name>org.apache.xerces.*</wls:package-name>
            <wls:package-name>org.apache.xalan.*</wls:package-name>
        </wls:prefer-application-packages>
    </wls:container-descriptor>
</wls:weblogic-web-app>
 类似资料:
  • 我试图集成一个旧的weblogic应用程序来使用Okta SSO saml2.0流。我已经成功地使用@ServletCompenentScan将应用程序与Spring Boot集成,并且能够成功地使用Spring Security性进行基本身份验证。但是,当将特定于SAML的配置添加到SecurityConfiguration时,应用会在部署时失败。对于okta saml,我遵循这个教程https

  • 这是我的第一个问题。我一路寻找,尝试了很多,但没有得到我想做的。问题是:我有一个应用程序使用SoundPool播放声音,仅此而已。但是要加载的东西很多(>50),一个一个加载需要时间。看一看; @Override公共视图onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState){View V

  • 我有一个带有导航抽屉的Android应用程序。我的问题是,加载某些片段需要几秒钟(解析器、映射API)。我想在应用程序启动时加载我的所有片段。 我不确定这是否可能或是一个好方法,但我正在考虑在主活动的onCreate方法中创建我的每个片段的实例。然后,当用户在导航抽屉中选择一个片段时,我使用现有实例,而不是创建一个新实例。 问题是,当我第一次展示一个特定片段时,它并不能阻止延迟。在我看来,原因是片

  • 问题是,如果在该类之前运行任何其他测试,则2个存储库测试类将<code>无法加载该测试类的第一个测试用例的ApplicationContext。 Github上的项目“修复单元测试”分支 我使用Mongodb嵌入式数据库对一个spring-boot maven应用程序进行了一系列JUnit组件测试。 其中2个测试类在2个spring存储库上运行单元测试。 但是,由它们自己运行的测试类工作得非常好,

  • 当我运行这个错误时,请帮助我解决这个问题 启动应用程序上下文时出错。要显示条件,请报告启用“调试”后重新运行应用程序。2019-02-11 10:53:55.839错误8804 --- [ restartedMain]o. s. b. d.日志失败分析记者: 应用程序启动失败 说明: com中的字段userDao。实例Spring Security应用程序编程接口。服务UserServiceImp

  • 我有Java桌面应用程序,运行良好。我可以双击exe或运行jar文件并正常运行。 我想在系统启动时加载此应用程序。如何通过编程实现这一点? 或者,是否有任何工具可以以这样的方式创建exe,即一旦安装,就会在系统启动文件夹中创建快捷方式。 我希望它是系统或代码驱动的,而不是单独将exe放在启动文件夹中。