2011-10-18 2 views
4

우리는로 정의 된 복합 유형 JAX-RPC 스타일의 웹 서비스는 다음 한 던졌습니다 :복합 유형의 마샬링 예외

<xs:complexType name = "SomeFault"> 
<xs:sequence> 
<xs:element name = "errorMessages" type="some:ErrorMessageWSType" minOccurs="0" maxOccurs="unbounded" /> 
</xs:sequence> 
</xs:complexType> 

<xs:simpleType name = "ErrorMessageWSType"> 
<xs:restriction base = "xs:NMTOKEN"> 
<xs:enumeration value = "INVALID_1"/> 
<xs:enumeration value = "INVALID_2"/> 
<xs:enumeration value = "INVALID_3"/> 
</xs:restriction> 
</xs:simpleType> 

우리는 서버 측에서 예외를 마샬링에 실행할 때 응답/오류 복합 유형에는 단일 배열 유형 필드가 있습니다.

는 weblogic.wsee.codec.CodecException : com.bea.xml.XmlException를 인코딩 할 수 없습니다 : 개체 의 정렬 화에 사용하기에 적합한 바인딩 유형을 찾지 못했습니다 "[Lnamespace.type.ErrorMessageWSType; 693767e9 @ ". 사용하는 스키마 유형 : t = SomeFault @ HTTP : // 네임/SOME/V1 자바 유형 : namespace.type.ErrorMessageWSType []

우리는 복합 타입 에러에 다른 원소를 첨가함으로써, SomeFault 변경하면 가버 리다.

<xs:complexType name = "SomeFault"> 
<xs:sequence> 
<xs:element name = "errorMessages" type="some:ErrorMessageWSType" maxOccurs="unbounded" /> 
<xs:element name = "dummyString" type="xsd:string" minOccurs="0" /> 
</xs:sequence> 
</xs:complexType> 

wsdlc 코드 생성 중 잘못된 것이 있습니까? 아니면 알려진 문제입니까?

은 비슷한 질문이 이미 https://forums.oracle.com/forums/thread.jspa?messageID=4462906에 게시됩니다 만 응답하지 않고, 어떤 포인터가 좋은 것입니다.

감사합니다. 두 번째 경우의 작업을 할 수있는 장치가 무엇인지,

<xs:sequence minOccurs="0" maxOccurs="unbounded"> 
<xs:element name="errorMessages" type="some:ErrorMessageWSType"/> 
</xs:sequence> 

OTOH :이 질문의 "왜"부분을 해결되는지

답변

1

은 몰라,하지만 당신은 같은 시퀀스 부분을 재 작성을 시도 할 수 ,하지만 첫 번째가 아닌가? 마샬 러가 xsd:string이 무엇을 의미 하는지를 확인하기 전에 무엇을 의미하는지 알아 내야 만합니다. 그러면 해결 자나 다른 것을 깨워야합니까? 이 생각의 라인은 내가 시도 할 두 번째 방법으로 이끄는 데, ErrorMessageWSTypeSomeFault 앞에 (어쩌면 또 다른 네임 스페이스에서 무엇인가 수정하는지 확인하기 위해) 선언해야합니다.

그냥 내 피곤한 두 센트이고, 두 가지 접근 방식 모두 마샬 러에서 어떤 종류의 버그를 추정한다고 생각합니다. 예제 코드의 내용이 XML에 따르지 않는다는 것을 실제로 볼 수 없기 때문입니다 스키마 정의.

+0

두 가지 방법 모두 시도했지만 동일한 예외가 있습니다. 어쨌든, 고마워! –

+0

다른 제한 기반을 사용해 보셨습니까? XML 스키마 정의 (http://www.w3.org/TR/xmlschema-2/#NMTOKEN)에서 : "호환성을 위해 (용어 (§1.4) 참조) NMTOKEN은 속성에서만 사용되어야합니다." 대신 문자열을 사용해보십시오. 어떻게되는지보십시오. – uvesten

+0

도 그 옵션을 시험해 보았다. .. 행운이 없다. .. 같은 예외를 얻었다! –