WebSphere Application Server V9
アナウンスメント・セミナー
日本アイ・ビー・エム株式会社 クラウド・ソフトウェア事業部 アプリケーション・プラットフォーム 田中 孝清V9への移行
アジェンダ
この章ではWAS V8.5 Fullプロファイルや
WAS 8.0以前から,WAS V9.0 traditionalへの
マイグレーションを扱います
Libertyプロファイルへの移行は扱いません
マイグレーション概要
アプリケーションの移行
© 2016 IBM Corporation
3
マイグレーションのロードマップ
調査 計画 スキルの習得 開発環境 開発環境の更新 アプリケーションの マイグレーション 単体テスト 実行環境 実行環境のマイグレーション 実行環境のテスト 統合テスト サービス開始 調査 計画 スキル習得 開発環境 実行環境 アプリケーションの マイグレーション 実行環境の マイグレーション 単体テスト 環境のテスト 統合テスト© 2016 IBM Corporation 5
非推奨および削除となった機能・安定化された機能
削除された機能(Removed features)
そのバージョンから使用できなくなった機能 使用している場合は,必ず移行が必要
非推奨となった機能(Deprecated features)
将来のバージョンで削除が予定される機能 使用している場合は,可能な限り移行を検討する
安定化された機能(Stabilized features)
将来のバージョンでの削除は予定されていないが, 代替機能があるため機能改善や新機能の追加は行われな いもの。 移行の必要はないが,代替機能の検討はおこなうWAS V9で削除された主な機能
JavaServer Faces (JSF) 1.2機能を提供するSun参照実装 (RI) 使用している場合はJSF 2.2へ移行する
Web 2.0 and Mobile Toolkit
Dojo toolkit, WebDAV拡張,Commet対応等
Open Service Component Architecture (SCA)モデルの実行環境 Edge ComponentのLoad Balancer for IPv4
WAS V7以前に対する集中インストレーションマネージャー機能 一部のWebサーバーPlugin手動構成スクリプト
WebSphere Customization Toolboxで構成を作成する HP-UX環境におけるGUIベースの
WebSphere Customization Toolbox
Communications Enabled Applications(CEA) WAS V7 Feature Pack for CEAで提供されていた機能
© 2016 IBM Corporation 7
WAS V9で非推奨となったAPI
Java EE 7仕様で非推奨となったもの
EJBのEntity Beanによる永続化 JAX-RPCによるSOAP通信JAX-R / Java EE Application Deployment
Asynchronous beans / CommonJ
WAS V9で非推奨となった主なシステム管理機能
wsadminスクリプト(jython 2.7へ移行) jacl jython 2.1 SIBus MQサーバーを利用したWebSphere MQとの連携機能が非推奨に (MQリンクを利用した連携に移行)WAS V4形式のDataSource / DataSource MBean
Lifecycle Managementを使用した
LibertyプロファイルのWAS ND/ODRへの統合
IBM Support Assistant(ISA)Data Collectorによる
問題判別資料の収集(推奨がCollectorに戻りました)
© 2016 IBM Corporation
9
対応しているJava EE / Java SE仕様
WAS V6.1 Servlet 2.4/JSP 2.0J2EE 1.4
EJB 2.1
J2SE 5.0
WAS V7.0 Servlet 2.5/JSP 2.1Java EE 5
EJB 3.0
Java SE 6
WAS V8.0 Servlet 3.0/JSP 2.2Java EE 6
EJB 3.1
Java SE 6
WAS V8.5 Servlet 3.0/JSP 2.2Java EE 6
EJB 3.1
Java SE 6 Java SE 7 Java SE 8
WAS V9.0 Servlet 3.1/JSP 2.3Java EE 7 Java SE 8
© 2016 IBM Corporation 11
Java SE仕様のマイグレーション
Java SE 8では,言語仕様レベルの大きな変更が行われた Project Lambda 過去二回(1.1→1.2および1.4→5.0)に匹敵する あるいは,それ以上のインパクトのある大変革 バイトコードレベル(コンパイル済みコード)では 上位互換は保証されている Java言語仕様 1st Edition JDK 1.0 1.1 Java言語仕様 2nd Edition J2SE 1.2 1.3 Java言語仕様 3rd (SE 7) Edition J2SE 5.0 Java SE 6 1.4 7Java言語仕様
Java SE 8 Edition
Java SE:Generics(総称型)への対応
汎用的なオブジェクトを扱うクラスにおいて, 扱うオブジェクトの型をパラメーターとして指定できる Java SE 5より導入 コンパイル時点での型の安全性の保証/型キャストの排除 コレクション・フレームワークをはじめとして 多くの標準APIが総称型を使用したものに変更 型を指定しないで使用するとコンパイル時に警告が出るように 既存のコードについては警告を無視すれば,稼働するコードは生成可 潜在的なバグを抑制するためにも,正しく型を指定することを推奨 Java SE 8のLambdaをはじめとする 新機能を使用する場合には総称型の仕様が前提© 2016 IBM Corporation
13
Java SE:Genericsを使用するように変更したコードの例
private HashMap<String, InetAddress> hosts; // 型を指定する
public void init() throws IOException {
hosts = new HashMap<String, InetAddress>();
hosts.put("localhost", InetAddress.getLocalHost());
hosts.put("publicdns", "8.8.8.8"); // コンパイルエラーとなる
}
public InetAddress getAddress(String hostname) {
return hosts.get(hostname); // キャストは不要
}
private HashMap hosts; // 型は指定しない
public void init() throws IOException {
hosts = new HashMap();
hosts.put("localhost", InetAddress.getLocalHost());
hosts.put("publicdns", "8.8.8.8"); // エラーとならない
}
public InetAddress getAddress(String hostname) {
return (InetAddress)hosts.get(hostname); // キャストが必要
}
潜在的なバグ
ClassCastExceptionが 発生する可能性
Java SE:バージョン間の非互換への対応
コンパイルが正常に通った場合も,Java SEのバージョンが 上がることによりAPIの挙動がかわることがあります J2SE 5.0からJava SE 6への移行 極めて高いレベルで上位互換性がとられている 非互換の詳細については,以下の文書を参照 http://www.oracle.com/technetwork/java/javase/compatibility-137541.html Java SE 6からJava SE 7への移行 Exceptionをcatch節の中でRe-throwする際の言語仕様変更など軽微なもののみ 非互換の詳細については,以下の文章を参照 http://www.oracle.com/technetwork/java/javase/compatibility-417013.html Java SE 7からJava SE 8への移行 高いレベルで上位互換性がとられている クラスの構造などに,ある種の前提をおいているコードなどが動かないことも インターフェースは実装をもたない 同一のアノテーションが複数指定されることはない など 非互換の詳細については,以下の文章を参照© 2016 IBM Corporation 15
Java EE仕様のマイグレーション(1)
基本的にJava EE 5以降アプリケーションであれば, Java EE仕様自体で上位互換が取られているため, WAS V9.0環境でも稼働する V9.0でサポートされているJava EE仕様については下記URLを参照 http://www.ibm.com/support/knowledgecenter/en/SSAW57_9.0.0/com.ibm. websphere.nd.multiplatform.doc/ae/rovr_specs.html WAS V9.0上ではJava EE 6/7仕様がサポートされており, Java EE 5のアプリケーションも稼働する J2EE 1.4/1.3/1.2のDD(デプロイメントディスクリプタ)を 持ったアプリケーションも,構成は成城に読み取られて稼働する 一部の仕様については,J2EE 1.3→1.4などで 動作変更になった部分があるために修正が必要なこともあるJava EE仕様のマイグレーション(2)
Java EE 6 / 7の新機能を使用する場合には
マイグレーションする
新仕様に対応した開発環境で, Java EE 6/7のアプリケーションとしてコンパイルする アプリケーションのコンパイル環境をあげた場合, メソッド追加などソースコードの修正が必要になるケースがある ユーザーが実装することを前提としたインターフェースは, 仕様のバージョンが上がってもほとんど変更されることはない コンテナが実装することを前提としたインターフェースは, 仕様のバージョンが上がると機能の追加がしばしば行われる© 2016 IBM Corporation 17
Java EE仕様のマイグレーション(3)
Java EEで非推奨と指定された仕様については 可能な限り新しい仕様に変更する EJBのEntity Beanによる永続化 → JPAへ移行する JAX-RPCによるSOAP通信 → JAX-WSへ移行する JAX-R / Java EE Application Deployment
→ 使用しない(Java EE標準仕様では後継機能はない)
JSF 1.2でWAS提供のSun Reference Implementation 1.2を
使用していた場合は,アプリケーション自身で実装を持つか, JSF 2.xへ移行する
マイグレーションに使用できるツール(1)
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 V9.0, 8.5 Or acl e W L S Or acl e A S JB o ss A S / EA P T o mcat
© 2016 IBM Corporation
19
マイグレーションに使用できるツール(2)
Migration Toolkit for Application Binaries
アプリケーションのバイナリ(EAR/WARファイル)を
直接調査して,使用しているAPIやクラスを検出する
移行が必要な仕様やクラスを簡便に調査できる
WASdevからダウンロード可能
© 2016 IBM Corporation 21
実行環境のマイグレーションの概要
システムトポロジー
WAS 5.0以降では,管理概念は大きく変わってはいない WAS 7.0以降なら,基本的にはツールによる9.0への移行が可能 V6.0より前のバージョンからの移行では, HA機能への対応,プロファイルへの対応が必要 V6.1より前のバージョンからの移行では, 改良されたセキュリティ機能への対応が必要
パフォーマンス・パラメーター
バージョン間で方式や意味が変わったものが多く, 再度のチューニングが必要 Javaヒープメモリサイズ・GC方式 各種タイムアウト時間異なるバージョンの共存
1つのCell内で V9.0, V8.5, V8.0, V7.0の ノードを混在することが可能 DMはより新しいバージョンで なければならない 旧ノードは異なるOSでも可能 V8 Application Server V8 Node V8 Application Server V8 NodeAgent…
V9 Application Server V9Node V9 Application Server V9 NodeAgent…
V9 Deployment Manager Cell J2EE Apps (EARs) Config Files Java EE 6 Apps V8 Config Files Java EE 5 Apps V7 Config Files© 2016 IBM Corporation 23