2012-06-15 3 views
0

JBoss 5.1.0GA를 사용하여 WebService와 Client를 개발 중입니다. JBossWs 스택에는 이미 다운로드 한 바이너리가 미리 설치되어 있으며 JBossWs 3.1.2GA를 사용하고 있습니다.Complex 객체를 인자로 사용하고 리턴 타입을 사용하여 JBossWS로 웹 서비스와 클라이언트 만들기

이 설치를 사용하여 웹 서비스를 개발했으며 클라이언트도 성공적으로 만들었습니다. 이것이 내가 가진 것입니다.

pojo 웹 서비스가 war 파일로 배포되었습니다. 여기

@WebService 
public class Service{ 
    @WebMethod 
    public CompleObj getConfiguration() { 
     CompleObj oConf = new CompleObj(); 
     for (int i = 0; i < 10; i++) { 
      NestObj oInst = new BOpRepoInstance("Val1", "Val2", "Val3", "Val4"); 
      oConf.addRepoInstance(oInst); 
     } 
     return oConf; 
    } 
} 

,

CompleObj => 유형 NestObj 목록을 갖는 복합 오브젝트이다. 그것의 getter/setters, toString 및 다른 메소드.

NextObj =>에는 유형 문자열의 4 가지 변수가 있습니다. getter/setter, toString, hashCode, equals 및 다른 메소드.

이 웹 서비스가 성공적으로 배포되었습니다.

나중에 WSDL 문서를 사용하여 웹 서비스 클라이언트를 생성하기 위해 Eclipse 마법사를 사용하여 클라이언트를 작성했습니다. 또한 webservice를 호출하고 반환 값을 가져올 샘플 클라이언트 파일을 만들었습니다. 이것은 또한 매력처럼 작동했습니다.

내 문제는 클라이언트가 생성 한 스텁을 Eclipse가 CompleObj 및 NestObj 클래스를 생성 할 때 발생합니다. 이러한 클래스에는 변수와 getter/setter 만 있습니다 (WSDL doc에서 생성되므로이 의미가 있습니다). 따라서 toString, hasCode, equals 등 클라이언트 측에서도 사용하고 싶은 다른 많은 메소드가 느슨합니다.

이제 어떻게 WebService 프로젝트에 정의 된 실제 클래스 파일을 직접 사용하고 클라이언트가 생성 된 클래스 파일을 사용하지 않도록 할 수 있습니까? 클래스 파일을 Client 프로젝트의 .jar 바이너리로 제공 할 수 있습니다. 실제로이 작업을 수행하는 방법은 없습니다.

또 다른 질문은 웹 서비스 위치가 스텁에 직접 포함되어 있습니다. 호출 코드에 인수의 일부로 webservice 위치가 전달되도록하려면 어떻게해야합니까? 당신이 서비스를 호출 때 그냥 자신의 클래스의 버전을 deserilized되지 홀더를 배치하고있는 클라이언트 측에서 생성되는

답변

0
  1. 클래스, JBOOSWS 다음 서버에 를 개체를 수행하는 데 사용됩니다 실제 클래스에 JAXB 매핑을 수행합니다. 따라서 은 자신의 클래스가 클라이언트 쪽에서 사용되도록 만들 수 없습니다. 그들은 동일하게 보입니다.

  2. 는 WS 클라이언트를 생성하는 동안

    URL 이클립스에 있기 때문에, 스텁 코드에서 수정 될 예정입니다

  3. 당신의 WSDL URL이, 그에 따라 클라이언트 코드를 생성합니다 일식되어 제공해야합니다 첫 번째 것은, 이렇게 생성 된 코드에 따라 다릅니다 귀하가 제공 한 WSDL WSDL을 동적으로 전달하려면 은 WSDLtoJAVA 또는 다른 유틸리티를 사용하여 WSDL URL을 전달하여 클라이언트 스텁을 생성하는 코드가 필요합니다.

+0

감사합니다. 위의 요점을 이해합니다.보다 정확한 내용을 원한다면 Example 웹 서비스와 클라이언트 생성을 [here] (https://community.jboss.org/wiki/JBossWS-QuickStart)에서 설명한대로 취할 수 있습니다. 이제 Customer.java 및 Discount * .java와 같은 사용자 정의 데이터 유형을 jar 파일로 패키징하는 경우 wsconsume이 새 파일 만들기 대신 해당 파일을 사용하도록하려면 어떻게해야합니까? 현재 내가하는 일은 Source가 생성 된 후에 생성 된 데이터 형식을 삭제 한 다음 Jar 파일에서 사용할 수있는 데이터 유형을 가리 키도록 가져 오기를 업데이트하는 것입니다. –

+0

제공된 유틸리티 "wsconsume"의 변경과 관련하여 wsconsume 구현을 살펴볼 필요가 있습니다. – Murugesh