Libertyプロファイル概要・開発 日本アイ・ビー・エム株式会社 WebSphere クライアント・テクニカル・プロフェッショナルズ 田中 孝清
by user
Comments
Transcript
Libertyプロファイル概要・開発 日本アイ・ビー・エム株式会社 WebSphere クライアント・テクニカル・プロフェッショナルズ 田中 孝清
WASV8.5最新情報セミナー Libertyプロファイル概要・開発 日本アイ・ビー・エム株式会社 WebSphere クライアント・テクニカル・プロフェッショナルズ 田中 孝清 Agenda 1. 2. 3. 4. 5. 6. Libertyプロファイル概要 導入と基本操作 WAS V8.5 Liberty Profile Developer Tools Libertyプロファイルの構成 アプリケーション管理 まとめ・参考文献 © 2012 IBM Corporation 2 1. Libertyプロファイル概要 © 2012 IBM Corporation 3 Libertyプロファイルとは WAS V8.5から追加された,簡単に導入・構成が可能な 高速・軽量なWebアプリケーション実行環境 動的サーバー・プロファイル アプリケーションが必要な機能 を自動で判断して追加 Developer First にフォーカス シンプルかつ共有可能なサーバー構成 構成情報の共有や再利用を容易にするため、 1つのXMLファイル(複数も可)で管理 高速起動 起動時間: 5秒以内 ダウンロード・サイズ 50MB以下 軽量ランタイム わずかなメモリー使用量: (60MB for TradeLite) WAS V8.5 Liberty Profile 動的ランタイム 機能追加や構成変更時に、サー バーの再起動が不要 統合ツール NDのJob Managerと統合可能 高機能かつ、Eclipseから 簡単に使用可能 NDのJob Managerからサーバーの ライフサイクルを管理可能 Unzipによる導入とデプロイ プラットフォーム拡充 Installation Manager か unzip で 導入。サーバー + アプリ + 構成情 報をUnzipでデプロイ可能 開発用としてMACを追 加サポート © 2012 IBM Corporation 通常のWASとの高い親和性 同じ信頼性の高いコンテナとQOSを採 用。開発から運用に簡単に移行 4 登場の背景 サーバー実行環境と開発環境の要件の違い 高機能 重要 起動に時間がかかる 導入イメージが大きい 詳細な構成項目 © 2012 IBM Corporation 機能限定 重要 短時間で起動 少ないフットプリント 簡単な構成 動的な更新 5 Libertyプロファイルの特徴 50M以下のダウンロードサイズ, ファイルを展開するだけの容易な導入。 機能は限定されているものの, 非常に短時間での起動(多くの環境で数秒~十数秒), 動的な更新が可能。 少ないメモリ・リソースで稼働。 ディスク上のサイズも限定的。 主に開発者が開発中のテストに 使用することを想定しているが, 要件によっては本番環境で使用することも可能 © 2012 IBM Corporation 6 WAS V8.5 Libertyプロファイルで提供されている機能 API: Java EE servlet-3.0 jsp2.2 jsf-2.0 jaxrs-1.1 json-1.0 jpa-2.0 beanvalidation-1.0 API: Java SE jndi-1.0 jdbc-4.0 API: OSGi サーバー・サービス appSecurity-1.0 sessionDatabase-1.0 ssl-1.0 localConnector-1.0 restConnector-1.0 monitor-1.0 serverStatus-1.0 サーバー・サービス(zOS環境) zosTransaction-1.0 zWlm-1.0 zosSecurity-1.0 blueprint-1.0 osgi-jpa-1.0 wab-1.0 © 2012 IBM Corporation 7 Libertyプロファイルで提供されていない機能の例 API EJB: Session Bean,Massage Driven Bean JMS SOAPによるWebサービス:JAX-WS,JAX-RPC CDI 等 サーバー・サービス クラスタ環境に対応したトランザクション・マネージャー Mem-to-memのセッション・レプリケーション インタラクティブな分散環境統合管理 統合レポジトリー © 2012 IBM Corporation 等 8 動的更新 構成の動的更新 サーバー構成ファイル(server.xml)の変更が動的に更新される (デフォルトでは500msecごとにファイルのチェックが行われる) サーバーの再起動は不要 アプリケーションの動的更新 アプリケーションの追加と削除(dropinディレクトリ) 導入済み アプリケーションの更新 features (dropinディレクトリ applications resources および server.xml server.xmlの<application>で 指定されたアプリ) ¾ application application application dropins デフォルトでは500msecごとに ファイルのチェックが行われる 該当のアプリケーション のみ再起動される 無効化することも可能 (手順は次章) jspjsf-2.0 2.2 servle t-3.0 feature更新 config更新 application更新 serverssl-1.0 monitor Statussession -1.0 1.0 Databa jdbcse-1.0 jndi-1.0 4.0 Libertyランタイム OSGi フレームワーク JDK 6.0 + © 2012 IBM Corporation 9 ライセンス WAS for Developerのライセンスで • • 開発者がローカルでの開発・テストで使用する場合は無償 有償でサポートを提供(技術Q&A/障害対応) WAS Express/Base/NDのライセンスで • • • 本番環境や検証環境での利用が可能 お買い上げ頂いたValue Unit数の範囲内で利用可能 技術Q&Aや障害対応などのサポートを提供 WAS for Developers WAS Hypervisor Edition WAS ND Tools +Liberty Edition Profile +Liberty+Intelligent Profile Mgmt Tools +Liberty+Intelligent +Liberty+Intelligent Edition Profile Mgmt Profile Mgmt 本番環境の WASで稼働す るアプリケー ションの迅速な 開発をサポート VMware, PowerVM, zVM などのサーバー仮 想化環境に最適化され, 短時間で環境構築が可 能 非常に高い可用性,高 いパフォーマンス,高度 な管理機能を提供。ミッ ション・クリティカルなア プリケーションに最適。 開発者のPCで の利用を想定 無償で提供 Eclipse用アダ プターを利用可 能 © 2012 IBM Corporation WAS for z/OS z/OS Sysplex を活用し, 高度なセキュリティー, 信頼性を提供。リソース 活用を最大化。 WAS Tools +Liberty セキュアでパフォーマンスの高いトランザクション・エンジ Edition Profile ンを提供 最大で5つのアプリケーション・サーバー・プロファイル間 にて,Web層のクラスタリングとフェイルオーバー機能を 提供。 WAS Express WAS CE オープンソースベース 安価に動的Webア スモール・フットプリント +Liberty プリケーションを構 Profile 初期ライセンス・コストが 築可能 不要 共通のコードベース 10 2. 導入と基本操作 © 2012 IBM Corporation 11 導入方法 三通りの導入方法 自己展開圧縮ファイルを実行して展開 IBM Installation Managerによる導入 Eclipse上のWDTを使用してダウンロード・導入 ¾ WDT:WebSphere Application Server Developer Tools 既存の導入・構成済みの環境をPackageして, 独自の導入zipファイルを作成することも可能 次章で解説 © 2012 IBM Corporation 12 自己展開圧縮ファイルを実行して展開(1) 導入ファイルは,Javaの実行可能Jarファイル 入手方法 製品の導入メディアのWLPディレクトリーに格納 WASDev.netからダウンロード(要IBM ID登録) 導入手順 1. 2. 3. 4. 5. ファイル名は,wlp-developer-8.5.x.x.jar (「8.5.x.x」の部分はバージョン番号) コマンドラインから「java -jar wlp-developer-8.5.x.x.jar」で実行 ライセンス条項(プログラムのご使用条件)の表示またはスキップ ライセンス条項への同意 展開先ディレクトリーの指定 指定したディレクトリーにwlpディレクトリーが作成され製品が展開される 注意点 Java SE 1.6以降のJREで実行が可能 展開先ディレクトリーにwlpディレクトリーがすでに存在している場合は失敗 © 2012 IBM Corporation 13 自己展開圧縮ファイルを実行して展開(2) 1. Jarファイルを実行 2. ライセンスを表示・スキップ 3. ライセンス条項への同意 4. 展開先ディレクトリーの指定 © 2012 IBM Corporation 14 自己展開圧縮ファイルを実行して展開(3) 使用可能なオプション java -jar wlp-developer-8.5.x.x.jar --acceptLicense <Ext_Dir> ¾ java -jar wlp-developer-8.5.x.x.jar --verbose ¾ ファイル展開時に詳細な情報を表示 java -jar wlp-developer-8.5.x.x.jar --viewLicenseAgreement ¾ ライセンス条項の表示・同意をスキップし,指定されたディレクトリーに展開 (サイレント・インストール・モード) ご使用条件の表示(導入は行われない) java -jar wlp-developer-8.5.x.x.jar --viewLicenseInfo ¾ © 2012 IBM Corporation ライセンス情報の表示の表示(導入は行われない) 15 IBM Installation Managementによる導入 導入時の「パッケージの変更」画面で 「WebSphere Application Server Liberty Profile」に チェックを入れる 指定した導入ディレクトリーにwlpディレクトリーが作成され 展開された形で導入が行われる © 2012 IBM Corporation 16 Libertyプロファイルのディレクトリー構成(1) wlp wlp/bin wlp/clients wlp/dev wlp/etc wlp/lafiles wlp/lib wlp/templetes 導入ディレクトリー 操作コマンド(serverコマンド等)が格納 JMX操作用のクライアントライブラリー アプリケーションから参照可能なクラス (要作成)一部の構成ファイルを格納 ライセンス情報 プラットフォームのランタイムクラス 構成のテンプレートおよびサンプル wlp/usr wlp/usr/share/apps wlp/usr/share/config wlp/usr/share/resource wlp/usr/servers/サーバー名 © 2012 IBM Corporation サーバーの構成情報 共有アプリケーション 共有構成ファイル 共有リソース(データソース・アダプタ) 個別サーバーディレクトリー 17 Libertyプロファイルのディレクトリー構成(2) 変数で参照可能なディレクトリー wlp wlp/usr ${shared.config.dir}で参照可能 wlp/usr/share/resource ${shared.app.dir}で参照可能 wlp/usr/share/config ${wlp.user.dir} で参照可能 wlp/usr/share/apps ${wlp.install.dir} で参照可能 ${shared.resource.dir}で参照可能 wlp/usr/servers/サーバー名 ${server.config.dir}および${server.output.dir}で参照可能 © 2012 IBM Corporation 18 Libertyプロファイルのディレクトリー構成(3) wlp/usr/servers/サーバー名(個別サーバーディレクトリー)以下のファイルおよびディレクトリー server.env jvm.options デフォルトのdropinディレクトリー logsディレクトリー (要作成) サーバーで実行するアプリケーションをおく (<application>要素のlocation属性で指定されたファイルが最初に検索されるディレクトリ) dropinsディレクトリー サーバーの基本構成ファイル appsディレクトリー (要作成) サーバーのブートストラップ・プロパティ server.xml (要作成) JVMを起動する際のオプション bootstrap.properties (要作成) サーバープロセスで使用する環境変数 サーバーのログファイルが出力される workareaディレクトリー サーバーランタイムが使用するキャッシュディレクトリー © 2012 IBM Corporation 19 Libertyプロファイルの基本構成 WAS Liberty Profile 操作 wlp/bin/server wlp/usr/servers/defaultServer/server.xml defaultServer App wlp/usr/servers/server1/server.xml server1 App App App wlp/usr/servers/server2/server.xml JDK © 2012 IBM Corporation server2 App App App Libertyプロファイル自身はJDKを含んでいない 複数のLibertyプロファイル環境を導入することができ, 複数サーバーの定義,複数アプリケーションの導入も可能 20 serverコマンド Libertyプロファイルを操作するコマンド binディレクトリーにある Java SE 1.6以降のJRE(javaコマンド)にパスが通っている必要がある JAVA_HOME環境変数で,使用するJREを変更することが可能 JVM_ARGS環境変数で,JVMに渡す汎用引数を指定 基本書式 > server <Action> <Server_Name> [Options] アクションの種類 サーバーの構成の作成 ¾ サーバーの起動・停止 ¾ dump, javadump (V8.5.0.1以降) サーバー環境のパッケージング(詳細は次章) ¾ run, start, stop, debug 問題判別情報の収集(詳細は次章) ¾ create package 情報の表示 ¾ © 2012 IBM Corporation status, version, help 21 serverコマンド:サーバーの構成の作成 書式 > server create サーバー名 サーバー名には英数字 および下線 (_),ダッシュ (-),ピリオド (.)のみが使用可能 (日本語は使用できない) サーバー名を省略した場合には「defaultServer」が使用される (他のアクションも同じ) テンプレートを元に 「usr/servers/サーバー名」ディレクトリーに サーバーの起動に必要な構成ファイルが作成される 作成される構成ファイルは「server.xml」 その他の構成ファイルは必要に応じて手動で作成する © 2012 IBM Corporation 22 serverコマンド:サーバーの起動・停止 > server run サーバー名 > server start サーバー名 サーバーをバックグランドで実行する サーバーからのメッセージは, usr/サーバー名/logs/console.log に記録される server stopコマンドでサーバーを停止させる > server stop サーバー名 サーバーをフォアグラウンドで実行する サーバーからのメッセージは,コンソールに直接出力される Ctrl + Cでサーバーを停止させる サーバーを停止させる > server debug サーバー名 サーバーをデバッグモードで起動する 指定されたポートをLISTENし,デバッガが接続すると起動する © 2012 IBM Corporation 23 serverコマンド:サーバーの起動オプション > server run サーバー名 --clean > server start サーバー名 --clean ${server.config.dir}/workareaにキャッシュされた各種情報を 使用せずにサーバーを起動 ¾ OSGiフレームワークが各種情報をキャッシュしているため 二回目以降の起動が高速化されている Fixpackを適用したり,Interim Fixを適用したりした直後の起動では 必ずこのオプションを指定する必要がある。 そうしないと,ランタイムに加えられた変更が有効にならない。 > server start サーバー名 --config-root ディレクトリー名 標準のディレクトリー(wlp/usr/servers/サーバー名)以外のディレク トリーに構成ファイル(server.xml等)をおいている場合に指定する ${server.config.dir}も指定されたディレクトリーに変更される © 2012 IBM Corporation 24 serverコマンド:情報の表示 > server status サーバー名 > server version 指定したサーバーが起動しているかを表示 Libertyプロファイル環境のバージョンを表示 > server help serverコマンドの使用方法を表示 © 2012 IBM Corporation 25 3. WAS V8.5 Liberty Profile Developer Tools © 2012 IBM Corporation 26 WebSphere Application Server Developer Tools for Eclipse Eclipse上でJava™ EE,OSGi,Web 2.0,モバイル等のアプリケーションを 開発・アセンブルし,WebSphere Application Server にデプロイするため の軽量のツール・セット 以下のものをEclipse Marketplaceで提供 WebSphere WebSphere WebSphere WebSphere Application Application Application Application Server Server Server Server V8.5 V8.5 V8.0 V7.0 Developer Tools Liberty Profile Developer Tools Developer Tools Developer Tools 無償でダウンロード・利用が可能 資料によってはWDTと表記 WebSphere Application Server Developer Tools Web Tools Platform Eclipse Platform © 2012 IBM Corporation 連携 WebSphere Application Server 起動停止,アプリケーションのデプロイ,管理を Eclipse上から実行可能 27 WebSphere Application Server V8.5 Liberty Profile Developer Tools IBM WebSphere Application Server V8.5 Liberty Profile Developer Tools EclipseとLibertyプロファイルを連携させるサーバーアダプターを 中心としたツールセット Eclipse 3.6.2(Helios), Eclipse 3.7(Indigo) , Eclipse 4.2(Juno)で使用可能 Information Centerでは, 「開発者ツール」と表記 Eclipse + WAS V8.5 Liberty Profile Developer Tool © 2012 IBM Corporation 28 Developer Toolsの導入(1) Eclipse Marketplaceからダウンロード・導入が可能 Eclipse上で「Help」→「Eclipse Marketplace... 」で 「websphere liberty」を検索し, 「Install」ボタンをクリック 必要な依存ファイルを含めて 自動的にダウンロードと導入がおこなわれる © 2012 IBM Corporation 29 Developer Toolsの導入(2) 以下のURLから,Developer ToolsのZIPファイルをダウンロード http://public.dhe.ibm.com/ibmdl/export/pub/software/websphere/wasdev/ V8.5/wdtupdate/ このZIPファイルには,V8.5/V8.5 Liberty/V8.0/V7.0の全てのDeveloper Toolsが含まれている Eclipseの「Help」→「Install New Software...」で ZIPファイルを指定して導入を実行 詳細な手順は,以下のURLの 「ダウンロード済みのインストール・ファイルからのインストール」を参照 http://publib.boulder.ibm.com/infocenter/radhelp/v8r5/topic/com.ibm.rad.in stall.doc/topics/t_install_wdt_eclipse.html © 2012 IBM Corporation 30 Developer ToolsによるLibertyプロファイルの導入 Liberty Profile Developer Toolsを利用して, 直接サーバー環境をダウンロード・導入することが可能 新規サーバー作成画面で 「WebSphere Application Server V8.5 Liberty Profile」を選択 New Server画面で, 「download and install」をクリック 既に別途導入されている場合は 導入先ディレクトリーを 「Installation Folder」に指定 「download site」を選択して IBM IDを入力 導入先ディレクトリーを指定して ダウンロード・導入を開始 © 2012 IBM Corporation 31 Developer ToolsによるLibertyプロファイル構成の作成 サーバー作成時にプロファイル選択画面で「New...」を 選択することでサーバー構成を作成可能 「server create」コマンドと同等 © 2012 IBM Corporation 32 Developer Toolsによるサーバー構成(server.xml)の編集(1) GUIの画面を使用して,server.xmlの編集が可能 構成の追加なども,一覧から選択しておこなえるため, XMLを直接編集することなく構成の追加変更が可能 相対パスによる入力(${shared.resource.dir}など)も支援 パスワードの難読化(XOR化)なども可能 Developer Toolsのserver.xml編集画面 © 2012 IBM Corporation Featureの追加画面 33 Developer Toolsによるサーバー構成(server.xml)の編集(2) 子要素の追加・要素の削除・順序変更 XMLファイル中の要素(Element)を ツリー状に表示 © 2012 IBM Corporation 画面左で選択した要素(Element)の 属性(Attribute)を編集 34 EclipseからLibertyプロファイルの起動・テスト JSPやServlet実装クラスを右クリックし, メニューの「Run as/Debug as」→「Run on Server」で実行が可能 表示されるダイアログボックスで定義されているLibertyプロファイルを指定 必要に応じて「Next」の画面からアプリケーションをサーバーに追加する 自動的にサーバーが起動され,ブラウザが起動されて実行結果を表示 © 2012 IBM Corporation 35 Developer Toolsにより提供されるユーティリティー機能 SSL自己署名証明書の作成 Webサーバープラグインの生成 サーバー環境のパッケージング 障害レポートのための環境ダンプの生成 (それぞれの詳細については次章) © 2012 IBM Corporation 36 4. Libertyプロファイルの構成 © 2012 IBM Corporation 37 基本的な構成ファイル 以下のファイルは${server.config.dir}に配置される server.xml ¾ 以下のファイルは ${wlp.install.dir}/etcおよび${server.config.dir}に配置される (両方存在している場合は後者の内容が優先) server.env ¾ JVMを起動する際のオプション bootstrap.properties ¾ サーバープロセスで使用する環境変数 jvm.options ¾ サーバーの主要な構成ファイル サーバーのブートストラップ・プロパティ server.xmlファイルはサーバー構成を作成した際に自動生成 その他のファイルは必要に応じて手動で作成 © 2012 IBM Corporation 38 server.xml(1) サーバーの構成をXML形式で記述 ほとんどの構成要素にデフォルトの値が設定されており それを変更する場合にのみ記述を追加 <server>要素の子要素として設定を追加していく 記述がない場合には,デフォルトの値が使用される <include location=“dir/file”>で指定されたファイルの内容を 組み込む事が可能 dirを相対パスで指定した場合,以下の順で検索される ¾ ¾ ¾ © 2012 IBM Corporation <include>が書かれた構成ファイルのディレクトリー ${server.config.dir} ${shared.config.dir} 39 server.xml(2) 変数を使用した記述(${~})が可能 組み込み変数(${server.config.dir}等) bootstrap.propertiesで指定された値 時間を指定する属性値には時間単位をつける 時間単位としては時間 (h),分 (m),または秒 (s) が使用可能 ¾ 一部の設定ではミリ秒(ms)も使用可能 たとえば30秒は「30s」と表す 複数の時間単位を使用して「1m30s」というような表記も可能 © 2012 IBM Corporation 40 server.xml: フィーチャー/フィーチャー・マネージャー Libertyプロファイルで提供される個々のAPI・サービスは, 「フィーチャー」という単位でまとめられている 使用可能なフィーチャーはwlp/lib/featuresで定義されている 使用するフィーチャーを <featureManager>の子要素の<feature>で定義して有効化する フィーチャーには依存関係が定義されていて, 前提となるフィーチャーも自動的に有効となる 例) jsp-2.2はservlet-3.0が前提となっている 有効となっていないフィーチャーは使用できない <!-<!--Enable Enablefeatures features--> --> <featureManager> <featureManager> <feature>jsp-2.2</feature> <feature>jsp-2.2</feature> <feature>jdbc-4.0</feature> <feature>jdbc-4.0</feature> <feature>localConnector-1.0</feature> <feature>localConnector-1.0</feature> <feature>ssl-1.0</feature> <feature>ssl-1.0</feature> </featureManager> </featureManager> server.xml Developer Toolsのフィーチャー構成画面 © 2012 IBM Corporation 41 server.xml: HTTPエンドポイント サーバーがLISTENするポート, 提供するHTTPサーバー・サービスの定義を行う <httpEndpoint>要素で指定する さらに詳細な設定を <httpOptions>,<sslOptions>,<tcpOptions>要素で指定可能 (詳細は次章) <httpEndpoint <httpEndpoint host="localhost“ host="localhost“ httpPort="9080" httpPort="9080" httpsPort="9443" httpsPort="9443" id="defaultHttpEndpoint" id="defaultHttpEndpoint" /> /> server.xml Developer ToolsのHTTPエンドポイント構成画面 © 2012 IBM Corporation 42 server.xml: アプリケーションのモニタリング/構成サービス アプリケーション・モニタリング アプリケーションの動的更新を構成する ドロップイン・ディレクトリーを指定する(デフォルトはdropins) <applicationMonitor>要素で指定する 構成サービス server.xmlの動的更新を構成する <config>要素で指定する Developer Toolsの構成サービス構成画面 Developer Toolsのアプリケーションモニタリング構成画面 © 2012 IBM Corporation 43 5. アプリケーション管理 © 2012 IBM Corporation アプリケーションの導入 Webアプリケーション DBアクセス アプリケーション・セキュリティー 44 アプリケーションの導入 二つの導入方法 dropinsの下に置いてアプリケーション・モニター経由で導入 server.xmlに<application>要素で定義 導入方法 圧縮ファイルのまま配置 ¾ WARファイル,EARファイルをそのままディレクトリー上に配置 ファイルを展開して配置 ¾ ¾ © 2012 IBM Corporation WARファイルの名前でディレクトリーを作成し,WARファイルの中身を展開 ファイル単位の更新が可能 45 ドロップイン・ディレクトリー アプリケーション・マネージャーが監視している ドロップイン・ディレクトリーにファイルをコピーする アプリケーション・セキュリティーのロールなど, 追加の構成が必要ないアプリケーションで利用可能 デフォルトは${server.config.dir}/dropins 拡張子により自動的にタイプ(EAR/WAR/WAB)を判別 存在しない場合,サーバーの起動時に自動的に作成される WAR/WABは,拡張子を除いたファイル名が アプリケーションのコンテキストルートとなる 例) Snoop.war は http://localhost:9080/Snoop/ でアクセス ファイルを削除すると, 自動的にアプリケーションがアンインストールされる © 2012 IBM Corporation 46 server.xml: アプリケーションの定義 <application>要素により指定 location属性は必須。絶対パス・相対パスやURLで記述 子要素としてセキュリティー・ロールのバインディングや ライブラリー参照を指定することが可能 location属性を相対パスで指定した場合, ${server.config.dir}/apps,${shared.app.dir}から検索される <application <application id="SupportTools" id="SupportTools" location="SupportTools.war“ location="SupportTools.war“ name="Support name="Support Tools" Tools" type="war“ type="war“ context-root="/support“ context-root="/support“ /> /> server.xml <application>要素にネストして <application-bnd>要素や <classloader>要素を定義できる Developer Toolsのアプリケーション構成画面 © 2012 IBM Corporation 47 Webアプリケーション 関連するフィーチャー servlet-3.0 ¾ Servlet API 3.0で定義されている機能を提供 jsp-2.2 ¾ JSP(Java Server Pages) 2.2で定義されている機能を提供 jsf-2.0 ¾ JSF(Java Server Faces) 2.0で定義されている機能を提供 wab-1.0 ¾ OSGi形式のWebアプリケーションである WAB(Web Application Bundle)の実行をサポート © 2012 IBM Corporation 48 server.xml: セッション・マネージャーの構成 <httpSession>要素で設定 Webアプリケーションで使用される HttpSessionマネージャーの構成 セッション・タイムアウト時間や セッション維持に使用する Cookieの構成などを行う セッション・クラスタリングを 構成する場合, <httpSessionDatabase>や クローンIDなどの指定が必要 © 2012 IBM Corporation Developer Toolsのセッションマネージャー構成画面 49 server.xml: JSPエンジンの構成 <jspEngine>要素で指定 JSPのデバッグのために 生成されたソースを保存したい場合などに指定 JSPで生成されたClassファイル, keepGeneratedが指定されたときのJavaファイルは, 以下のディレクトリーに格納される ${server.config.dir}/workarea/org.eclipse.osgi/bundles/数値/data/temp/default_node/SMF_WebContainer <jspEngine <jspEngine recompileJspOnRestart="true“ recompileJspOnRestart="true“ keepGenerated="true"/> keepGenerated="true"/> server.xml Developer ToolsのJSP 2.2構成画面 © 2012 IBM Corporation 50 server.xml: その他,Webアプリケーションの構成 <mimeType> ファイル拡張子によるMIMEタイプの指定 WARファイル中のコンテンツをクライアントに送信する際に, 拡張子からContent-Typeを判断して付加させる <mimeTypes> <mimeTypes> <type>xls=application/excel</type> <type>xls=application/excel</type> </mimeTypes> </mimeTypes> server.xml <httpEncoding> 使用するJavaコンバーターの指定 WAS Fullプロファイルのencoding.properties,converter.propertiesの代替 Localeヘッダに基づいたデフォルトのcharset, およびcharsetに基づいたデフォルトのJavaコンバーターの指定 ¾ ¾ jaロケールのデフォルトは「Shift_JIS」,Shift_JISのデフォルトは「Cp943C」 Content-Typeのcharsetに「Shift_JIS」を指定した場合も, デフォルトのSJISのコンバーターが使われるのを避けることができる。 何らかの理由でMS方式のマッピングを使用したい場合, 下記のように設定する <httpEncoding <httpEncoding converter.Shift_JIS="Windows-31j"/> converter.Shift_JIS="Windows-31j"/> server.xml © 2012 IBM Corporation 51 アプリケーションからのDBアクセス 関連するフィーチャー jdbc-4.0 ¾ jndi-1.0 ¾ JPA(Java Persistent API) 2.0仕様で定義されている機能を提供 beanvalidation-1.0 ¾ JNDI(Java Naming and Directory Interface)によるネーミング・サービス機能を提供 jpa-2.0 ¾ JDBC 4.0 仕様に基づいたデータベース・アクセスを提供 Bean Validation 1.0仕様で定義されている機能を提供 DBアクセスに必要な設定 ファイルセットサービス・ライブラリーの定義 JDBC Driverの定義 DetaSourceの定義 接続マネージャーの構成 © 2012 IBM Corporation 52 server.xml: ライブラリーの定義 ファイルセット・サービスでJarファイル/クラスファイルを 読み込みライブラリーを定義する 読み込むディレクトリーを<fileset>要素のdir属性から指定する デフォルトではディレクトリー上の全てのファイルが読み込まれる 指定したファイルのみを読み込む場合はinclude属性で指定する ¾ ワイルドカードとしてアスタリスクが使用できる <library <library id="derbyLib"> id="derbyLib"> <fileset <fileset dir="${shared.resource.dir}/derby/“ dir="${shared.resource.dir}/derby/“ includes="*.jar“/> includes="*.jar“/> </library> </library> server.xml 複数ファイルを指定する場合は空白で区切る <library id=“userLib"> <library id=“userLib"> <fileset dir=“/opt/usrlib/java/“ includes=“aaa.jar bbb.jar“/> <fileset dir=“/opt/usrlib/java/“ includes=“aaa.jar bbb.jar“/> </library> </library> server.xml アプリケーションやJDBC Driverの定義などで使用する © 2012 IBM Corporation 53 server.xml: JDBC Driverの定義 ライブラリーを指定してJDBC Driverを定義する <library <library id="derbyLib"> id="derbyLib"> <fileset <fileset dir="${shared.resource.dir}/derby/" dir="${shared.resource.dir}/derby/" includes="*.jar"/> includes="*.jar"/> </library> </library> <jdbcDriver <jdbcDriver libraryRef="derbyLib" libraryRef="derbyLib" id="derbyDriver"/> id="derbyDriver"/> server.xml ネストして定義することもできる <jdbcDriver <jdbcDriver id="derbyDriver"> id="derbyDriver"> <library> <library> <fileset <fileset dir="${shared.resource.dir}/derby/" dir="${shared.resource.dir}/derby/" includes="*.jar"/> includes="*.jar"/> </library> </library> </jdbcDriver> </jdbcDriver> server.xml LibertyプロファイルでサポートされていないDriverの場合, javax.sql.XADataSourceの実装クラスなどを指定する <jdbcDriver id=“myDriver“ <jdbcDriver id=“myDriver“ javax.sql.XADataSource="com.ibm.sample.SampleXADataSource"> javax.sql.XADataSource="com.ibm.sample.SampleXADataSource"> server.xml © 2012 IBM Corporation 54 server.xml: DataSourceの定義(1) JDBC Driverを指定して(またはネストして)データソースを定義する JNDI名が必須 子要素としてプロパティを指定 必要に応じて 接続マネージャーの構成を追加 Developer Toolsのデータソース構成画面 © 2012 IBM Corporation 55 server.xml: DataSourceの定義(2) データベース固有の接続プロパティを指定する LibertyプロファイルでサポートされているDBについては, 専用のプロパティが用意されている <jdbcDriver <jdbcDriver id="derbyDriver"> id="derbyDriver"> <library> <library> <fileset <fileset dir="${shared.resource.dir}/derby/"/> dir="${shared.resource.dir}/derby/"/> </library> </library> </jdbcDriver> </jdbcDriver> <dataSource <dataSource jndiName="jdbc/myDataSource“ jndiName="jdbc/myDataSource“ jdbcDriverRef="derbyDriver"> jdbcDriverRef="derbyDriver"> <properties.derby.embedded <properties.derby.embedded createDatabase="create“ createDatabase="create“ databaseName="${server.config.dir}/derby/myDB"/> databaseName="${server.config.dir}/derby/myDB"/> </dataSource> </dataSource> server.xml © 2012 IBM Corporation Developer Toolsの Embedded Derbyのプロパティ構成画面 56 server.xml: DataSourceの定義(3) 専用のプロパティが用意されているJDBC Driver <properties.db2.jcc> IBM Data Server Driver for JDBC and SQLJ for DB2 <properties.informix.jcc> IBM Data Server Driver for JDBC and SQLJ for Informix <properties.db2.i.native> IBM DB2 for i Native JDBC ドライバー <properties.db2.i.toolbox> IBM DB2 for i Toolbox JDBC ドライバー <properties.informix> Informix JDBC ドライバー <properties.oracle> Oracle JDBC ドライバー <properties.derby.client> Derby Network Client JDBC ドライバー <properties.derby.embedded> Derby Embedded JDBC ドライバー <properties.microsoft.sqlserver> Microsoft SQL Server JDBC Driver <properties.datadirect.sqlserver> Microsoft SQL Server の DataDirect Connect for JDBC ドライバー <properties.sybase> Sybase JDBC ドライバー © 2012 IBM Corporation 57 JDBC Driver / DataSourceのXA対応 Libertyプロファイルでは, XA対応・非対応のJDBC Driverを 一つのJDBC Driverとして定義できる WASのFullプロファイルでは, 別個のJDBC Driverとして定義する必要があった DataSourceの定義で使用するコネクションのタイプを指定 (指定しない場合は上から順に検索される) javax.sql.XADataSource javax.sql.ConnectionPoolDataSource javax.sql.DataSource © 2012 IBM Corporation 58 server.xml: 接続マネージャーの構成 JDBCコネクションの管理をカスタマイズするには, 接続マネージャーの構成を行う DataSourceの子要素として定義するか, connectionManagerRefで指定する 全てデフォルトで使用する場合には構成は不要 タイムアウト系の設定は,0が即時,-1が無効(タイムアウトしない) ¾ Fullプロファイルでは,多くが逆 <dataSource <dataSource jndiName="jdbc/myDataSource“ jndiName="jdbc/myDataSource“ jdbcDriverRef="derbyDriver"> jdbcDriverRef="derbyDriver"> <properties.derby.embedded <properties.derby.embedded databaseName="${server.config.dir}/derby/myDB"/ databaseName="${server.config.dir}/derby/myDB"/ >> <connectionManager <connectionManager connectionTimeout="60s“ connectionTimeout="60s“ maxPoolSize="10“ maxPoolSize="10“ minPoolSize="2"/> minPoolSize="2"/> </dataSource> </dataSource> server.xml © 2012 IBM Corporation Developer Toolsの 接続マネージャー構成画面 59 アプリケーションからの利用 アノテーションを利用してDataSourceにインジェクション @Resource(name @Resource(name == "jdbc/MyDataSource") "jdbc/MyDataSource") private DataSource private DataSource ds; ds; JNDIを利用してネーミングサービスより取得 InitialContextには,パラメーターをつけない (com.ibm.websphere.naming.WsnInitialContextFactoryは使用できない) private private DataSource DataSource ds; ds; InitialContext InitialContext ic ic == new new InitialContext(); InitialContext(); ds ds == (DataSource)ic.lookup("jdbc/MyDataSource"); (DataSource)ic.lookup("jdbc/MyDataSource"); Connection Connection con con == ds.getConnection(); ds.getConnection(); © 2012 IBM Corporation 60 server.xml: JPAの構成 JPAのデフォルト構成を指定する デフォルトのJTA/非JTAデータソースなどを指定 <jpa <jpa defaultJtaDataSourceJndiName="jdbc/MyDS" defaultJtaDataSourceJndiName="jdbc/MyDS" entityManagerPoolCapacity="20"> entityManagerPoolCapacity="20"> <excludedApplication>SupportTools</excludedApplication> <excludedApplication>SupportTools</excludedApplication> </jpa> </jpa> server.xml Developer ToolsのJPAコンテナ構成画面 © 2012 IBM Corporation 61 参考:データソースの定義例 <dataSource <dataSource jndiName="jdbc/MyDS"> jndiName="jdbc/MyDS"> <jdbcDriver <jdbcDriver libraryRef="derbyLib"/> libraryRef="derbyLib"/> <properties.derby.embedded <properties.derby.embedded createDatabase="create“ createDatabase="create“ databaseName="${server.config.dir}/derby/myDatabase"/> databaseName="${server.config.dir}/derby/myDatabase"/> <connectionManager <connectionManager maxPoolSize="10" maxPoolSize="10" minPoolSize="1"/> minPoolSize="1"/> </dataSource> </dataSource> <library <library id="derbyLib"> id="derbyLib"> <fileset <fileset dir="${shared.resource.dir}" dir="${shared.resource.dir}" includes="derby.jar"/> includes="derby.jar"/> </library> </library> server.xml JARファイルを${shared.resource.dir}以下に配置し, 変数経由でアクセスすることで,packageをおこなった時に JDBC Driverを含めて配布することが可能 Embedded Derbyの場合, データベースを${server.config.dir}の下に置けば, データベース構造を含めて配布することも © 2012 IBM Corporation 62 アプリケーション・セキュリティー 関連するフィーチャー appSecurity-1.0 ¾ Java EEで定義されているロールベースのアクセス制御を Webアプリケーションに対して行う (Java EEセキュリティーで定義されている全ての機能が使用できるわけではない) アプリケーション・セキュリティーの構成手順 ユーザー・レジストリーの作成 ¾ ¾ ¾ <quickStartSecurity> クイックスタートのセキュリティー <basicRegistry> 基本ユーザー・レジストリー <ldapRegistry> LDAPユーザー・レジストリー(詳細は次章) (アプリケーションにロールとアクセス権を定義する) アプリケーションで定義されたロールに,ユーザー・グループをマップ © 2012 IBM Corporation 63 テスト用に使用できるユーザー・レジストリー 構成ファイル (server.xmlおよびそこからincludeされたファイル)に 直接ユーザーの情報を記述するレジストリー 二種類の設定が利用可能 <quickStartSecurity> クイックスタートのセキュリティー ¾ <basicRegistry> 基本ユーザー・レジストリー ¾ 単一のユーザー・パスワードを設定 複数のユーザー・パスワードおよびグループを設定 テスト環境での利用や管理セキュリティーでの利用を想定 情報を更新するインターフェースなどは提供されない パスワードを構成ファイルに直接記入するため,Developer Toolを使 用して難読化(XOR処理)をしておくことが望ましい © 2012 IBM Corporation 64 server.xml:クイックスタート/基本ユーザー・レジストリー クイックスタートのセキュリティー 単一のユーザーを設定 <quickStartSecurity <quickStartSecurity userPassword="{xor}Lz4sLCgwLTs=“ userPassword="{xor}Lz4sLCgwLTs=“ userName="admin" userName="admin" /> /> server.xml 基本ユーザー・レジストリー Developer Toolsの クイックスタートのセキュリティ構成画面 複数ユーザーとグループを設定可能 <basicRegistry> <basicRegistry> <user <user password="{xor}LTAwKw==" password="{xor}LTAwKw==" name=“admin" name=“admin" /> /> <user password="{xor}PTA9" <user password="{xor}PTA9" name="bob"/> name="bob"/> <user <user password="{xor}PjM2PDo=" password="{xor}PjM2PDo=" name="alice" name="alice" /> /> <group <group name=“user"> name=“user"> <member <member name="bob" name="bob" /> /> <member name="alice" <member name="alice" /> /> </group> </group> </basicRegistry> </basicRegistry> server.xml © 2012 IBM Corporation 65 参考:Webアプリケーションのセキュリティー構成 アプリケーションにweb.xmlを追加し, 以下のような構成を追加 「Administrator」ロールにのみ「/snoop」のPOSTやGETを許可 認証方法としてはBASIC認証を使用 <security-role> <security-role> <role-name>Administrator</role-name> <role-name>Administrator</role-name> </security-role> </security-role> <security-constraint> <security-constraint> <display-name>Snoop <display-name>Snoop Constraint</display-name> Constraint</display-name> <web-resource-collection> <web-resource-collection> <web-resource-name>Snoop <web-resource-name>Snoop Resource</web-resourceResource</web-resourcename> name> <url-pattern>/snoop</url-pattern> <url-pattern>/snoop</url-pattern> <http-method>GET</http-method> <http-method>GET</http-method> <http-method>POST</http-method> <http-method>POST</http-method> </web-resource-collection> </web-resource-collection> <auth-constraint> <auth-constraint> <role-name>Administrator</role-name> <role-name>Administrator</role-name> </auth-constraint> </auth-constraint> </security-constraint> </security-constraint> <login-config> <login-config> <auth-method>BASIC</auth-method> <auth-method>BASIC</auth-method> </login-config> </login-config> web.xml © 2012 IBM Corporation 66 server.xml: ロールにユーザー・グループをマップ <application>要素の子要素として アプリケーションバインディング<application-bnd>を定義し その子要素として<security-role>を定義する dropinから導入したアプリケーションにはセキュリティーを定義できない <application <application id="SnoopWeb" id="SnoopWeb" location="SnoopWeb.war" location="SnoopWeb.war" name="SnoopWeb" name="SnoopWeb" type="war"> type="war"> <application-bnd> <application-bnd> <security-role <security-role name="Administrator"> name="Administrator"> <user name="admin" <user name="admin" /> /> </security-role> </security-role> </application-bnd> </application-bnd> </application> </application> server.xml Developer Toolでみた 構成の階層 © 2012 IBM Corporation 67 6. まとめ © 2012 IBM Corporation 68 まとめ LibertyプロファイルはWAS V8.5から提供される 軽量Webアプリケーション・ランタイム 起動が速い,構成が容易,必要メモリが少ないなど, 開発時のテスト用ランタイムとして最適な特性 Servlet/JSP/JSFの実行が可能なほか, Databaseアクセス,Java EE形式のセキュリティーなどの 機能をそなえている Eclipseと連携するDeveloper Toolが提供されており 構成をGUIで作成することが可能 © 2012 IBM Corporation 69 【参考】 WAS道場:WAS V8.5で提供される新しい軽量ランタイム「 Libertyプロファイル」 WAS V8.5 Information Center http://pic.dhe.ibm.com/infocenter/wasinfo/v8r5/index.jsp WASDev Community(英語) http://www.ibm.com/software/jp/websphere/events/livestream/wa s_ondemand.html#sec9 https://www.ibm.com/developerworks/mydeveloperworks/blogs/wa sdev/entry/home http://wasdev.net でアクセス可能 Developer Tools for Eclipse Information Center http://publib.boulder.ibm.com/infocenter/radhelp/v8r5/topic/com.ib m.rad.install.doc/topics/wdt_overview.html © 2012 IBM Corporation 70 ワークショップ、セッション、および資料は、IBMまたはセッション発表者によって準備され、それぞれ独自の見解を反映したものです。それらは情報提供の 目的のみで提供されており、いかなる参加者に対しても法律的またはその他の指導や助言を意図したものではなく、またそのような結果を生むものでもあ りません。本講演資料に含まれている情報については、完全性と正確性を期するよう努力しましたが、「現状のまま」提供され、明示または暗示にかかわ らずいかなる保証も伴わないものとします。本講演資料またはその他の資料の使用によって、あるいはその他の関連によって、いかなる損害が生じた場 合も、IBMは責任を負わないものとします。 本講演資料に含まれている内容は、IBMまたはそのサプライヤーやライセンス交付者からいかなる保証または 表明を引きだすことを意図したものでも、IBMソフトウェアの使用を規定する適用ライセンス契約の条項を変更することを意図したものでもなく、またそのよ うな結果を生むものでもありません。 本講演資料でIBM製品、プログラム、またはサービスに言及していても、IBMが営業活動を行っているすべての国でそれらが使用可能であることを暗示す るものではありません。本講演資料で言及している製品リリース日付や製品機能は、市場機会またはその他の要因に基づいてIBM独自の決定権をもって いつでも変更できるものとし、いかなる方法においても将来の製品または機能が使用可能になると確約することを意図したものではありません。本講演資 料に含まれている内容は、参加者が開始する活動によって特定の販売、売上高の向上、またはその他の結果が生じると述べる、または暗示することを意 図したものでも、またそのような結果を生むものでもありません。 パフォーマンスは、管理された環境において標準的なIBMベンチマークを使用した測定と 予測に基づいています。ユーザーが経験する実際のスループットやパフォーマンスは、ユーザーのジョブ・ストリームにおけるマルチプログラミングの量、 入出力構成、ストレージ構成、および処理されるワークロードなどの考慮事項を含む、数多くの要因に応じて変化します。したがって、個々のユーザーがこ こで述べられているものと同様の結果を得られると確約するものではありません。 記述されているすべてのお客様事例は、それらのお客様がどのようにIBM製品を使用したか、またそれらのお客様が達成した結果の実例として示された ものです。実際の環境コストおよびパフォーマンス特性は、お客様ごとに異なる場合があります。 IBM、IBM ロゴ、ibm.com、 DB2、WebSphere、およびz/OSは、世界の多くの国で登録されたInternational Business Machines Corporationの商標です。 他の製品名およびサービス名等は、それぞれIBMまたは各社の商標である場合があります。 現時点での IBM の商標リストについては、www.ibm.com/legal/copytrade.shtmlをご覧ください。 インテル, Intel, Intelロゴ, Intel Inside, Intel Insideロゴ, Intel Centrino, Intel Centrinoロゴ, Celeron, Intel Xeon, Intel SpeedStep, Itanium, およびPentium は Intel Corporationまたは子会社の米国およびその他の国における商標または登録商標です。 Microsoft, Windows, Windows NT および Windowsロゴは Microsoft Corporationの米国およびその他の国における商標です。 JavaおよびすべてのJava関連の商標およびロゴは Oracleやその関連会社の米国およびその他の国における商標または登録商標です。 © 2012 IBM Corporation 71