この項では、Oracle Service Registryをアプリケーションと統合する方法について説明します。アプリケーションは、アプリケーション・サーバーをレジストリとしてデプロイする場合と同じコンテキストでサーブレットとしてデプロイできます。 この場合は、図5に示すように、アプリケーションのサーブレットでOracle Service Registry APIのインスタンスにアクセスできます。
図6に、Oracle Service Registry APIにアクセスする前の手順のシーケンスを示します。
Oracle Service RegistryのAPI実装は、レジストリの起動時にWASPコンテキストに登録されます。
WASPコンテキストにデプロイされたサンプル・サーブレットによって、必須のUDDIレジストリ・インタフェースをパラメータとして使用してgetInstance()メソッドがコールされ、インタフェース実装の参照が取得されます。
サンプル・サーブレットによって、Oracle Service RegistryのAPIメソッドをコールすることができます。
サンプル・サーブレットを作成およびデプロイするには、次の手順を実行します。
例4に示すように、サンプル・サーブレットのクラスを作成します。
次のように入力して、ExampeServlet.javaをコンパイルします。
javac -classpath %REGISTRY_HOME%\dist\uddiclient_api_v3.jar; %REGISTRY_HOME%\dist\uddiclient_core.jar; %REGISTRY_HOME%\lib\wasp.jar; %J2EE_HOME%\common\lib\servet-api.jar ExampleServlet.java
例5に示すように、コンパイルされたクラスおよびweb.xmlを格納するデプロイメント・パッケージ/ディレクトリを作成します。
パッケージをデプロイします。
図7に示すように、テストを行うことができます。
例4 ExampleServet.java
package com.systinet.example.servlet; import org.idoox.wasp.Context; import org.idoox.wasp.InstanceNotFoundException; import org.systinet.uddi.InvalidParameterException; import org.systinet.uddi.client.v3.UDDIException; import org.systinet.uddi.client.v3.UDDI_Inquiry_PortType; import org.systinet.uddi.client.v3.struct.*; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.PrintWriter; import java.util.Iterator; public class ExampleServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { try { String searchedBusiness = request.getParameter("sbusiness"); if (searchedBusiness == null) searchedBusiness = ""; response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println("<HTML>"); out.println("<HEAD>"); out.println("<H1>Example servlet integration with Registry</H1>"); out.println("<P>Enter the business name you wish to search"); out.println("<FORM METHOD=GET ACTION=/wasp/myexamples/>"); out.println("<INPUT NAME=sbusiness SIZE=20 VALUE=" + searchedBusiness + ">"); out.println("<INPUT TYPE=SUBMIT VALUE=Search>"); out.println("</FORM>"); // get UDDI API V3 Inquiry implementation UDDI_Inquiry_PortType inquiry = (UDDI_Inquiry_PortType) Context.getInstance(UDDI_Inquiry_PortType.class); // prepare find_business call Find_business find_business = new Find_business(); if (searchedBusiness.length() > 0) { find_business.addName(new Name(searchedBusiness)); out.println("<P>Searching business :" + searchedBusiness); // call find_business BusinessList businessList = inquiry.find_business(find_business); // process the result BusinessInfoArrayList businessInfoArrayList = businessList.getBusinessInfoArrayList(); if (businessInfoArrayList == null) { out.println("<P><B>Nothing found</B>"); } else { out.println("<P>Business <B>"+searchedBusiness+"</B> found"); for (Iterator iterator = businessInfoArrayList.iterator(); iterator.hasNext();) { BusinessInfo businessInfo = (BusinessInfo) iterator.next(); out.println("<P>Business key : <B>" + businessInfo.getBusinessKey()+"</B>"); out.println("<P><TEXTAREA ROWS=10 COLS=70>"); out.println(businessInfo.toXML()); out.println("</TEXTAREA"); } } } out.println("</HTML>"); } catch (InvalidParameterException e) { } catch (InstanceNotFoundException e) { } catch (UDDIException e) { } } }