26
Copyright © 2004 NTT DATA Corporation 第4回 J2EEカンファレンス JAX-RPC 2.0仕様策定メンバが語る Webサービス技術 JavaOne 2004でベールを脱いだJ2EE 5.0のコア技術、JAX-RPC新仕様 ~ 2004714株式会社 NTTデータ 技術開発本部 木村 利幸 / <[email protected]> Java Community Process JSR-224 Expert Group Member Apache Axis Committer Toshi <[email protected]>

JAX-RPC 2.0仕様策定メンバが語る Webサービス技 …people.apache.org/~toshi/docs/J2EE-Conf4th-jp.pdf第4回J2EEカンファレンス JAX-RPC 2.0仕様策定メンバが語る

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: JAX-RPC 2.0仕様策定メンバが語る Webサービス技 …people.apache.org/~toshi/docs/J2EE-Conf4th-jp.pdf第4回J2EEカンファレンス JAX-RPC 2.0仕様策定メンバが語る

Copyright © 2004 NTT DATA Corporation

第4回 J2EEカンファレンス

JAX-RPC 2.0仕様策定メンバが語るWebサービス技術

~ JavaOne 2004でベールを脱いだJ2EE 5.0のコア技術、JAX-RPC新仕様 ~

2004年7月14日

株式会社 NTTデータ技術開発本部

木村 利幸 / <[email protected]>

Java Community Process

JSR-224 Expert Group Member

Apache Axis Committer

Toshi <[email protected]>

Page 2: JAX-RPC 2.0仕様策定メンバが語る Webサービス技 …people.apache.org/~toshi/docs/J2EE-Conf4th-jp.pdf第4回J2EEカンファレンス JAX-RPC 2.0仕様策定メンバが語る

Copyright © 2004 NTT DATA Corporation Page 2

- 本日のAgenda -

Page 3: JAX-RPC 2.0仕様策定メンバが語る Webサービス技 …people.apache.org/~toshi/docs/J2EE-Conf4th-jp.pdf第4回J2EEカンファレンス JAX-RPC 2.0仕様策定メンバが語る

Copyright © 2004 NTT DATA Corporation Page 3

本日の本日のAgendaAgenda! JavaOne 2004で見えてきたもの

! Java 2 PlatformとJ2EE

! Webサービスの定着度

! EJB拡張から見た J2EE 5.0までの進化

! JAX-RPC 2.0とは

! JAX-RPCの動作概要

! JAX-RPC 2.0のゴール

! JAX-RPC 2.0策定状況

! JAX-RPCとWebサービス関連仕様の関係

! 新旧JAX-RPC仕様の比較

! JAX-RPC 2.0実装方法

! 関連新着情報        etc.

Page 4: JAX-RPC 2.0仕様策定メンバが語る Webサービス技 …people.apache.org/~toshi/docs/J2EE-Conf4th-jp.pdf第4回J2EEカンファレンス JAX-RPC 2.0仕様策定メンバが語る

Copyright © 2004 NTT DATA Corporation Page 4

- JavaOne 2004で見えてきたもの -

Page 5: JAX-RPC 2.0仕様策定メンバが語る Webサービス技 …people.apache.org/~toshi/docs/J2EE-Conf4th-jp.pdf第4回J2EEカンファレンス JAX-RPC 2.0仕様策定メンバが語る

Copyright © 2004 NTT DATA Corporation Page 5

JavaOne 2004JavaOne 2004でで見えてきたもの見えてきたもの! J2EEの次期バージョン『J2EE 5.0』の発表

! 正式提供は 2005年後半 を予定

! J2EE 5.0の主な技術要素

! ベース仕様: JSR-52, 127, 181, 220, 222, 224, 245

! 特に重要と列挙された技術

! EJB (Enterprise JavaBeans) 3.0 : [JSR-220]

! JAXB 2.0 : [JSR-222]

! Webサービス用APIであるJAX-RPC 2.0 : [JSR-224]

! JavaコミュニティとOSSコミュニティの連携強化

! J2SE 5.0(Tiger)は年内に正式リリース

※ JSR ・・・ Java Specification Requestの略。Java全般に関する標準化団体である        JCP (Java Community Process) に提案された仕様案を指す。

Page 6: JAX-RPC 2.0仕様策定メンバが語る Webサービス技 …people.apache.org/~toshi/docs/J2EE-Conf4th-jp.pdf第4回J2EEカンファレンス JAX-RPC 2.0仕様策定メンバが語る

Copyright © 2004 NTT DATA Corporation Page 6

Java 2 Platform Java 2 Platform とと J2EEJ2EE( Javaプラットフォームを支える3本柱 )

J2SEJ2SEJ2ME J2EE

Enterprise EditionStandard EditionMicro Edition

EJBEJB

JAXBJAXB

JAX-RPCJAX-RPCWebサービスをWebサービスを容易に実現する容易に実現する

Java 2 Platform

Page 7: JAX-RPC 2.0仕様策定メンバが語る Webサービス技 …people.apache.org/~toshi/docs/J2EE-Conf4th-jp.pdf第4回J2EEカンファレンス JAX-RPC 2.0仕様策定メンバが語る

Copyright © 2004 NTT DATA Corporation Page 7

過大評価傾向過大評価傾向

過小評価傾向過小評価傾向

・HTTP・HTTP

・SMTP・SMTP

・FTP・FTP 等等

・XML・XML

メディアによるメディアによる流行期流行期

メディアによるメディアによる反動期反動期

真の流行期真の流行期

一般的なハイプ曲線一般的なハイプ曲線

Web ServiceWeb Serviceハイプ曲線ハイプ曲線((出典出典: : ガートナーガートナー))

WebWebサービスサービスの基盤技術の基盤技術

WebWebサービスの定着度サービスの定着度 -- ハイプ曲線へのマッピングハイプ曲線へのマッピング --

NowNow

1999 2000 2001 2002 2003 2004 20051999 2000 2001 2002 2003 2004 2005

【注目度(

期待度)

【時間】黎明期(レイメイキ)

流行期流行期 反動期反動期 安定期安定期啓蒙期啓蒙期

Page 8: JAX-RPC 2.0仕様策定メンバが語る Webサービス技 …people.apache.org/~toshi/docs/J2EE-Conf4th-jp.pdf第4回J2EEカンファレンス JAX-RPC 2.0仕様策定メンバが語る

Copyright © 2004 NTT DATA Corporation Page 8

J2EE 1.2J2EE 1.2

EJBEJB拡張から見た拡張から見た J2EE 5.0 J2EE 5.0 までの進化までの進化

J2EE 5.0J2EE 5.0

J2EE 1.3J2EE 1.3

J2EE 1.4J2EE 1.4

EJB 3.0

EJB 2.0

EJB 2.1

EJB 1.0

EJB 1.1

← Before J2EE After J2EE →

POJO

JSR-101JSR-109

JSR-224

JSR-181JSR-222

【機能/

性能(

拡張)

JAX-RPC 1.1

JAX-RPC 2.0

※ POJO・・・Plain Old Java Objectの略。EJBと対比して用いられ、        普通のJavaオブジェクトのことを指す。

JVM境界突破

パフォーマンス改善

ネットワーク境界突破

簡易開発(EoD)提供

( ( RPC [RPC [遠隔手続き呼出し遠隔手続き呼出し] ] を切り口としての分析を切り口としての分析 ))

【時間】

Page 9: JAX-RPC 2.0仕様策定メンバが語る Webサービス技 …people.apache.org/~toshi/docs/J2EE-Conf4th-jp.pdf第4回J2EEカンファレンス JAX-RPC 2.0仕様策定メンバが語る

Copyright © 2004 NTT DATA Corporation Page 9

- JAX-RPC 2.0とは -

Page 10: JAX-RPC 2.0仕様策定メンバが語る Webサービス技 …people.apache.org/~toshi/docs/J2EE-Conf4th-jp.pdf第4回J2EEカンファレンス JAX-RPC 2.0仕様策定メンバが語る

Copyright © 2004 NTT DATA Corporation Page 10

JAXJAX--RPC 2.0RPC 2.0とはとは! Java API for XML-Based RPC ver 2.0 の略

! Webサービスを実現するためのJava API標準仕様

! JCP (Java Community Process) で標準化実施

! 現行仕様はJAX-RPC 1.1 (JSR-101) で、ver 2.0策定中

! JAX-RPC ver 2.0の開発コードは JSR-224

! JSR-224は、同分野の専門家を集めてExpert Group(EG)

を構成し、標準化を行っている

Sun NTTデータ ・・・

JSR

1

JSR

101

JSR

224

選抜メンバ参加 選抜メンバ参加 選抜メンバ参加

標準化層標準化層標準化層

Page 11: JAX-RPC 2.0仕様策定メンバが語る Webサービス技 …people.apache.org/~toshi/docs/J2EE-Conf4th-jp.pdf第4回J2EEカンファレンス JAX-RPC 2.0仕様策定メンバが語る

Copyright © 2004 NTT DATA Corporation Page 11

JAXJAX--RPCRPCのの動作概要動作概要

JVM

Webコンテナ

<?<?xml version="1.0"?>xml version="1.0"?>

<SOAP<SOAP--ENV:EnvelopeENV:Envelope xmlns:SOAPxmlns:SOAP--ENV=ENV=  

"http://schemas.xmlsoap.org/soap/envelope/">"http://schemas.xmlsoap.org/soap/envelope/"><SOAP<SOAP--ENV:Header> </SOAPENV:Header> </SOAP--ENV:Header>ENV:Header>

  <SOAP<SOAP--ENV:Body>ENV:Body><m:GetLastTradePrice xmlns:m="Some<m:GetLastTradePrice xmlns:m="Some--URI">URI">

<symbol>DIS</symbol><symbol>DIS</symbol></m:GetLastTradePrice></m:GetLastTradePrice>

</SOAP</SOAP--ENV:Body>ENV:Body>

</SOAP</SOAP--ENV:Envelope>ENV:Envelope>

クライアント側JAX-RPCランタイム

JAX-RPC API

サーバ側JAX-RPCランタイム

JAX-RPC API

JVM

クライアント サーバ

スタブ

Webサービス(エンドポイント)

( ( JAXJAX--RPC 1.1RPC 1.1仕様で示される仕様で示されるJAXJAX--RPCRPCのの動作モデル動作モデル ))

クライアントAP

WSDL(Webサービス記述言語)

XMLXML

プロトコル

トランスポート

Page 12: JAX-RPC 2.0仕様策定メンバが語る Webサービス技 …people.apache.org/~toshi/docs/J2EE-Conf4th-jp.pdf第4回J2EEカンファレンス JAX-RPC 2.0仕様策定メンバが語る

Copyright © 2004 NTT DATA Corporation Page 12

JAXJAX--RPC 2.0RPC 2.0ののゴールゴール ( ( 主な内容のみ抜粋主な内容のみ抜粋 ))

! 各種業界標準への追従

! SOAP 1.2

! WSDL 2.0

! WS-I * Profile対応 (Basic Profile 1.1, Attachment Profile 1.0, Basic Security Profile 1.0)

! JCP策定の他JSRへの追従

! JAXB (JSR-222) : Java <-> XML ( 順序性なしの相互変換 )

! Web Services Metadata for Java Platform: アノテーション  (JSR-181)

! 新領域への挑戦

! Asynchrony: 非同期性の実現

! Non-HTTP Transports: プロトコル対応拡張

! SOAP Message Handlers: ハンドラフレームワーク拡張

Page 13: JAX-RPC 2.0仕様策定メンバが語る Webサービス技 …people.apache.org/~toshi/docs/J2EE-Conf4th-jp.pdf第4回J2EEカンファレンス JAX-RPC 2.0仕様策定メンバが語る

Copyright © 2004 NTT DATA Corporation Page 13

JAXJAX--RPC 2.0RPC 2.0策定状況策定状況日付JCPステージ名

2004年6月23日Early Draft

2004年?月予定Public Draft

2005年?月予定Proposed Final Draft

2005年春予定Final Specification

! 仕様化スケジュール

<http://www.jcp.org/aboutJava/communityprocess/edr/jsr224/>

下記アドレスからEarly Draft版の仕様をダウンロード可能 [英語版のみ]:

! Expert Groupメンバ (★: Apache Axis Committer、 ◆: WS-I WGメンバ、 ◇: WS-I企業会員)Chavdar Baikov (SAP AG)

Russell Butek (IBM)

Manoj Cheenath (BEA Systems)

  Ugo Corda (SeeBeyond Technology Corp)

Glen Daniels (Sonic Software)

Alan Davies (SeeBeyond Technology Corp)

Jim Frost (Art Technology Group Inc)

Kevin R. Jones (Developmentor)

Toshiyuki Kimura (NTT Data Corp)

Doug Kohlert (Sun Microsystems, Inc)

Daniel Kulp (IONA Technologies PLC)

Sunil Kunisetty (Oracle)

Changshin Lee (Tmax Soft, Inc)

Srividya Natarajan (Nokia Corporation)

Bjarne Rasmussen (Novell, Inc)

Sebastien Sahuc (Intalio, Inc.)

Rahul Sharma (Motorola)

Rajiv Shivane (Pramati Technologies)

Dennis M. Sosnoski (Sosnoski Software)

Christopher St. John (WebMethods Corporation)

Page 14: JAX-RPC 2.0仕様策定メンバが語る Webサービス技 …people.apache.org/~toshi/docs/J2EE-Conf4th-jp.pdf第4回J2EEカンファレンス JAX-RPC 2.0仕様策定メンバが語る

Copyright © 2004 NTT DATA Corporation Page 14

JAXJAX--RPC RPC とと WebWebサービス関連仕様の関係サービス関連仕様の関係( ( 相互接続性および再利用性確保に向けた取組み相互接続性および再利用性確保に向けた取組み ))

..NETNETJavaJava

AxisAxis ・・・・・・ ・・・・・・・・・・・・ ・・・・・・実装群 ・・・・・・

①①W3CW3C

③③WSWS--II WSWS--I Basic ProfileI Basic Profile WSWS--XXXX WSWS--XXXX

JCPJCP

JAXJAX--RPC ver 1.0 / 1.1 RPC ver 1.0 / 1.1 【【現行】現行】②②

JAXJAX--RPC ver 2.0 RPC ver 2.0 【【策定中】策定中】④④

API

概要

相互接続性

WS-I準拠実装間での相互接続性を更に追求

Java実装の相互接続性及び再利用性を確保

SOAP 1.1 / 1.2SOAP 1.1 / 1.2

HTTP 1.1HTTP 1.1 XML 1.0XML 1.0 XML SchemaXML Schema

Page 15: JAX-RPC 2.0仕様策定メンバが語る Webサービス技 …people.apache.org/~toshi/docs/J2EE-Conf4th-jp.pdf第4回J2EEカンファレンス JAX-RPC 2.0仕様策定メンバが語る

Copyright © 2004 NTT DATA Corporation Page 15

新旧新旧JAXJAX--RPCRPC仕様の比較仕様の比較

※ JAX-RPC 2.0: 従来通り、POJOによるエンドポイント実装もサポート

※ JAX-RPC 2.0: EJB(Stateless Session Bean)実装もPOJOライクに実装可能

動作

概要

! J2EE 5.0で採用

! EJB 3.0

! J2EE 1.4で採用

! EJB 2.1

適用

! 1.Xの拡張

! WS-I Profile群への準拠

! 非HTTPのサポート

! 非同期性の実現 [ invokeAsync() ]

! 初のWebサービス標準API

! HTTPが必須プロトコル

! 同期型/一方向型通信のみ対応

[ invoke() , invokeOneWay() ]

概要

JAX-RPC 2.0JAX-RPC 1.X (+ JSR-109)

EBJContainer

Web Container

JAX-RPCRuntime

Client AP

WebService(Endpoint)

JAX-RPCRuntime

StatelessSession Bean

Stub

POJO

Page 16: JAX-RPC 2.0仕様策定メンバが語る Webサービス技 …people.apache.org/~toshi/docs/J2EE-Conf4th-jp.pdf第4回J2EEカンファレンス JAX-RPC 2.0仕様策定メンバが語る

Copyright © 2004 NTT DATA Corporation Page 16

- JAX-RPC 2.0実装方法 -

( その1: アノテーション編 )

※ 以降ご紹介するソースは実装の一部であり、完全なコードではありません。※ 策定段階の仕様であるため、今後変更される可能性もあります。

Page 17: JAX-RPC 2.0仕様策定メンバが語る Webサービス技 …people.apache.org/~toshi/docs/J2EE-Conf4th-jp.pdf第4回J2EEカンファレンス JAX-RPC 2.0仕様策定メンバが語る

Copyright © 2004 NTT DATA Corporation Page 17

アノテーション技術の導入アノテーション技術の導入

! JSR-175としてJava用メタデータのインフラとして標準化中

! J2SE 5.0 (“Tiger”)への採用が決定している

! Javadoc で利用していた“アノテーション”をJavaコードに適用

! class、interface、fieldおよびmethodに独自属性が定義可能

! JSR-181中でWebサービスへの適用方法を標準化中

/**** @author Toshiyuki Kimura ([email protected])*/

public class MyClass {…

【参考】 既存のアノテーション利用事例

javadoc実行

Author: Toshiyuki Kimura ([email protected])

Javaソースコード

HTML(Javadoc)生成

Page 18: JAX-RPC 2.0仕様策定メンバが語る Webサービス技 …people.apache.org/~toshi/docs/J2EE-Conf4th-jp.pdf第4回J2EEカンファレンス JAX-RPC 2.0仕様策定メンバが語る

Copyright © 2004 NTT DATA Corporation Page 18

WebサービスにおけるアノテーションWebサービスにおけるアノテーション –– POJO POJO --

( JSR-181 : Web Services Metadata for the Java Platform )

作成物 

J2EE

5.0

以降

J2EE

1.4

以前

Javaソースコード

デプロイ記述子

アノテートされたJavaソースコード

何がメリットなのか?

@WebService (

name = "EchoService",

targetNamespace = http://www.openuri.org/2004/04/HelloWorld

)

public class EchoServiceImpl { @WebMethod (

operationName = "echoString",action= "urn:EchoString "

)

public String echo(String input) {

return input;

}

}

Page 19: JAX-RPC 2.0仕様策定メンバが語る Webサービス技 …people.apache.org/~toshi/docs/J2EE-Conf4th-jp.pdf第4回J2EEカンファレンス JAX-RPC 2.0仕様策定メンバが語る

Copyright © 2004 NTT DATA Corporation Page 19

WebサービスにおけるアノテーションWebサービスにおけるアノテーション –– EJB EJB --

( JSR-220 : Enterprise JavaBeans ver 3.0 )

@WebService

@Stateless public class CalculatorBean

               implements Calculator {

@WebMethod

public float add (int a, int b) {

return a + b;

}

}

public interface Calculator {

public float add (int a, int b);

}

作成物 

J2EE

5.0

以降

J2EE

1.4

以前

Javaソース1(Beanクラス)

デプロイ記述子

アノテートされたJavaソースコード

Javaソース2(Homeインターフェース)

Javaソース3(Remoteインターフェース)

何がメリットなのか?

Page 20: JAX-RPC 2.0仕様策定メンバが語る Webサービス技 …people.apache.org/~toshi/docs/J2EE-Conf4th-jp.pdf第4回J2EEカンファレンス JAX-RPC 2.0仕様策定メンバが語る

Copyright © 2004 NTT DATA Corporation Page 20

- JAX-RPC 2.0実装方法 -

( その2: 非同期API編 )

※ 以降ご紹介するソースは実装の一部であり、完全なコードではありません。※ 策定段階の仕様であるため、今後変更される可能性もあります。

Page 21: JAX-RPC 2.0仕様策定メンバが語る Webサービス技 …people.apache.org/~toshi/docs/J2EE-Conf4th-jp.pdf第4回J2EEカンファレンス JAX-RPC 2.0仕様策定メンバが語る

Copyright © 2004 NTT DATA Corporation Page 21

クライアント・サイドクライアント・サイド 非同期非同期API API –– ポーリングポーリング --

javax.xml.rpc.Dispatch disp = service.createDispatch(portName);

JAXRPCContext reqCtx = disp.getRequestContext();

reqCtx.setProperty(...);

Response<Object> res = disp.invokeAsync(reqMsg);

while ( ! res.isDone() ) {

// ウエイト中の処理内容を記載

}

【注意】

  現時点で規定されているのは、クライアントサイドの非同期APIのみであり

 サーバサイドの非同期性に関しては言及していない。

Page 22: JAX-RPC 2.0仕様策定メンバが語る Webサービス技 …people.apache.org/~toshi/docs/J2EE-Conf4th-jp.pdf第4回J2EEカンファレンス JAX-RPC 2.0仕様策定メンバが語る

Copyright © 2004 NTT DATA Corporation Page 22

クライアント・サイドクライアント・サイド 非同期非同期API API -- コールバックコールバック --

javax.xml.rpc.Dispatch disp = service.createDispatch(portName);

JAXRPCContext reqCtx = disp.getRequestContext();

reqCtx.setProperty(...);

MyHandler handler = new MyHandler();

disp.invokeAsync(reqMsg, handler);

class MyHandler implements AsyncHandler<Object> {

public void handleResponse(Response<Object> res) {

Source resMsg = (Source)res.get();

JAXRPCContext resCtx = res.getContext();

// 処理結果に関する処理を記載

}

}

Page 23: JAX-RPC 2.0仕様策定メンバが語る Webサービス技 …people.apache.org/~toshi/docs/J2EE-Conf4th-jp.pdf第4回J2EEカンファレンス JAX-RPC 2.0仕様策定メンバが語る

Copyright © 2004 NTT DATA Corporation Page 23

- 関連 新着情報 -

Page 24: JAX-RPC 2.0仕様策定メンバが語る Webサービス技 …people.apache.org/~toshi/docs/J2EE-Conf4th-jp.pdf第4回J2EEカンファレンス JAX-RPC 2.0仕様策定メンバが語る

Copyright © 2004 NTT DATA Corporation Page 24

Apache Beehive ProjectApache Beehive Projectの発足の発足

( ( JSRJSR--175, 181175, 181実装のフレームワークがオープンソースに実装のフレームワークがオープンソースに !! )!! )

http://incubator.apache.org/beehive/

Page 25: JAX-RPC 2.0仕様策定メンバが語る Webサービス技 …people.apache.org/~toshi/docs/J2EE-Conf4th-jp.pdf第4回J2EEカンファレンス JAX-RPC 2.0仕様策定メンバが語る

Copyright © 2004 NTT DATA Corporation Page 25

Apache AxisApache Axisの日本語サイトの日本語サイト

( ( 待望の待望のAxisAxis和訳サイトを開設和訳サイトを開設 ))

http://ws.apache.org/~toshi/jp-site/ から

Page 26: JAX-RPC 2.0仕様策定メンバが語る Webサービス技 …people.apache.org/~toshi/docs/J2EE-Conf4th-jp.pdf第4回J2EEカンファレンス JAX-RPC 2.0仕様策定メンバが語る

Copyright © 2004 NTT DATA Corporation Page 26

- The End -

ご清聴ありがとうございました。

本資料で利用される、Sun, Sun Microsystems, Java, J2EEなどの語句は、Sun Microsystems 社殿の商標もしくは登録商標です。また、それ以外の製品名等は一般的にそれら各企業の商標ですが、表示を省略しています。