Java SE 6

WebSphere Application Server V9
アナウンスメント・セミナー
V9への移行
日本アイ・ビー・エム株式会社
クラウド・ソフトウェア事業部
アプリケーション・プラットフォーム
田中 孝清
アジェンダ
この章ではWAS V8.5 Fullプロファイルや
WAS 8.0以前から,WAS V9.0 traditionalへの
マイグレーションを扱います
 Libertyプロファイルへの移行は扱いません
マイグレーション概要
 アプリケーションの移行
 環境の移行
2
© 2016 IBM Corporation
マイグレーション概要
3
© 2016 IBM Corporation
マイグレーションのロードマップ
調査
計画
スキルの習得
開発環境
 開発環境の更新
 アプリケーションの
マイグレーション
 単体テスト
実行環境
 実行環境のマイグレーション
 実行環境のテスト
統合テスト
サービス開始
調査
計画
スキル習得
開発環境
実行環境
アプリケーションの
マイグレーション
実行環境の
マイグレーション
単体テスト
環境のテスト
統合テスト
サービス開始
4
© 2016 IBM Corporation
非推奨および削除となった機能・安定化された機能
削除された機能(Removed features)
そのバージョンから使用できなくなった機能
使用している場合は,必ず移行が必要
非推奨となった機能(Deprecated features)
将来のバージョンで削除が予定される機能
使用している場合は,可能な限り移行を検討する
安定化された機能(Stabilized features)
将来のバージョンでの削除は予定されていないが,
代替機能があるため機能改善や新機能の追加は行われな
いもの。
移行の必要はないが,代替機能の検討はおこなう
5
© 2016 IBM Corporation
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で提供されていた機能
 Common Event Infrastructure(CEI)および関連するAPI
6
© 2016 IBM Corporation
WAS V9で非推奨となったAPI
Java EE 7仕様で非推奨となったもの
EJBのEntity Beanによる永続化
JAX-RPCによるSOAP通信
JAX-R / Java EE Application Deployment
Asynchronous beans / CommonJ
Concurrency Utilities for Java EE (JSR 236)へ移行
7
© 2016 IBM Corporation
WAS V9で非推奨となった主なシステム管理機能
wsadminスクリプト(jython 2.7へ移行)
 jacl
 jython 2.1
SIBus(IBM MQへ移行)
WAS V4形式のDataSource / DataSource MBean
Lifecycle Managementを使用した
LibertyプロファイルのWAS ND/ODRへの統合
IBM Support Assistant(ISA)Data Collectorによる
問題判別資料の収集(推奨がCollectorに戻りました)
DMZ Secure Proxy Server
8
© 2016 IBM Corporation
アプリケーションの移行
9
© 2016 IBM Corporation
対応しているJava EE / Java SE仕様
WAS V6.1
WAS V7.0
WAS V8.0
WAS V8.5
WAS V9.0
10
J2EE 1.4
Servlet 2.4/JSP 2.0
EJB 2.1
Java EE 5
Servlet 2.5/JSP 2.1
EJB 3.0
Java EE 6
Servlet 3.0/JSP 2.2
EJB 3.1
Java EE 6
Servlet 3.0/JSP 2.2
EJB 3.1
Java EE 7
Servlet 3.1/JSP 2.3
EJB 3.2
J2SE 5.0
Java SE 6
Java SE 6
Java SE 6
Java SE 7
Java SE 8
2016/1Qより
Java SE 8
© 2016 IBM Corporation
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
1.4
J2SE 5.0 Java SE 6
7
Java言語仕様 Java SE 8 Edition
Java SE 8
11
© 2016 IBM Corporation
Java SE:Generics(総称型)への対応
汎用的なオブジェクトを扱うクラスにおいて,
扱うオブジェクトの型をパラメーターとして指定できる
 Java SE 5より導入
 コンパイル時点での型の安全性の保証/型キャストの排除
コレクション・フレームワークをはじめとして
多くの標準APIが総称型を使用したものに変更
 型を指定しないで使用するとコンパイル時に警告が出るように
 既存のコードについては警告を無視すれば,稼働するコードは生成可
 潜在的なバグを抑制するためにも,正しく型を指定することを推奨
Java SE 8のLambdaをはじめとする
新機能を使用する場合には総称型の仕様が前提
 総称型で指定した型をもとに型推論がおこなわれるため
12
© 2016 IBM Corporation
Java SE:Genericsを使用するように変更したコードの例
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が
発生する可能性
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);
// キャストは不要
}
13
© 2016 IBM Corporation
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への移行
高いレベルで上位互換性がとられている
クラスの構造などに,ある種の前提をおいているコードなどが動かないことも
 インターフェースは実装をもたない
 同一のアノテーションが複数指定されることはない
など
非互換の詳細については,以下の文章を参照
http://www.oracle.com/technetwork/jp/java/javase/overview/8-compatibilityguide-2156366-ja.html
14
© 2016 IBM Corporation
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などで
動作変更になった部分があるために修正が必要なこともある
15
© 2016 IBM Corporation
Java EE仕様のマイグレーション(2)
Java EE 6 / 7の新機能を使用する場合には
マイグレーションする
 新仕様に対応した開発環境で,
Java EE 6/7のアプリケーションとしてコンパイルする
 アプリケーションのコンパイル環境をあげた場合,
メソッド追加などソースコードの修正が必要になるケースがある
ユーザーが実装することを前提としたインターフェースは,
仕様のバージョンが上がってもほとんど変更されることはない
コンテナが実装することを前提としたインターフェースは,
仕様のバージョンが上がると機能の追加がしばしば行われる
16
© 2016 IBM Corporation
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へ移行する
17
© 2016 IBM Corporation
マイグレーションに使用できるツール(1)
 WASの旧バージョンからの
移行を支援するツール
無償でダウンロードして使用することができる
EclipseやRational Application Developerに
組み込んで使用
Rational Software Analyzerの技術を使用して
Javaコード,JSP,デプロイメント記述子の調査
修正が必要な箇所をリストアップし
修正方法についてガイドを表示
Tomcat
JBoss AS / EAP
WebSphere Application Migration Tool
WAS
V7.0
V6.0 & 6.1
V5.1
Oracle AS
 WebLogic,JBoss,Oracle ASなどからの
移行を支援するツール
移行の負荷を大幅に削減
Oracle WLS
Application Server Migration Toolkit
Competive Application Migration Tool
Application
Migration Tool
WebSphere
Application Server
V9.0, 8.5
https://www.ibm.com/developerworks/websphere/downloads/migtoolkit/
18
© 2016 IBM Corporation
マイグレーションに使用できるツール(2)
Migration Toolkit for Application Binaries
アプリケーションのバイナリ(EAR/WARファイル)を
直接調査して,使用しているAPIやクラスを検出する
移行が必要な仕様やクラスを簡便に調査できる
WASdevからダウンロード可能
https://developer.ibm.com/wasdev/downloads/
19
© 2016 IBM Corporation
実行環境の移行
20
© 2016 IBM Corporation
実行環境のマイグレーションの概要
システムトポロジー
WAS 5.0以降では,管理概念は大きく変わってはいない
WAS 7.0以降なら,基本的にはツールによる9.0への移行が可能
V6.0より前のバージョンからの移行では,
HA機能への対応,プロファイルへの対応が必要
V6.1より前のバージョンからの移行では,
改良されたセキュリティ機能への対応が必要
パフォーマンス・パラメーター
バージョン間で方式や意味が変わったものが多く,
再度のチューニングが必要
Javaヒープメモリサイズ・GC方式
各種タイムアウト時間
21
© 2016 IBM Corporation
異なるバージョンの共存
1つのCell内で
V9.0, V8.5, V8.0, V7.0の
ノードを混在することが可能
DMはより新しいバージョンで
なければならない
旧ノードは異なるOSでも可能
V9
Deployment
Manager
V8
V9
NodeAgent
NodeAgent
V8
Application
Server
…
V8
V9
Application
Server
Application
Server
V8 Node
V8
Config
Files
22
J2EE
Apps
(EARs)
Config
Files
Java
EE 6
Apps
…
V9
Application
Server
V9 Node
Cell
V7
Config
Files
Java
EE 5
Apps
© 2016 IBM Corporation
WAS V7.0以降の環境からのマイグレーション
 ツールによるマイグレーションが可能
 既存のV6,V7環境から構成情報を抜き出し,V8環境に取り込む
 旧環境と同様の構成(スタンダード)にするか
ポートを変更した構成(クローン)にするか選択が可能
 クローンでは旧環境と共存も可能
 スタンダードも旧環境は削除されていないので,切り戻すことも可能
 Deployment Managerを含むトポロジーでの段階移行では使用が必須
 導入されているアプリケーションを含めて移行するかどうかは
選択することが可能
23
© 2016 IBM Corporation
WebSphere
Application Server
24
© 2016 IBM Corporation