0

我们有一个自定义安全 jar,它是由另一个团队基于 spring security core 和 spring security cas 构建的,我们希望将它添加到我们的 Grails 项目中。我将<import resource=classpath:META-INF/security.xml>标签添加到我的 applicationContext.xml 并尝试添加所需的 xmlns 和 xsd 声明,但它给了我一个错误。

Message: Configuration problem: Failed to import bean definitions from URL location [classpath:META-INF/security.xml]
Offending resource: ServletContext resource [/WEB-INF/applicationContext.xml]; nested exception is org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration problem: Unable to locate Spring NamespaceHandler for XML schema namespace [http://www.springframework.org/schema/security]
Offending resource: class path resource [META-INF/security.xml]

当我们升级我们的纯 java 项目以使用这个 jar 时,我们必须手动添加 spring-security-core、spring-security-conf 依赖项,我们需要对 Grails 做同样的事情还是有更好的方法?

Grails 2.2 Groovy 2.0.6

security.jar 是用 Spring Security 3.0 构建的

有什么指导吗?我浏览了我们拥有的三本 Grails 书籍,其中没有一本涉及将自定义库添加到您的项目中。

谢谢。

编辑 1。

将 spring 安全依赖项添加到 BuildConfig.groovy 文件中,如下所示

    dependencies {
    compile "org.springframework.security:spring-security-core:3.1.4.RELEASE"
    compile "org.springframework.security:spring-security-config:3.1.4.RELEASE"
}

这似乎让我摆脱了旧的错误。但现在我得到了可爱

Error 2013-06-25 16:20:34,982 [localhost-startStop-1] ERROR context.ContextLoader  - Context initialization failed
Message: Error creating bean with name 'org.springframework.security.authentication.dao.DaoAuthenticationProvider#0': Cannot resolve reference to bean 'userService' while setting bean property 'userDetailsService'; nested exception is org.springframework.beans.factory.CannotLoadBeanClassException: Cannot find class [edu.umt.security.NetIdAuthoritiesPopulator] for bean with name 'userService' defined in class path resource [META-INF/security.xml]; nested exception is java.lang.ClassNotFoundException: edu.umt.security.NetIdAuthoritiesPopulator
...
Caused by CannotLoadBeanClassException: Cannot find class [edu.umt.security.NetIdAuthoritiesPopulator] for bean with name 'userService' defined in class path resource [META-INF/security.xml]; nested exception is java.lang.ClassNotFoundException: edu.umt.security.NetIdAuthoritiesPopulator

通常我们通过清理eclipse项目几次来解决这个问题,它会自行解决,这次没有骰子,我不确定问题出在哪里。我可以在 jar 文件中看到有问题的类,所以我知道它就在那里。

4

1 回答 1

1

如果一个 jar 在 Maven 存储库中不可用,并且您无法在 BuildConfig.groovy 中添加依赖项,则可以将其添加到 lib 目录,但不会自动发现它。运行grails compile --refresh-dependencies以将其添加到类路径中。

于 2013-06-25T18:16:42.237 回答