2008-10-15 9 views
3

Axis2 및 Eclipse에서 웹 서비스 클라이언트를 생성하고 자체 유형을 생성하는 대신 패키지에 이미있는 Java 유형을 사용할 수 있습니까? 물론 타입 A가 이미 생성되어 있고 자신이 생성 한 타입 인 경우 타입 A는 타입 A의 변수를 타입 B의 변수에 할당 할 수 없습니다.Axis2 웹 서비스 클라이언트 생성 - 클라이언트를 수정하지 않고 유형을 지정하십시오.

wsdl은 애플리케이션에 배포 된 웹 서비스에서 생성됩니다 섬기는 사람. 그것으로부터 생성 할 수 없다면 이미 존재하는 java 파일로부터 클라이언트를 생성 할 수 있습니다.

답변

3

당신이 정말로 기존 클래스를 재사용 할 경우, WSDL2Java의를 사용하여 클라이언트를 생성하지 않고 직접 Axis2는 API를 호출 할 수 있습니다. 다음은 웹 서비스를 호출하는 비교적 간단한 코드입니다. 웹 서비스 끝점, 메서드 QName, 기대되는 반환 클래스 (들) 및 서비스에 대한 인수를 채워 넣기 만하면됩니다. 기존 클래스를 반환 값 또는 인수로 다시 사용할 수 있습니다.

웹 서비스가 꽤 복잡한 경우이 접근 방식을 사용하려면 API에 대해 자세히 알아야 할 수도 있습니다.

serviceClient = new RPCServiceClient(); 
Options options = serviceClient.getOptions(); 

EndpointReference targetEPR = new EndpointReference("http://myservice"); 

options.setTo(targetEPR); 

QName methodName = new QName("ns","methodName"); 

Class<?>[] returnTypes = new Class[] { String.class }; 

Object[] args = new Object[] { "parameter" }; 

Object[] response = serviceClient.invokeBlocking(methodName, args, 
       returnTypes); 
1

wsdl에서 웹 서비스 클라이언트를 생성하고 있습니까?

wsdl2java 도구가 알고있는 유일한 정보는 wsdl의 정보이므로 이미 작성한 유형에 대해서는 알 수 없습니다.

wsdl로 유형 정보를 얻을 수 있다면 시도한 적이 없지만 제대로 작동 할 수 있습니다.

유형 A에서 유형 B로 쉽게 복사하려면 유형 A와 유형 B의 설정자와 getter가 일치하는 한 BeanUtils.copyProperties을 시도 할 수 있습니다.

0

거의 대부분의 자바 웹 서비스 프로젝트가이를 통과합니다. .NET/C# 세계가 좀 더 우아한 솔루션을 가지고 있는지 나는 모른다.

마이크가 언급했듯이 BeanUtils.copyProperties를 사용하는 것이 좋습니다.

BR,
~는

0

ServiceClient 클래스를 직접 사용하여 XML 만 사용하여 호출을 제공하고 XML 응답을 반환하는 웹 서비스를 호출 할 수 있습니다. 웹 서비스의 여러 가지 방법을 사용하려면 XML 응답을 일부 Java POJO로 변환하여 XML 응답을 사용해야한다. 마지막에는 응답 처리 만 수행하면됩니다.

웹 서비스를 호출하기 위해 다른 스텁 클래스가 필요하지 않으므로 응답 XML 만 처리하면됩니다. Castor 또는 JAXB 라이브러리를 사용하여 XML을 POJO로 변환 할 수 있습니다.

diff가 발생할 때마다 클라이언트를 수정할 필요가없는 방법입니다. 웹 서비스. 외부 적으로 응답 핸들러를 제공하는 것처럼 개발할 수 있습니다. 그래서 모든 다른 웹 서비스에 대해 diff가 있습니다. 응답 인터페이스 클래스의 구현입니다.

//common interface for response handlers... 
//implement this for diff. web service/methods 
public interface WSRespHandler{ 
    public Object getMeResp(Object respData); 
} 


//pass particular handler to client when you call some WS 
public class WebServiceClient { 
    public Object getResp(WSRespHandler respHandler) { 
     .. 

     return repHandler.getMeResp(xmlData); 
    } 
} 

참조 :

http://www.developer.com/java/web/article.php/3863416/Using-Axis2-and-Java-for-Asynchronous-Web-Service-Invocation-on-the-Client-Side.htm

http://www.devdaily.com/blog/post/java/java-web-service-client-read-array-list/

감사합니다. www.techlads.com

0

경우이 게시물은 여전히 ​​사람에 대한 사용이다

나는 클라이언트 가이드를 생성, 축 읽기 : http://axis.apache.org/axis2/java/core/docs/userguide-creatingclients.html.

Axis2 Eclipse 플러그인은 통합 모드에서 ADB 코드 생성 (http://axis.apache.org/axis2/java/core/docs/adb/adb-howto.html 참조)을 호출하여 웹 서비스 스텁에 내부 클래스를 작성하는 것으로 보입니다. 확장 모드로 생성 모드를 변경하면 (스텁 클래스에서 데이터 클래스를 생성) 만약이 가능합니다 모르겠지만, 당신은 WSDL2Java의 사용 그것을 명령 행을 수행 할 수 있습니다

%AXIS2_HOME%\bin\WSDL2Java -uri <wsdl file path> -p <package name> -u 

-u 옵션은 ADB 지시를 코드 생성기를 사용하여 스텁의 내부 클래스가 아닌 별도의 클래스로 데이터 클래스를 만듭니다.

관련 문제