저는 조직 내 다른 팀에서 개발 한 XSD를 사용하여 계약 우선 (하향식) 방식으로 작은 웹 서비스를 개발했습니다. 문제는 요청이 약간 변형되면 서비스가 여전히 실행된다는 것입니다. XSD에 대한 요청의 유효성을 검사하는 데 정말로 필요하지만 Axis 또는 Castor에 강제로 적용하는 방법을 알지 못합니다.Axis/Castor 웹 서비스에서 XSD에 대한 요청의 유효성을 검사하려면 어떻게합니까?
"약간 변형되었습니다"라고 말하면 요청에 올바른 요소가 포함되어 있지만 올바르게 순서가 정해져 있지 않다는 의미입니다. 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>
이것은 또한 실시 예 1과 마찬가지로 비 정렬 화 한 세 값이 처리 될 것이다
단, I는 동일한 값 세트가 다음과 같이 제시된다면 것을 발견했다 . 이 경우 최종 결과는 받아 들일 만하지만 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를 검증하는 방법을 아는 사람이 있습니까?
역사적인 이유로 저는 Axis 1.3과 Castor 1.1의 두 가지 구성 요소의 이전 버전을 사용하고 있습니다. 그러나 XSD 유효성 검사를 수행 할 수 있다면 업그레이드 문제가 발생합니다.
많은 감사
스티브
Petru에게 감사 드리며 귀하의 게시물을 인정하는 데 거대한 지연에 사과드립니다! 바쁜 한 달이었고, 나는이 문제로 돌아갈 시간이 없었습니다. 내가 제공 한 링크를 살펴보고 어디를 가는지 볼 것입니다. 다시 한번 감사드립니다. –