2012-01-11 3 views
1

내부의 qname를 다시 선언 나는이 양식의 SOAP 요청이 있습니다SOAP 본체

<soapenv:Envelope 
     xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" 
     xmlns:myqname="http://example.com/hello" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <soapenv:Header/> 
    <soapenv:Body> 
     <myqname:MyRequest xmlns:myqname="http://example.com/hello"> 
     ... 
     </myqname:MyRequest> 
    </soapenv:Body> 
</soapenv:Envelope> 

나는 SOAPUI를 요구하는 경우에 "형식의 XML"이 요청, 이 myqname의 두 번째 선언을 제거, 그래서하려면 이 :

<soapenv:Envelope 
     xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" 
     xmlns:myqname="http://example.com/hello" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <soapenv:Header/> 
    <soapenv:Body> 
     <myqname:MyRequest> 
     ... 
     </myqname:MyRequest> 
    </soapenv:Body> 
</soapenv:Envelope> 

원래 요청은 잘 작동 하지만 응용 프로그램 서버는이 오류와 수정 요청에 실패

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> 
    <soap:Body> 
     <soap:Fault> 
     <faultcode>soap:Client</faultcode> 
     <faultstring>Unmarshalling Error: UndeclaredPrefix: Cannot resolve 'myqname:MyRequest' as a QName: the prefix 'myqname' is not declared.</faultstring> 
     </soap:Fault> 
    </soap:Body> 
</soap:Envelope> 

웹 서비스 사양에 따라 은 qname이 soapenv : Body 노드 내부에서 다시 선언되어야합니다. SOAPUI 버그입니까, 아니면 Application Server 버그입니까? 또는 내 부분에서 오해? SOAPUI 4.0.1

, 웹 로직 서버 버전 : 10.3.2.0

편집 : UPS, 심지어 WebLogic 응용 프로그램 서버를 사용하는 경우, 내가 CXF 웹 서비스 프레임 워크를 사용했다. 거기에 문제를 게시했습니다. issues.apache.org/jira/browse/CXF-4026

그래서 : SOAPUI 4.0.1, CXF 2.5.0

답변

2

나는 SOAP 봉투를 제거합니다 코드의 버그로 설명하는 것; 네임 스페이스 컨텍스트를 유지해야하지만 그렇게하지는 않습니다. 그러면 XML이 손상됩니다. 그것은 DOM 요소 레벨에서 작동하는 것보다 하위 문자열을 사용하여 스트립 핑을 수행하고 있기 때문입니다. DOM 처리를 사용하여 스트립 처리를 수행하는 것이 포인트 옆에 있는지 여부와 관계 없습니다. 나는 요소가 있기 때문에 이러한 일들이 중첩 될 수있는 방법으로 제거하는 것이 일을하는 확인 모르겠지만, 나는 그것이 웹 로직 용의자 ...


[편집] : I 체크 한 SOAP specification과 그렇지 않습니다 몸체의 내용이 사용 된 네임 스페이스를 직접 선언해야한다고 (§5.3.1 참조), 네임 스페이스가되어야한다고 말합니다. 따라서 일반적인 SOAP 네임 스페이스 규칙이 적용됩니다. 전체 SOAP 메시지는 XML 문서 일 뿐이므로 WebLogic의 동작이 버그가됩니다.

+0

답해 주셔서 감사합니다. 그러나 이것은 추측이며 나는 그것에 동의하지만 확실한 대답이 필요합니다. –

+0

@David : 확실한 대답은 SOAP 사양이 아무 것도 말하지 않는다는 것입니다. 일반 XML 규칙이 적용됩니다. WebLogic의 버그. –

+0

나는 그렇게 말하고 싶지만, 믿기에는 조금 어렵다는 것에 동의 할 것이다 ... :) 나는 웹 로직 포럼에 질문을 올렸다 : https://forums.oracle.com/forums/ thread.jspa? threadID = 2331952 & tstart = 0 –