Comments
Description
Transcript
Oracle9i JDeveloperによるWebサービスの構築
Oracle9i JDeveloper による Web サービスの構築 概要 Web サービスは新しいサービスであり、今も進化を続けています。そのため、Web サービスのすべてのテクノロジを理 解することは困難で、時間もかかります。さらに常に新しい技術を受け入れる柔軟性と、今までの知識を基にテクノロジ を再構成する能力が要求されます。このような状況で、開発者は Web サービスに対してどのようなアプローチをとれば 良いのでしょうか。また、経験のある開発者は、開発、デバッグ、デプロイといった開発ライフサイクルの効率化のため に何をすれば良いのでしょうか。 本書では、これらの疑問に対する解答を提供していきます。Web サービス構築の基礎を次の手順に沿って見ていきます。 • Web サービスのモデリング • EJB に基づいた Web サービス構築 • EJB Web サービスの公開 • Web サービスの Oracle9iAS および Apache SOAP へのデプロイ • WSDL での作業 • Web サービス・クライアントの構築 • サード・パーティ Web サービスの組込み Web サービスの開発、デバッグ、デプロイにおける生産性を最大限に引き出すために Oracle9i JDeveloper は、統合された Java、XML および Web サービス開発環境を提供します。 Web サービス概要 Web サービスは、インタフェースが正しく記述された形で公開されているインターネット・アプリケーションで、どの ような言語で作業をするアプリケーション開発者でも簡単に呼び出し使用することができます。Web サービスをアプリ ケーションとして公開するために使用される標準仕様には、次のようなものがあります。 • Simple Object Access Protocol(SOAP):Web サービスを呼び出すために使用されるプロトコル。 • Web Services Description Language(WSDL):Web サービスのインタフェースを定義する記述子。 • Universal Description, Discovery and Integration(UDDI):Web サービスの位置が特定できるレジストリ。 Java RMI (Remote Method Invocation)、Oracle Net(Oracle9i Database ネットワーク・プロトコル)、DCOM (Microsoft 社の分散型コンポーネント・モデル・プロトコル) などのような、内部に焦点を合わせたプロトコルと比較すると、こ れらの標準は、よりインターネット準拠で、インターネットでの分散プログラミング・コールを容易にします。 Web サービス・アプリケーションで実行されるビジネス・ロジックは、Java や PL/SQL などあらゆる言語で構築できます。 実際、モデリング、プログラミング、セキュリティおよび基礎となるコンポーネント・モデルなどの開発サイクルは、 Web サービスでもほとんど変更されることはありません。変更される点は、Web サービスの記述(WSDL)、アクセス (SOAP)、公開(UDDI)のための手順が追加されることです。図 1 は、Web サービスの概要を示します。 図 1:SOAP、WSDL、UDDI による Web サービス Web サービスは、新しいコンセプトとして宣伝されていますが、実際、概念上は J2EE、CORBA および DCOM のような、 他の分散プログラミング・モデルに非常によく似ています。ただし、重要な相違点は、Web サービスで標準化している 部分は、基礎アプリケーションを記述するための、アプリケーション実装の最上部にあたる XML メタデータの記述方法 に過ぎないということです。つまり、ビジネス・ロジックやプロセスの開発方法を規定したのではなく、単に XML の記 述方法を規定したに過ぎません。 CORBA と比較するとすれば、インタフェース定義言語(IDL)にあたるのが、Web サービスでは WSDL となります。い ずれも、ビジネス・ロジックによって実装されるサービスおよびクライアントがビジネス・ロジックを呼び出す際に必要 となるインタフェースを記述します。これは単なるインタフェースであり、アプリケーション・ロジックまたはプロセス を実装したものではありません。CORBA のリモート起動プロトコルは Internet Inter-ORB Protocol(IIOP)と呼ばれ、概 念上、SOAP に類似しています。どちらも、引数のマーシャリングとアンマーシャリングの方法を提供します。SOAP の 場合、基礎となるマーシャリング言語は XML です。CORBA はネーミング・サービス(CosNaming)と Interoperable Object References(IOR)で、個々の CORBA オブジェクトを参照する手段を提供しますが、Web サービスの WSDL と UDDI の 組合せは、これに類似した手段を提供します。 Web サービスで革新的な点は、特にインターネット上で HTTP などのプロトコルを使って、分散コンポーネント・モデ ルのプログラムが、より簡単に対話ができるようにしたことです。初期段階で、簡潔さと相互運用性に焦点を絞ることで、 Web サービスは業界に認められ、採用され、改革をもたらしました。 興味深いことに、単純な Web サービスは既にポピュラーな開発アプローチとなってきており、最近は複合 Web サービス の領域が興味を集め、注目されています。複合 Web サービスでは、SOAP、WSDL および UDDI は基盤の標準となり、長 期実行中のトランザクション、非同期相互作用、認証、暗号化、および否認防止のための要件を持つ、さらに高レベルの ビジネス・プロセスになっています。以前はこの領域では、複合ビジネス・プロセスの導入には多くの実装作業が必要で したが、Oracle のような Web サービス・ベンダーでは、E-Business Suite 製品から得た実際のビジネス・プロセス知識、 ebXML (Electronic Business XML)および RosettaNet の知識と標準技術を活用しています。 Web サービスの構築 要件 Java 開発者は、Web サービスにどのように対応しているのでしょう。Oracle では、Web サービスは既存の J2EE 開発アプ ローチとの相乗効果を持ち、互いに補完しあうものと考えています。Web サービスは、Java Community Process(JCP)の 定める J2EE 1.4 および Java Specification Request 109(JSR109)を使用する J2EE プラットフォームの一般的な拡張機能で す。Web サービス開発者は、これを考慮しながら企業の J2EE 開発者の要件を満たす開発環境を選択する必要があります。 開発ツールは、モデリング、ソフトウェア構成管理、迅速なアプリケーション開発(RAD)、デバッグ、パフォーマン スのチューニングとテストをサポートする必要があります。 Web サービスを利用するには、Web サービスの公開(publishing)と利用(consuming)、Web サービスの位置を特定(locating) し、サービス内容を特定(introspecting)、そして Web サービスを構成(composing)としたあと、複数の Web サービス を組み合せて調和をとる(orchestrating)といった要件が開発環境に対して求められます。生産性を高めるためには、こ れらの要件は、バラバラで統合されていないツールを掻き集めるのではなく、標準の開発環境ですべての機能を実現する 必要があります。これが、まさしく Oracle9i JDeveloper のビジョンです。Oracle9i JDeveloper は、完全に Java で記述され た Java IDE(統合開発環境)です。そのため、Windows、Solaris、Linux といった Java の稼動するプラットフォーム上で 使用できます。Oracle9i JDeveloper は、J2EE 開発のためのエンタープライズな機能のすべてを実装していますが、さらに、 製品を通じて J2EE の強力な機能を Web サービス機能と組み合せて利用できます。 Oracle9i JDeveloper による Web サービスの構築 Web サービスのモデリング Oracle9i JDeveloper では、UML モデラーが提供されており、開発者はこれを使用してビジネス・アプリケーションを視覚 的に記述することができます。クラス・モデラーではビジネス・オブジェクト間の関係が記述され、アクティビティ・モ デラーではビジネス・プロセスが記述されます。Web サービスの開発において、Web サービスの連携を図式化するため にアクティビティ・モデラーを利用し、各 Web サービスの実装についてはクラス・モデラーを利用できます。 図 2 は、Oracle9i JDeveloper アクティビティ・モデラーで表現された Web サービス・シナリオの例を示します。このシナ リオでは、次の 3 つの Web サービス・プロセスを連携させています。Trip Planning Service、Trip Costing Service および Trip Booking Service です。この段階では、各プロセスのアクティビティの中身(コード)は何もできてい ません。本書の後の部分では、この各プロセスを J2EE Web サービスとして実装する方法について説明します。 図 2:Oracle9i JDeveloper アクティビティ・モデラーでの Web サービスのモデリング EJB に基づいた Web サービス構築 Oracle9i JDeveloper を用いた Web サービスの構築を、標準 Enterprise JavaBean で開始することができます。ステートレス またはステートフルな Session EJB、または Bean 管理もしくはコンテナ管理の Entity EJB、そして Message-Driven Bean と いった様々な Enterprise JavaBean、または通常の Java クラスを選択することができます。たとえば、図 2 のアクティビ ティ・モデルにある Plan Trip アクティビティを実装する場合、図 3 に示すように、TravelSearchEJB と呼ばれるステー トレス Session EJB として実装することができます。手順を簡潔にするため、この EJB では公開メソッドを findFlight だけにしています。このメソッドによって出発地空港と目的地空港を含めたフライトの一覧が返されます。 図 3:Oracle9i JDeveloper による EJB の構築 リスト 1 に、findFlight メソッドの実装コードを示します。このコードには、出発地空港と目的地空港をパラメータ として取得する SQL 文を介し、TRAVEL データベース・スキーマからフライト名を検索する手順が表示されています。 このコードは、J2EE 開発者が容易に構築できる典型的な Java コードです。 public String[] findFlight(String origin,String dest) throws RemoteException { String[] flights = new String[5]; String SQL = "select flight.air_code, flight.flight_number, fare.standard_price," + "to_char(departure.departure_date, 'Mon DD, RRRR'), " + "departure.departure_time " + "from flight_routes flight, fare_schedules fare,flight_departures departure " + "where origin_arp_code = ? " + "and dest_arp_code = ? and departure.flr_id = flight.route_id " + "and flight.route_id = fare.flr_id " + "and (sysdate < departure.departure_date) " + "order by departure.departure_date asc"; try { conn = getConnection(dsName); ps = conn.prepareStatement(SQL); ps.setString(1, origin); ps.setString(2, dest); ps.executeQuery(); ResultSet rs = ps.getResultSet(); int i =0; while ((rs.next()) && (i < 5)) { flights [i] = new String(rs.getString(1)+" "+ rs.getString(2)+ "/"+rs.getString(4)+ " / $"+rs.getString(3)); i++; } } catch (SQLException e) { throw new RemoteException(e.getMessage()); } finally { try { ps.close(); } catch (Exception e) {} try { conn.close(); } catch (Exception e) {} } return flights; } リスト 1:findFlight EJB メソッドの実装 開発する Java アプリケーションのタイプによって、次のように様々な J2EE アーカイブ・デプロイメント・オプション(配 布オプション)を使用することができます。EJB 用の Enterprise JavaBean JAR ファイル、Web アプリケーション用 Web アーカイブ・ファイル、およびシンプルな Java クラス用の通常の JAR ファイルなどが選択可能です。Oracle9i JDeveloper では、J2EE デプロイメント・ディスクリプタ(記述子)を構成するためのグラフィカルなツールが提供され、実際の配 布プロセスをマウスのワン・クリックでおこなうことができます。 このポイント&クリックの配布方法は、Oracle9iAS Containers for J2EE(OC4J)、および BEA Weblogic に対して使用でき ます。図 4 は、Oracle9i JDeveloper で使用できるデプロイメント・オプションを示し、図 5 は、構築した TravelSearchEJB に対して Enterprise JavaBeans としてデプロイする方法を示しています。 図 4:Oracle9i JDeveloper J2EE デプロイメント・オプション 図 5:Oracle9i JDeveloper からのワン・クリックの EJB デプロイメント EJB Web サービスの公開 Oracle9i JDeveloper での Web サービスの公開は、Web サービス・ツールを実行するだけで簡単におこなえます。EJB リモー ト・インタフェースの、どの機能の使用を許可するかは、Web サービスとして公開するメソッドを選択するだけで定義 できます。Oracle9i JDeveloper では、JCP の J2EE 1.4 または JSR 109 に対する仕様に基づいて、Oracle9i Application Server 用の J2EE Web サービスの公開がサポートされます。また、Apache SOAP インフラストラクチャを使用した Web サービ スもサポートされます。一般に、TravelSearchEJB を Web サービスとして公開するには、図 6 から図 9 に示す手順を 実行します。 図 6:Web サービス・ツールの選択 図 7:リモート EJB インタフェースの選択と URI 識別子の設定 (デプロイメント・プラットフォームには、Oracle9i Application Server Web サービス(J2EE 1.4/JSR 109 ベース)と、Apache SOAP 2.2 から選択できます。) 図 8:Web サービスとして公開するメソッドの選択 図 9:Web サービスの WSDL ファイルの生成 Web サービスをデプロイするには、実際にデプロイする前に Web サービス公開ウィザードによって収集されたメタデー タをパッケージングする必要があります。そのため、Web サービスを Oracle9iAS Containers for J2EE(OC4J)で公開する 場合は、そのメタデータを J2EE 標準の web.xml ファイルとしてパッケージングし、標準 WAR ファイルとしてデプロ イします。この web.xml ファイルによって、サーブレットが構成されます(サーブレットはデプロイの実行中に自動的 に生成されます)。これに対して入力された SOAP メッセージは基となる EJB へのコールに変換され、出力結果は SOAP メッセージ内にセットされ、返されます1。WAR デプロイメント・プロセスは図 10 に示すとおり、ワン・クリックです。 1 Oracle9iAS Web サービスでは、SOAP メッセージのマーシャリングとアンマーシャリングのために、各 Enterprise JavaBean に対して、それぞれ個別にサー ブレットが自動生成されます。 図 10:Oracle9iAS Containers for J2EE へワン・クリックで Web サービスをデプロイ Apache SOAP が選択された場合、Oracle9i JDeveloper の Web サービス公開ウィザードにより、Web サービスを Apache SOAP で登録するために必要となるデプロイメント・ディスクリプタが生成されます。Oracle9iAS Web サービスとは異なり、 Apache SOAP では、生成されたひとつのサーブレットを使用して SOAP メッセージが処理されるため、各 SOAP サービ スのコンポーネントをマップするための記述子が必要となります。図 11 には、TravelSearchEJB のために自動生成さ れた SOAP 記述子の Apache SOAP サーバーの登録の様子が示されています。 図 11: Apache SOAP へワン・クリックで Web サービスをデプロイ いずれの場合も、開発者は Web サービス公開ウィザードを起動し、Web サービスとして公開する Enterprise JavaBean と、 そのメソッドを選択し、最後にワン・クリックで Web サービス・インフラストラクチャにデプロイします。この簡単な 公開プロセスによって、開発者は Web サービス・プラットフォームの差異を気にすることなく、アプリケーション開発 に集中することができます。 WSDL での作業 Web サービスが公開されると、通常の次のような手順で Web サービスを呼び出すためのクライアントが構築できます。 Oracle9i JDeveloper のような標準的な開発ツールでは、Web サービス記述言語(Web Service Description Language:WSDL) により、クライアントを自動作成することが可能です。Oracle9i JDeveloper では、WSDL ファイルを用いてクライアント・ スタブを自動生成することができます。このクライアント・スタブによって、Web サービス実装で必要な SOAP メッセー ジのマーシャリングとアンマーシャリングが可能になります。 問題は、WSDL ファイルがどこにあるのか見つける方法です。WSDL ファイルを取得できる標準的な場所は多数存在し ます。既存の Web サービスの場合、XMethods (http://www.xmethods.com/)および SalCentral (http://www.salcentral.com/) のような、ポピュラーな Web サービス・レジストリを検索することになります。このようなサイトでは、公的に利用可 能な Web サービスとそれに対応する WSDL ファイルを URL のリストとして公開しています。さらに、最近では Web サー ビス・リストを UDDI で照会できます。Web サービス・インフラストラクチャがすでに設定されている場合、内部 UDDI レジストリによって WSDL ファイルの場所を特定できます。たとえば、Oracle9i Application Server には、UDDI レジスト リが Web サービスの機能として含まれています。 本書で説明した TravelSearchEJB の例のように、J2EE アプリケーションに対して Oracle9i JDeveloper Web サービス公開 ウィザードによって WSDL ファイルが自動生成できます。図 12 では、本書で作成したサンプルの Enterprise JavaBean 用 に生成された WSDL が示されています。 図 12:Oracle9i JDeveloper Web サービス・ツールによって生成された WSDL の編集 Oracle9i Application Server にデプロイされた Web サービスでは、WSDL を取得するために追加オプションを使用できます。 Web サービス・デプロイメント中に自動生成されたサーブレットで WSDL 引数が受け取られ、必要に応じて WSDL が作 成されます。 たとえば、TravelSearchEJB Web サービスでは、次の URL から WSDL を取得できます。 http://localhost:8888/Travel-context-root/ws.TravelSearchEJB?WSDL これは、Oracle9i JDeveloper の外で、スタンドアロンで実行される Web サービス実行環境にアクセスするような開発者に とって有用です。 開発者は、実装前の Web サービス定義プロセスの一部として、WSDL ファイルを調整したり、複合パラメータを処理し たりする場合があります。Oracle9i JDeveloper では、スキーマ・ドリブンの XML エディタおよび WSDL 作成ツールが提 供されており、WSDL ファイルの作成と編集を容易に行うことができます。エディタでドキュメントの編集中にコード・ インサイトを利用するために、XML Schema を登録することもできます。 図 12 では、TravelSearchEJB Web サービス WSDL ファイルの他に、Oracle9i JDeveloper の構造ペインに表示される XML 文書構造とプロパティ・インスペクタ内に表示される XML のプロパティ情報、そしてコード・インサイトが作動 して WSDL ファイルを編集している様子が示されています。 図 13 では、Oracle9i JDeveloper でのスキーマ登録の際、使用する画面が示されています。デフォルトでは、WSDL のス キーマおよび他の一般的な XML Schema が事前に登録されています。 図 13:スキーマ・ドリブン・エディタの構成 Web サービス・クライアントの構築 この開発シナリオで、TravelSearchEJB Web サービスを利用しようとしている開発者が次におこなうべきことは Web サービス・クライアントの構築でしょう。重要な点は、これらの開発者にとって、Web サービスそのものの実装につい ての知識は必要ないことです。単に WSDL ファイルがあれば、それを基に正しい SOAP メッセージを構成して Web サー ビスを起動することができます。開発者は、Oracle9i JDeveloper から生成された WSDL ファイルを直接使用するか、 Xmethods または SalCentral などのサイトから WSDL ファイルを取得するか、Oracle9i Application Server のような UDDI レジストリを照会して WSDL ファイルの位置を確認することにより、クライアントを構築する準備をします。 Oracle9i JDeveloper では、WSDL から直接 Web サービス・クライアントを作成するプロセスが自動化されます。図 14 か ら図 16 では、Web サービス・スタブ/スケルトン・ツールの様子が示されています。 図 14:Web サービス・スタブ/スケルトン・ツールの選択 図 15:アクセスするサービスのための WSDL ファイル位置の定義 図 16:Web サービス・クライアントのためのメソッドの選択 Web サービス・スタブ/スケルトン・ウィザードから生成されるスタブは、シンプルな Java のクラスであり、Web サービ ス実装についての情報を持たずに、Web サービスからの SOAP メッセージのマーシャリングおよびアンマーシャリング を行います。本書の例では、TravelSearchEJB EJB の findFlight メソッドによって、出発地の空港と目的地の空港 をパラメータとして含む文字列パラメータが受け取られ、これにマッチするフライトのリストが返されます。Web サー ビス・クライアント、つまりスタブにより、入力された Java のパラメータが SOAP メッセージに変換されて Web サービ スに送信され、Web サービス上では SOAP メッセージを基に、Java の処理がおこなわれます。リスト 2 には、WSDL ファ イルから生成された Java スタブが表示されています。 package ws; import oracle.soap.transport.http.OracleSOAPHTTPConnection; import java.net.URL; import org.apache.soap.Constants; import org.apache.soap.Fault; import org.apache.soap.SOAPException; import org.apache.soap.rpc.Call; import org.apache.soap.rpc.Parameter; import org.apache.soap.rpc.Response; import java.util.Vector; import java.util.Properties; public class TravelSearchEJBStub { public String endpoint = "http://localhost:8888/soap/servlet/soaprouter"; private OracleSOAPHTTPConnection m_httpConnection = null; public TravelSearchEJBStub() { m_httpConnection = new OracleSOAPHTTPConnection(); } public String[] findFlight(String origin, String dest) throws Exception { String[] returnVal = null; URL endpointURL = new URL(endpoint); Call call = new Call(); call.setSOAPTransport(m_httpConnection); call.setTargetObjectURI("urn:ws.TravelSearchEJB"); call.setMethodName("findFlight"); call.setEncodingStyleURI(Constants.NS_URI_SOAP_ENC); Vector params = new Vector(); params.addElement(new Parameter("origin", String.class, origin, null)); params.addElement(new Parameter("dest", String.class, dest, null)); call.setParams(params); Response response = call.invoke(endpointURL, ""); if (!response.generatedFault()) { Parameter result = response.getReturnValue(); returnVal = (String[])result.getValue(); } else { Fault fault = response.getFault(); throw new SOAPException(fault.getFaultCode(), fault.getFaultString()); } return returnVal; } public void setMaintainSession(boolean maintainSession) { m_httpConnection.setMaintainSession(maintainSession); } public boolean getMaintainSession() { return m_httpConnection.getMaintainSession(); } public void setTransportProperties(Properties props){ m_httpConnection.setProperties(props); } public Properties getTransportProperties() { return m_httpConnection.getProperties(); } } リスト 2:Oracle9i JDeveloper により WSDL から自動生成された SOAP クライアント・スタブ 開発者は、この Web サービス・スタブ・コードの保守をおこなう必要はありません。図 17 に示すように、WSDL ファイ ルが更新された場合、Oracle9i JDeveloper では Web サービス・スタブをマウスの右クリックで簡単に再生成できます。 また、Oracle9i Application Server にデプロイされた Web サービスでは、スタブを取得するために追加オプションを使用で きます。Oracle9i Application Server の Web サービスのデプロイメント中に自動生成されたサーブレットで proxy_source 引数が受け取られ、必要に応じて Java スタブが作成されます。 たとえば、TravelSearchEJB Web サービスでは、次の URL から Java スタブを取得できます。 http://localhost:8888/Travel-context-root/TravelSearchEJB?proxy_source この 2 番目の方法は、Oracle9i JDeveloper で生成されたスタブに依存しない形でアクセスしたい開発者にとって便利な方 法です。 図 17:SOAP サービス・スタブのワン・クリックでの再生成 この TravelSearchEJB Web サービスのスタブを、アプリケーション内から呼び出すことができれば、JavaServer Page、 および Enterprise JavaBean の作成が最終段階になります。図 18 では、スタブの呼出しが示され、TravelSearchEJB Web サービスを呼び出すために JSP スクリプトレットを書き込む際の Oracle9i JDeveloper コード・インサイトが表示されてい ます。 図 18:Oracle9i JDeveloper での Web サービス呼び出す際の JavaServer Page のコード・インサイト このクライアント構築において Web サービスの結果は、通常のアプリケーション(ここでは JavaServer Page)と同様に 表示されます。図 19 では、Web サービスの結果を返す、完成されたクライアントが示されています。通常のアプリケー ションとの相違点は、次の 2 つです。 1. Web サービスそのものが Enterprise JavaBean として実装されていても、クライアントは SOAP メッセージを使 用して、HTTP を介して Web サービスと対話しています。Enterprise JavaBean は、ファイアウォールの内側で も外側でも、どちらにあっても構いません。 2. Web サービスとして Enterprise JavaBean を公開、そして利用するための開発環境は、従来の J2EE IDE を自然 に拡張した形で実現されています。 図 19:Web サービス・クライアントとしての JavaServer Page の実行 サード・パーティ Web サービスの組込み 図 2 のアクティビティ・モデルで示したシナリオに戻ると、Trip Planning プロセスのみが実装されています。アク ティビティとして表現されていた Enterprise Java Bean である TravelSearchEJB は、Web サービスとして公開され、こ れを起動するための Web サービス・クライアントも構築されました。次の手順では、この実装を後続の Trip Costing プロセスと統合します。 この場合、Trip Costing プロセスは単純な通貨換算アクティビティとして実装されます。通貨換算を専門的に行う外 部 Web サービスを使用し、それをアプリケーション・フローに組み込むことで、時間と労力を節約することができます。 今や、インターネット上で Web サービスとして公開された複数の通貨換算サービスが存在します。図 20 および図 21 で は、このようなサービスが XMethods のような Web サイトで公開されている様子を表しています。 図 20:Web サイト Xmethods 上の通貨換算サービス 図 21:通貨換算サービス用の WSDL 通貨換算の Web サービスを、トラベル・アプリケーション全体に組み込む手順は、非常に簡単です。 1. XMethods サイトからの WSDL を使用して、Web サービスのスタブを作成します。 2. 通貨換算スタブを既存のアプリケーションに取り込みます。 図 22 から図 23 には、Oracle9i JDeveloper で Web サービス・スタブ/スケルトン・ウィザードを使用した Web サービス・ クライアントの構築手順が示されています。 図 22:通貨換算 WSDL の URL の定義 図 23:Web サービスの通貨換算用メソッドの機能を WSDL から指定 次に、TravelSearchEJB の例と同様に、通貨換算 Web サービスへの呼出しを JavaServer Page、または他の任意の J2EE コンポーネントに組み込むことができます。図 23 では、通貨換算 Web サービスの呼出しを JavaServer Page で設定してい ます。図 24 には、TravelSearchEJB Web サービスと通貨換算 Web サービスの両方を組み合せた JavaServer Page の実 行の様子が示されています。 図 24:通貨換算 Web サービスのトラベル Web サービス JavaServer Page への追加 図 25:統合されたトラベル・サービスと通貨換算 Web サービスの実行 Web サービスの他の選択肢 開発者が、Web サービスのための最も生産的で使いやすい開発パラダイムおよび最適なビジネス・ロジックを選択でき るよう、Oracle9i JDeveloper では、J2EE フレームワークを用いて開発された EJB、Business Components for Java(BC4J)、 PL/SQL でプログラムされたストアド・プロシージャを Web サービスとして公開することができます。 Business Components for Java(BC4J)は、Oracle が長年蓄積した数々のデータアクセスに関わるノウハウから作成された J2EE フレームワークであり、開発者はこれを使用して、迅速に、高品質かつパフォーマンスに優れた J2EE アプリケーショ ンを構築することができます。これによって、オブジェクト/リレーショナル・マッピング、ビジネス・ロジックおよび XML、JSP、Swing クライアント用のプレゼンテーション層に利用できるテンプレートが提供されます。フレームワーク で開発されたコンポーネントは、粗粒度のビジネス・オブジェクトで、ローカル・オブジェクトとして使用することも Enterprise JavaBeans としてデプロイすることも可能です。本書で説明したツールを使用することで BC4J もまた Web サー ビスとして公開することができます。 Oracle データベースを使用している多くのビジネスでは、PL/SQL に多大な投資がされており、Web サービスが新しい顧 客に対するそれら PL/SQL 資産の活用方法として検討されています。Oracle9i JDeveloper では、PL/SQL 開発者のために、 PL/SQL の開発とデバッグ環境が提供されています。ストアド・プロシージャを Web サービスとして公開するための支援 として、Oracle9i JDeveloper には、Java クラスを用いて任意の PL/SQL ストアド・プロシージャをラップすることができ る、JPublisher というユーティリティが組み込まれています。Java クラスとしてラップされると、本書で説明した Oracle9i JDeveloper Web サービス・ツールを使用することで、PL/SQL ストアド・プロシージャを Web サービスとして公開するこ とが可能になります。 まとめ 本書では、Oracle9i JDeveloper の強力な Web サービス機能の概要を説明しました。開発者は UML モデルから Web サービ スを作成し、Java およびデータベース・アプリケーションを Web サービスとして簡単に公開し、迅速に Web サービス・ クライアントを構築することができます。さらに、モデリング、プロファイリング、ソフトウェア構成管理、デバッグと いった Oracle9i JDeveloper の全機能が Java、 XML、PL/SQL で作成した Web サービスに対しても利用することができます。 これらの幅広い Web サービスに対する機能によって、Oracle9i JDeveloper は、Web サービスを完全に統合された形で実装 し、アプリケーションの開発ライフサイクル全体をカバーする、Web サービス市場における数少ない Java IDE の 1 つと なっています。 Oracle9i JDeveloper による Web サービスの構築 2002 年 1 月 Oracle Corporation World Headquarters 500 Oracle Parkway Redwood Shores, CA 94065 U.S.A 海外からのお問合せ窓口: 電話: +1.650.506.7000 ファックス: +1.650.506.7200 www.oracle.com オラクル社は、インターネット上での活動を強化するソフトウェアを提供します。 Oracle はオラクル社の登録商標です。 このガイドで使用されているさまざまな製品名およびサービス名には、オラクル社の商標が含まれています。 その他のすべての製品名およびサービス名は、各社の商標です。 Copyright © 2000 Oracle Corporation All rights reserved.