Java 弹簧不';t解析xml文件声明中的类路径
我对resolve spring的“classpath:”功能有问题。我的文件位于下一个路径中:Java 弹簧不';t解析xml文件声明中的类路径,java,xml,spring,classpath,saml-2.0,Java,Xml,Spring,Classpath,Saml 2.0,我对resolve spring的“classpath:”功能有问题。我的文件位于下一个路径中: src/main/java/resources/FederationMetadata.xml 还有,我有一个豆子: <bean id="metadata" class="org.springframework.security.saml.metadata.CachingMetadataManager"> <constructor-arg> <l
src/main/java/resources/FederationMetadata.xml
还有,我有一个豆子:
<bean id="metadata" class="org.springframework.security.saml.metadata.CachingMetadataManager">
<constructor-arg>
<list>
<bean class="org.springframework.security.saml.metadata.ExtendedMetadataDelegate">
<constructor-arg>
<bean class="org.opensaml.saml2.metadata.provider.FilesystemMetadataProvider">
<constructor-arg>
<value type="java.io.File">classpath:FederationMetadata.xml</value>
</constructor-arg>
<property name="parserPool" ref="parserPool"/>
</bean>
</constructor-arg>
<constructor-arg>
<bean class="org.springframework.security.saml.metadata.ExtendedMetadata">
</bean>
</constructor-arg>
</bean>
</list>
</constructor-arg>
</bean>
据我所知,Spring不解析文件位置。我尝试使用classpath*:,但没有任何帮助。在另一个项目中,我有相同的设置(带有“classpath:”),并且工作正常。可能是什么?试试看
<value type="java.io.File">file:///FederationMetadata.xml</value>
file:///FederationMetadata.xml
而不是
<value type="java.io.File">classpath:FederationMetadata.xml</value>
classpath:FederationMetadata.xml
如果希望从类路径访问它,则需要将其放在
WEB-INF/classes文件夹。
如果文件在文件夹中,则路径是相对于“类”文件夹的
WEB-INF/classes/configs/somefile.xml
然后
这个问题也让我发疯 在某种程度上,我意识到
FilesystemMetadataProvider
被ResourceBackedMetadataProvider
所取代
因此,如果您的元数据XML位于类路径中,请执行以下操作:
<bean id="metadata" class="org.springframework.security.saml.metadata.CachingMetadataManager">
<constructor-arg>
<list>
<bean class="org.opensaml.saml2.metadata.provider.ResourceBackedMetadataProvider">
<constructor-arg>
<bean class="java.util.Timer"/>
</constructor-arg>
<constructor-arg>
<bean class="org.opensaml.util.resource.ClasspathResource">
<constructor-arg value="/FederationMetadata.xml"/>
</bean>
</constructor-arg>
<property name="parserPool" ref="parserPool"/>
</bean>
</list>
</constructor-arg>
</bean>
您是从IDE(例如Eclipse)启动应用程序,还是先用Maven编译然后部署?你能发布你的战争档案的完整内容吗?
classpath:configs/somefile.xml
<bean id="metadata" class="org.springframework.security.saml.metadata.CachingMetadataManager">
<constructor-arg>
<list>
<bean class="org.opensaml.saml2.metadata.provider.ResourceBackedMetadataProvider">
<constructor-arg>
<bean class="java.util.Timer"/>
</constructor-arg>
<constructor-arg>
<bean class="org.opensaml.util.resource.ClasspathResource">
<constructor-arg value="/FederationMetadata.xml"/>
</bean>
</constructor-arg>
<property name="parserPool" ref="parserPool"/>
</bean>
</list>
</constructor-arg>
</bean>