无法从URL位置导入Spring安全Bean配置文件

时间:2011-05-25 09:39:36

标签: java spring spring-security

我正在我的网络应用程序中实现spring安全框架。 我耳朵里有所有必需的弹簧安全jar文件。这个耳朵还包含我的web应用程序war文件。我创建了另一个jar文件,它本身就存在于耳中,并且所有代码都与安全相关(如自定义提供程序等),以便我可以在另一个web应用程序中使用它。这个安全jar文件也有spring安全bean配置文件,我导入到我的web应用程序,但它在jboss中部署ear时给了我例外.Follwoing是例外&我的代码详情...

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中,它包含在耳中,也在我的网络应用程序的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。 当我将所有弹簧安全罐复制到与mySecurity.jar相同的级别时(意味着直接在耳中而不是在lib文件夹中),那么它可以识别并正常工作。

但是我想将我所有的第三方jar放在ear的lib目录中。这是一个特定于jboss的问题???

2 个答案:

答案 0 :(得分:0)

替换

 <import resource="classpath:META-INF/authbeans.xml" />

 <import resource="classpath:/META-INF/authbeans.xml" />

答案 1 :(得分:0)

升级到JBOSS-5,Jboss 4.2在识别放入耳中的罐子时似乎有问题。