我正在我的网络应用程序中实现 Spring 安全框架。 我的耳朵里有所有必需的 spring 安全 jar 文件。这个耳朵还包含我的网络应用程序 war 文件。我创建了另一个 jar 文件,该文件驻留在耳朵本身中,并且包含与安全性相关的所有代码(如自定义提供程序等),以便我可以在 future 的另一个 Web 应用程序中使用它。这个安全 jar 文件还具有 spring security bean 配置文件,我将其导入到我的 Web 应用程序中,但在 jboss 中部署 Ear 时它给了我异常(exception)情况。Follwoing 是异常(exception)情况和我的代码详细信息...
Caused by: org.springframework.beans.factory.BeanDefinitionStoreException: IOException
parsing XML document from class path resource [META-INF/authbeans.xml]; nested
exception is java.io.FileNotFoundException: class path resource [META-
INF/authbeans.xml] cannot be opened because it does not exist at
org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions
(XmlBeanDefinitionReader.java:341)
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions
(XmlBeanDefinitionReader.java:302)
at
org.springframework.beans.factory.support.AbstractBeanDefinitionReader.
loadBeanDefinitions(AbstractBeanDefinitionReader.java:143)
at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.
loadBeanDefinitions(AbstractBeanDefinitionReader.java:178)
at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.
importBeanDefinitionResource(DefaultBeanDefinitionDocumentReader.java:186)
... 154 more
下面是我的网络应用程序的 web.xml 条目
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/applicationContext.xml
</param-value>
</context-param>
applicationContext.xml:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:sec="http://www.springframework.org/schema/security"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/security
http://www.springframework.org/schema/security/spring-security-3.0.xsd">
<import resource="classpath:META-INF/authbeans.xml" />
</beans>
此 authbeans.xml 驻留在 security.jar 中,它包含在 Ear 中,并且也在我的 Web 应用程序的 MANIFEST.MF 中提到。
请建议我该怎么做,我正在使用 Spring 3.0.5 版本。 以下是我的ear文件结构:
MyEar
|-- lib\ (contains all spring security jar files)
|
|-- mySecurity.jar (contains all security related custom code also authbeans.xml)
|
|-- myWar
|-- META-INF/MANIFEST.MF (entries for spring security jars & mySecurity.jar)
|
|-- WEB-INF
|-- applicationContext.xml (authbeans.xml included)
|-- lib\ (local jar files)
我在 JBOSS 5.0.1 上尝试过,现在应用程序能够找到 authbeans.xml,但仍然无法在 Ear 的 lib 目录中找到 spring security jar。 当我将所有 spring security jar 复制到与 mySecurity.jar 相同的级别(意味着直接在 Ear 中而不是在 lib 文件夹中)时,它可以识别并正常工作。
但我想将所有第三方 jar 保留在 Ear 的 lib 目录中。这是 jboss 特定问题吗???
最佳答案
替换
<import resource="classpath:META-INF/authbeans.xml" />
与
<import resource="classpath:/META-INF/authbeans.xml" />
关于java - 无法从 URL 位置导入 Spring 安全 bean 配置文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6122358/