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

尝试使用JavaConfiguration将Struts2和Spring Security SAML与应用程序集成

林冥夜
2023-03-14

我正在尝试在我的应用程序中使用Spring Security SAML扩展。我搞不清楚正确的配置。在我的应用程序中,我使用的是Spring Java配置。这是我的代码:

web.xml:

<context-param>
        <param-name>contextClass</param-name>
        <param-value>
         org.springframework.web.context.support.AnnotationConfigWebApplicationContext
        </param-value>
    </context-param>
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>com.ceiwc.es.config</param-value>
    </context-param>

    <!-- For Spring Security -->
    <filter>
        <filter-name>springSecurityFilterChain</filter-name>
        <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
    </filter>

    <!-- Handles Strut2 URL requests -->
    <filter>
        <filter-name>struts2</filter-name>
        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
    </filter>

    <!-- Mapping for Spring Security URLs -->
    <filter-mapping>
        <filter-name>springSecurityFilterChain</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

    <!-- Mapping for Struts2 URLs -->
    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

    <!-- /WEB-INF/spring/spring-config.xml -->
    <!-- <context-param> <param-name>contextConfigLocation</param-name> <param-value> 
        /WEB-INF/spring/springSecurity-config.xml </param-value> </context-param> -->

    <!-- In charge of starting and stopping the Spring root ApplicationContext. 
        It also determines which configurations are to be used, by looking at the 
        contextConfigLocation. -->
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>

    <session-config>
        <session-timeout>20</session-timeout>
    </session-config>

下面是我的配置类:

@Configuration
@ComponentScan(basePackages = {"com.ceiwc.bc", "com.ceiwc.es"})
@Import({DataConfig.class, LdapConfig.class, CacheConfig.class})
@ImportResource({"/WEB-INF/spring/spring-config.xml", "/WEB-INF/spring/springSecurity-config.xml"})
@PropertySource({"classpath:global.properties"})
public class ApplicationConfig {
    @Bean
    public JavaMailSender mailSender() {
        JavaMailSenderImpl mailSender = new JavaMailSenderImpl();
        mailSender.setHost("iwmail.iwif-internal.com");
        return mailSender;
    }
}

当我运行应用程序时,出现以下错误:

更多stacktrace:

组织。springframework。网状物上下文ContextLoader-上下文初始化失败。lang.CompatibleClassChangeError:在java上实现类。lang.ClassLoader。在java上定义Class1(本机方法)。lang.ClassLoader。java上的defineClass(ClassLoader.java:800)。安全安全类加载器。weblogic上的defineClass(SecureClassLoader.java:142)。乌提尔斯。类加载器。GenericClassLoader。weblogic上的defineClass(GenericClassLoader.java:412)。乌提尔斯。类加载器。GenericClassLoader。findLocalClass(GenericClassLoader.java:366)被截断。有关完整的堆栈跟踪,请参阅日志文件

用户定义的侦听器组织。springframework。网状物上下文ContextLoaderListener失败:java。lang.CompatibleClassChangeError:实现类。JAVAlang.CompatibleClassChangeError:在java上实现类。lang.ClassLoader。在java上定义Class1(本机方法)。lang.ClassLoader。java上的defineClass(ClassLoader.java:800)。安全安全类加载器。weblogic上的defineClass(SecureClassLoader.java:142)。乌提尔斯。类加载器。GenericClassLoader。weblogic上的defineClass(GenericClassLoader.java:412)。乌提尔斯。类加载器。GenericClassLoader。findLocalClass(GenericClassLoader.java:366)被截断。有关完整的堆栈跟踪,请参阅日志文件

无法在web.xml中加载用户定义的过滤器:org.springframework.web.filter.委托FilterProxy。java.lang.不兼容ClassChangeError:在java.lang.ClassLoader.defineClass1(Native Method)在java.lang.ClassLoader.defineClass(ClassLoader.java:800)在java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)在weblogic.utils.classloaders.GenericClassLoader.defineClass(GenericClassLoader.java:412)在weblogic.utils.classloaders.GenericClassLoader.findLocalClass(GenericClassLoader.java:366)Truncat.请参阅日志文件以获取完整的stacktrac

我做错了什么?如果我添加contextConfigLocation,我会收到一个错误,指示DelegatingFilterProxy未能初始化。任何帮助都将不胜感激。

谢谢!

共有1个答案

步胜
2023-03-14

对我来说,解决这个问题的方法是添加wls:preference-web-inf-classes元素并将其设置为true。这里可以找到一个很好的解释。

 类似资料:
  • sbt版本为0.13。9和scala 2.11。7/我知道以前版本的sbt依赖于scala 2.10-仍然是这样吗?我有一个Java项目,为它添加了一个程序集。项目目录中的sbt文件(根据本版本sbt组件的sbt组件说明): 我运行了sbt重新加载/清理以及编译。但是,当我尝试运行程序集时,会出现以下异常: 在使用sbt为我的java项目创建可运行的jar之前,我遗漏了什么步骤? 如果需要的话,我

  • 我第一次尝试Drools/Guvnor,我们计划在Guvnor中进行规则创作,编译、构建并将包下载到“规则包目录”。 现在我遇到的问题是,将Drools与我们的Java应用程序集成的最佳方式是什么?选项1)构建知识代理并开始将事实插入内存以在我们的应用程序中进行规则评估。在这种情况下,Drools引擎使用与应用程序JVM相同的JVM。选项2)拥有一个构建知识代理的Drools Server,应用程

  • 我们正在开发一个应用程序,将使用CPLEX解决一个工业问题。开发了一个数学模型(文件)。我们希望直接使用该模型,而不是使用CPLEX Java API重新转录。 在我们的架构中,我们有一个专门用于检索业务数据和创建合适的文件的应用程序。原始模型和这些数据文件应发送到安装在单独机器上的CPLEX实例。 问题是允许加载和运行文件的OPLJavaAPI不提供任何API来使用远程CPLEX实例。另一方面,

  • 主要活动 碎片 这是一个简单对话框的代码。 这里有一个我从中学习的链接。如果我只需通过调用按钮创建对话框,它就可以完全正常工作。

  • 我通过Atlas MongoDB创建了到数据库的连接。 我不知道如何解决这个问题。 提前道谢。

  • 问题内容: 我有一个棘手的情况:我正在构建一个完整的流星功能的应用程序。但是出于自动化原因,我还需要将某些功能公开为REST服务(第三方应用程序应该能够通过REST插入和接收数据)。 express.js-package似乎是将REST- Endpoint构建到node.js环境中的一个非常可靠的选择,但是我想知道如何将该终结点集成到流星中。 我想要的是例如通过来访问“常规”站点,同时又能够通过来