Springws-quick-guide
Spring WS-概要
Spring Web Services(Spring-WS)は、Spring Communityが開発したプロジェクトの1つです。 その主な焦点は、ドキュメント駆動型のWebサービスを作成することです。 Spring Webサービスプロジェクトは、コントラクトファースト* SOAPサービス開発*を促進し、柔軟なWebサービスを作成する複数の方法を提供します。これにより、XMLペイロードを複数の方法で操作できます。
Spring Webサービスは、依存性注入や構成などのSpringの概念をシームレスに使用します。 Spring-WSにはSpring 3.0バージョンが必要です。 コントラクトファースト開発では、 WSDL Contract から始め、JAVAを使用して必要なコントラクトを実装します。
JAVAインターフェースがWSDL/XSDコントラクトを生成するコントラクトラストアプローチとは対照的。 WSDLベースのコントラクトは、コントラクトファーストアプローチのJAVA実装に依存しません。 JAVAインターフェースの変更が必要な場合、既存のWSDLコントラクトで行われた変更をWebサービスユーザーに伝える必要はありません。 Spring-WSは、WSDLコントラクトとそのJavaベースの実装との間の疎結合を提供することを目的としています。
特徴
以下は、Spring Webサービスの機能です-
- オブジェクトへのXMLマッピング-XMLベースのリクエストは、メッセージペイロード、SOAPアクションヘッダーに保存されている情報を使用して、またはXPath式を使用して、任意のオブジェクトにマッピングできます。
- * XMLを解析するための複数のAPIサポート*-着信XMLリクエストを解析するための標準JAXP API(DOM、SAX、StAX)の他に、JDOM、dom4j、XOMなどの他のライブラリもサポートされています。
- XMLをマーシャルする複数のAPIサポート-Spring Webサービスは、オブジェクト/XMLマッピングモジュールを使用して、JAXB 1および2、Castor、XMLBeans、JiBX、およびXStreamライブラリをサポートします。 オブジェクト/XMLマッピングモジュールは、非Webサービスコードでも使用できます。
- * Springベースの構成*-Spring Webサービスは、Spring Web MVCと同様のアーキテクチャを持つ構成にSpringアプリケーションコンテキストを使用します。
- 統合されたWS-Securityモジュール-WS-Securityモジュールを使用して、SOAPメッセージに署名、暗号化、復号化、または認証することができます。
- * Acegiセキュリティのサポート*-Spring WebサービスのWS-Security実装を使用すると、Acegi構成をSOAPサービスに使用できます。
建築
Spring-WSプロジェクトは、以下で説明する5つの主要なモジュールで構成されています。
- Spring-WS Core -プライマリモジュールであり、 WebServiceMessage や SoapMessage などの中央インターフェイス、サーバー側フレームワーク、強力なメッセージディスパッチ機能、およびWebサービスエンドポイントを実装するサポートクラスを提供します。 また、Webサービスコンシューマクライアントを WebServiceTemplate として提供します。
- * Spring-WSサポート*-このモジュールは、JMS、電子メールなどのサポートを提供します。
- Spring-WS Security -このモジュールは、コアWebサービスモジュールと統合されたWS-Security実装を提供します。 このモジュールを使用して、プリンシパルトークンを追加し、SOAPメッセージに署名、暗号化、および復号化できます。 このモジュールにより、既存のSpring Security実装を認証と承認に使用できます。
- Spring XML -このモジュールは、Spring WebサービスのXMLサポートクラスを提供します。 このモジュールは、Spring-WSフレームワークによって内部的に使用されます。
- Spring OXM -このモジュールは、XML対オブジェクトマッピングのサポートクラスを提供します。
Spring Web Services Architecture
Spring WS-環境設定
この章では、WindowsおよびLinuxベースのシステムでSpring-WSをセットアップするプロセスを理解します。 Spring-WSは、複雑なセットアップ手順なしでいくつかの簡単な手順に従うだけで、現在の* Java環境*および MAVEN に簡単にインストールして統合できます。 インストール中にユーザー管理が必要です。
システム要求
次の表にシステム要件を示します。その後の手順では、環境のセットアップ手順を説明します。
JDK | Java SE 2 JDK 1.5 or above |
Memory | 1 GB RAM (recommended) |
Disk Space | No minimum requirement |
Operating System Version | Windows XP or above, Linux |
Spring-WSをインストールする手順に進みましょう。
ステップ1:Javaインストールの確認
まず、システムにJava Software Development Kit(SDK)をインストールする必要があります。 これを確認するには、作業しているプラットフォームに応じて、次の2つのコマンドのいずれかを実行します。
Javaインストールが適切に行われている場合、Javaインストールの現在のバージョンと仕様が表示されます。 サンプル出力を次の表に示します。
Platform | Command | Sample Output |
---|---|---|
Windows |
Open command console and type − \> java -version a |
Javaバージョン「1.7.0_60」 Java(TM)SEランタイム環境(ビルド1.7.0_60-b19) Java Hotspot(TM)64ビットサーバーVM(ビルド24.60-b09、混合モード) |
Linux |
Open command terminal and type − $ java -version a |
Javaバージョン "1.7.0_25" JDKランタイム環境を開く(rhel-2.3.10.4.el6_4-x86_64) JDK 64ビットサーバーVMを開く(ビルド23.7-b01、混合モード) |
- このチュートリアルの読者は、システムにJava SDKバージョン1.7.0_60がインストールされていることを前提としています。
- Java SDKがない場合は、https://www.oracle.com/technetwork/java/javase/downloads/indexlから現在のバージョンをダウンロードし、インストールしてください。
ステップ2:Java環境を設定する
環境変数 JAVA_HOME を設定して、マシンにJavaがインストールされているベースディレクトリの場所を指すようにします。
S.No. | Platform & Description |
---|---|
1 |
Windows JAVA_HOMEをC:\ ProgramFiles \ java \ jdk1.7.0_60に設定します |
2 |
Linux JAVA_HOME =/usr/local/java-currentをエクスポート |
Javaコンパイラの場所の完全パスをシステムパスに追加します。
S.No. | Platform & Description |
---|---|
1 |
Windows 文字列「C:\ Program Files \ Java \ jdk1.7.0_60 \ bin」をシステム変数PATHの最後に追加します。 |
2 |
Linux PATH = $ PATH:$ JAVA_HOME/bin/をエクスポートします |
上記で説明したように、コマンドプロンプトからコマンド java -version を実行します。
ステップ3:Mavenアーカイブをダウンロードする
[[1]] 3.3.3をダウンロードします
OS | Archive name |
---|---|
Windows | apache-maven-3.3.3-bin.zip |
Linux | apache-maven-3.3.3-bin.tar.gz |
Mac | apache-maven-3.3.3-bin.tar.gz |
ステップ4:Mavenアーカイブを抽出する
Maven 3.3.3をインストールするディレクトリにアーカイブを抽出します。 サブディレクトリapache-maven-3.3.3がアーカイブから作成されます。
OS | Location (can be different based on your installation) |
---|---|
Windows | C:\Program Files\Apache Software Foundation\apache-maven-3.3.3 |
Linux | /usr/local/apache-maven |
Mac | /usr/local/apache-maven |
ステップ5:Maven環境変数を設定する
M2_HOME、M2、およびMAVEN_OPTSを環境変数に追加します。
OS | Output |
---|---|
Windows |
Set the environment variables using system properties. M2_HOME = C:\ Program Files \ Apache Software Foundation \ apache-maven-3.3.3 M2 =%M2_HOME%\ bin MAVEN_OPTS = -Xms256m -Xmx512m |
Linux |
Open command terminal and set environment variables. export M2_HOME =/usr/local/apache-maven/apache-maven-3.3.3 export M2 = $ M2_HOME/bin エクスポートMAVEN_OPTS = -Xms256m -Xmx512m |
Mac |
Open command terminal and set environment variables. export M2_HOME =/usr/local/apache-maven/apache-maven-3.3.3 export M2 = $ M2_HOME/bin エクスポートMAVEN_OPTS = -Xms256m -Xmx512m |
ステップ6:Maven binディレクトリの場所をシステムパスに追加する
次に、システムパスにM2変数を追加します。
OS | Output |
---|---|
Windows | Append the string ;%M2% to the end of the system variable, Path. |
Linux | export PATH=$M2:$PATH |
Mac | export PATH=$M2:$PATH |
ステップ7:Mavenのインストールを確認する
コンソールを開き、次の mvn コマンドを実行します。
OS | Task | Command |
---|---|---|
Windows | Open Command Console | c:\> mvn --version |
Linux | Open Command Terminal | $ mvn --version |
Mac | Open Terminal | machine:< joseph$ mvn --version |
最後に、上記のコマンドの出力を確認します。これは、次のようになります。
OS | Output |
---|---|
Windows |
Apache Maven 3.3.3 (7994120775791599e205a5524ec3e0dfe41d4a06; 2015-04-22T17:27:37+05:30) Mavenホーム:C:\ Program Files \ Apache Software Foundation \ apache-maven-3.3.3 Javaバージョン:1.7.0_75、ベンダー:Oracle Corporation Javaホーム:C:\ Program Files \ Java \ jdk1.7.0_75 \ jre デフォルトロケール:en_US、プラットフォームエンコーディング:Cp1252 |
Linux |
Apache Maven 3.3.3 (7994120775791599e205a5524ec3e0dfe41d4a06; 2015-04-22T17:27:37+05:30) Mavenホーム:/usr/local/apache-maven/apache-maven-3.3.3 Javaバージョン:1.7.0_75、ベンダー:Oracle Corporation Javaホーム:/usr/local/java-current/jdk1.7.0_75/jre |
Mac |
Apache Maven 3.3.3 (7994120775791599e205a5524ec3e0dfe41d4a06; 2015-04-22T17:27:37+05:30) Mavenホーム:/usr/local/apache-maven/apache-maven-3.3.3 Javaバージョン:1.7.0_75、ベンダー:Oracle Corporation Javaホーム:/Library/Java/Home/jdk1.7.0_75/jre |
ステップ8:Eclipse IDEのセットアップ
このチュートリアルのすべての例は、Eclipse IDEを使用して作成されています。 読者が最新バージョンのEclipseをマシンにインストールすることをお勧めします。 Eclipse IDEをインストールするには、次のリンクhttps://www.eclipse.org/downloads/から最新のEclipseバイナリをダウンロードします。 インストールがダウンロードされたら、バイナリ配布物を便利な場所に解凍します。
たとえば、Windowsの C:\ eclipse 、またはLinux/Unixの /usr/local/eclipse で、最後にPATH変数を適切に設定します。 Eclipseは、Windowsマシンで次のコマンドを実行することで開始できます。または、eclipse.exeをダブルクリックするだけです。
Eclipseは、UNIX(Solaris、Linuxなど)マシンで次のコマンドを実行することで開始できます-
正常に起動した後、すべてが正常であれば、次の画面が表示されます-
ステップ9:Apache Tomcatのセットアップ
Tomcatの最新バージョンはhttps://tomcat.apache.org/からダウンロードできます。 インストールがダウンロードされたら、バイナリ配布物を便利な場所に解凍します。 たとえば、Windowsマシンの C:\ apache-tomcat-7.0.59 、またはLinux/Unixマシンの /usr/local/apache-tomcat-7.0.59 で、* CATALINA_HOMEを設定します*インストール場所を指す環境変数。
Tomcatは、Windowsマシンで次のコマンドを実行することで起動できます。または、startup.batをダブルクリックするだけです。
TomcatはUNIX(Solaris、Linuxなど)マシンで次のコマンドを実行することで起動できます-
正常に起動した後、Tomcatに含まれるデフォルトのWebアプリケーションにアクセスするには、 http://localhost:8080/ にアクセスします。 すべてがOKであれば、それは次の画面を表示する必要があります-
Tomcatの構成と実行に関する詳細情報は、Tomcat Webサイト(https://tomcat.apache.org)だけでなく、ここに含まれるドキュメントにも記載されています。
Tomcatは、Windowsマシンで次のコマンドを実行することで停止できます-
Tomcatは、UNIX(Solaris、Linuxなど)マシンで次のコマンドを実行することで停止できます-
この最後の手順を完了すると、次の章で説明する最初のWebサービスの例に進む準備ができました。
Spring WS-最初のアプリケーション
Spring-WS Frameworkを使用して、実際のSOAPベースのWebサービスの作成を始めましょう。 Spring-WSフレームワークを使用して最初の例を書き始める前に、link:/springws/springws_environment_setup [Spring Web Services-Environment Setup]の章で説明されているように、Spring-WS環境が適切にセットアップされていることを確認する必要があります。 読者にはEclipse IDEの基本的な実用知識があることを前提としています。
したがって、HRポータルで休暇を予約するためのWebサービスメソッドを公開する簡単なSpring WSアプリケーションの作成に進みましょう。
契約優先アプローチ
Spring-WSは契約優先アプローチを使用します。つまり、JAVAベースの実装コードを記述する前に、* XML構造*を用意しておく必要があります。 サブオブジェクト– LeaveおよびEmployeeを持つLeaveRequestオブジェクトを定義しています。
以下は、必要なXML構造です-
Leave.xml
Employee.xml
LeaveRequest.xml
hr.xsd
プロジェクトを作成する
コマンドコンソールを開き、C:\ MVNディレクトリに移動して、次の mvn コマンドを実行します。
Mavenは処理を開始し、完全なJavaアプリケーションプロジェクト構造を作成します。
次に、 C:/MVN ディレクトリに移動します。 leaveService (artifactIdで指定)という名前で作成されたJavaアプリケーションプロジェクトが表示されます。 pom.xmlを更新し、HumanResourceService.javaおよびHumanResourceServiceImpl.javaをC:\ MVN \ leaveService \ src \ main \ java \ com \ finddevguides \ hr \ serviceフォルダーに追加します。 それが終わったら、LeaveEndpoint.javaをC:\ MVN \ leaveService \ src \ main \ java \ com \ finddevguides \ hr \ wsフォルダーに追加します。
pom.xml
HumanResourceService.java
HumanResourceServiceImpl.java
LeaveEndpoint.java
====/WEB-INF/spring-ws-servlet.xml
====/WEB-INF/web.xml
====/WEB-INF/hr.xsd
プロジェクトを構築する
コマンドコンソールを開き、C:\ MVN \ leaveServiceディレクトリに移動して、次の mvn コマンドを実行します。
Mavenはプロジェクトの構築を開始します。
Eclipseでプロジェクトをインポートする
以下の手順に従って、プロジェクトをEclipseにインポートします。
- Eclipseを開きます。
- *ファイル→インポート→*オプションを選択します。
- Mavenプロジェクトオプションを選択します。 [次へ]ボタンをクリックします。
- Mavenを使用して* leaveServiceプロジェクト*が作成されたプロジェクトの場所を選択します。
- [完了]ボタンをクリックします。
プロジェクトを実行する
ソースファイルと構成ファイルの作成が完了したら、アプリケーションをエクスポートします。 アプリケーションを右クリックし、[エクスポート]→[WARファイル]オプションを使用し、leaveService.warファイルをTomcatのwebappsフォルダーに保存します。
Tomcatサーバーを起動し、標準ブラウザーを使用してwebappsフォルダーから他のWebページにアクセスできることを確認します。 URL-http://localhost:8080/leaveService/leave.wsdlにアクセスしてみてください。SpringWebアプリケーションですべて問題なければ、次の画面が表示されます。
Spring WS-静的WSDL
前の章のリンク:/springws/springws_first_application [Spring -WS-First Application]では、Spring WS設定を使用してWSDLを自動的に生成しました。 この場合、Spring WSを使用して既存のWSDLを公開する方法を表示します。
Step | Description |
---|---|
1 | Create a project with a name leaveService under a package com.finddevguides as explained in the Spring WS - First Application chapter. |
2 | Create a WSDL leave.wsdl under the/WEB-INF/wsdl sub-folder. |
3 | Update spring-ws-servlet.xml under the/WEB-INF sub-folder. We are using the static-wsdl tag here instead of the dynamic-wsdl. |
4 | The final step is to create content of all source and configuration files and export the application as explained below. |
===/WEB-INF/spring-ws-servlet.xml
===/WEB-INF/spring-ws-servlet.xml
プロジェクトを実行する
ソースファイルと構成ファイルの作成が完了したら、アプリケーションをエクスポートする必要があります。 アプリケーションを右クリックして、エクスポート→WARファイルオプションを使用し、leaveService.warファイルをTomcatのwebappsフォルダーに保存します。
次に、Tomcatサーバーを起動し、標準ブラウザーを使用してwebappsフォルダーから他のWebページにアクセスできることを確認します。 URL-http://localhost:8080/leaveService/leave.wsdlにアクセスしてみてください。SpringWebアプリケーションで問題がなければ、次の画面が表示されます。
Spring WS-サーバーの作成
この章では、Spring WSを使用してWebアプリケーションサーバーを作成する方法を理解します。
Step | Description |
---|---|
1 | Create a project with a name countryService under a package com.finddevguides as explained in the Spring WS - First Application chapter. |
2 | Create countries.xsd, domain classes, CountryRepository and CountryEndPoint as explained in the following steps. |
3 | Update spring-ws-servlet.xml under the/WEB-INF sub-folder. |
4 | The final step is to create content for all the source and configuration files and export the application as explained below. |
countrys.xsd
プロジェクトを作成する
コマンドコンソールを開き、C:\ MVNディレクトリに移動して、次の mvn コマンドを実行します。
Mavenは処理を開始し、完全なJavaアプリケーションプロジェクト構造を作成します。
C:/MVNディレクトリに移動します。 countryService(artifactIdで指定)という名前で作成されたJavaアプリケーションプロジェクトが表示されます。 pom.xmlを更新します。
pom.xml
ドメインクラスを作成する
C:\ mvn \ countryService \ src \ main \ resourcesフォルダーにcountrys.xsdをコピーします。 コマンドコンソールを開き、C:\ mvn \ countryService \ src \ main \ resourcesディレクトリに移動し、以下の xjc コマンドを実行して、countries.xsdを使用してドメインクラスを生成します。
Mavenが処理を開始し、com.finddevguidesパッケージにドメインクラスを作成します。
C:\ mvn \ countryService \ src \ mainフォルダーにフォルダーjavaを作成します。 C:\ mvn \ countryService \ src \ main \ javaフォルダー内のすべてのクラスをコピーします。 CountryRepositoryとCountryEndPointを作成して、国データベースと国サーバーをそれぞれ表します。
CountryRepository.java
CountryEndPoint.java
====/WEB-INF/spring-ws-servlet.xml
====/WEB-INF/web.xml
プロジェクトを構築する
コマンドコンソールを開きましょう。 C:\ MVN \ countryServiceディレクトリに移動し、次の mvn コマンドを実行します。
Mavenはプロジェクトの構築を開始します。
プロジェクトを実行する
ソースファイルと構成ファイルを作成したら、TomcatのwebappsフォルダーにcountryService.warファイルをエクスポートします。
次に、Tomcatサーバーを起動し、標準ブラウザーを使用してwebappsフォルダーから他のWebページにアクセスできるかどうかを確認します。 URL(http://localhost:8080/countryService/)に対してPOST要求を行い、SOAPクライアントを使用して次の要求を行います。
次の結果が表示されます。
Spring WS-単体テストサーバー
この章では、Spring WSを使用して作成されたWebアプリケーションサービスを単体テストする方法を理解します。
Step | Description |
---|---|
1 | Update project countryService created in the Spring WS – Write Server chapter. Add src/test/java folder. |
2 | Create CustomerEndPointTest.java under the – src/test/java/com/finddevguides/ws folder and then update the POM.xml as detailed below. |
3 | Add spring-context.xml under the src/main/resources sub-folder. |
4 | The final step is to create content for all the source and configuration files and test the application as explained below. |
POM.xml
spring-context.xml
CustomerEndPointTest.java
プロジェクトを構築する
コマンドコンソールを開き、C:\ MVN \ countryServiceディレクトリに移動して、次のmvnコマンドを実行します。
Mavenはプロジェクトの構築とテストを開始します。
Spring WS-ライティングクライアント
この章では、Spring WSを使用して、リンク:/springws/springws_write_server [Spring WS-Writing Server]で作成されたWebアプリケーションサーバーのクライアントを作成する方法を学びます。
Step | Description |
---|---|
1 | Update the project countryService under the package com.finddevguides as explained in the Spring WS – Writing Server chapter. |
2 | Create CountryServiceClient.java under the package com.finddevguides.client and MainApp.java under the package com.finddevguides as explained in the following steps. |
CountryServiceClient.java
MainApp.java
Webサービスを開始する
Tomcatサーバーを起動し、標準ブラウザーを使用してwebappsフォルダーから他のWebページにアクセスできることを確認します。
Webサービスクライアントのテスト
Eclipseの下のアプリケーションでMainApp.javaを右クリックし、「Javaアプリケーションとして実行」コマンドを使用します。 アプリケーションで問題がなければ、次のメッセージが出力されます。
ここでは、SOAPベースのWebサービス用のクライアント- CountryServiceClient.java を作成しました。 MainAppは、CountryServiceClientを使用してWebサービスにヒットし、ポストリクエストを行い、データを取得します。
Spring WS-単体テストクライアント
この章では、link:/springws/springws_write_client [Spring WS-Writing Client]の章で作成されたWebアプリケーションサーバーのユニットテストをユニットテストする方法について説明します。 Spring WSを使用します。
Step | Description |
---|---|
1 | Update the project countryService under the package com.finddevguides as explained in the Spring WS - Writing Server chapter. |
2 | Create CountryServiceClientTest.java under the package com.finddevguides under folder SRC → Test → Java as explained in steps given below. |
CountryServiceClientTest.java
Webサービスを開始する
Tomcatサーバーを起動し、標準ブラウザーを使用してwebappsフォルダーから他のWebページにアクセスできることを確認します。
単体テストWebサービスクライアント
コマンドコンソールを開き、C:\ MVN \ countryServiceディレクトリに移動して、次のmvnコマンドを実行します。
Mavenはプロジェクトの構築とテストを開始します。