AXIS2 WSDL2JAVA : 생성 된 스터브에서 ARG 작동이 없음
-
11-07-2019 - |
문제
나는 내 웹 서비스에 간단하게있다 public boolean isAlive()
서비스. 내 wsdl에서 정의했습니다.
<wsdl:types>
<xsd:element name="isAliveResponse" type="xsd:boolean">
</xsd:element>
</wsdl:types>
<wsdl:message name="isAliveResponse">
<wsdl:part element="ns:isAliveResponse" name="parameters"/>
</wsdl:message>
<wsdl:portType name="myService">
<wsdl:operation name="isAlive">
<wsdl:output message="ns:isAliveResponse"/>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="myServiceSOAP" type="ns:myService">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
<wsdl:operation name="isAlive">
<soap:operation soapAction="http://myServiceURL/isAlive" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
서비스 골격을 생성하면 메소드가 생성되지만 클라이언트 스텁에는 생성되지 않습니다. WSDL에 문제가 있습니까? 메소드에 인수가없는 경우에도 WSDL을 넣어야합니까 (전체 WSDL을 넣지 않았지만 "요청"이있는 다른 모든 메소드가 잘 생성됩니다)? 그리고 WSDL을 넣어야한다면 : 입력 메시지는 무엇입니까?
편집하다 : Eclipse에서 WSDL을 검증 한 후 경고가 있습니다. WS-I: (BP2208) wsdl:operation was not a request/response or one-way operation
검색 후 여기에서 설명을 찾았습니다. http://www.ws-i.org/testing/tools/2005/01/bp11_tad_1-1.htm#bp2208 (앵커가 작동하지 않는 것 같습니다) 오류가 아마도 누락 된 WSDL : 입력 일 것 같습니다.
해결책
내 편집에서 말했듯이 문제는 누락 된 WSDL : 입력이었습니다. 추가하여
<wsdl:input message="ns:isAliveRequest" />
그리고
<wsdl:message name="isAliveRequest"></wsdl:message>
그런 다음 내 원래의 문제가 해결되었습니다 ... 결론, 나는 그렇게 묻기 전에 혼자서 더 많은 검색을해야했습니다 :(
다른 팁
이것이 당신의 문제인지 확실하지 않지만 다음 줄에는 닫는 태그가없는 것 같습니다.
<wsdl:types>
<xsd:element name="isAliveResponse" type="xsd:boolean">
</wsdl:types>
다음과 같아야합니다.
<wsdl:types>
<xsd:element name="isAliveResponse" type="xsd:boolean"/>
</wsdl:types>
도움이 되었기를 바랍니다.
제휴하지 않습니다 StackOverflow