Upload
others
View
2
Download
0
Embed Size (px)
Citation preview
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]>
Copyright © 2004 NTT DATA Corporation Page 2
- 本日のAgenda -
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.
Copyright © 2004 NTT DATA Corporation Page 4
- JavaOne 2004で見えてきたもの -
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) に提案された仕様案を指す。
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
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
【注目度(
期待度)
】
【時間】黎明期(レイメイキ)
流行期流行期 反動期反動期 安定期安定期啓蒙期啓蒙期
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 [遠隔手続き呼出し遠隔手続き呼出し] ] を切り口としての分析を切り口としての分析 ))
【時間】
Copyright © 2004 NTT DATA Corporation Page 9
- 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
選抜メンバ参加 選抜メンバ参加 選抜メンバ参加
標準化層標準化層標準化層
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
プロトコル
トランスポート
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: ハンドラフレームワーク拡張
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)
★
★
★
★
◇
◇
◇
◆
◇
◆
◆
◆
◇
◆
◆
◇
◆
◇
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
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
Copyright © 2004 NTT DATA Corporation Page 16
- JAX-RPC 2.0実装方法 -
( その1: アノテーション編 )
※ 以降ご紹介するソースは実装の一部であり、完全なコードではありません。※ 策定段階の仕様であるため、今後変更される可能性もあります。
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)生成
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;
}
}
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インターフェース)
何がメリットなのか?
Copyright © 2004 NTT DATA Corporation Page 20
- JAX-RPC 2.0実装方法 -
( その2: 非同期API編 )
※ 以降ご紹介するソースは実装の一部であり、完全なコードではありません。※ 策定段階の仕様であるため、今後変更される可能性もあります。
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のみであり
サーバサイドの非同期性に関しては言及していない。
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();
// 処理結果に関する処理を記載
}
}
Copyright © 2004 NTT DATA Corporation Page 23
- 関連 新着情報 -
Copyright © 2004 NTT DATA Corporation Page 24
Apache Beehive ProjectApache Beehive Projectの発足の発足
( ( JSRJSR--175, 181175, 181実装のフレームワークがオープンソースに実装のフレームワークがオープンソースに !! )!! )
http://incubator.apache.org/beehive/
Copyright © 2004 NTT DATA Corporation Page 25
Apache AxisApache Axisの日本語サイトの日本語サイト
( ( 待望の待望のAxisAxis和訳サイトを開設和訳サイトを開設 ))
http://ws.apache.org/~toshi/jp-site/ から
Copyright © 2004 NTT DATA Corporation Page 26
- The End -
ご清聴ありがとうございました。
本資料で利用される、Sun, Sun Microsystems, Java, J2EEなどの語句は、Sun Microsystems 社殿の商標もしくは登録商標です。また、それ以外の製品名等は一般的にそれら各企業の商標ですが、表示を省略しています。