이 주제에서는 EJB 인터페이스를 사용하여 서비스를 호출하는 클라이언트를 이주하는 방법을 보여 줍니다.
- 이주된 모듈에서 새 모듈의 어셈블리 편집기로 SCA 바인딩이 있는 내보내기를
끌어서 놓으십시오. 그러면 SCA 바인딩이 있는 가져오기가 작성됩니다.
클라이언트에서
이 가져오기를 참조로 얻으려면 독립형 참조를 작성해야 합니다.
- 팔레트에서 독립형 참조 항목을 선택하십시오. 어셈블리 편집기 캔버스를
한 번 클릭하여 이 새 모듈의 새 독립형 참조를 작성하십시오.
- 연결 도구를 선택하고 서비스 참조를 클릭한 후 가져오기를 클릭하십시오.
- 일치하는 참조가 소스 노드에서 작성되었음을 경고하면 확인을 클릭하십시오.
- 다음과 같은 질문이 표시됩니다: Java 클라이언트가 이 참조와 함께 Java 인터페이스를
사용하는 것이 더 쉽습니다. WSDL 참조를 호환 가능한 Java 참조로 변환하시겠습니까?
- 클라이언트가 이 서비스를 찾고
Java™ 인터페이스를 사용하여
호출하기 위해 Java 클래스로서 캐스트하려는 경우
예로 응답하십시오.
새 Java 인터페이스에서는
WSDL PortType 이름(인터페이스 패키지가 WSDL WSDL PortType의 이름 공간에서 파생됨)을 사용합니다. WSDL PortType에 정의된 각 오퍼레이션에서 정의한 메소드가
있으며 각 WSDL 메시지 파트는 인터페이스 메소드의 인수로 표시됩니다.
- 클라이언트가 이 서비스를 찾고 호출 오퍼레이션을 일반 SCA 서비스로 사용하여
호출하기 위해 일반 com.ibm.websphere.sca.Service 인터페이스를 사용하려는
경우 아니오를 응답하십시오.
- 해당하는 경우 어셈블리 편집기에서 독립형 참조 컴포넌트를 선택하여
보다 유용한 이름으로 독립형 참조 이름을 바꾸십시오. 특성 보기, 세부사항 탭으로
이동하여 방금 작성한 참조를 끌어서 놓은 후 해당 참조를 작성하여 이름을
수정하십시오.
com.ibm.websphere.sca.ServiceManager 인스턴스의 locateService 메소드를 호출할 때 클라이언트가 이 이름을 사용해야 하기
때문에 이 참조에 대해 선택하는 이름을 기억하십시오.
- 저장을 클릭하여 어셈블리 다이어그램을 저장하십시오.
서버에서 실행 중인 이주된 EJB 모듈에 액세스하도록 클라이언트는
해당 로컬 클래스 경로에 이 새 모듈을 배치합니다.
다음은 유형 "CustomerInfo"의 서비스의 경우
클라이언트 코드의 모습을 보여줍니다.
// Create a new ServiceManager
ServiceManager serviceManager = ServiceManager.INSTANCE;
// Locate the CustomerInfo service
CustomerInfo customerInfoService = (CustomerInfo) serviceManager.locateService
("<name-of-standalone-reference-from-previous-step");
// Invoke the CustomerInfo service
System.out.println(" [getMyValue] getting customer info...");
DataObject customer = customerInfoService.getCustomerInfo(customerID);
클라이언트는 반드시 메시지 생성 방식을 변경해야
합니다.
메시지가 WSIFMessage 클래스를 기반으로 했으나 이제는
commonj.sdo.DataObject 클래스를 기반으로 해야 합니다.