WAS V8.5.5 最新情報ワークショップ 1
WebSphere Application Server V8.5.5 WebSphere Application Server V8.5.5
最新情報ワークショップ 最新情報ワークショップ 最新情報ワークショップ 最新情報ワークショップ 最新情報ワークショップ 最新情報ワークショップ 最新情報ワークショップ 最新情報ワークショップ
© 2013 IBM Corporation
~次世代 WAS ランタイム Liberty で変わる Web システム~
1 WAS V8.5.5 WAS V8.5.5 最新情報ワークショップ最新情報ワークショップ
Liberty
Liberty プロファイルとマイグレーション プロファイルとマイグレーション プロファイルとマイグレーション プロファイルとマイグレーション プロファイルとマイグレーション プロファイルとマイグレーション プロファイルとマイグレーション プロファイルとマイグレーション
© 2013 IBM Corporation
2 WAS V8.5.5 WAS V8.5.5 最新情報ワークショップ最新情報ワークショップ
Disclaimer
この資料は日本アイ・ビー・エム株式会社ならびに日本アイ・ビー・エム システムズ・エンジニアリ ング株式会社の正式なレビューを受けておりません。
当資料は、資料内で説明されている製品の仕様を保証するものではありません。
資料の内容には正確を期するよう注意しておりますが、この資料の内容は2013年7月現在の情 報であり、製品の新しいリリース、PTFなどによって動作、仕様が変わる可能性があるのでご注意 下さい。
今後国内で提供されるリリース情報は、対応する発表レターなどでご確認ください。
IBM、IBMロゴおよびibm.comは、世界の多くの国で登録されたInternational Business
Machines Corporationの商標です。他の製品名およびサービス名等は、それぞれIBMまたは各
社の商標である場合があります。現時点でのIBMの商標リストについては、
www.ibm.com/legal/copytrade.shtmlをご覧ください。
当資料をコピー等で複製することは、日本アイ・ビー・エム株式会社ならびに日本アイ・ビー・エム システムズ・エンジニアリング株式会社の承諾なしではできません。
当資料に記載された製品名または会社名はそれぞれの各社の商標または登録商標です。
JavaおよびすべてのJava関連の商標およびロゴはOracleやその関連会社の米国およびその他 の国における商標または登録商標です。
Microsoft, Windows およびWindowsロゴは、Microsoft Corporationの米国およびその他の国 における商標です。
Linuxは、Linus Torvaldsの米国およびその他の国における登録商標です。
UNIXはThe Open Groupの米国およびその他の国における登録商標です。
WAS V8.5.5 最新情報ワークショップ 3
© 2013 IBM Corporation
3 WAS V8.5.5 WAS V8.5.5 最新情報ワークショップ最新情報ワークショップ
Agenda
従来の WAS から Liberty プロファイルへのマイグレーション WAS V8.5 Liberty プロファイルからのマイグレーション Tomcat からのマイグレーション
当セッションのアジェンダです。
このセッションでは,他の環境で稼働しているJava EEアプリケーションをWAS V8.5.5 Libertyプロ ファイルへ移行する際の注意点について解説します。
© 2013 IBM Corporation
4 WAS V8.5.5 WAS V8.5.5 最新情報ワークショップ最新情報ワークショップ
従来の WAS から Liberty プロファイルへのマイグレーション
この章では,旧バージョンのWASで稼働していたアプリケーションをLibertyプロファイルへ移行する 場合の注意点について解説します。対象のWASとしては,WAS V5.0/5.1/6.0/6.1/7.0/8.0を想定し ています。またWAS 8.5 Fullプロファイル(完全プロファイル)で稼働しているアプリケーションを Libertyプロファイルへ移行することを検討している場合にも適用いただけます。
© 2013 IBM Corporation
5 WAS V8.5.5 WAS V8.5.5 最新情報ワークショップ最新情報ワークショップ
アプリケーションの移行の基本的な手順
J2SE/Java SE の更新に対する対応をおこなう
– 例) J2SE 1.4 以前から J2SE 5.0 以降への移行
Liberty プロファイルがサポートしていない API
– アプリケーション機能として提供できれば,独自に用意( JavaMail 等)
– 本質的な API の場合,完全プロファイルを使用する( EJB 2.x 等)
Liberty プロファイルがサポートしている API
– そのまま移行できる
Liberty プロファイルがサポートしている API の旧バージョン
– 新しいバージョンの API に対応させる
移行に当たっては,まずJDKのアップデートに対する対応が必要となります。WAS V8.5.5 Libertyプ ロファイルは,Java SE 6以降の環境で動作します。移行前のアプリケーションがWAS V7.0以前で 稼働している場合,J2SE 5.0以前の仕様にしたがって実装されているはずですので,以降の対応 が必要です。例としては,J2SE 1.4以前の仕様にしたがって実装されたアプリケーションを,J2SE 5.0以降の言語仕様に対応させるような場合があります。
次に,アプリケーションで使用しているAPIのうち,Java EEで定義されているもの,別途WASのコン テナで提供されているものを調査します。それらのAPIが,Libertyプロファイルで提供されているか を調べる必要があります。現在のLibertyプロファイルでは,従来のWASや完全プロファイルで提供 されている全てのAPIが提供されているわけではありません。Libertyプロファイルで提供されている APIがアプリケーションで使用されている場合には,別途対応が必要になります。
Libertyプロファイルで提供されていないAPIが,アプリケーションの機能として別途用意できるような もの(JavaMailやPortletなどの場合)の場合は,別途オープンソースの実装などを入手し,アプリケ ーションに組み込むことにより利用できるようになります。しかし,EJB 2.xなどのように,本質的にコ ンテナの機能として提供する必要があるAPIを使用している場合には,Libertyプロファイルの使用 を断念し,通常の完全プロファイルを使用する必要があります。
APIがLibertyプロファイルで提供されているものの,使用しているバージョンが古い場合は,現在の 仕様にしたがって対処が必要な場合もあります。
WAS V8.5.5 最新情報ワークショップ 5
© 2013 IBM Corporation
6 WAS V8.5.5 WAS V8.5.5 最新情報ワークショップ最新情報ワークショップ
WAS のサポートしている Java EE/Java SE 仕様 WAS V5.0
Servlet 2.3/JSP 1.2J2EE 1.3
EJB 2.0
J2SE 1.3
WAS V5.1
Servlet 2.3/JSP 1.2J2EE 1.3
EJB 2.0J2SE 1.4
WAS V6.0
Servlet 2.4/JSP 2.0J2EE 1.4
EJB 2.1J2SE 1.4
WAS V6.1
Servlet 2.4/JSP 2.0J2EE 1.4
EJB 2.1J2SE 5.0
WAS V7.0
Servlet 2.4/JSP 2.0J2EE 1.4
EJB 2.1Java EE 5
Servlet 2.5/JSP 2.1 EJB 3.0
Java SE 6
WAS V8.0
Servlet 2.4/JSP 2.0J2EE 1.4
EJB 2.1Java EE 5
Servlet 2.5/JSP 2.1 EJB 3.0
Java EE 6
Servlet 3.0/JSP 2.2 EJB 3.1
Java SE 6
WAS V8.5
Servlet 2.4/JSP 2.0J2EE 1.4
EJB 2.1Java EE 5
Servlet 2.5/JSP 2.1 EJB 3.0
Java EE 6
Servlet 3.0/JSP 2.2 EJB 3.1
Java SE 6 / 7
JSP/Servlet 仕様の変更
Java 5対応
過去のWASのバージョンと,対応しているJava EE/J2EEおよび,Java SE/J2SE(Java SDK)のバー ジョンの一覧になります。Libertyプロファイルの対応している仕様については,基本的にWAS V8.5 と同等になります。
Java EE/J2EEに関しては,基本的にJ2EE 1.4のアプリケーションになっていれば,Libertyプロファイ ル上でも稼働します。たとえば,Libertyプロファイルが対応しているServlet APIは3.0ですが,
Servlet API 2.4/2.5で実装されたアプリケーションも稼働します。J2EE 1.3以前のアプリケーションで あれば,J2EE 1.4に対応するため,一部のアプリケーションで修正が必要となる場合があります。
Java SE/J2SEに関しては,J2SE 1.4とJ2SE 5.0の間に大きな仕様変更があったため,これに対す る対応が必要となります。
© 2013 IBM Corporation
7 WAS V8.5.5 WAS V8.5.5 最新情報ワークショップ最新情報ワークショップ
Liberty プロファイルでサポートしている Java EE API
Java EE 6 Web Profile
–Servlet 3.0, JSF 2.0, JSP 2.2/EL 1.2/JSTL 1.2, JSR-45 –CDI 1.0, Bean Validation 1.0, Java Persistence API 2.0 –EJB lite 3.1 (local call), Java Transaction API (JTA) 1.1
Java API for RESTful Web Services (JAX-RS) 1.1 Java API for XML-Based Web Services (JAX-WS) 2.2 Java Architecture for XML Binding (JAXB) 2.2
SOAP with Attachments API for Java (SAAJ) 1.3 EJB 3.1 Message Driven Bean
Java Message Service (JMS) API 1.1
Java SE
で標準提供されている機能–Java API for XML Processing (JAXP) 1.3 –Streaming API for XML (StAX) 1.0 –Java Database Connectivity (JDBC) 4.0 –Java Management Extensions (JMX) 2.0 –JavaBeans Activation Framework (JAF) 1.1
こちらがJava EEで提供されているAPIのうち,Libertyプロファイルでも提供されているものになりま す。
Java EE 6 Web Profileで提供されているAPIをはじめ,Webサービスを実現するJAX-WS/JAX-RS やメッセージングに対応するJMSやEJBのMDBなどが提供されているほか,かつてJava EEで提供 されていて現在はJava SE標準で提供されるようになった多くのAPIについても対応しています。
WAS V8.5.5 最新情報ワークショップ 7
© 2013 IBM Corporation
8 WAS V8.5.5 WAS V8.5.5 最新情報ワークショップ最新情報ワークショップ
Liberty プロファイルでサポートしていない サポートしていない サポートしていない サポートしていない Java EE API アプリケーション・インターフェース
– Java API for XML-based RPC (JAX-RPC) 1.1 – Java API for XML Registries (JAXR) 1.0 – Java EE Connector Architecture 1.6 – EJB 3.x (remote call), EJB 2.x Entity Bean – JavaMail 1.4
マネジメント機能
– Java Authentication Service Provider Interface for Containers (JASPIC)
– Java Authorization Contract for Containers (JACC) 1.3 – Java EE Application Deployment 1.2
– J2EE Management 1.1
そして,こちらがLibertyプロファイルで提供していないAPIになります。大きく,アプリケーションから 使用するAPIとアプリケーションの管理に使用するAPIがあります。
旧式のWebサービスであるJAX-RPCや,EJB 3.0のリモート呼び出しやEJB 2.xのEntity Beanなど が提供されていません。これらのAPIを使用したアプリケーションをLibertyプロファイルへ移行する ことは困難となります。JavaMailについては,比較的容易にアプリケーションに組み込むことができ るため,大きな問題にはならないかと思います。
© 2013 IBM Corporation
9 WAS V8.5.5 WAS V8.5.5 最新情報ワークショップ最新情報ワークショップ
Liberty プロファイルでサポートしていない Java EE 以外の API Enterprise OSGi
– Blueprint Security
– Blueprint Resource References
Service Component Architecture (SCA) Portlet 2.0 (JSR 286)
Session Initiation Protocol (SIP) Servlet API 1.1 (JSR 289)
Java EEで定義されているAPI以外についても,WASの完全プロファイルでは提供されているが Libertyプロファイルでは提供されていないAPIがあります。
Enterprise OSGiの機能は大部分がLibertyプロファイルでも提供されていますが,Blueprintの一部 のサービスについては,提供されていません。またSCAやSIPのAPIを使用したアプリケーションに ついても,Libertyプロファイル上で実行することはできません。
Portlet APIについては,オープンソースの実装をアプリケーションで実装することにより実行する事 は可能です。
WAS V8.5.5 最新情報ワークショップ 9
© 2013 IBM Corporation
10 WAS V8.5.5 WAS V8.5.5 最新情報ワークショップ最新情報ワークショップ
対応している API の更新に利用できるツール
Application Server Migration Toolkit – Competive Application Migration Tool
• WebLogic,JBoss,Oracle ASなどからの 移行を支援するツール
– WebSphere Application Migration Tool
• WASの旧バージョンからの 移行を支援するツール
無償でダウンロードいただいて 使用することができます
Eclipse や Rational Application Developer に 組み込んで使用
Rational Software Analyzer の技術を使用して Java コード, JSP ,デプロイメント記述子の調査 修正が必要な箇所をリストアップし
修正方法についてガイドを表示
移行の負荷を大幅に削減 移行の負荷を大幅に削減 移行の負荷を大幅に削減 移行の負荷を大幅に削減
Application Migration Tool
WAS V7.0 V6.0 & 6.1
V5.1
WebSphere Application Server
V8.5, V8, V7
Oracle WLS Oracle AS JBoss AS / EAP Tomcat
http://www.ibm.com/developerworks/jp/websphere/library/was/was_migration_toolkit/
Libertyプロファイルでも対応しているAPIで,アプリケーションで使用しているAPIのバージョンが古 い場合には,移行に当たって修正が必要となる場合があります。このような場合には,完全プロフ ァイルのマイグレーションでも使用されているマイグレーションツールを使用することができます。
マイグレーションツールは,EclipseやRational Application Developerに組み込んで使用いただく分 析ツールです。Rational Software Analyzerの技術をベースとしたツールで,過去のIBMのSoftware Service部門などで経験したマイグレーションにあたっての知見がルールの形で実装されています。
アプリケーションのソースコードを分析し,修正が必要な箇所をリストアップすることができます。
ルールとしては,他社のアプリケーションサーバーからの移行にあたっての要修正箇所,WASの旧 バージョンからの移行に当たっての要修正箇所が格納されています。旧バージョンからの移行を選 択いただくと,Java SEの変更に伴う修正箇所,Java EEの変更に対応するための修正箇所などを 洗い出すことができます。
© 2013 IBM Corporation
11 WAS V8.5.5 WAS V8.5.5 最新情報ワークショップ最新情報ワークショップ
Java SE 仕様( J2SE 仕様)のマイグレーション: Java5 対応
J2SE 5.0 では言語仕様のバージョン自体が更新
バイトコードレベルでは上位互換が保たれている
–
以前の環境でコンパイルしたClass
ファイルはほとんどそのまま使用できるソースコードレベルでは上互換が保たれていない
–
追加された予約語「assert」「enum」の対応– Generics(総称型)への対応
–
強化されたコードチェックによる,エラー・警告への対応– java.lang.reflect.Proxyと同名のjava.net.Proxyが追加
– java.util.Logger
のコンストラクタの変更 等Java Java
Java Java 言語仕様 言語仕様 言語仕様 言語仕様 1st Edition 1st Edition 1st Edition 1st Edition Java
Java Java
Java 言語仕様 言語仕様 言語仕様 言語仕様 1st Edition 1st Edition 1st Edition 1st Edition
JDK 1.0 1.1
Java Java
Java Java 言語仕様 言語仕様 言語仕様 言語仕様 2nd Edition 2nd Edition 2nd Edition 2nd Edition Java
Java Java
Java 言語仕様 言語仕様 言語仕様 言語仕様 2nd Edition 2nd Edition 2nd Edition 2nd Edition
J2SE 1.2 1.3
Java Java
Java Java 言語仕様 言語仕様 言語仕様 言語仕様 3rd Edition 3rd Edition 3rd Edition 3rd Edition Java
Java Java
Java 言語仕様 言語仕様 言語仕様 言語仕様 3rd Edition 3rd Edition 3rd Edition 3rd Edition
J2SE 5.0 Java SE 6
1.4 7
Java SEでは,過去に二回大きな言語仕様の変更が行われています。最近では,J2SE 1.4と5.0の 間で大きな変更がありました。
この修正では,基本的にバイトコードレベルでは上位互換が保たれています。つまり,以前の環境 でコンパイルされたClassファイルについては,原則的にそのまま使用することができます。
ですが,ソースコードレベルでは上位互換が取られていません。前バージョンでは正常にコンパイ ルできていたコードであっても,修正しないとコンパイルが通らなかったり,あるいは警告が出力さ れるということがおこりえます。これらに対する対応が必要となります。これらについては,新しい開 発環境の構文チェック機能を使用することで必要修正箇所を洗い出すことができます。
WAS V8.5.5 最新情報ワークショップ 11
© 2013 IBM Corporation
12 WAS V8.5.5 WAS V8.5.5 最新情報ワークショップ最新情報ワークショップ
Java SE :バージョン間の非互換への対応 コンパイルが正常に通った場合も,
JDK のバージョンが上がることにより
API やオプションの挙動がかわることがあります
– BigDecimal や file.encoding システムプロパティ,
内部クラスへのアクセスなど
JDK 1.3/1.4 から JDK 5.0/6.0 への移行
– BigDecimal について大規模な仕様変更がおこなわれました
– その他,非互換の詳細については,以下の文書を参照
http://www.oracle.com/technetwork/java/javase/compatibility-137462.html
JDK 5.0 から JDK 6.0 への移行
– 極めて高いレベルで上位互換性がとられています – 非互換の詳細については,以下の文書を参照
http://www.oracle.com/technetwork/java/javase/compatibility-137541.html
また,コンパイルが正常にできた場合でも,JDKのバージョンが上がることにより,APIやオプション の挙動が変わることがあります。移行にあったっては,これらの対処が必要となることもあります。
代表的なものとしては,BigDecimalの仕様変更や,システムプロパティのfile.encodingを起動パラメ ーターで変更している時の挙動などです。これらについても注意が必要となります。
JDK 1.4以前から5.0移行については,BigDecimalの仕様変更への対応が大きなトピックとしてあげ られます。一方,JDK 5.0以降については高いレベルで互換性が取られていますので,多くのアプリ ケーションがそのまま使用することができます。
WAS V8.5.5 最新情報ワークショップ 13
© 2013 IBM Corporation
13 WAS V8.5.5 WAS V8.5.5 最新情報ワークショップ最新情報ワークショップ
Java SE : BigDecimal の仕様変更
JSR 13: Decimal Arithmetic Enhancement のサポート – JDK 1.4のAPIドキュメントなどで予告されていたとおり,
Java
標準API
で提供されているクラスBigDecimal
の仕様が,JDK 5.0
より変更–
多くの新機能の追加や仕様の制限の撤廃,ANSI規格との整合性の向上これにともない, BigDecimal の toString() メソッドの動作が変更されました – scale部の大きな(絶対値が1より非常に小さい)BigDecimalにおいて,
従来は非指数表記の数値が返されていたケースで,
「
E
」を含んだ指数表記で値が返されることがあるString 文字列化された BigDecimal にたいして処理を行っているアプリケー ションでは対応が必要なケースがあります
–
必要に応じてJDK 1.4と同じ結果を返すtoPlainString()に書き換えるSystem. out .println(new new new new BigDecimal("0.00000001"));
System. out .println(new new new new BigDecimal("0.00000001"));
JDK 1.4
の出力:の出力:の出力:の出力:“0.00000001” JDK 5.0
の出力:の出力:の出力:の出力:“1E-8”
JDK 5.0から行われたBigDecimalの仕様変更は,多くのアプリケーションに影響を与えました。文 字列化した時の表現が異なるということで,多くのアプリケーションで挙動が変わったり異常が発 生したりという問題が発生しました。
Javaでは,オブジェクトの文字列化処理は様々な箇所で暗黙的に行われているため,
BigDecimalの文字列化が行われている箇所を単純な文字列検索などで洗い出すことは困難です。
先ほどご紹介したマイグレーションツールを使用すると,この文字列化処理が行われている箇所 を網羅的に洗い出すこともできます。
© 2013 IBM Corporation
14 WAS V8.5.5 WAS V8.5.5 最新情報ワークショップ最新情報ワークショップ
J2EE/Java EE アプリケーションのマイグレーションの概要
J2EE 1.2 から J2EE 1.3 以降へは基本的な上位互換が保たれている
–
ただし,J2EE 1.3
から国際化対応の機能が導入されたため,日本語環境のアプリケーションでは何らかの対応が必要となるケースが多い
–
細かい仕様の変更があるため,個別に対応が必要となるケースもJ2EE 1.3 から J2EE 1.4 以降へは高いレベルで上位互換が保たれている –
多くのアプリケーションが変更無しに稼動する–
アプリケーションによっては若干の手直しが必要となるケースもある基本的に J2EE 1.4 アプリケーションであれば,
WAS V8.5.5 Liberty プロファイルでそのまま動作可能
– Java EE 5/6の新機能を使用する場合にはマイグレーションする
J2EE/Java EE使用については,WAS V4.0以前のJ2EE 1.2アプリケーションからは大きな修正が必 要となるケースがしばしばあります。
ですが,WAS V5.0/5.1のJ2EE 1.3アプリケーションについては,小さな修正でアプリケーションを稼 働させることができますし,WAS V6.0/6.1のJ2EE 1.4アプリケーション以降であれば,基本的にその ままアプリケーションを実行することができます。
ただ,最新のJava EE 6では,多くの便利が機能が提供されています。これらを使用する場合には,
アプリケーションをJava EE 6へ移行する必要があります。アプリケーションのバージョンアップは,
構成ファイルであるデプロイメントディスクリプタ(application.xmlやweb.xmlなど)を最新の使用に対 応したものに変換します。
WAS V8.5.5 最新情報ワークショップ 15
© 2013 IBM Corporation
15 WAS V8.5.5 WAS V8.5.5 最新情報ワークショップ最新情報ワークショップ
J2EE 1.3 から: JSP 2.0 の仕様変更への対応
JSP 2.0
からEL
(Expression Language
)が仕様に追加された–JSP中に「${ ~}」「#{ ~}」という文字列が存在している場合ELと解釈される –これらの文字列が含まれている場合,適宜エスケープ(¥記号の追加)をおこなう
JSP 1.2
から2.0
でpageEncoding
の指定方法が変更に–JSP 1.2: コンパイル単位でEncodingを指定 –JSP 2.0: ファイル単位でEncodingを指定
includeディレクティブで他のJSPファイルを読み込んでいる場合に、pageディレクティブ
とpageEncoding
を追加アプリ内の全てのJSPファイルが全て同じエンコードならweb.xmlで一括指定が可能 –<jsp-config>要素の配下の<page-encoding>要素で指定する
<%@ page
contentType="text/html; charset=Shift_JIS"
pageEncoding="MS932" %>
<%@ include file="b.jsp" %>
日本語のテキスト
<@ page pageEncoding="MS932" %>
<@ page pageEncoding="MS932" %>
<@ page pageEncoding="MS932" %>
<@ page pageEncoding="MS932" %>
日本語のテキスト
b.jsp b.jspb.jsp b.jsp a.jsp a.jspa.jsp a.jsp
コンパイル単位
ファイル単位
ファイル単位 これを追加しないと文字化けする
J2EE 1.3のアプリケーションをJ2EE 1.4以降の仕様に準拠させるには,一部JSP仕様の変更に対応 させることが必要な場合があります。
© 2013 IBM Corporation
16 WAS V8.5.5 WAS V8.5.5 最新情報ワークショップ最新情報ワークショップ
その他,完全プロファイルから Liberty プロファイルへの移行の注意点
JNDI による名前解決
–
完全プロファイルで提供されていたInitialContext
のファクトリークラスであるcom.ibm.websphere.naming.WsnInitialContextFactory
は,Libertyプロファイルでは提供されません。
–
ファクトリークラスを指定しないでInitialContext
を作成してください。DataSource の定義
–
データソースのプロパティの中に,名前が変わったもの,デフォルト値が変更になっ たものがあります。–
詳細については,InfomationCenter
の記述を参照してください。http://pic.dhe.ibm.com/infocenter/wasinfo/v8r5/topic/com.ibm.websphere.wlp.c ore.doc/ae/rwlp_ds_diff.html
JDBC Driver がロードされるクラスローダーの同一性が異なります
–
完全プロファイルでは,XA対応・非対応のJDBC Driverは異なるドライバーとして構 成する必要があり,それぞれ別のクラスローダーでロードされます。– Liberty
プロファイルでは,単一のJDBC Driver
でXA
対応・非対応の二つのドライ バーを定義できます。これらは同一のクラスローダーからロードされます。その他,移行に当たって必要な注意点となります。
© 2013 IBM Corporation
17 WAS V8.5.5 WAS V8.5.5 最新情報ワークショップ最新情報ワークショップ
アプリケーション・クラスローダーに関する注意点
Liberty プロファイルは OSGi ランタイム上に実装されてい るため,ほとんどの WAS 内部実装クラスはアプリケーショ ンから不可視になっている
– OSGi
は基本機能としてバンドル間のクラスの可視・不可視の調整を行う
– WAS
とアプリケーションのクラスの重複による問題は,減る可能性が高い
Liberty プロファイルでは,
アプリケーションサーバー全体で
単一のクラスローダーを使用することはできない –
モジュールごとに独立したクラスローダーが使用されるアプリケーションのクラスローダーに
「親が最初」「親が最後」の構成を行うことはできる –
設定するためには,dropins
に配置するのではなくserver.xml
に登録する必要があるOSGi
また,WASの完全プロファイルとLibertyプロファイルでは,内部のクラスローダーの構成も異なって います。OSGiのクラス管理機能を使用することによって,クラスの可視・不可視がより厳密に管理さ れるようになっています。
従来のWASの環境でデフォルトのクラスローダーの指定で稼働していたアプリケーションについて は,基本的に変更の必要はありませんが,クラスローダーの構成を変更しないと稼働しなかったア プリケーションについては,Libertyプロファイルでも構成の調整やアプリケーションの修正などが必 要となる場合があります。
WAS V8.5.5 最新情報ワークショップ 17
© 2013 IBM Corporation
18 WAS V8.5.5 WAS V8.5.5 最新情報ワークショップ最新情報ワークショップ
WAS V8.5 Liberty プロファイルからのマイグレーション
この章では,WAS V8.5のLibertyプロファイルでアプリケーションを稼働させていたお客様がWAS V8.5.5のLibertyプロファイルに移行する場合の注意点について解説します。
© 2013 IBM Corporation
19 WAS V8.5.5 WAS V8.5.5 最新情報ワークショップ最新情報ワークショップ
Liberty プロファイルのマイグレーション
V8.5.0 から V8.5.5 へは完全な上位互換が取られている
– 従来の構成ファイルは,そのまま使用できる
– V8.5.0 で提供されていた Feature は, V8.5.5 でも全て提供されている – アプリケーションについても,原則的に修正無しで移行が可能
Libertyプロファイルについては,V8.5.0からV8.5.5への移行について基本的な上位互換が取られて いますので,従来の構成ファイルやアプリケーションなどについては,修正無しでそのまま使用して いただく事ができます。
WAS V8.5.5 最新情報ワークショップ 19
© 2013 IBM Corporation
20 WAS V8.5.5 WAS V8.5.5 最新情報ワークショップ最新情報ワークショップ
Liberty プロファイルの導入
Installation Manager 上では, WAS V8.5.0 の Liberty プロファイ ルは WAS パッケージの 1 コンポーネントだったが, WAS V8.5.5 からは,独立したパッケージとして提供されるようになった
– WAS V8.5.0.x から Refresh Pack を導入して V 8.5.5.x にアップデートすると,
<WAS Root>/wlp ディレクトリは
wlp.bak_< 日付 > ディレクトリにバックアップされる
V8.5.0.x の Liberty プロファイル環境を V8.5.5.x 以降へマイグレー ションする場合,直接的な上書きができないので,別ディレクトリ に新規に導入をおこなう
– <wlp>/usr (および <wlp>/etc )ディレクトリ以下をバックアップし,
新しい環境に上書きする
– 最初にサーバーを起動する際に, --clean オプションを付けて起動する
ただ,既存の環境について,Refresh packを適用して,Libertyプロファイルのファイルを上書きして 更新することはできません。新しい環境を別途導入し,旧環境の構成ファイルを新環境に上書きコ ピーする必要があります。
サーバー構成ファイルには,OSGiがworkareaに保存しているキャッシュ情報が含まれていますの で,この内容を更新するため,最初に起動する際に--cleanオプションを付けて起動する必要があり ます。
WAS V8.5.5 最新情報ワークショップ 21
© 2013 IBM Corporation
21 WAS V8.5.5 WAS V8.5.5 最新情報ワークショップ最新情報ワークショップ
Tomcat からのマイグレーション
続いて,Tomcat環境でアプリケーションを実行しているお客様が,アプリケーションをLibertyプロ ファイルに移行する際の注意点について解説します。
© 2013 IBM Corporation
22 WAS V8.5.5 WAS V8.5.5 最新情報ワークショップ最新情報ワークショップ
Tomcat の置き換えとしての Liberty プロファイル
Web Services Technologies Web Services TechnologiesWeb Services Technologies Web Services Technologies JSR 311: JAX-RS: The Java API
for RESTful Web Services 1.1 JSR 224: Java API for XML-Based
Web Services (JAX-WS) 2.2 JSR 222: Java Architecture
for XML Binding (JAXB) 2.2
JSR 109: Implementing Enterprise Web Services 1.3 JSR 181: Web Services Metadata
for the Java Platform
JSR 101: Java APIs for XML based RPC 1.1 JSR 67: Java APIs for XML Messaging 1.3 JSR 93: Java API for
XML Registries 1.0 (JAXR) 1.0 Management and Security Technologies Management and Security TechnologiesManagement and Security Technologies Management and Security Technologies JSR 196: Java Authentication Service Provider
Interface for Containers 1.0 JSR 115: Java Authorization
Contract for Containers 1.3 JSR 88: Java EE Application Deployment 1.2 JSR 77: J2EE Management 1.1
Web Profile Web Profile Web Profile Web Profile
Web Application Technologies Web Application Technologies Web Application Technologies Web Application Technologies JSR 315: Java Servlet 3.0
JSR 314: JavaServer Faces (JSF) 2.0 JSR 245: JavaServer Pages 2.2
and Expression Language (EL) 1.2
JSR 52: A Standard Tag Library for JavaServer Pages 1.2 JSR-45: Debugging Support for Other Languages 1.0 Enterprise Application Technologies
Enterprise Application Technologies Enterprise Application Technologies Enterprise Application Technologies JSR 299: Contexts and Dependency Injection
for the Java EE Platform 1.0 JSR 330: Dependency Injection for Java JSR 318: Enterprise JavaBeans 3.1 (EJB Lite) JSR 317: Java Persistence API 2.0
JSR 250: Common Annotations for the Java Platform 1.1 JSR 907: Java Transaction API (JTA) 1.1
JSR 303: Bean Validation 1.0
JSR 914: Java Message Service (JMS) API 1.1 JSR 318: Enterprise JavaBeans 3.1
JSR 322: Java EE Connector Architecture 1.6 JSR 919: JavaMail 1.4
Tomcat
Tomcat
で提供されているで提供されているで提供されているで提供されているで提供されているで提供されているで提供されているで提供されているAPI API Java EE full Profile
Liberty プロファイル プロファイル プロファイル プロファイル Liberty Liberty プロファイル プロファイル プロファイル プロファイル プロファイル プロファイル プロファイル プロファイル Liberty Liberty プロファイル プロファイル プロファイル プロファイル プロファイル プロファイル プロファイル プロファイル
Tomcatで提供されているのは,Java EE Web Profileで定義されているAPIのさらに一部のWeb Application Technology関連のAPIだけです。Libertyプロファイルは,Tomcatで提供されているAPI を含めたWeb Profile仕様全体,および追加のAPIをサポートしています。そのため,Tomcatで使用 していたアプリケーションについては,原則的にLibertyプロファイルへ移行して実行することができ ます。
© 2013 IBM Corporation
23 WAS V8.5.5 WAS V8.5.5 最新情報ワークショップ最新情報ワークショップ
パフォーマンス(1) 起動速度およびメモリ使用量 ベンチマークソフト TradeLite を使用したテストでは,
Liberty プロファイルは,他の軽量アプリケーションサーバーに比
べると Tomcat と同じレベルの起動速度,メモリ使用量の少なさを
実現している
Intel Core 2 Duo CPU @ 2.16 GHz [2 cores] 2MB L2, 2GB RAM IBM JDK 7 sr4fp1ifix-20130404 used with Liberty
Oracle JDK 7 su21 used for other products
Tomcatを使用しているお客様は,その軽さ,メモリ使用量の少なさを理由にされていることがしばし ばあります。Libertyプロファイルを使用した場合,より多くの資源を必要とするのではないかという 懸念があります。
ですが,WASのLibertyプロファイルは,他の軽量ランタイムとよばれるコンテナ,JBossやGrassfish よりも少なく,Tomcatと同じレベルの起動の速さ,メモリ使用量の少なさを実現しています。
WAS V8.5.5 最新情報ワークショップ 23
© 2013 IBM Corporation
24 WAS V8.5.5 WAS V8.5.5 最新情報ワークショップ最新情報ワークショップ
パフォーマンス(2) 起動速度およびメモリ使用量
EJB lite などを使用したベンチマークソフト DayTrader 3 でも,
起動速度,メモリ使用量について,
他の軽量アプリケーションサーバーよりよい成績を出している
– DayTrader 3 は Tomcat では稼働しない
Intel Core 2 Duo CPU @ 2.16 GHz [2 cores] 2MB L2, 2GB RAM IBM JDK 7 sr4fp1ifix-20130404 used with Liberty
Oracle JDK 7 su21 used for other products
この軽量ランタイムとの差は,ServletやJSPだけではない,EJB liteなどのJava EEの多くの機能を 使用したアプリケーションを実行した場合,さらに大きくなります。
© 2013 IBM Corporation
25 WAS V8.5.5 WAS V8.5.5 最新情報ワークショップ最新情報ワークショップ
パフォーマンス(3) スループット
TradeLite で比較した場合, Liberty プロファイルは Tomcat よりも 高いスループットを実現する
DayTrader 3 で比較した場合, Liberty プロファイルは Glassfish と 同程度, JBoss よりも高いスループットを実現する
Intel Core 2 Duo CPU @ 2.16 GHz [2 cores] 2MB L2, 2GB RAM IBM JDK 7 sr4fp1ifix-20130404 used with Liberty
Oracle JDK 7 su21 used for other products
これだけの軽さを維持しつつ,Libertyプロファイルは本番での使用にも耐える十分なパフォーマン スを提供します。TradeLiteを使用したベンチマークではTomcatよりも4割以上高いスループットを実 現しますし,DayTrader 3を使用したベンチマークでは,JBossよりも5割以上高い結果を出していま す。GrassFishとは同程度のスループットとなっています。
このことから,Tomcatを置き換え,より高いパフォーマンスを実現できるプラットフォームとして,
Libertyプロファイルは魅力的な実行環境であると言えます。
WAS V8.5.5 最新情報ワークショップ 25
© 2013 IBM Corporation
26 WAS V8.5.5 WAS V8.5.5 最新情報ワークショップ最新情報ワークショップ
Liberty Core エディションで提供される JDK 以下のプラットフォームで,
Liberty プロファイルを実行するための IBM Java SKD 7 を提供
– Windows
– Linux ( Intel x86/x86-64, IBM Power, IBM System z ) – AIX
以下のプラットフォームで,
ベンダーから OEM 供給された Java SDK 7 をサポートつきで提供
– Solaris – HP-UX
TomcatからWAS Libertyプロファイルへ移行することのもう一つのメリットは,サポートがあるJDKが 同梱されていることです。
Javaアプリケーションを運用している多くの環境では,アプリケーションサーバーの障害と同程度の 頻度でJDK/JVMの障害が発生しています。JDK/JVMの障害についてはユーザーやコミュニティベ ースの対応が難しいため,ベンダーサポートが必須となります。
Windows,Linux,AIXのプラットフォームでは,IBMが独自に実装したJVM(J9 VM)を使用したJava SDKが同梱されています。高いパフォーマンスを誇り,充実した問題判別機能が実装された,ビジ ネスに最適のJavaランタイム環境です。また,SolarisおよびHP-UXについては,それぞれのベンダ ーからOEM提供されたJava SDKが提供されています。
これ以外のプラットフォームでLibertyプロファイルを実行する場合は,ユーザーが独自に入手した
© 2013 IBM Corporation
27 WAS V8.5.5 WAS V8.5.5 最新情報ワークショップ最新情報ワークショップ
Tomcat のバージョンと Servlet/JSP 仕様のバージョン
Tomcat 4 以降であれば大きな変更なく移行が可能
– Tomcat 3 からは国際化対応が必要
– Tomcat 4 からは JSP の仕様変更への対応が必要
Tomcat 3 Tomcat 4 Tomcat 5/5.5 Tomcat 6 Tomcat 7
Servlet 2.2 2.3 2.4 2.5 3.0
JSP 1.1 1.2 2.0 2.1 2.2
対応する J2EE/Java EE
J2EE 1.2 J2EE 1.3 JEE 1.4 Java EE 5 Java EE 6
Tomcatについても,過去のバージョンからの移行であれば,Servlet仕様,JSP仕様の変更に対応 した修正が必要となることがあります。Tomcat 5.5/5以降からの移行であれば大きな修正は必要あ りませんが,それ以前からの修正では,旧バージョンのWASからの移行と同程度の修正が必要と なります。
WAS V8.5.5 最新情報ワークショップ 27
© 2013 IBM Corporation
28 WAS V8.5.5 WAS V8.5.5 最新情報ワークショップ最新情報ワークショップ
Application Server Migration Toolkit
マイグレーションツールでは,
Tomcat アプリケーションからの 移行での要修正箇所を検出可能
– 検出されるルールの例
• Tomcat
固有クラス(BasicDataSource,Juliロギング等)の使用
•
不正確なリソース参照文字列の使用Application Migration Tool
WAS V7.0 V6.0 & 6.1
V5.1
WebSphere Application Server
V8.5, V8, V7
Oracle WLS Oracle AS JBoss AS / EAP Tomcat
検出ルール クイックフィックス
Java 6 2
JSP 3 1
XML 10 8
Total 19 11
Migration Tool Version 3.5
で提供されているTomcat関連のルール
Tomcatからの移行に当たってもマイグレーションツールが使用できます。マイグレーションツール V5.3では,Servlet/JSP仕様の修正の検出のほか,TomcatからWASへの移行に当たって修正が必 要な箇所を検出するルールも実装されています。
Tomcat固有のクラスを使っている場合以外は致命的な修正点はほとんどなく,多くのアプリケーシ ョンでは,必要最小限の修正でWAS Libertyプロファイルへ移行することができます。
© 2013 IBM Corporation
29 WAS V8.5.5 WAS V8.5.5 最新情報ワークショップ最新情報ワークショップ
まとめ
過去の WAS からの移行に当たっては,
アプリケーションが使用している API が
Liberty プロファイルで提供されているかの調査が必要です。
以前のバージョンの Liberty プロファイルからは,
上位互換が取られているためそのまま移行できます。
Tomcat からの置き換えとして, Liberty プロファイルは最適です。
WAS V8.5.5 最新情報ワークショップ 29
© 2013 IBM Corporation
30 WAS V8.5.5 WAS V8.5.5 最新情報ワークショップ最新情報ワークショップ