我正在我的网络应用程序中实现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的问题???
答案 0 :(得分:0)
替换
<import resource="classpath:META-INF/authbeans.xml" />
与
<import resource="classpath:/META-INF/authbeans.xml" />
答案 1 :(得分:0)
升级到JBOSS-5,Jboss 4.2在识别放入耳中的罐子时似乎有问题。