ws消息验证器中的多个xsd模式 - 为什么在schemaCollection中找不到资源但在xsdSchema中找到该资源?

时间:2015-09-30 10:29:08

标签: java xsd spring-ws

我试图找出使用SimpleXsdSchema设置XSD资源的原因

<bean id="xsdSchema" class="org.springframework.xml.xsd.SimpleXsdSchema">
    <property name="xsd" value="/WEB-INF/schema.xsd"/>
</bean>

而使用CommonsXsdSchemaCollection则不然。我打算用它来提供多个xsd&#39; s。我更喜欢这种方法将xsd导入到另一个内部。

<bean id="schemaCollection"
      class="org.springframework.xml.xsd.commons.CommonsXsdSchemaCollection">
    <!--<property name="resourceLoader" ref="resourceLoader"/>-->
    <property name="xsds">
        <list>
            <value>/WEB-INF/schema.xsd"</value>
        </list>
    </property>
    <property name="inline" value="true" />
</bean>

如下所示使用它时,错误为:ServletContext resource [/WEB-INF/schema.xsd"] does not exit

 Error creating bean with name 'org.springframework.ws.soap.server.endpoint.interceptor.PayloadValidatingInterceptor#0' defined in ServletContext resource [/WEB-INF/security-context.xml]: 
 Cannot resolve reference to bean 'schemaCollection' while setting bean property 'schemaCollection'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating  bean with name 'schemaCollection' defined in ServletContext resource [/WEB-INF/security-context.xml]: Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: ServletContext resource [/WEB-INF/schema.xsd"] does not exit

用法:

    <bean class="org.springframework.ws.soap.server.endpoint.interceptor.PayloadValidatingInterceptor">
        <property name="errorHandler" ref="customValidationErrorHandler"/>
        <!--<property name="xsdSchema" ref="xsdSchema"/>-->
        <property name="schemaCollection" ref="schemaCollection"/>
    </bean>

有没有人对此有所了解? 我应该使用resourceLoader吗? (应用程序在战争中被打包并部署到应用程序服务器,它仍未爆炸)。

1 个答案:

答案 0 :(得分:1)

您的配置中有拼写错误:

        <value>/WEB-INF/schema.xsd"</value>

这应该是:

        <value>/WEB-INF/schema.xsd</value>