JAXWSJBossJa

http://wiki.netbeans.org/wiki/attach/JAXWSJBoss/ejbservice.png

JBoss 4.0.4 上の JAX-WS Web サービスとクライアントを作るにはどうしたらいいですか


JBoss Application Server (AS) 4.0.3 は EJB 3.0 プログラミングモデルを導入しましたので、 いまは JBoss 上で JAX-WS Web サービスを作成し利用することが可能です。 Netbeans 5.5 は、JBoss 4 上では JAX-WS Web サービスをサポートしません。 しかし、この手引きでは、回避策を利用して作成・配備を行い、 Web サービスクライアントを作成・利用する方法を示します。 JBoss 上での EJB3 と JAX-WS サポートに関するさらなる情報が必要であれば、 ここ を参照してください。

筋書きに必要なソフトウェア:


始める前に、あなたのコンピュータ上に次のソフトウエアをインストールする必要があります:

  • NetBeans IDE 5.5 (開発版) ダウンロード
  • Java 標準開発キット (JDK) 5.0 版 ダウンロードサーバや IDE に JDK 1.6 を使用しないでください - JBoss はまだそれをサポートしていません!
  • JBoss Application Server 4.0.4 版 (カスタムインストールとしてインストールし、インストール形態として "ejb3" を選択します) ダウンロード




Contents





Web モジュール内に Web サービスとクライアントを作成する



NetBeans 5.5 は JBoss 上では JAX-RPC Web サービスだけをサポートします。 JAX-WS はサポートされていませんが、JBoss 4.0.4 ではこれを行う方法があります。 JBoss 4.0.4 では EJB3 サポートだけが実装されています。 既定では、JBoss 上では JavaEE 5 Web モジュールを作成できません。 しかし、例えば Tomcat 用のモジュールを作成できますので、 後で「プロパティー」|「実行」でサーバーを変更すれば動くでしょう。

Web モジュール内に Web サービスを作成する


  • 「ファイル」>「新規プロジェクト (Ctrl-Shift-N)」を選択します。「Web」カテゴリから「Web モジュール」を選択します。プロジェクトの名前を WSWebModule としましょう。
  • 「JBoss Application Server 4」をコンボボックスから選択し、「ソースレベルを 1.4 に設定」チェックボックスを外します。
  • プロパティー > ライブラリ に移動し、ライブラリを追加... をクリックします。
  • JAX-WS ライブラリを選択し、ライブラリを追加 をクリックしてライブラリビューに戻り パッケージ のチェックをは外します。
  • WSWebModule ノードを右クリックして、「新規」>「Java クラス」を選択します。
  • クラス名を JBossWebWS とします。
  • パッケージorg.me.wss を入力し、「完了」をクリックします。
  • エディタに行くと、JBossWebWS.java が開いているはずですので、 public class JBossWebWS の上に注釈 @WebService を書きます。
  • web.xml を開き、listener 節を削除し、<servlet-class> タグの値を org.me.JBossWebWS に変えます。

プロジェクトウィンドウ内に Web サービスノードがありますが、それは空でしょう。

http://wiki.netbeans.org/wiki/attach/JAXWSJBoss/webws.png


バンドルされている Tomcat を通す別の方法もあります :

  • 「ファイル」>「新規プロジェクト (Ctrl-Shift-N)」を選択します。「Web」カテゴリから「Web モジュール」を選択します。プロジェクトの名前を WSWebModule としましょう。
  • 「バンドル版 Tomcat(5.5.17)」をコンボボックスから選択し、「ソースレベルを 1.4 に設定」チェックボックスを外します。
  • WSWebModule ノードを右クリックして、「新規」>「Web サービス」を選択します。
  • Web サービス名を JBossWebWS とします。
  • パッケージorg.me.wss を入力し、「完了」をクリックします。


http://wiki.netbeans.org/wiki/attach/JAXWSJBoss/service.png

  • WSWebModule ノードを右クリックして、「プロパティー」を選択します。
  • 「実行」を選択してサーバーを「バンドル版 Tomcat」から「JBoss Application Server 4」に変更します。
  • ライブラリを選択して JAX-WS 2.0 チェックボックスを外します。「了解」をクリックします。





JBoss 上に Web サービスを配備


さて、Web サービスは出来ましたが、配備する準備はまだ出来ていません。Web サービスは既定で空で作成され、配備するには、サービス内に最低でも一つの操作を作成しなければなりません。

  • エディタに行くと、JBossWebWS.java が開いているでしょう。
  • サービス本体の内側を右クリックし、Web サービス|オペレーションを追加 を選択します。
  • 次のウインドウで "operation" を "greet" に変更し、「追加」をクリックし、s を「名前」に書いて両方のウインドウで「了解」をクリックします。
  • ここで操作はこんな感じです:
/**
     * Web service operation
     */
    @WebMethod
    public String greet(@WebParam(name = "s") String s) {
        // TODO implement operation 
        return null;
    }


  • コードを次のように変えます:


 /**
     * Web service operation
     */
    @WebMethod
    public String greet(@WebParam(name = "s") String s) {
        return "Hello " + s;
    }


  • また、終点を JSR-181 仕様に従って修正しなければなりませんが、これはさもなければ外部からアクセスできないからです。
プロジェクトタブに行き、設定ファイルノードを開き、web.xml を選択します。それの上でダブルクリックし、それはエディタ内で開きます。
コマンドバー内の XML をクリックします。
Click on XML in command bar.


次のコードを見るでしょう:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
    <listener>
        <listener-class>com.sun.xml.ws.transport.http.servlet.WSServletContextListener</listener-class>
    </listener>
        <servlet-name>JBossWebWS</servlet-name>
        <servlet-class>com.sun.xml.ws.transport.http.servlet.WSServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
        </servlet>
    <servlet-mapping>
        <servlet-name>JBossWebWS</servlet-name>
        <url-pattern>/JBossWebWS</url-pattern>
    </servlet-mapping>
    <session-config>
        <session-timeout>
            30
        </session-timeout>
    </session-config>
    <welcome-file-list>
	<welcome-file>
            index.jsp
        </welcome-file>
    </welcome-file-list>
</web-app>
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
    <servlet>
        <servlet-name>JBossWebWS</servlet-name>
        <servlet-class>org.me.wss.JBossWebWS</servlet-class>
        <load-on-startup>1</load-on-startup>
        </servlet>
    <servlet-mapping>
        <servlet-name>JBossWebWS</servlet-name>
        <url-pattern>/JBossWebWS</url-pattern>
    </servlet-mapping>
    <session-config>
        <session-timeout>
            30
        </session-timeout>
    </session-config>
    <welcome-file-list>
	<welcome-file>
            index.jsp
        </welcome-file>
    </welcome-file-list>
</web-app>


  • 「ファイル」、「すべてを保存」をクリックします。


これで良しと言うことで、Web モジュールを右クリックして「プロジェクトを配備」を選択します。サービスはサーバ上に配備されます。 プロジェクトタブの中で Web サービスノードを右クリックすると、「Web サービスをテスト」が無いことがわかるでしょう。Web ブラウザ内にサービスや、さらにテスターの wsdl コードをまだ表示できます、バンドル版 Tomcat から知っているように。Web サービスのノードを右クリックして「プロパティー」を選択します。次のウインドウでサービスの URL アドレスをここに表示されているように選択して複製します (Ctrl+C):

http://wiki.netbeans.org/wiki/attach/JAXWSJBoss/url.png

Web ブラウザに行きアドレスフィールドに URL を張り込みます (Ctrl+V)。ここでエンターを押下すると、あなたの Web サービスの WSDL コードが表示されます。



Web モジュール内で Web サービスクライアントを作成する


  • 「ファイル」>「新規プロジェクト (Ctrl-Shift-N)」を選択します。Web カテゴリから「Web モジュール」を選択します。プロジェクトを WSCWebModule と名付けます。
  • コンボボックスから「JBoss Application Server 4」を選択し、「ソースレベルを 1.4 に設定」チェックボックスを外します。

「完了」をクリックします。

  • 「ファイル」>「新規ファイル (Ctrl-N)」を選択します。Web サービスカテゴリから「Web サービスクライアント」を選択し、「次へ」をクリックします。

既定の プロジェクト を選択したままにして、その右側の 参照 ボタンをクリックしましょう。
WSWebModule をクリックして JBossWebWS を選択し、了解をクリックします。
パッケージ内に org.me.wsc を入力し、完了 をクリックします。

  • プロジェクトウインドウは、新しい Web サービスクライアントを、Web サービス参照ノードの下に表示します:

http://wiki.netbeans.org/wiki/attach/JAXWSJBoss/wsclient.png




EJB モジュール内に Web サービスとクライアントを作成する


NetBeans 5.5 は、JBoss 上では JAX-RPC Web サービスだけをサポートします。JAX-WS はサポートされていませんが、JBoss 4.0.4 で何とかする方法もあります。 JBoss 4.0.4 は EJB3 サポートを実装していますので、JAXWS でも作業できます出来ます。

EJB モジュールで Web サービスを作成する


  • 「ファイル」>「新規プロジェクト (Ctrl-Shift-N)」を選択します。エンタープライズカテゴリから「EJB モジュール」を選択します。プロジェクトを WSEJBModule と名付けます。
  • コンボボックスから「JBoss Application Server 4」を選択します。「完了」をクリックします。
  • WSEJBModule ノードを右クリックして「新規」>「Web サービス」を選択します。
  • Web サービス名に JBossEJBWS と入力します。
  • 「パッケージに org.me.ejbwss と入力し、「完了」をクリックします。

プロジェクトウインドウは新しい Web サービスを Web サービスノードの下に表示します:

http://wiki.netbeans.org/wiki/attach/JAXWSJBoss/ejbws.png



JBoss 上に Web サービスを配備する


Web サービスを作成しましたが、配備する準備はまだ出来ていません。Web サービスは既定で空で作成され、配備するには、サービス内に最低でも一つの操作を作成しなければなりません。

  • エディタに行くと、JBossEJBWS.java が開いているでしょう。
  • サービス本体の内側を右クリックし、Web サービス|オペレーションを追加 を選択します。
  • 次のウインドウで "operation" を "greet" に変更し、「追加」をクリックし、s を「名前」に書いて両方のウインドウで「了解」をクリックします。
  • ここで操作はこんな感じです:
/**
     * Web service operation
     */
    @WebMethod
    public String greet(@WebParam(name = "s") String s) {
        // TODO implement operation 
        return null;
    }


  • コードを次のように変えます:


 /**
     * Web service operation
     */
    @WebMethod
    public String greet(@WebParam(name = "s") String s) {
        return "Hello " + s;
    }


配備する準備が出来ました。EJB モジュールを右クリックして「プロジェクトを配備」を選択します。サービスはサーバ上に配備されます。 プロジェクトタブの中で Web サービスノードを右クリックすると、「Web サービスをテスト」選択肢が無効になっていることがわかるでしょう。Web ブラウザ内にサービスの wsdl コードを表示することはまだ出来ますが、テスターは出来ません、バンドル版 Tomcat や grassfish から知っているように。Web サービスのノードを右クリックして「プロパティー」を選択します。次のウインドウでサービスの URL アドレスをここに表示されているように選択して複製します (Ctrl+C):

http://wiki.netbeans.org/wiki/attach/JAXWSJBoss/ejbservice.png

Web ブラウザに行きアドレスフィールドに URL を張り込みます (Ctrl+V)。しかし、張り込んだばかりの URL に虫がいます。http://localhost:8080/JBossEJBWS?wsdlhttp://localhost:8080/WSEJBModule/JBossEJBWS?wsdl に変えなければなりません。ここで エンター を押下すると、配備された サービスの WSDL コードが Web ブラウザ内に表示されます。
http://wiki.netbeans.org/wiki/attach/JAXWSJBoss/wsdlejb2.png



EJB モジュール内に Web サービスクライアントを作成する



  • 「ファイル」>「新規プロジェクト (Ctrl-Shift-N)」を選択します。エンタープライズカテゴリから「EJB モジュール」を選択します。プロジェクトを WSCEJBModule と名付けます。
  • コンボボックスから「JBoss Application Server 4」を選択し、「ソースレベルを 1.4 に設定」チェックボックスを外します。
  • プロジェクトフォルダのパスに空白があってはいけません、さもないとクライアントの作成が失敗します。必要であればプロジェクトフォルダを変更します。「完了」をクリックします。
  • 「ファイル」>「新規ファイル (Ctrl-N)」を選択します。Web サービスカテゴリから「Web サービスクライアント」を選択し、「次へ」をクリックします。

WSDL URL を選択し "http://localhost:8080/WSEJBModule/JBossEJBWS?wsdl" を入力します
右側の 参照 ボタンをクリックします。
WSEJBModule をクリックして JBossEJBWS を選択し、了解をクリックします。
パッケージ内に org.me.ejbwsc を入植し、完了 をクリックします。

  • プロジェクトウインドウは新しい Web サービスを Web サービスノードの下に表示します:


http://wiki.netbeans.org/wiki/attach/JAXWSJBoss/wseclient.png



Web サービスを消費する


  • プロジェクトタブに行き WSCWebModule > index.jsp ファイルをダブルクリックします。
  • ページ本体内で、次のように始まるコメント領域を選択します
<%-- This example uses JSTL, uncomment the taglib directive above.

右クリックし、Web サービスクライアントのリソース | Web サービスオペレーションを呼び出す を選択します。
WSWebModule をクリックし、JBossWebWS | greet を選択して 了解 をクリックします。

  • コードはこんな感じ :
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>

    <h1>JSP Page</h1>
    
    <%--
    This example uses JSTL, uncomment the taglib directive above.
    To test, display the page like this: index.jsp?sayHello=true&name=Murphy
    --%>
    <%--
    <c:if test="${param.sayHello}">
        <!-- Let's welcome the user ${param.name} -->
        Hello ${param.name}!
    </c:if>
    --%>
    
    <%-- start web service invocation --%><hr/>
    <%
    try {
	org.me.wsc.JBossWebWSService service = new org.me.wsc.JBossWebWSService();
	org.me.wsc.JBossWebWS port = service.getJBossWebWSPort();
	 // TODO initialize WS operation arguments here
	java.lang.String s = "";
	// TODO process result here
	java.lang.String result = port.greet(s);
	out.println("Result = "+result);
    } catch (Exception ex) {
	// TODO handle custom exceptions here
    }
    %>
    <%-- end web service invocation --%><hr/>
    </body>
</html>
  • 文字列 'java.lang.String s = "";' を 'java.lang.String s = "your_name";' に変えます。
  • WSCWebModule ノードを右クリックして「プロパティー」を選択します。
  • 「実行」を選択してサーバーをバンドル版 Tomcat から JBoss Application Server 4 に変えます。「了解」をクリックします。
  • プロジェクトタブの WSWebModule ノードを右クリックして プロジェクトを実行 を選択します

参照

---

Not logged in. Log in, Register

By use of this website, you agree to the NetBeans Policies and Terms of Use. © 2012, Oracle Corporation and/or its affiliates. Sponsored by Oracle logo