バックエンドAPIへのアクセス  目次

この項では、Oracle Service Registryをアプリケーションと統合する方法について説明します。アプリケーションは、アプリケーション・サーバーをレジストリとしてデプロイする場合と同じコンテキストでサーブレットとしてデプロイできます。 この場合は、図5に示すように、アプリケーションのサーブレットでOracle Service Registry APIのインスタンスにアクセスできます。

図5バックエンドRegistry APIへのアクセス: アーキテクチャ・ビュー

バックエンドRegistry APIへのアクセス: アーキテクチャ・ビュー

図6に、Oracle Service Registry APIにアクセスする前の手順のシーケンスを示します。

  1. Oracle Service RegistryのAPI実装は、レジストリの起動時にWASPコンテキストに登録されます。

  2. WASPコンテキストにデプロイされたサンプル・サーブレットによって、必須のUDDIレジストリ・インタフェースをパラメータとして使用してgetInstance()メソッドがコールされ、インタフェース実装の参照が取得されます。

  3. サンプル・サーブレットによって、Oracle Service RegistryのAPIメソッドをコールすることができます。

図6バックエンドRegistry APIへのアクセス: シーケンス図

バックエンドRegistry APIへのアクセス: シーケンス図

サンプル・サーブレットを作成およびデプロイするには、次の手順を実行します。

  1. 例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
                    

  2. 例5に示すように、コンパイルされたクラスおよびweb.xmlを格納するデプロイメント・パッケージ/ディレクトリを作成します。

  3. パッケージをデプロイします。

図7に示すように、テストを行うことができます。

図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) {
        }

    }
}
        

例5 サンプル・サーブレットのweb.xml

            <servlet>
    <servlet-name>ExampleServlet</servlet-name>
    <servlet-class>com.systinet.example.servlet.ExampleServlet</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>ExampleServlet</servlet-name>
    <url-pattern>/myexamples/*</url-pattern>
</servlet-mapping>