将多个Schema添加到单个servlet

时间:2012-09-17 00:48:33

标签: java servlets xsd

我有两个模式和两个端点,目前我只有一个servlet。有没有办法可以将两个模式添加到一个servlet中?或者我是否必须添加第二个servlet。

我见过的其他可能性涉及将两个两个场景组合成一个架构,我的问题是我不希望人们能够看到第二个架构的内容。什么是最好的方法。

对此有任何建议对我找到建议很有用,但没有什么可说的,这是最好的方法。

目前我有一个使用simpleXsdSchema

的servlet
 <bean id="schema" class="org.springframework.xml.xsd.SimpleXsdSchema" 
        p:xsd = "classpath:au/test/Search/ws/schemas/Search.xsd"/>

我想做这样的事情:

<bean id="schema" class="org.springframework.xml.xsd.SimpleXsdSchema">
    <property name="schema">
        <list>
            <value>
                classpath:au/test/Search/ws/schemas/Search.xsd
            </value>
            <value>
                classpath:au/test/Search/ws/schemas/admin/SearchAdmin.xsd
            </value>
        </list>
    </property>
</bean>
*i am aware this does not work

但我不确定这是否是正确的方法。

2 个答案:

答案 0 :(得分:1)

我不是你需要的100%,但是在Servlet中你可以使用部署描述符(web.xml)定义多个指向同一个servlet的端点,如下所示:

<servlet>
  <servlet-name>Servlet1</servlet-name>
  <servlet-class>Servlet.java</servlet-class>
</servlet>
....
<servlet-mapping>
  <servlet-name>Servlet1</servlet-name>
  <url-pattern>/endpoint1</url-pattern>
  <url-pattern>/endpoint2</url-pattern>
</servlet-mapping>

然后在Servlet代码中,您可以定义应用程序逻辑(如果请求来自endpoint1,您可以显示与来自endpoint2的内容不同的内容)

答案 1 :(得分:1)

经过更多的研究,可以使用架构集合类声明多个架构,需要导入xmlschema框架。

<bean id="schemaCollection"
    class="org.springframework.xml.xsd.commons.CommonsXsdSchemaCollection">
    <property name="xsds">
        <list>
            <value>au/test/Search/ws/schemas/admin/SearchAdmin.xsd</value>
            <value>au/test/Search/ws/schemas/Search.xsd</value>
        </list>
    </property>
    <property name="inline" value="true" />
</bean>

对于我的情况,这不是我发现的最好的方法,而是声明两个servlet是最好的行动方案。