Validation 如何获得Axis/Castor web服务来根据XSD验证请求?

Validation 如何获得Axis/Castor web服务来根据XSD验证请求?,validation,xsd,axis,castor,Validation,Xsd,Axis,Castor,我使用我们组织内另一个团队开发的XSD,以合同优先的自上而下的方式开发了一个小型web服务。我遇到的问题是,如果请求的格式稍有错误,服务仍会运行。我确实需要它来验证针对XSD的请求,但我不知道如何强制Axis或Castor这样做 当我说格式有点不正确时,我的意思是请求包含正确的元素,但顺序不正确。在Castor解组过程中,格式错误的请求将被拒绝。格式稍有错误的请求将被解组,并可能导致不必要的结果。下面是一个例子: 有效请求应包含如下所示的项目列表: <ItemList> <

我使用我们组织内另一个团队开发的XSD,以合同优先的自上而下的方式开发了一个小型web服务。我遇到的问题是,如果请求的格式稍有错误,服务仍会运行。我确实需要它来验证针对XSD的请求,但我不知道如何强制Axis或Castor这样做

当我说格式有点不正确时,我的意思是请求包含正确的元素,但顺序不正确。在Castor解组过程中,格式错误的请求将被拒绝。格式稍有错误的请求将被解组,并可能导致不必要的结果。下面是一个例子:

有效请求应包含如下所示的项目列表:

<ItemList>
  <Item>Value1</item>   
  <Item>Value2</item>   
  <Item>Value3</item>   
</ItemList>
<ItemList>
  <Item>Value1</item>   
  <Item>Value2</item>   
</ItemList>
<ItemList>
  <Item>Value3</item>   
</ItemList>
这将正确解组,web服务将处理这三个值

但是,我发现,如果相同的值集是这样表示的:

<ItemList>
  <Item>Value1</item>   
  <Item>Value2</item>   
  <Item>Value3</item>   
</ItemList>
<ItemList>
  <Item>Value1</item>   
  <Item>Value2</item>   
</ItemList>
<ItemList>
  <Item>Value3</item>   
</ItemList>
然后,这也将以与第一个示例相同的方式解组,并将处理所有三个值。在这种情况下,最终结果是可以接受的,但是根据XSD,这种结构是不正确的,我更希望它创建一个错误

以下是取自XSD的请求定义:

<xsd:complexType name="SampleRequestType">
  <xsd:sequence>
    <xsd:element name="ItemList" minOccurs="1" maxOccurs="1">
      <xsd:complexType>
        <xsd:sequence>
          <xsd:element name="Item" type="xsd:string" minOccurs="1" maxOccurs="unbounded"/>
        </xsd:sequence>
      </xsd:complexType>
    </xsd:element>
  </xsd:sequence>   
</xsd:complexType>
SoapUI报告第二个示例无效,因此我确信XSD是正确的

我尝试了一些方法来强制进行XSD验证,到目前为止没有任何效果。有人知道如何强制Axis或Castor进行验证吗

出于历史原因,我正在使用这两个组件的旧版本——Axis1.3和Castor 1.1,但如果我能让XSD验证正常工作,我愿意承受任何升级的痛苦

非常感谢

史蒂夫

试试这个链接:

它与Axis1.3相关,涉及使用自定义过滤器和助手类进行验证

至于Castor,他们的网站上有一些与模式验证相关的示例,不确定它们与您的版本有多大的相关性似乎很旧,但可能是升级的原因:

整个内容太大,无法在此处发布,但我发布的链接似乎相当稳定。

尝试此链接:

它与Axis1.3相关,涉及使用自定义过滤器和助手类进行验证

至于Castor,他们的网站上有一些与模式验证相关的示例,不确定它们与您的版本有多大的相关性似乎很旧,但可能是升级的原因:


整个内容太大,无法在这里发布,但我发布的链接似乎相当稳定。

感谢Petru的回复,并为您的帖子的巨大延迟表示歉意!这是忙碌的一个月,我只是没有时间回到这个问题上。我会浏览一下你提供的链接,看看它会带我去哪里。再次感谢。谢谢你的佩特罗,并为你的帖子被耽搁了太久而道歉!这是忙碌的一个月,我只是没有时间回到这个问题上。我会浏览一下你提供的链接,看看它会带我去哪里。再次感谢。