2012-05-01 3 views
2

저는 조직 내 다른 팀에서 개발 한 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 유효성 검사를 수행 할 수 있다면 업그레이드 문제가 발생합니다.

많은 감사

스티브

답변

0

이 링크를 시도하십시오 :

http://www.mail-archive.com/[email protected]/msg21382.html

그것은 축 1.3에 관한이 검증을 할 수있는 사용자 정의 필터 및 헬퍼 클래스의 사용을 포함한다.

: 캐스터에 관해서는

, 자신의 사이트에 대한 몇 가지 예를 마주 스키마 검증,하지가 (꽤 오래된 것) 버전에있을 수 있지만 업그레이드 할 수있는 이유가 될 수있는 방법을 관련 있는지가

http://www.castor.org/how-to-enable-xml-validation.html

모든 것이 여기에 게시하기에는 너무 커서 모든 게시물이 꽤 안정적으로 보입니다.

+0

Petru에게 감사 드리며 귀하의 게시물을 인정하는 데 거대한 지연에 사과드립니다! 바쁜 한 달이었고, 나는이 문제로 돌아갈 시간이 없었습니다. 내가 제공 한 링크를 살펴보고 어디를 가는지 볼 것입니다. 다시 한번 감사드립니다. –

관련 문제