2016-09-07 1 views
0

Tomcat 서버에 배포 된 웹 서비스가 있고이 파일에 대해 wsdl 파일이 생성되었습니다.JAX WS에서 생성 된 wsdl의 네임 스페이스 문제

나중에 wsdl을 통해 새로운 비누 프로젝트를 생성하고 서버에 비누 요청을 실행했습니다.

"InputData"및 "CCNA"에 대한 네임 스페이스 접두사가 잘못되어 서버 측에서 xml의 unmarshalling이 실패했습니다. 현재는 입니다. cfa입니다.

는 자바 코드에 따르면, InputData의 네임 스페이스는 XS이며, CCNA는 BIM입니다. soap 요청을 수정하면 서버 측에서 unmarshall을 사용하는 것이 좋습니다.

그래서 문제는 어디에 있습니까? WSDL 생성 또는 JAX WS의 다른 모든 곳에서? 비누 요청을 수정해서는 안됩니다.

SOAP 요청 : 서버에 입력 데이터에 대한

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:cfa="http://cfa.ni.ctl.com/" xmlns:bim="http://www.qwest.com/XMLSchema/BIM" xmlns:xs="http://www.qwest.com/XMLSchema"> 
    <soapenv:Header/> 
    <soapenv:Body> 
     <cfa:getCFACircuit> 
     <!--Optional:--> 
     <CFACircuitRequest> 
      <bim:RequestId>123</bim:RequestId> 
      <bim:WebServiceName>123</bim:WebServiceName> 
      <bim:RequestPurpose>123</bim:RequestPurpose> 
      <bim:AuthorizationInfo> 
       <!--Optional:--> 
       <bim:ApplicationId>123</bim:ApplicationId> 
       <!--Optional:--> 
       <bim:UserId>123</bim:UserId> 
       <!--Optional:--> 
       <bim:Userid>123</bim:Userid> 
       <bim:Password>123</bim:Password> 
      </bim:AuthorizationInfo> 
      <!--Optional:--> 
      <bim:TargetSchemaVersionUsed> 
       <!--Optional:--> 
       <bim:TargetXSDName>123</bim:TargetXSDName> 
       <!--Optional:--> 
       <bim:MajorVersionNumber>123</bim:MajorVersionNumber> 
       <!--Optional:--> 
       <bim:MinorVersionNumber>123</bim:MinorVersionNumber> 
      </bim:TargetSchemaVersionUsed> 
      <!--Optional:--> 
      <bim:TimeOutSecond>123</bim:TimeOutSecond> 
      <!--Optional:--> 
      <bim:SendTimeStamp>123</bim:SendTimeStamp> 
      <cfa:InputData> 
       <cfa:CCNA>123</cfa:CCNA> 
       <xs:CableKey> 
        <!--Optional:--> 
        <xs:LowUnit>123</xs:LowUnit> 
        <!--Optional:--> 
        <xs:HighUnit>123</xs:HighUnit> 
        <!--Optional:--> 
        <xs:CableId>123</xs:CableId> 
        <!--Optional:--> 
        <xs:CableSubPath>123</xs:CableSubPath> 
        <!--Optional:--> 
        <xs:CLLIALocation>123</xs:CLLIALocation> 
        <!--Optional:--> 
        <xs:CLLIZLocation>123</xs:CLLIZLocation> 
       </xs:CableKey> 
      </cfa:InputData> 
     </CFACircuitRequest> 
     </cfa:getCFACircuit> 
    </soapenv:Body> 
</soapenv:Envelope> 

XML 주석입니다

@XmlElement (이름 = "InputData", 네임 스페이스 = "http://www.qwest.com/XMLSchema"필수 = TRUE)

+0

이 주석으로 wsdl의 inputData가 해당 네임 스페이스에없는 이유를 모르겠습니다. 아마도 jaxb 버전과 관련된 문제일까요? 당신은 새로운 것을 시도 할 수 있습니까? 미안하지만 여기서 어떻게 도와야할지 모르겠다. 나는 또한 당신의 문제를 해결하지 못하기 때문에 나의 대답을 제거 할 것입니다. – albciff

+0

ok..thanks..jaxb 최신 버전 시도 – Ajay

답변

0

XML 요청이 잘못되었다고 생각합니다. 먼저 XML 스키마에 대한 요청의 유효성을 검사하십시오.

사용하는 네임 스페이스 접두사는 중요하지 않지만 XML 요소가 적절한 네임 스페이스와 일치하는지 확인해야합니다.

+0

XML 요청이 정확합니다. 2 개의 태그를 굵은 체로 만들려고했습니다. – Ajay

+0

Ajay

+0

당신이 이것을 가리키고 있습니까? – Ajay

0

아제는 어노테이션은 다음과 같습니다

하지만 당신의 XML 요청에

이 요소 InputData 네임 스페이스에 속하는

@XmlElement (= "http://www.qwest.com/XMLSchema는"필요 = 진정한 이름 = "InputData", 네임 스페이스) "http://cfa.ni.ctl.com/".

주석을 수정해야합니다.

+0

하지만이 코드는 스키마 파일에서 자동으로 생성됩니다. 내 서버 패키지에 jar 파일이 포함되어 있습니다. 내 코드에서 네임 스페이스를 재정의하려면 어떻게해야합니까? – Ajay