6. 提供サービス

6.1. Webサービス

一般的なWeb サービスの概念と、それに対応したWebOTX の提供機能を紹介します。

6.1.1. Webサービスとは

Web サービスとは、広い意味で「Web の世界に存在するサービス」を指します。 例えば、自動的にメールを返信する業務アプリケーションがあったとします。 この業務アプリケーションには、配信先を登録したり、本文に相手の名前を挿入したりといったさまざまな機能が含まれているでしょう。 このように、アプリケーションは1つ1つの機能をまとめることで動作するということができます。 これらの機能を構成する要素 (コンポーネント)1つ1つをサービスと言います。

これまでも、こうした様々な場所に点在するコンポーネントを連携させるコンポーネント技術は発達してきました。 CORBA やCOM などが代表的なコンポーネント技術ですが、複数コンポーネント技術が存在することで、コンポーネント技術間の連携が面倒なものとなっていました。 もっと自由に、世界中、インターネット中に散らばっているいろいろなサービスを結び付けて、アプリケーションを作ることができたらいいのに、という考え方から生まれたのが「Web サービス」です。現在、Web サービスはコンポーネント技術の業界標準、よりオープンなビジネスソリューションを実現するための技術として捉えられ、広く普及しています。

Web サービスは、コンポーネント技術の標準を目指しているということで、データ交換の手段として最も標準的な言語仕様である「Extensible Markup Language (XML)」を採用しました。また、XML データをやり取 りするための決まりとして「Simple Object Access Protocol (SOAP)」というプロトコルが、Web サービスの インタフェースを公開するための言語仕様として「Web Service Description Language (WSDL)」が定義され、全てをXML のやり 取りで解決するコンポーネント技術として確立されています。

Web サービス XMLコンポーネント技術
図3.6.1.1-1

またJavaEE 6仕様からは、Webサービスの通信にSOAPを用いずにRESTと呼ばれるスタイルでインターネット越しのソフトウェアを利用する形態が提供されています。

6.1.2. Webサービスの基本仕様

6.1.2.1. Simple Object Access Protocol (SOAP)

SOAP は、XML 文書を交換するためのプロトコル仕様です。HTTP やSMTP などの既存のプロトコルに乗せて使う上位プロトコルです。

WebOTX はSOAP 1.1、SOAP 1.2 仕様に対応したSOAP ランタイムを提供しています。 SOAP ラインタイムは、トランスポートプロトコルとしてHTTP に対応しており、 SOAP メッセージの送受信・解析・生成をJava で行うためのAPI を提供します。

6.1.2.2. Web Services Description Language (WSDL)

WSDL は、Web サービスについての情報をXML で記述する方法を定めた仕様です。 Web サービスの名前、ロケーション、インタフェースやWeb サービスと通信する方法が記述されます。 一般的に、Web サービスを作成したときにWSDL を作成します。 Web サービスを公開する場合は、Web 上でWSDL を直接公開します。 Web サービスのクライアントは、WSDL を元に作成します。

WebOTX は、WSDL 1.1 仕様に対応しており、Java プログラムからWSDL を生成する機能、WSDL からSOAP ランタイムを使用してSOAP メッセージを送受信・解析・生成するためのJava ソースコードを生成する機能を提供します。

6.1.2.3. Web Services-Interoperability Organization Basic Profile (WS-I BP)

WS-I はWeb サービスアプリケーションの相互接続性を高めていくことを目的として設立された団体で、 そこで様々なWeb サービス技術の仕様について議論されています。 Basic Profile はSOAP、WSDLの仕様のあいまいさを取り除き、 相互接続性を高めるためにWeb サービスアプリケーションはどう作るべきかというガイドラインを定めている仕様です。

WebOTX は Java API for XML-Based RPC (JAX-RPC) ではWS-I BP 1.0 に、 Java API for XML Web Service (JAX-WS) ではWS-I BP 1.2/2.0 に対応し、WS-I BP に沿ったWeb サービスアプリケーションの作成を支援します。

Web Services-Interoperability Organization LOGO
図3.6.1.2-1

6.1.3. Jakarta EE 8 対応

6.1.3.1. Jakarta EE 8 仕様

Jakarta EE 8 に規定された次の仕様に対応した機能を提供します。

Jakarta XML RPC (JAX-RPC)

SOAP、WSDL を使ってJava 言語でRPC を実現するときに使用する標準API やWeb サービス アプリケーションの実装方法などについて定義した仕様です。

Jakarta XML Registries (JAXR)

WebXML などのXML ベースのレジストリサービスにアクセスするときに使用するJava 言語の標準API です。

Web Services for Jakarta EE (WSEE)

Jakarta EE サーバ (Web コンテナ/EJB コンテナ) でWeb サービス アプリケーションを動作させるときのWeb サービス アプリケーションの実装方法、Web サービス アプリケーションのポータビリティについて定めている仕様です。

Jakarta RESTful Web Services (JAX-RS)

JavaでRESTful Web Services実現するときに使用する標準APIについて定めている仕様です。

Jakarta JSON Processing (JSON-P)

JSON テキストを処理する標準APIについて定めている仕様です。

Jakarta JSON Binding (JSON-B)

JSON テキストと Java オブジェクト間の関連付けに使用する標準APIについて定めている仕様です。

6.1.3.2. Jakarta EE 8 以外の仕様

次の仕様に対応した機能を提供します。 以下の仕様は、Jakarta EE 8 には含まれていません。しかしJakarta EE プラットフォームの重要な仕様となります。

Jakarta SOAP with Attachments (SAAJ)

Java 言語でSOAP メッセージや添付ファイルつきのSOAP メッセージを作成したり、読み込んだりするときに使用する標準API です。

Jakarta XML Web Services (JAX-WS)

Java EE 6 から新規に追加されたWeb サービス仕様で、XML/HTTP バインディングや非同期通信を可能にします。

Jakarta XML Binding (JAXB)

Java とXML のデータバインディングのためのAPI やJava オブジェクトとXML スキーマのマッピング、相互変換を可能にする仕様です。