배경 :CXF에서 WSDL2Java의를 사용하여 웹 서비스 서버 구현을 생성
내가 이전에 경험 아파치 CXF 웹 서비스를 소비하는 작업을하지만 서비스 엔드 포인트 인터페이스 (SEI)를 생성하는 조금 새로운 오전 Apache CXF 배포판과 함께 제공되는 wsdl2java 도구를 사용하는 서비스 구현.
작업 :
나는 현재 외부 시스템에 의해 소비 될 SOAP 기반의 웹 서비스의 구현에 노력하고있다. 이미 메시지 (XSD)와 WSDL 파일을 정의했습니다. 나는 아파치 CXF에서 wsdl2java 도구를 사용하여 SEI 생성을 시도했다. SEI는 JAXB 유형을 입력 매개 변수로 올바르게 생성하고 유형을 웹 서비스 메소드에 리턴합니다.
서비스 구현 클래스에 대해 생성 된 코드를 살펴보면 javax.xml.ws.Service 클래스가 확장 된 것을 알 수 있습니다. 또한 메서드 이름에 "Soap12Http"가 추가 된 서비스 끝점 인터페이스의 메서드와 이름이 같은 많은 오버로드 된 메서드가 생성됩니다. 이러한 메소드 중 일부는 WebServiceFeature ... 기능 유형의 매개 변수를 사용하지만 다른 메소드는 매개 변수를 사용하지 않습니다. 예 :
public class Query extends Service {
@WebEndpoint(name = "product_query-soap12-http")
public IQuery getProductsSoap12Http(WebServiceFeature... features) {
return super.getPort(getProductsSoap12Http, IQuery.class,features);
}
}
* IQUERY가 서비스 엔드 포인트 인터페이스를
문제입니다 :
- 내가 대신 확장 모두 javax의 서비스 엔드 포인트 인터페이스를 구현하는 서비스 구현 클래스를 기대 하였다. xml.ws.Service. 이것은 유효한 기대입니까?
- 서비스 구현 클래스가 서비스 끝점 인터페이스에서 메서드를 구현할 것으로 예상했습니다. 이것은 유효한 기대입니까?
- 또한 wsdl2java 명령에 클래스 파일로 생성하는 대신 JAXB POJOS 용 jar 생성을 요청할 수 있는지 알고 싶습니다.
IQuery를 구현하고 웹 서비스 메서드를 정의하는 자체 클래스를 수동으로 작성해야하거나 생성 된 서비스 구현 클래스를 웹 서비스 구현으로 직접 사용해야합니까? – CKing