この項では、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) {
}
}
}