WSIF를 사용하여 JNDI 참조를 웹 서비스에 바인드
WSIF(Web Services Invocation Framework)를 사용하여 참조를 웹 서비스에 바인드한 다음, JNDI를 사용하여 참조를 검색할 수 있습니다.
이 태스크 정보
서비스에 대한 WSDL(Web Services Description Language) 문서에 제공된 정보를 통해 웹 서비스에 액세스합니다. 서비스에 대한 WSDL 문서의 위치는 모르지만 UDDI 레지스트리에 등록된 것을 아는 경우, 레지스트리에서 이 정보를 검색할 수 있습니다. Java™ 프로그램은 Java 오브젝트 및 자원에 동일한 방식으로 액세스하지만 JNDI 인터페이스를 사용합니다.
다음 단계의 코드 단편에서는 WSIF를 사용하여 참조를 웹 서비스에 바인드한 다음, JNDI를 사용하여 참조를 검색하는 방법을 보여줍니다.
프로시저
- 웹 서비스에 대한 인수 값을 지정하십시오.
웹 서비스는 org.apache.wsif.naming.WSIFServiceRef 클래스의 인스턴스로 WSIF에 표시됩니다. 단순 참조 가능 오브젝트에는 다음의 생성자가 있습니다.
public WSIFServiceRef( String WSDL, String sNS, String sName, String ptNS, String ptName) { [...] }
다음 예제에서,- WSDL은 서비스의 정의를 포함하는 WSDL 파일의 위치입니다.
- sNS는 서비스 정의에 대한 전체 네임스페이스입니다. (WSDL 파일에 하나의 서비스만 정의되었을 경우에 null을 지정할 수 있습니다.)
- sName은 서비스 정의에 대한 로컬 이름입니다. (WSDL 파일에 하나의 서비스만 정의되었을 경우에 null을 지정할 수 있습니다.)
- ptNS는 사용하려는 서비스 내의 포트 유형에 대한 전체 네임스페이스입니다. (서비스에 대해 하나의 포트 유형만 사용 가능한 경우에 null을 지정할 수 있습니다.)
- ptName은 포트 유형에 대한 로컬 이름입니다. (서비스에 대해 하나의 포트 유형만 사용 가능한 경우에 null을 지정할 수 있습니다.)
예를 들어, 웹 서비스에 대한 WSDL 파일이 웹 주소 http://myServer/WSDL/Example.WSDL에서 사용 가능하며 다음의 서비스 및 포트 유형 정의를 포함할 경우 다음과 같습니다.
You can specify the following argument values for the WSIFServiceRef class:<definitions targetNamespace="http://hostname/namespace/example" xmlns:abc="http://hostname/namespace/abc" [...] <portType name="ExamplePT"> <operation name="exampleOp"> <input name="exampleInput" message="tns:ExampleInputMsg"/> </operation> </portType> [...] <service name="abc:ExampleService"> [...] </service> [...] </definitions>
- WSDL is http://myServer/WSDL/Example.WSDL
- sNS is http://hostname/namespace/abc
- sName is ExampleService
- ptNS is http://hostname/namespace/example
- ptName is ExamplePT
- JNDI를 사용하여 서비스를 바인드하십시오.
JNDI를 사용하여 이름 지정 디렉토리에 서비스 참조를 바인드하려면 WebSphere® Application Server에서 com.ibm.websphere.naming.JndiHelper 클래스를 사용하면 됩니다.
[...] import com.ibm.websphere.naming.JndiHelper; import org.apache.wsif.naming.*; [...] try { Context startingContext = new InitialContext(); WSIFServiceRef ref = new WSIFServiceRef("http://myServer/WSDL/Example.WSDL", "http://hostname/namespace/abc" "ExampleService", "http://hostname/namespace/example", "ExamplePT"); JndiHelper.recursiveRebind(startingContext, "myContext/mySubContext/myServiceRef", ref); } catch (NamingException e) { // Handle error. } [...]
- JNDI를 사용하여 서비스를 검색하십시오.
다음 코드 단편은 JNDI를 사용한 서비스의 검색을 보여줍니다.
[...] try { [...] InitialContext ic = new InitialContext(); WSIFService myService = (WSIFService) ic.lookup("myContext/mySubContext/myServiceRef"); [...] } catch (NamingException e) { // Handle error. } [...]
관련 개념:


http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=twsf_jndi
파일 이름:twsf_jndi.html