ARCHITREND ZERO 日当たりシミュレーション編...日当たりシミュレーション編 データを作成し、まず視点位置を調整してみましょう。また、時刻を変更して日当たりの変化を確認してみましょう。
76 WebLogic Server勉強会@大阪 #13 -...
Transcript of 76 WebLogic Server勉強会@大阪 #13 -...
![Page 1: 76 WebLogic Server勉強会@大阪 #13 - Oracle...る。HttpServletRequestオブジェクトgetPartやgetPartsメソッドでMIMEアタッ チメントを取り出す。これによりファイルアップロードを行うサーブレットが容易](https://reader030.fdocuments.us/reader030/viewer/2022041022/5ed28e6903aa710aa86097f3/html5/thumbnails/1.jpg)
<Insert Picture Here>
JavaEE6 と WebLogic Server 12c について
日本オラクル株式会社 Fusion Middleware事業統括本部 野邊 哲男 2012年2月8日
第76回 夜な夜な! なにわオラクル塾
WebLogic Server勉強会@大阪 #13
![Page 2: 76 WebLogic Server勉強会@大阪 #13 - Oracle...る。HttpServletRequestオブジェクトgetPartやgetPartsメソッドでMIMEアタッ チメントを取り出す。これによりファイルアップロードを行うサーブレットが容易](https://reader030.fdocuments.us/reader030/viewer/2022041022/5ed28e6903aa710aa86097f3/html5/thumbnails/2.jpg)
Copyright© 2012, Oracle. All rights reserved. 2
以下の事項は、弊社の一般的な製品の方向性に関する概要を説明するものです。また、情報提供を唯一の目的とするものであり、いかなる契約にも組み込むことはできません。以下の事項は、マテリアルやコード、機能を提供することをコミットメント(確約)するものではないため、購買決定を行う際の判断材料になさらないで下さい。オラクル製品に関して記載されている機能の開発、リリースおよび時期については、弊社の裁量により決定されます。
OracleとJavaは、Oracle Corporation 及びその子会社、関連会社の米国及びその他の国における登録商標です。文中の社名、商品名等は各社の商標または登録商標である場合があります。
![Page 3: 76 WebLogic Server勉強会@大阪 #13 - Oracle...る。HttpServletRequestオブジェクトgetPartやgetPartsメソッドでMIMEアタッ チメントを取り出す。これによりファイルアップロードを行うサーブレットが容易](https://reader030.fdocuments.us/reader030/viewer/2022041022/5ed28e6903aa710aa86097f3/html5/thumbnails/3.jpg)
Copyright© 2012, Oracle. All rights reserved. 3
Agenda
• JavaEE6 概要
• Servlet3.0
• JSF2.0
• EJB3.1
• Bean Validation 1.0
• Context and Dependency Injection 1.0
• Oracle WebLogic Server 12c概要
• WebLogic Server 12c 新機能: Active GridLinkのWeb Session Affinity
• WebLogic Server 12c 新機能: JDBC TLOG
![Page 4: 76 WebLogic Server勉強会@大阪 #13 - Oracle...る。HttpServletRequestオブジェクトgetPartやgetPartsメソッドでMIMEアタッ チメントを取り出す。これによりファイルアップロードを行うサーブレットが容易](https://reader030.fdocuments.us/reader030/viewer/2022041022/5ed28e6903aa710aa86097f3/html5/thumbnails/4.jpg)
Copyright© 2012, Oracle. All rights reserved.
<Insert Picture Here>
JavaEE6 概要
4
![Page 5: 76 WebLogic Server勉強会@大阪 #13 - Oracle...る。HttpServletRequestオブジェクトgetPartやgetPartsメソッドでMIMEアタッ チメントを取り出す。これによりファイルアップロードを行うサーブレットが容易](https://reader030.fdocuments.us/reader030/viewer/2022041022/5ed28e6903aa710aa86097f3/html5/thumbnails/5.jpg)
Copyright© 2012, Oracle. All rights reserved. 5
JavaEEの歴史と発展
JDK(Java SE) JavaEE
1996年 JDK 1.0 (サーバサイドJava
技術の
統一仕様が無い状態)
1997年 JDK 1.1
1998年 JDK 1.2
1999年2月 J2EE 1.2
2000年 JDK1.3
2001年9月 J2EE 1.3
2002年 JDK1.4
2003年11月 J2EE 1.4
2004年 JDK 5.0 (1.5)
2006年5月 JavaEE 5.0
2006年12月 JDK 6.0 (1.6)
2009年12月 JavaEE 6.0
2011年7月 JDK7
サーバーサイドJava仕様
のデファクト・スタンダード
として確立
さらなる仕様の充実・拡張
Webサービス対応
Ese Of Development
さらなるEse Of Development、
軽量化、拡張性
![Page 6: 76 WebLogic Server勉強会@大阪 #13 - Oracle...る。HttpServletRequestオブジェクトgetPartやgetPartsメソッドでMIMEアタッ チメントを取り出す。これによりファイルアップロードを行うサーブレットが容易](https://reader030.fdocuments.us/reader030/viewer/2022041022/5ed28e6903aa710aa86097f3/html5/thumbnails/6.jpg)
Copyright© 2012, Oracle. All rights reserved.
JavaEE6のゴールと特長
JavaEE6は、これまでのJavaEE仕様の肥大化や設定の煩雑さなどの課題を解消するために、下記をゴールとして仕様策定されています。
6
Further Ease of Development (さらなる開発容易性)
Flexible & Right sizing (柔軟性と軽量化/最適化)
Enhanced Extensibility (さらなる拡張性)
増大した仕様を全て使うのではなく、必要なもののみ使う「プロファイル」の導入
結果的に軽量化されたコンテナとして利用可能
使用されていない仕様の将来的な削除の検討(プルーニング)
アノテーションを活用したServlet設定やバリデーション、依存性注入
XML設定ファイルへの煩雑な設定を極小化
簡略化されたEJB仕様「EJBLite 」のサポート
機能拡張インターフェースをより多く用意
ライブラリ単位で設定をプラグイン-アウトできる「Webフラグメント」の導入
![Page 7: 76 WebLogic Server勉強会@大阪 #13 - Oracle...る。HttpServletRequestオブジェクトgetPartやgetPartsメソッドでMIMEアタッ チメントを取り出す。これによりファイルアップロードを行うサーブレットが容易](https://reader030.fdocuments.us/reader030/viewer/2022041022/5ed28e6903aa710aa86097f3/html5/thumbnails/7.jpg)
Copyright© 2012, Oracle. All rights reserved.
[参考] Java EE 6 / Webサービスの主要仕様
JavaEE仕様 Version JSR
JavaEE 6.0 316
Web Profile 6.0 316
Managed Beans 1.0 316
Web仕様 Version JSR
Servlet 3.0 315
JSP 2.2 245
JSF 2.x 314
JSTL 1.2 52
Expression Language 2.2 245
EJB 3.1 318
Interseptors 1.1 318
JAF 1.1 925
JavaMail 1.4 919
JCA 1.6 1.6
JMS 1.1 1.1
JPA 2.0 2.0
JTA 1.1 1.1
Webサービス仕様 Version JSR
JAX-RPC 1.1 101
JAX-WS 2.2 224
JAXB 2.2 222
JAXM 1.3 67
StAX 1.0 173
Web Services 1.3 109
Web Services Metadata 2.1 181
JAX-RS 1.1 311
JAXR 1.0 93
その他の仕様 Version JSR
JDBC 4.0 221
JMX 2.0 255
Bean Validation 1.0 303
Context and Dependency Injection 1.0 299
Dependency Injection for Java 1.0 330
Common Annotations 1.1 250
JavaEE Application Deployment 1.2 88
JavaEE Management 1.1 77
Java Authentication Service Provider
Interface for Container 1.0 196
7
![Page 8: 76 WebLogic Server勉強会@大阪 #13 - Oracle...る。HttpServletRequestオブジェクトgetPartやgetPartsメソッドでMIMEアタッ チメントを取り出す。これによりファイルアップロードを行うサーブレットが容易](https://reader030.fdocuments.us/reader030/viewer/2022041022/5ed28e6903aa710aa86097f3/html5/thumbnails/8.jpg)
Copyright© 2012, Oracle. All rights reserved.
JavaEE6のプロファイル
JavaEE6では、対応仕様のうち、必要なものだけをピックアップして実装できる「プロファイル」機構をサポート。
デフォルトでは、全ての機能を実装する「JavaEE Profile」とWebアプリで必要な仕様だけを実装した「Web Profile」を定義。
任意のプロファイルを定義し、実装してもよい。
8
JavaEE6 のすべての仕様
すべての仕様を実装
Webアプリに必要な仕様のみを実装
Web Profile JavaEE Profile
JavaEEのすべての仕様
に対応
・Servlet3.0
・JSP2.2
・JSF2.0
・EL2.2
・JSTL1.2
・Interceptor1.1
・Common Annotations 1.1
・EJBLite3.1
・JPA2.0
・JTA1.1
・CDI1.0
・DI1.0
・Bean Validatio1.0
・Debugging Support for Other Languages 1.0
任意の仕様を実装
(任意のプロファイル)
![Page 9: 76 WebLogic Server勉強会@大阪 #13 - Oracle...る。HttpServletRequestオブジェクトgetPartやgetPartsメソッドでMIMEアタッ チメントを取り出す。これによりファイルアップロードを行うサーブレットが容易](https://reader030.fdocuments.us/reader030/viewer/2022041022/5ed28e6903aa710aa86097f3/html5/thumbnails/9.jpg)
Copyright© 2012, Oracle. All rights reserved.
JavaEE6 各仕様の主要な新機能①
下表は、各仕様の主な新機能の概要をまとめたものです。
9
機能 概要
Servlet3.0 アノテーションによる
プログラミング
従来、web.xmlへの記述が必要だった構成情報をアノテーションで指定することが可能になりました。
Webフラグメント ライブラリの設定をweb.xmlではなくweb-
fragment.xmlというファイルに記載し、ライブラリ自身で保有しておくことが可能になりました。
非同期プログラミング サーブレットで非同期処理を行うためのAPIがサポートされました。
柔軟な初期化処理 コンテナ起動時などにプログラミングでサーブレットの初期化処理を行うための仕組みがサポートされました。
JSF2.0 Facelet UIとしてJSPではなくXHTMLがサポートされることで、JSPからサーブレットへの変換/コンパイルのオーバーヘッドを軽減する事が可能になりました。
アノテーションによる
Managed Bean指定
従来、構成ファイルに記述が必要だったManaged
Bean指定をアノテーションで指定する事が可能になりました。
Ver.Up
Ver.Up
![Page 10: 76 WebLogic Server勉強会@大阪 #13 - Oracle...る。HttpServletRequestオブジェクトgetPartやgetPartsメソッドでMIMEアタッ チメントを取り出す。これによりファイルアップロードを行うサーブレットが容易](https://reader030.fdocuments.us/reader030/viewer/2022041022/5ed28e6903aa710aa86097f3/html5/thumbnails/10.jpg)
Copyright© 2012, Oracle. All rights reserved.
JavaEE6各仕様の主要な新機能②
下表は、各仕様の主な新機能の概要をまとめたものです。
10
機能 概要
EJB3.1 EJBLiteの提供 EJB仕様のサブセットであるEJBLiteによりWeb Profileなど軽量なコンテナでEJBが利用できるようになりました。
EJB-JARの
オプション化
EJBのクラス群をEJB-JARにまとめず、WebアプリのWAR中に包含する事が可能になりました。
シングルトン
SessionBean
シングルトンSession Beanがサポートされコンテナ側でシングルトン(唯一のインスタンス)保証と制御が可能になりました。
JPA2.0 悲観的ロックの
サポート
JPA1.0では楽観的ロックのみサポートしていましたが2.0より悲観的ロックもサポートされます。
コレクションの
機能強化
エンティティ中のコレクションをエンティティのテーブルの子テーブルとして自動的にマップ・永続化できるようになりました。
Criteria APIの
サポート
エンティティのCRUD操作をQuery 言語だけでなく、Javaのクラスのメソッドで実行できるCriteria APIを利用できるようになりました。
キャッシュの
サポート
JPA2.0では、persistence.xmlに柔軟にキャッシュ指定を行う事が可能になりました。
Ver.Up
Ver.Up
![Page 11: 76 WebLogic Server勉強会@大阪 #13 - Oracle...る。HttpServletRequestオブジェクトgetPartやgetPartsメソッドでMIMEアタッ チメントを取り出す。これによりファイルアップロードを行うサーブレットが容易](https://reader030.fdocuments.us/reader030/viewer/2022041022/5ed28e6903aa710aa86097f3/html5/thumbnails/11.jpg)
Copyright© 2012, Oracle. All rights reserved.
JavaEE6各仕様の主要な新機能③
下表は、各仕様の主な新機能の概要をまとめたものです。
11
概要
Context and
Dependency
Injection
JavaEEにおけるDI(Dependency Injection)手法を統一化した仕様。EJBやWebサービスなどのコンポーネントにかかわらず、@Named と@InjectアノテーションによりDIが可能になる。
また、インジェクション対象のオブジェクトのスコープ(リクエスト、セッション、アプリケーション)もアノテーションで指定可能。
Bean Validation Beanやフィールドにおけるnullチェック、数値範囲チェック、文
字列の長さなどの各種妥当性チェックをアノテーション指定により実現できるようにする仕様。
New
New
![Page 12: 76 WebLogic Server勉強会@大阪 #13 - Oracle...る。HttpServletRequestオブジェクトgetPartやgetPartsメソッドでMIMEアタッ チメントを取り出す。これによりファイルアップロードを行うサーブレットが容易](https://reader030.fdocuments.us/reader030/viewer/2022041022/5ed28e6903aa710aa86097f3/html5/thumbnails/12.jpg)
Copyright© 2012, Oracle. All rights reserved.
<Insert Picture Here>
12
Servlet 3.0:アノテーション活用
![Page 13: 76 WebLogic Server勉強会@大阪 #13 - Oracle...る。HttpServletRequestオブジェクトgetPartやgetPartsメソッドでMIMEアタッ チメントを取り出す。これによりファイルアップロードを行うサーブレットが容易](https://reader030.fdocuments.us/reader030/viewer/2022041022/5ed28e6903aa710aa86097f3/html5/thumbnails/13.jpg)
Copyright© 2012, Oracle. All rights reserved. 13
Servlet3.0 : サーブレットでのアノテーション活用
• Servlet2.5までは、WebアプリケーションにおいてサーブレットやURLパターンの定義などの情報は、web.xmlファイル内にXMLタグで記述する必要がありました。
• Servlet3.0では、これらの定義はアノテーションで行うことができ、web.xmlは必須ではなくなりました。
WAR
Servlet1.class
web.xml
WAR
Servlet1.class
@WebServlet(urlPatterns =“/myservlet”) public class Servlet1 extends HttpServlet
…..
<web-app>
<servlet>
<servlet-name>MyServlet/<servlet-name>
<servlet-class>Servlet1</servlet-class>
</servlet>
<servletmapping>
<servletname>MyServlet</servlet-name>
<url-pattern>/myservlet</url-pattern>
</servlet-mapping>
</web-app>
Servlet2.5まで Servlet3.0
web.xml
Servlet1.java
![Page 14: 76 WebLogic Server勉強会@大阪 #13 - Oracle...る。HttpServletRequestオブジェクトgetPartやgetPartsメソッドでMIMEアタッ チメントを取り出す。これによりファイルアップロードを行うサーブレットが容易](https://reader030.fdocuments.us/reader030/viewer/2022041022/5ed28e6903aa710aa86097f3/html5/thumbnails/14.jpg)
Copyright© 2012, Oracle. All rights reserved. 14
[参考] Servlet3.0の主要なアノテーション
アノテーション 概要
@WebServlet サーブレットの定義を行う。このアノテーションが付加されたクラスはjavax.servlet.http.HttpServletを拡張している必要がある。
@WebInitParam サーブレットの初期化パラメータを定義する。
@WebFilter サーブレットのフィルターの定義を行う。このアノテーションが付加されたクラスはjavax.servlet.Filterインターフェースを実装している必要がある。
@WebListener サーブレットのリスナーの定義を行う。このアノテーションが付加されたクラスは、下記のいずれかのインターフェースを実装する必要がある。
javax.servlet.ServletContextListener
javax.servlet.ServletContextAttributeListener
javax.servlet.ServletRequestListener
javax.servlet.ServletRequestAttributeListener
javax.servlet.http.HttpSessionListener
javax.servlet.http.HttpSessionAttributeListener
@MultipartConfig サーブレットに対するリクエストのタイプがmime/multipartであることを定義する。HttpServletRequestオブジェクトgetPartやgetPartsメソッドでMIMEアタッチメントを取り出す。これによりファイルアップロードを行うサーブレットが容易に作成できる。
![Page 15: 76 WebLogic Server勉強会@大阪 #13 - Oracle...る。HttpServletRequestオブジェクトgetPartやgetPartsメソッドでMIMEアタッ チメントを取り出す。これによりファイルアップロードを行うサーブレットが容易](https://reader030.fdocuments.us/reader030/viewer/2022041022/5ed28e6903aa710aa86097f3/html5/thumbnails/15.jpg)
Copyright© 2012, Oracle. All rights reserved. 15
アノテーションの例
• 下記は、シンプルにサーブレットのURLパターンだけを指定しているアノテーション例です。
@WebServlet( urlPatterns = { "/Servlet1" },
initParams = { @WebInitParam(name = "param1", value = "Hello")}
)
public class Servlet1 extends HttpServlet {
(以下略)
@WebServlet("/Servlet1")
public class Servlet1 extends HttpServlet {
(以下略)
• 下記は、サーブレットのURLパターンと初期化パラメータを指定しているアノテーション例です。
![Page 16: 76 WebLogic Server勉強会@大阪 #13 - Oracle...る。HttpServletRequestオブジェクトgetPartやgetPartsメソッドでMIMEアタッ チメントを取り出す。これによりファイルアップロードを行うサーブレットが容易](https://reader030.fdocuments.us/reader030/viewer/2022041022/5ed28e6903aa710aa86097f3/html5/thumbnails/16.jpg)
Copyright© 2012, Oracle. All rights reserved.
<Insert Picture Here>
Servlet3.0: 非同期サーブレット
16
![Page 17: 76 WebLogic Server勉強会@大阪 #13 - Oracle...る。HttpServletRequestオブジェクトgetPartやgetPartsメソッドでMIMEアタッ チメントを取り出す。これによりファイルアップロードを行うサーブレットが容易](https://reader030.fdocuments.us/reader030/viewer/2022041022/5ed28e6903aa710aa86097f3/html5/thumbnails/17.jpg)
Copyright© 2012, Oracle. All rights reserved. 17
Servlet3.0: 非同期サーブレット • Servlet2.5までは、サーブレット実行のリクエストを受けてレスポンスを返すまでの動作
は一つのスレッドにより同期的に行われていましたが、非同期処理を行う仕組みは提供されていませんでした。そのため、もしサーブレットが長時間実行されてしまった場合、その間スレッドが占有されてしまうという課題がありました。
• Servlet3.0では、サーブレットから別スレッドによる非同期処理がサポートされるように
なりました。これによりサーブレットを実行するスレッドを効率的に利用できるようになります。
Servlet
リクエスト
レスポンス
Servlet
リクエスト
レスポンス
非同期処理用
クラス
1つの
スレッドを占有
別の
スレッド
スレッド
解放
Servlet2.5まで Servlet3.0
![Page 18: 76 WebLogic Server勉強会@大阪 #13 - Oracle...る。HttpServletRequestオブジェクトgetPartやgetPartsメソッドでMIMEアタッ チメントを取り出す。これによりファイルアップロードを行うサーブレットが容易](https://reader030.fdocuments.us/reader030/viewer/2022041022/5ed28e6903aa710aa86097f3/html5/thumbnails/18.jpg)
Copyright© 2012, Oracle. All rights reserved. 18
非同期処理の例
• 下記は、サーブレットとは非同期で実行しているスレッドからレスポンスを返す処理の例です。
@WebServlet(urlPatterns="/Servlet1", asyncSupported=true)
public class Servlet1 extends HttpServlet {
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException,
IOException {
final AsyncContext ac = request.startAsync(request,response);
ac.start(new AsyncProcess(ac));
}
}
public class AsyncProcess implements Runnable {
AsyncContext context;
public AsyncProcess(AsyncContext ctx){
context = ctx;
}
@Override
public void run() {
try {
PrintWriter out = context.getResponse().getWriter();
out.println(“別スレッドより出力してます");
}
catch (Exception ex) { ex.printStackTrace(); }
context.complete();
}
}
サーブレット
非同期で実行するクラス
![Page 19: 76 WebLogic Server勉強会@大阪 #13 - Oracle...る。HttpServletRequestオブジェクトgetPartやgetPartsメソッドでMIMEアタッ チメントを取り出す。これによりファイルアップロードを行うサーブレットが容易](https://reader030.fdocuments.us/reader030/viewer/2022041022/5ed28e6903aa710aa86097f3/html5/thumbnails/19.jpg)
Copyright© 2012, Oracle. All rights reserved.
<Insert Picture Here>
Servlet3.0 : Webフラグメント
19
![Page 20: 76 WebLogic Server勉強会@大阪 #13 - Oracle...る。HttpServletRequestオブジェクトgetPartやgetPartsメソッドでMIMEアタッ チメントを取り出す。これによりファイルアップロードを行うサーブレットが容易](https://reader030.fdocuments.us/reader030/viewer/2022041022/5ed28e6903aa710aa86097f3/html5/thumbnails/20.jpg)
Copyright© 2012, Oracle. All rights reserved.
WAR
20
Servlet3.0 : Webフラグメント
• Servlet2.5までは、Webアプリケーションでフレームワークのライブラリを利用する場合、フレームワークが提供するサーブレットやパラメータ等をweb.xmlへ設定することが必要なケースもあり、web.xmlの肥大化、管理の複雑化を招いていました。
• Servlet3.0では、ライブラリ中にweb-fragment.xmlを用意することで、Webアプリケーションへのweb.xmlの追加設定を不要にできます。
Servlet3.0
WAR
web.xml Servlet1.class
Framework1.jar
Servlet2.5まで
META-INF
web-fragment.xml
Framework1.jar
WEB-INF
classes
lib
Servlet1.class
Framework1.jar
WEB-INF
classes
lib
WEB-INF
FW.class
classes
![Page 21: 76 WebLogic Server勉強会@大阪 #13 - Oracle...る。HttpServletRequestオブジェクトgetPartやgetPartsメソッドでMIMEアタッ チメントを取り出す。これによりファイルアップロードを行うサーブレットが容易](https://reader030.fdocuments.us/reader030/viewer/2022041022/5ed28e6903aa710aa86097f3/html5/thumbnails/21.jpg)
Copyright© 2012, Oracle. All rights reserved.
<Insert Picture Here>
JSF2.0 Facelets
21
![Page 22: 76 WebLogic Server勉強会@大阪 #13 - Oracle...る。HttpServletRequestオブジェクトgetPartやgetPartsメソッドでMIMEアタッ チメントを取り出す。これによりファイルアップロードを行うサーブレットが容易](https://reader030.fdocuments.us/reader030/viewer/2022041022/5ed28e6903aa710aa86097f3/html5/thumbnails/22.jpg)
Copyright© 2012, Oracle. All rights reserved. 22
JSF2.0のFacelets
• JSF1.2までは、ユーザインターフェースとなるビュー層にJSPを利用するアーキテクチャでしたが、JSPはサーブレットに変換、コンパイルされて実行時にビューを生成するためオーバーヘッドが高く、効率的な仕組みとはいえませんでした。
• JSF2.0では、Faceletsというコンポーネントを提供しています。Faceletsではビュー層にXHTMLを利用するアーキテクチャになるため、ビュー生成のオーバーヘッドは低く、かつテンプレートなどの機能を活用することが可能になっています。
• また、faces-config.xmlで複雑な設定を行わずに、アノテーションを使いManaged
Bean等を定義できるようになっています。
テンプレート
ボディ
○○カンパニー Home 製品 サポート 企業
情報
弊社製品一覧
お問い合わせはこちらに
タイトル/メニュー 製品一覧表示
問合せ先リンク
Facelets 製品詳細説明表示
マニュアル一覧表示
XHTML 生成されるビュー
![Page 23: 76 WebLogic Server勉強会@大阪 #13 - Oracle...る。HttpServletRequestオブジェクトgetPartやgetPartsメソッドでMIMEアタッ チメントを取り出す。これによりファイルアップロードを行うサーブレットが容易](https://reader030.fdocuments.us/reader030/viewer/2022041022/5ed28e6903aa710aa86097f3/html5/thumbnails/23.jpg)
Copyright© 2012, Oracle. All rights reserved. 23
[参考] JSF2.0のタグについて
• JSF2.0では、従来のJSF CoreタグやJSF HTMLタグに加え、Faceletsの機能を提供するタグも利用できます。
タグライブラリ 概要 URI Prefix 例
JSF
Facelets
Faceletsのテンプレートのタグライブラリ
http://java.sun.com/jsf/facelets ui: ui:component
ui:insert
JSF HTML JSFのUIコンポーネントのタグライブラリ
http://java.sun.com/jsf/html
h: h:inputText
h:outputText
JSF Core JSF Coreのタグライブラリ
http://java.sun.com/jsf/core f: f:attribute
JSTL Core JSTL Coreのタグライブラリ
http://java.sun.com/jsp/jstl/core c: c:forEach
c:catch
JSTL
Function
JSTL Functionのタグライブラリ
http://java.sun.com/jsp/jstl/functions
fn: fn:toUpperCase
![Page 24: 76 WebLogic Server勉強会@大阪 #13 - Oracle...る。HttpServletRequestオブジェクトgetPartやgetPartsメソッドでMIMEアタッ チメントを取り出す。これによりファイルアップロードを行うサーブレットが容易](https://reader030.fdocuments.us/reader030/viewer/2022041022/5ed28e6903aa710aa86097f3/html5/thumbnails/24.jpg)
Copyright© 2012, Oracle. All rights reserved. 24
Faceletsの例
• Faceletsの例の前提を説明します。
• この例では、XHTMLのテンプレートを用いて入力画面と結果画面を用意します。
• この例では、入力画面のForm項目やSubmitボタン選択時の実行メソッドは1つのManagedBeanにまとめています。
index.xhtml result.xhtml
template.xhtml
xxx Submit
名前を入力 こんにちは、xxxさん
JSF
Managed Bean
テンプレート適用
テンプレート適用
content
header
footer
header
footer
header
footer
![Page 25: 76 WebLogic Server勉強会@大阪 #13 - Oracle...る。HttpServletRequestオブジェクトgetPartやgetPartsメソッドでMIMEアタッ チメントを取り出す。これによりファイルアップロードを行うサーブレットが容易](https://reader030.fdocuments.us/reader030/viewer/2022041022/5ed28e6903aa710aa86097f3/html5/thumbnails/25.jpg)
Copyright© 2012, Oracle. All rights reserved. 25
Faceletsの例(Managed Bean)
• 下記はManaged Beanの例です。
@ManagedBean
public class HelloBean implements Serializable {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String say() {
System.out.println("---入力された値は " + name);
return "/result";
}
}
![Page 26: 76 WebLogic Server勉強会@大阪 #13 - Oracle...る。HttpServletRequestオブジェクトgetPartやgetPartsメソッドでMIMEアタッ チメントを取り出す。これによりファイルアップロードを行うサーブレットが容易](https://reader030.fdocuments.us/reader030/viewer/2022041022/5ed28e6903aa710aa86097f3/html5/thumbnails/26.jpg)
Copyright© 2012, Oracle. All rights reserved. 26
Faceletsの例(XHTMLテンプレート)
• 下記はXHTMLテンプレートの例です。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets">
<head>
<title><ui:insert name="title">Default title</ui:insert></title>
</head>
<body>
<div id="header">
<ui:insert name=“header”>JSF2.0 Faceletsの例</ui:insert>
</div>
<div id="content">
<ui:insert name="content"></ui:insert>
</div>
<div id="footer">
<ui:insert name="footer">このアプリはWebLogic12c上で動作しています。</ui:insert>
</div>
</body>
</html>
![Page 27: 76 WebLogic Server勉強会@大阪 #13 - Oracle...る。HttpServletRequestオブジェクトgetPartやgetPartsメソッドでMIMEアタッ チメントを取り出す。これによりファイルアップロードを行うサーブレットが容易](https://reader030.fdocuments.us/reader030/viewer/2022041022/5ed28e6903aa710aa86097f3/html5/thumbnails/27.jpg)
Copyright© 2012, Oracle. All rights reserved. 27
Faceletsの例(XHTML)
• 下記はXHTMLの例です。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns=http://www.w3.org/1999/xhtml xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h=http://java.sun.com/jsf/html xmlns:f="http://java.sun.com/jsf/core">
<f:loadBundle basename="resources.application" var="msg"/>
<head>
<title><h:outputText value="#{msg.welcomeTitle}" /></title>
</head>
<ui:composition template="./template.xhtml">
<ui:define name="content">
<h:form>
名前を入力して実行 ボタンを選択してください。
<h:inputText id="userid" value="#{helloBean.name}"/>
<h:commandButton id="submit" action="#{helloBean.say}" value="実行"/>
</h:form>
</ui:define>
</ui:composition>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-31j"/>
<title>Insert title here</title>
</head>
<ui:composition template="./template.xhtml">
<ui:define name="content">
こんにちは!<h:outputText id="msg" value="#{helloBean.name}"/>さん
</ui:define>
</ui:composition>
</html>
index.xhtml
result.xhtml
![Page 28: 76 WebLogic Server勉強会@大阪 #13 - Oracle...る。HttpServletRequestオブジェクトgetPartやgetPartsメソッドでMIMEアタッ チメントを取り出す。これによりファイルアップロードを行うサーブレットが容易](https://reader030.fdocuments.us/reader030/viewer/2022041022/5ed28e6903aa710aa86097f3/html5/thumbnails/28.jpg)
Copyright© 2012, Oracle. All rights reserved.
<Insert Picture Here>
28
EJB3.1:簡略化されたパッケージング
![Page 29: 76 WebLogic Server勉強会@大阪 #13 - Oracle...る。HttpServletRequestオブジェクトgetPartやgetPartsメソッドでMIMEアタッ チメントを取り出す。これによりファイルアップロードを行うサーブレットが容易](https://reader030.fdocuments.us/reader030/viewer/2022041022/5ed28e6903aa710aa86097f3/html5/thumbnails/29.jpg)
Copyright© 2012, Oracle. All rights reserved. 29
EJB3.1: パッケージングの簡略化 • JavaEE5までは、サーブレットやJSPはWebアプリケーションとしてWARファイルに、
EJBはEJBアプリケーションとしてJARファイルにまとめ、WebアプリケーションからEJB
を利用する場合は、WARファイルとEJBのJARファイルをさらにまとめたEARファイルを用意するか、事前にEJBをデプロイしてからWebアプリケーションから呼び出す必要がありました。
• JavaEE6では、サーブレットのクラスを配置する場所(WEB-INF/classesなど)にEJBのクラスを配備できます。またインターフェースを用いず実装クラスだけでEJBとして動作させることが可能になっています。
EAR
WAR EJB-JAR
Servlet1.class Hello.class
WAR EJB-JAR
Servlet1.class Hello.class
パッケージング
WAR
Servlet1.class
Hello.class
利用
利用
JavaEE5まで JavaEE6
HelloImpl.class
インターフェース
実装クラス
実装クラス
![Page 30: 76 WebLogic Server勉強会@大阪 #13 - Oracle...る。HttpServletRequestオブジェクトgetPartやgetPartsメソッドでMIMEアタッ チメントを取り出す。これによりファイルアップロードを行うサーブレットが容易](https://reader030.fdocuments.us/reader030/viewer/2022041022/5ed28e6903aa710aa86097f3/html5/thumbnails/30.jpg)
Copyright© 2012, Oracle. All rights reserved. 30
EJB3.1簡略化パッケージの例
• 下記はEJB3.1の実装クラスをWebアプリケーションの中にパッケージングしてサーブレットから利用している例です。
@WebServlet(urlPatterns="/Servlet1”)
public class Servlet1 extends HttpServlet {
@EJB
private Hello hello;
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException,
IOException {
response.setContentType("text/html; charset=windows-31j");
PrintWriter out = response.getWriter();
String msg = hello.sayHello("WebLogic12c");
out.println("Message = " + msg); }
}
@Stateless
@LocalBean
public class Hello {
public Hello() {
}
public String sayHello(String name) {
return "Hello! " + name;
}
}
WARファイル/WEB-INF/classes
サーブレット EJB
![Page 31: 76 WebLogic Server勉強会@大阪 #13 - Oracle...る。HttpServletRequestオブジェクトgetPartやgetPartsメソッドでMIMEアタッ チメントを取り出す。これによりファイルアップロードを行うサーブレットが容易](https://reader030.fdocuments.us/reader030/viewer/2022041022/5ed28e6903aa710aa86097f3/html5/thumbnails/31.jpg)
Copyright© 2012, Oracle. All rights reserved.
<Insert Picture Here>
31
Bean Validation 1.0
![Page 32: 76 WebLogic Server勉強会@大阪 #13 - Oracle...る。HttpServletRequestオブジェクトgetPartやgetPartsメソッドでMIMEアタッ チメントを取り出す。これによりファイルアップロードを行うサーブレットが容易](https://reader030.fdocuments.us/reader030/viewer/2022041022/5ed28e6903aa710aa86097f3/html5/thumbnails/32.jpg)
Copyright© 2012, Oracle. All rights reserved. 32
Bean Validation
• Bean Validationは、JavaEE6で新たに追加された仕様です。(Hibernate Validatorベース)
• Bean Validationは、Bean(Java Object)やそのフィールドの値に制約を定義し、格納されている値の妥当性をチェックする機能を提供します。
• JavaEE5では、 Bean単位で値の検証を場合は、そのためのコードを用意する必要がありました。(JSFではUIコンポーネント単位で入力値の検証機能は提供していました。)
• JavaEE6のBean Validationではアノテーションによりフィールドの制約を定義できます。これにより、Bean単位でのフィールドの値の存在(null)チェックや数値範囲チェック、桁数チェックや時間範囲チェックなどを容易に設定・実現する事が可能になっています。
530
Bean Validation
Bean
大阪
妥当性チェック
エラーの場合は、そのメッセージを取得可能
フィールドの制約や制約違反
時のメッセージをアノテーションで指定
結果
名前
郵便番号
住所
名前が空です。
郵便番号は7桁で入力してください。
登録フォーム
登録
![Page 33: 76 WebLogic Server勉強会@大阪 #13 - Oracle...る。HttpServletRequestオブジェクトgetPartやgetPartsメソッドでMIMEアタッ チメントを取り出す。これによりファイルアップロードを行うサーブレットが容易](https://reader030.fdocuments.us/reader030/viewer/2022041022/5ed28e6903aa710aa86097f3/html5/thumbnails/33.jpg)
Copyright© 2012, Oracle. All rights reserved. 33
[参考] Bean Validationのアノテーション
• 下表はBean Validationであらかじめ用意されているフィールド値を制約する主なアノテーションです。一つのフィールドに対して複数併用することができます。
• 下表以外にもカスタムのアノテーションを作成する事も可能です。
アノテーション 制約 指定例
@NotNull 値にnullは許容しない
@NotNull(message=“入力必須です”)
String name
@Min 値は指定値以上しか許容しない
@Min(value=100,message=”100以上を入力して下さい”)
int amount;
@Max 値は指定値以下しか許容しない
@Max(value=100,message=”100以内で入力して下さい”)
int point;
@Size 値の桁数は指定範囲しか許容しない
@Size(min=7,max=7,message=“7桁で入力して下さい”)
String zipcode;
@Pattern 値は指定パターンしか許容しない
@Pattern(regexp=“*@*”)
String email;
![Page 34: 76 WebLogic Server勉強会@大阪 #13 - Oracle...る。HttpServletRequestオブジェクトgetPartやgetPartsメソッドでMIMEアタッ チメントを取り出す。これによりファイルアップロードを行うサーブレットが容易](https://reader030.fdocuments.us/reader030/viewer/2022041022/5ed28e6903aa710aa86097f3/html5/thumbnails/34.jpg)
Copyright© 2012, Oracle. All rights reserved. 34
Bean Validationの例
• 下記はBeanのフィールドに制約を設定している例です。
public class BankTransferBean {
@NotNull
@Size(min=7, max=7,message="口座番号は{min}桁で入力して下さい。")
private String koza; //7ケタ
@NotNull
@Max(value=500000,message="1回の振込金額は50万円まで")
@Min(value=1,message="振込金額は1円以上で指定してください。")
private int kingaku; // 1~500000
@NotNull
@Size(min=1,message="振込人名は入力必須")
private String name; // Not Null
public String getKoza() {
return koza;
}
(以下略)
• 口座番号は必ず7桁の値が必要
• 振込金額1円以上、50万円以内
• 振込人名は、入力必須
![Page 35: 76 WebLogic Server勉強会@大阪 #13 - Oracle...る。HttpServletRequestオブジェクトgetPartやgetPartsメソッドでMIMEアタッ チメントを取り出す。これによりファイルアップロードを行うサーブレットが容易](https://reader030.fdocuments.us/reader030/viewer/2022041022/5ed28e6903aa710aa86097f3/html5/thumbnails/35.jpg)
Copyright© 2012, Oracle. All rights reserved. 35
Bean Validationの例
• 下記は、サーブレット内でBeanのフィールド値の妥当性チェックを行っている例です。
BankTransferBean bean = new BankTransferBean();
bean.setKoza(“1234567”);
bean.setKingaku(200000);
bean.setName(“Oracle”);
ValidatorFactory vf = Validation.buildDefaultValidatorFactory();
Validator v = vf.getValidator();
Set<ConstraintViolation<BankTransferBean>> result = v.validate(bean);
String message = "";
for(ConstraintViolation<BankTransferBean> cv : result){
message +=cv.getMessage()+" 入力値:"+ cv.getInvalidValue() + "<br>";
}
if (message.equals("")) {
message = "振込完了しました。";
}
response.setContentType("text/html; charset=windows-31j");
PrintWriter out = response.getWriter();
out.println(message);
}
![Page 36: 76 WebLogic Server勉強会@大阪 #13 - Oracle...る。HttpServletRequestオブジェクトgetPartやgetPartsメソッドでMIMEアタッ チメントを取り出す。これによりファイルアップロードを行うサーブレットが容易](https://reader030.fdocuments.us/reader030/viewer/2022041022/5ed28e6903aa710aa86097f3/html5/thumbnails/36.jpg)
Copyright© 2012, Oracle. All rights reserved.
<Insert Picture Here>
36
Context and Dependency Injection(CDI) 1.0
![Page 37: 76 WebLogic Server勉強会@大阪 #13 - Oracle...る。HttpServletRequestオブジェクトgetPartやgetPartsメソッドでMIMEアタッ チメントを取り出す。これによりファイルアップロードを行うサーブレットが容易](https://reader030.fdocuments.us/reader030/viewer/2022041022/5ed28e6903aa710aa86097f3/html5/thumbnails/37.jpg)
Copyright© 2012, Oracle. All rights reserved. 37
Context and Dependency Injection(CDI)
• CDIは、JavaEE6においてDI(Dependency Injection)手法を統一化した仕様です。
• DIとは、あるJavaオブジェクト内で必要とするJavaオブジェクトの生成をコンテナ側で行わせることで、オブジェクト間の結合を疎にする手法を指します。
• JavaEE5でも一部の仕様で限定的にDI機能を提供していましたが、仕様毎に方法が異なったり、スコープを制御するには別途コードの用意が必要という課題がありました。
• JavaEE6のCDIでは、CDIによりDIの方法が統一化され、さらにスコープ定義をアノテーションで行えるようになっています。
@WebServlet(urlPatterns=“/A")
public class A extends HttpServlet {
@Inject
B b;
protected void doGet
(HttpServletRequest req, HttpServletResponse res) {
b.getXX ();
….
@Named
public class B {
String XX = “xx”;
public String getXX() {
return XX;
}
}
クラスB サーブレットA
![Page 38: 76 WebLogic Server勉強会@大阪 #13 - Oracle...る。HttpServletRequestオブジェクトgetPartやgetPartsメソッドでMIMEアタッ チメントを取り出す。これによりファイルアップロードを行うサーブレットが容易](https://reader030.fdocuments.us/reader030/viewer/2022041022/5ed28e6903aa710aa86097f3/html5/thumbnails/38.jpg)
Copyright© 2012, Oracle. All rights reserved.
<Insert Picture Here>
Oracle WebLogic Server 12c概要
38
![Page 39: 76 WebLogic Server勉強会@大阪 #13 - Oracle...る。HttpServletRequestオブジェクトgetPartやgetPartsメソッドでMIMEアタッ チメントを取り出す。これによりファイルアップロードを行うサーブレットが容易](https://reader030.fdocuments.us/reader030/viewer/2022041022/5ed28e6903aa710aa86097f3/html5/thumbnails/39.jpg)
Copyright© 2012, Oracle. All rights reserved.
WebLogic Server の機能と歴史
WebLogic
8.1
WebLogic
9.x
WebLogic
10.0 WebLogic10g
(10.3)
WebLogic11g
(10.3.1~)
WebLogic12c
(12.1.1.0)
2003年 2005年 2007年 2008年 2009年 2011年
JavaEE J2EE1.3 J2EE1.4 JavaEE5 JavaEE6
JDK JDK1.4.2 JDK1.5 JDK1.6
主要な
対応仕様
や
新機能
・Servlet2.3
・JSP1.2
・EJB2.0
・Web Services
enhancements
・Servlet2.4
・JSP2.0
・EJB2.1
・JAX-RPC1.1
・WS-Security
・WS-Reliable
Messaging
・Servlet2.5
・JSP2.1
・JSF1.2
・EJB3.0
・JAX-WS2.0
・JAC1.5
• Web2.0対応 (HTTP Pub-Sub Server)
• Fast Swap
( 追加対応)
• JAX-WS 2.1
• JAXB 2.1
・ GridLink for RAC
・ Active Cache
・ WebTier 製品統合
・Flight Recorder
・CAT
・Exalogic最適化オプション
・Servlet3.0
・JSP2.2
・JSF2.0
・EJB3.1
・CDI 1.0
・Bean Validation
Zero DownTime
アーキテクチャ刷新
特徴的新機能の追加
JavaEE5対応
Ese Of
Development
JDK1.6対応
性能改善
オラクルブランド
でのリリース
JavaEE6対応
JavaSE7対応
RAC連携強化
オラクル技術との融合
Exalogic最適化
Coherence連携強化
2011年12月、JavaEE6に対応したWebLogic Server 12cを発表
長い歴史と多くの実績をもち、製品としての成熟度・洗練度をさらに向上
39
![Page 40: 76 WebLogic Server勉強会@大阪 #13 - Oracle...る。HttpServletRequestオブジェクトgetPartやgetPartsメソッドでMIMEアタッ チメントを取り出す。これによりファイルアップロードを行うサーブレットが容易](https://reader030.fdocuments.us/reader030/viewer/2022041022/5ed28e6903aa710aa86097f3/html5/thumbnails/40.jpg)
Copyright© 2012, Oracle. All rights reserved.
Oracle WebLogic Server 12c
40
製品コンセプト
Oracle Fusion MiddlewareにおけるJavaEEアプリケーション・サーバー
主要な新機能
JavaEE6完全準拠, JavaSE7対応
Active GridLink for RACの拡張
Web Session Affinity
コネクション・ラベリング
JDBC TLOGストア
WebLogic Mavenプラグインの拡張
データベースのプロキシ認証
Restful Management Services
![Page 41: 76 WebLogic Server勉強会@大阪 #13 - Oracle...る。HttpServletRequestオブジェクトgetPartやgetPartsメソッドでMIMEアタッ チメントを取り出す。これによりファイルアップロードを行うサーブレットが容易](https://reader030.fdocuments.us/reader030/viewer/2022041022/5ed28e6903aa710aa86097f3/html5/thumbnails/41.jpg)
Copyright© 2012, Oracle. All rights reserved.
WebLogic Server 12c:JavaEE6完全準拠, JavaSE7対応
Servlet 3.0
JSF 2.0
JSP 2.2
EJB 3.1
CDI 1.0
JTA 1.1
JPA 2.0
Bean
Validation
JAX-RS
JMS
JAX-WS
JCA
JSR 196
JNDI
RMI
SAAJ
JSR 77
JAAS
JSR 88
JAX
RPC
Managed
Beans
DI for Java
Interceptors
1.1
Common
Annotations
• JavaEE6 完全準拠
• Servlet3.0やEJB3.1,CDI,Bean Validation等のAPIを完全にサポート
• 開発の容易性にフォーカスし、アノテーション活用範囲を拡大
• JavaEE6対応 IDEの提供
• OEPE12.1.1.0
• NetNBeans7.1
• WebLogic11g(10.3.5)と完全互換
• 既存アプリケーションを容易に移行可能
• JavaSE6(JDK1.6.0_24以降)とJavaSE7に対応
• JavaSE7はWebLogic Server 12cとは別に事前にインストール/設定しておくなど、一部追加手順が必要
41
![Page 42: 76 WebLogic Server勉強会@大阪 #13 - Oracle...る。HttpServletRequestオブジェクトgetPartやgetPartsメソッドでMIMEアタッ チメントを取り出す。これによりファイルアップロードを行うサーブレットが容易](https://reader030.fdocuments.us/reader030/viewer/2022041022/5ed28e6903aa710aa86097f3/html5/thumbnails/42.jpg)
Copyright© 2012, Oracle. All rights reserved. 42
WebLogic Server 12c 開発ツールについて
• Oracle WebLogic Server 12cは標準仕様であるJava EE 6に完全準拠しているため、Java EE 6のアプリケーションが開発可能な開発ツールを利用できます。
• 下表はオラクルが提供しているWebLogic Server向け開発ツールです。
ツール名 概要
Oracle Enterprise Pack for
Eclipse (12.1.1.0)
Eclipse Indigoベースの開発ツール。Java EE 6ベースのアプリ開発が可能。
NetBeans7.1 JavaEE6だけでなく、JavaFXなどJava全般の開発支援機能を提供できるツール。Glassfishとの親和性も高い。
Oracle JDeveloper 12c
(2011年12月現在、未リリース)
JavaだけでなくDB(表設計、編集、PL/SQL等)開発ツール
12cより WebLogic12cに対応し、Java EE 6ベースのアプリ開発が可能になる予定。
![Page 43: 76 WebLogic Server勉強会@大阪 #13 - Oracle...る。HttpServletRequestオブジェクトgetPartやgetPartsメソッドでMIMEアタッ チメントを取り出す。これによりファイルアップロードを行うサーブレットが容易](https://reader030.fdocuments.us/reader030/viewer/2022041022/5ed28e6903aa710aa86097f3/html5/thumbnails/43.jpg)
Copyright© 2012, Oracle. All rights reserved.
Oracle WebLogic Server 12c のアーキテクチャ
• Oracle WebLogic Server 12c (12.1.1.0)の基本的なアーキテクチャは、WebLogicの以前までのバージョンと同様。
管理対象 サーバ#2
管理対象 サーバ#3
管理 サーバ
Oracle WebLogic Server 12c (12.1.1.0)
WebLogicドメイン
WebLogicクラスタ
管理対象 サーバ#1
ノード マネージャ
ノード マネージャ
マシンA
マシンB
管理サーバ
管理ツール (Admin Console/
FMW Control/ /WLSTなど)
ドメイン ログ
コンフィグ レーション リポジトリ
JMX
JMX
JMX Webサーバ
または
L/B
HTTP/HTTPS
リクエスト
43
![Page 44: 76 WebLogic Server勉強会@大阪 #13 - Oracle...る。HttpServletRequestオブジェクトgetPartやgetPartsメソッドでMIMEアタッ チメントを取り出す。これによりファイルアップロードを行うサーブレットが容易](https://reader030.fdocuments.us/reader030/viewer/2022041022/5ed28e6903aa710aa86097f3/html5/thumbnails/44.jpg)
Copyright© 2012, Oracle. All rights reserved.
サポート対象のOS/JDK/DB HW OS(64bit only ) *1 JDK(64bit only) *1 DB(WLS機能用) *2
x64 RedHat Linux 5.6~
Oracle Linux 5.6~
SLES 10 SP2~
SLES 11
Oracle JDK 1.6.0_29~
JRockit R28.2.0~
Oracle 11.1.0.7~
Oracle RAC 11.1.0.7
Oracle 11.2.0.3~
Oracle RAC 11.2.0.3~
DB2/UDB 9.5~
DB2 9.7~
SQL Server 2008
SQL Server 2008R2
MySQL5.5
Sybase 15.5~
Windows 2008 R2
Solaris 10 U9~
Solaris 11
Oracle JDK 1.6.0_29~
Windows 7 SP1~
SPARC Solaris 10 U9~
Solaris 11
Power AIX 6.1 TL6~
AIX 7.1 TL0~
IBM JDK 6 SR9 FP2~
44
*1) 開発環境では32bit OS(MAC、Windows XP/VISTA/7、Linux 5)、32bit JDK(Oracle JDK、JRockit)もサポート http://www.oracle.com/technetwork/developer-tools/eclipse/system-requirements-101778.html *2) アプリケーションデータアクセスのみ用途には一定条件を満たすJDBCドライバならば上記以外のDBもサポート http://www.oracle.com/technetwork/middleware/ias/downloads/wls-1211x-certmatrix-1395408.xls ただし、マルチデータソース、GridLinkデータソースを利用の場合、Oracle RACは11gのみをサポート http://docs.oracle.com/cd/E24329_01/web.1211/e24367/oracle_rac.htm#i1080090
※2012年1月23日現在のサポート状況
![Page 45: 76 WebLogic Server勉強会@大阪 #13 - Oracle...る。HttpServletRequestオブジェクトgetPartやgetPartsメソッドでMIMEアタッ チメントを取り出す。これによりファイルアップロードを行うサーブレットが容易](https://reader030.fdocuments.us/reader030/viewer/2022041022/5ed28e6903aa710aa86097f3/html5/thumbnails/45.jpg)
Copyright© 2012, Oracle. All rights reserved.
<Insert Picture Here>
45
WebLogic Server12c 新機能
Active GridLinkのWeb Session Affinity
![Page 46: 76 WebLogic Server勉強会@大阪 #13 - Oracle...る。HttpServletRequestオブジェクトgetPartやgetPartsメソッドでMIMEアタッ チメントを取り出す。これによりファイルアップロードを行うサーブレットが容易](https://reader030.fdocuments.us/reader030/viewer/2022041022/5ed28e6903aa710aa86097f3/html5/thumbnails/46.jpg)
Copyright© 2012, Oracle. All rights reserved.
WebLogicのOracle RAC接続機能
• WebLogic Server 11g(10.3.1以降)のバージョンより、Oracle RAC接続機能が拡張・強化され、下表のように2通りの方法を選択できます。
機能 概要
マルチデータソース
WebLogic Server 10.3までのマルチデータソースとほぼ同等機能で、WebLogic Server 11g(10.3.1)から利用することができます。
GridLinkデータソース Oracle NetとOracle RACのFAN(Fast Application
Notification)によるRAC接続機能をWebLogicでも利用できるようにしたもので、WebLogic
Server11g(10.3.4)から利用することが可能です。
46
![Page 47: 76 WebLogic Server勉強会@大阪 #13 - Oracle...る。HttpServletRequestオブジェクトgetPartやgetPartsメソッドでMIMEアタッ チメントを取り出す。これによりファイルアップロードを行うサーブレットが容易](https://reader030.fdocuments.us/reader030/viewer/2022041022/5ed28e6903aa710aa86097f3/html5/thumbnails/47.jpg)
Copyright© 2012, Oracle. All rights reserved. 47
マルチデータソース
RACサービス毎にマルチデータソースを構成します。
データソースは、サービス指定を行いRACノード数分用意します。
アプリケーションはRACサービスに対応したマルチデータソースを指定して接続します。
(RACサービス指定接続が可能)
接続要求はRACサービス設定基づき分散されます。
RACのXAトランザクション制限の意識不要です。
データソース1 データソース2 データソース3
WebLogic Server 11g アプリケーション
マルチデータソース(サービスA用)
データソース1 データソース2 データソース3
マルチデータソース(サービスB用)
サービスA サービスB
ACTIVE ACTIVE ACTIVE
RACサービス数=マルチデータソース数
マルチデータソースに含まれるデータソースの数=RACインスタンス数
RACインスタンスの数だけ、データソースを設定しておく。(インスタンス「RAC3」はFINサービスが構成されていないため、データソースは無効化状態)
Oracle RAC
![Page 48: 76 WebLogic Server勉強会@大阪 #13 - Oracle...る。HttpServletRequestオブジェクトgetPartやgetPartsメソッドでMIMEアタッ チメントを取り出す。これによりファイルアップロードを行うサーブレットが容易](https://reader030.fdocuments.us/reader030/viewer/2022041022/5ed28e6903aa710aa86097f3/html5/thumbnails/48.jpg)
Copyright© 2012, Oracle. All rights reserved.
GridLinkデータソース
RACサービス毎にGridLinkデータソースを構成させます。
アプリケーションはRACサービスに対応したGridLinkデータソースを指定して接続します。
接続要求はRACサービス設定基づき分散されます。
RACのXAトランザクション制限に対応するため、XA Affinity機能を利用します。
Oracle Notification Service(ONS)により、RACの死活情報の通知を受け、接続プール中のコネクションで、ダウンしているRACノードへのコネクションだけをクリアできます。(Fast Connection Failover)
さらにRACの負荷情報を通知し、アプリが接続要求時、負荷の軽いノードへの接続を使用させることも可能です。(Runtime Connection Load Balancing )
GridLinkデータソースA
WebLogic Server 11g(10.3.4~) アプリケーション
(サービスA用) GridLinkデータソースB (サービスB用)
サービスA サービスB
ONS
ONS FAN
ONSにより、RACからインスタンスやノードの死活情報の通知を受け、該当するインスタンス、ノードに接続している接続プール中
のコネクションをクリア。
また、RACの負荷情報を通知し、アプリに負荷の軽いノードへ論理接続させることも可能。
WebLogic Server 11g (10.3.4)より
Oracle RAC
48
![Page 49: 76 WebLogic Server勉強会@大阪 #13 - Oracle...る。HttpServletRequestオブジェクトgetPartやgetPartsメソッドでMIMEアタッ チメントを取り出す。これによりファイルアップロードを行うサーブレットが容易](https://reader030.fdocuments.us/reader030/viewer/2022041022/5ed28e6903aa710aa86097f3/html5/thumbnails/49.jpg)
Copyright© 2012, Oracle. All rights reserved.
• 同一XAトランザクションからの接続要求に対しは同一RACインスタンスから確保した接続を返す(初回の接続はRCLBにより選択)
• コストの高いキャッシュ・フュージョンの発生を抑制(キャッシュヒット率向上)
• 2フェーズコミットにかかるオーバヘッドを軽減
WebLogic Server
Active GridLinkのトランザクション制御 XAアフィニティ
49
XA Affinity
RAC Database
Instance1
Instance2
Instance3
EJB1 Data Source
WebLogic Server
EJB
EJB3 Data
Source
EJB2 Data Source
EJB4 Data
Source Transaction
![Page 50: 76 WebLogic Server勉強会@大阪 #13 - Oracle...る。HttpServletRequestオブジェクトgetPartやgetPartsメソッドでMIMEアタッ チメントを取り出す。これによりファイルアップロードを行うサーブレットが容易](https://reader030.fdocuments.us/reader030/viewer/2022041022/5ed28e6903aa710aa86097f3/html5/thumbnails/50.jpg)
Copyright© 2012, Oracle. All rights reserved.
Active GridLinkのWebセッション制御 Web セッション・アフィニティ(WLS12.1.1~)
• 同一HttpSessionからの接続要求に対しは、できるだけ同一RACインスタンスから確保した接続を返す(初回の接続はRCLBにより選択)
• コストの高いキャッシュ・フュージョンの発生を抑制(キャッシュヒット率向上)
RAC Database
Instance1
Instance2
Instance3
50
WebLogic Server
Servlet Data Source
JSP
Servlet Data Source
JSP
JSP
HttpSession
Web Session Affinity
![Page 51: 76 WebLogic Server勉強会@大阪 #13 - Oracle...る。HttpServletRequestオブジェクトgetPartやgetPartsメソッドでMIMEアタッ チメントを取り出す。これによりファイルアップロードを行うサーブレットが容易](https://reader030.fdocuments.us/reader030/viewer/2022041022/5ed28e6903aa710aa86097f3/html5/thumbnails/51.jpg)
Copyright© 2012, Oracle. All rights reserved.
XA、Webセッション・アフィニティの設定
1. RAC側の設定(RCLBの有効化)
• CLBの目標を”SHORT”に、RCLBの目標を”THROUGHPUT”または”SERVICE_TIME”に設定したサービスを新規作成し、起動
2. WebLogic側の設定
• GridLinkデータソースを作成
• 手順1で作成したサービス名を宛先に設定
• FANを有効化し、ONSの接続先を設定
3. アプリケーション
• アプリケーションコードの変更は不要
• GridLinkデータソースから接続を取得するだけでよい
51
srvctl add service -d orcl -s demosvc -g srvpool1 -j SHORT -B THROUGHPUT
srvctl start service -s demosvc -d orcl
Affinity
![Page 52: 76 WebLogic Server勉強会@大阪 #13 - Oracle...る。HttpServletRequestオブジェクトgetPartやgetPartsメソッドでMIMEアタッ チメントを取り出す。これによりファイルアップロードを行うサーブレットが容易](https://reader030.fdocuments.us/reader030/viewer/2022041022/5ed28e6903aa710aa86097f3/html5/thumbnails/52.jpg)
Copyright© 2012, Oracle. All rights reserved.
機能 GridLinkデータソース マルチデータソース
データソースの構成 RAC側のサービスごとにGridLink
データソースを1つ設定
RAC側のサービス数×ノード数
ぶんの設定が必要
RAC構成変更時の
データソース設定変更
設定変更は不要 設定変更が必要
フェールオーバー RAC側からの通知による高速接続フェールオーバー(FCF)
WLS側からの定期的なポーリン
グによる障害検知のため遅延が発生しやすい
ロードバランシング DB側の負荷を考慮した実行時接続ロードバランシング(RCLB)
DB側の負荷を考慮しない静的ラウンドロビン
接続アフィニティ 複数GridLinkデータソースに跨るXAアフィニティ、Webセッションアフィニティ
同一マルチデータソース内でのXAアフィニティのみ
Data Guardサポート プライマリ側、スタンバイ側に同等構成のRACを配置できる
プライマリ側のRACは1インスタンスしか利用できない
52
GridLinkデータソース vs マルチデータソース
![Page 53: 76 WebLogic Server勉強会@大阪 #13 - Oracle...る。HttpServletRequestオブジェクトgetPartやgetPartsメソッドでMIMEアタッ チメントを取り出す。これによりファイルアップロードを行うサーブレットが容易](https://reader030.fdocuments.us/reader030/viewer/2022041022/5ed28e6903aa710aa86097f3/html5/thumbnails/53.jpg)
Copyright© 2012, Oracle. All rights reserved.
<Insert Picture Here>
53
WebLogic Server 12c 新機能:JDBC TLOG
![Page 54: 76 WebLogic Server勉強会@大阪 #13 - Oracle...る。HttpServletRequestオブジェクトgetPartやgetPartsメソッドでMIMEアタッ チメントを取り出す。これによりファイルアップロードを行うサーブレットが容易](https://reader030.fdocuments.us/reader030/viewer/2022041022/5ed28e6903aa710aa86097f3/html5/thumbnails/54.jpg)
Copyright© 2012, Oracle. All rights reserved. 54
トランザクション・ログ(TLOG)の重要性
• 2フェーズコミットにおいては、トランザクション・マネージャ(TM)は、現在のトランザクションの状態を安定したストレージ上のTLOGに保存しなければならない
• TM障害からの回復時に、TMはTLOGを利用してインダウト(後述)
なトランザクションを解決する
1. prepare
6.成功
2.OK
3. prepare
4.OK
5.commit
8.commit 9.成功
7.OK
10.OK
TM RM 1 RM 2
TLOG
REDOログ
REDOログ
JDBC TLOG
TLOGは障害からのトランザクションの回復のための重要なログ
![Page 55: 76 WebLogic Server勉強会@大阪 #13 - Oracle...る。HttpServletRequestオブジェクトgetPartやgetPartsメソッドでMIMEアタッ チメントを取り出す。これによりファイルアップロードを行うサーブレットが容易](https://reader030.fdocuments.us/reader030/viewer/2022041022/5ed28e6903aa710aa86097f3/html5/thumbnails/55.jpg)
Copyright© 2012, Oracle. All rights reserved. 55
インダウト(不明区間)とは
• RMがprepareに対するOKを送ってから、TMからのcommitメッセージが届くまでの区間
• この区間は、RMはTMからの確定要求が来るまでトランザクションを保持し続ける。つまり確定要求が来ない限り、自分からは何もしない。
• この区間でTM障害が発生すると・・・、データベースのリソースはブロックされ続けてしまう。TMが長時間回復せず、各リソースマネージャが独断でヒューリスティックな決定(推定によるコミットorアボート)を行えば、データの不整合が発生しうる。
1. prepare
TM RM 1 RM 2
4.成功
2.OK
1. prepare
2.OK
3.commit
3.commit 4.成功
5.OK
5.OK
インダウト
(不明区間)
インダウト
(不明区間)
各RMはTMからの確定要求が来るまで、リソースのロックを保持し続ける
JDBC TLOG
![Page 56: 76 WebLogic Server勉強会@大阪 #13 - Oracle...る。HttpServletRequestオブジェクトgetPartやgetPartsメソッドでMIMEアタッ チメントを取り出す。これによりファイルアップロードを行うサーブレットが容易](https://reader030.fdocuments.us/reader030/viewer/2022041022/5ed28e6903aa710aa86097f3/html5/thumbnails/56.jpg)
Copyright© 2012, Oracle. All rights reserved.
JDBC TLOG ストア
• 機能
• 従来ファイルストア(デフォルト・ストア)のみに格納していたトランザクション・ログ(TLOG)を、より信頼性かつ利便性の高いデータベースへ格納できるようにした機能
• メリット
• 整合性: 全てのステートデータ(アプリケーション・データ、JMSメッセージ、TLOG)を整合性を保った状態でデータベースへ格納
• 障害対策: TM障害時も別の正常なマシンでTMを再起動し、データベース上のTLOGへアクセスすることにより、インダウトなトランザクションを迅速に解決し、業務を継続(TLOGのコピーは不要)
• 災害対策: Data Guardの利用により、災害発生時にもスタンバイサイトで、インダウトなトランザクションを解決し、業務を継続
• 運用性: データベースのほうが共有ファイルシステムやレプリケーションソフトよりも管理が容易
56
JDBC TLOG
![Page 57: 76 WebLogic Server勉強会@大阪 #13 - Oracle...る。HttpServletRequestオブジェクトgetPartやgetPartsメソッドでMIMEアタッ チメントを取り出す。これによりファイルアップロードを行うサーブレットが容易](https://reader030.fdocuments.us/reader030/viewer/2022041022/5ed28e6903aa710aa86097f3/html5/thumbnails/57.jpg)
Copyright© 2012, Oracle. All rights reserved.
Machine B
JDBC TLOGストアが有効なシナリオ
• サーバ自動移行(WLSクラスタの機能)の簡素化
• 災害対策の簡素化(Data Guardとも連携して)
57
JDBC TLOG
Machine A
WLS
TLOG
Machine B
WLS
Machine A
WLS
-A
TLOG
WLS
-B
Machine B Machine A
WLS
-A
TLOG
WLS
-B
Data Guard
Server Migration
Fail Over スタンバイサイト プライマリサイト
![Page 58: 76 WebLogic Server勉強会@大阪 #13 - Oracle...る。HttpServletRequestオブジェクトgetPartやgetPartsメソッドでMIMEアタッ チメントを取り出す。これによりファイルアップロードを行うサーブレットが容易](https://reader030.fdocuments.us/reader030/viewer/2022041022/5ed28e6903aa710aa86097f3/html5/thumbnails/58.jpg)
Copyright© 2012, Oracle. All rights reserved.
Oracle RAC
Web Tier
従来の災害対策アーキテクチャ ステートの転送に複数の技術を利用するため同期が困難
Active Site Standby Site
Application Data
Local LB
Web Tier Local LB
Web Tier Local LB
Web Tier
Binaries
Configuration
Middleware Tier
WebLogic WebLogic
WebLogic
Binaries
Configuration
Oracle RAC
Web Tier
Application Data
Local LB
Web Tier Local LB
Web Tier Local LB
Web Tier
Binaries
Configuration
Middleware Tier
WebLogic WebLogic
WebLogic
Binaries
Configuration
Global Load Balancer
Transaction Logs
JMS Messages
Transaction Logs
JMS Messages
File Replication
Datagard or
GoldenGate
File Replication
Instance Instance
Instance
Instance Instance
Instance
58
JDBC TLOG
![Page 59: 76 WebLogic Server勉強会@大阪 #13 - Oracle...る。HttpServletRequestオブジェクトgetPartやgetPartsメソッドでMIMEアタッ チメントを取り出す。これによりファイルアップロードを行うサーブレットが容易](https://reader030.fdocuments.us/reader030/viewer/2022041022/5ed28e6903aa710aa86097f3/html5/thumbnails/59.jpg)
Copyright© 2012, Oracle. All rights reserved.
Oracle RAC
Web Tier
新しい災害対策アーキテクチャ 全てのステートをDBに格納するため、復旧がシンプル
Active Site Standby Site
Application Data
Local LB
Web Tier Local LB
Web Tier Local LB
Web Tier
Binaries
Configuration
Middleware Tier
WebLogic WebLogic
WebLogic
Binaries
Configuration
Oracle RAC
Web Tier
Application Data
Local LB
Web Tier Local LB
Web Tier Local LB
Web Tier
Binaries
Configuration
Middleware Tier
WebLogic WebLogic
WebLogic
Binaries
Configuration
Global Load Balancer
File Replication
Datagard or
GoldenGate
File Replication
Instance Instance
Instance
Instance Instance
Instance
Transaction Logs
JMS Messages
Transaction Logs
JMS Messages
59
JDBC TLOG
![Page 60: 76 WebLogic Server勉強会@大阪 #13 - Oracle...る。HttpServletRequestオブジェクトgetPartやgetPartsメソッドでMIMEアタッ チメントを取り出す。これによりファイルアップロードを行うサーブレットが容易](https://reader030.fdocuments.us/reader030/viewer/2022041022/5ed28e6903aa710aa86097f3/html5/thumbnails/60.jpg)
Copyright© 2012, Oracle. All rights reserved.
JDBC TLOGストア設定方法
1. TLOG用JDBCデータソースの作成
• non XAドライバを利用し、かつ、「グローバル・ トランザクションのサポート」を非選択に
(TLOG用データソース自身をtransaction-
awareにしてしまうと、トランザクション・アボート時
にTLOGに書かれず、TLOGの役割を果たせない)
2. トランザクション・ログ・ストア
• ドメイン → サーバ
→ 構成 → サービス
→ トランザクション・ログ・ストア
• タイプ「JDBC」を選択
• 手順1で作成したデータソースを選択
3. 再起動後に自動的にTLOG
格納用のテーブルが作成される
60
JDBC TLOG
![Page 61: 76 WebLogic Server勉強会@大阪 #13 - Oracle...る。HttpServletRequestオブジェクトgetPartやgetPartsメソッドでMIMEアタッ チメントを取り出す。これによりファイルアップロードを行うサーブレットが容易](https://reader030.fdocuments.us/reader030/viewer/2022041022/5ed28e6903aa710aa86097f3/html5/thumbnails/61.jpg)
Copyright© 2012, Oracle. All rights reserved.
JDBC TLOGストア構成上の注意点
• WebLogicよりも前にTLOG格納先のDBを起動すること
• TLOG用DBが起動していないと、WebLogicの起動に失敗する
• TLOG用のDBは冗長化(RACなど)を推奨
• TLOG用DBが停止すると、WebLogicはTM機能を提供できなくなるので、すべてのグローバルトランザクションは失敗する
61
JDBC TLOG
![Page 62: 76 WebLogic Server勉強会@大阪 #13 - Oracle...る。HttpServletRequestオブジェクトgetPartやgetPartsメソッドでMIMEアタッ チメントを取り出す。これによりファイルアップロードを行うサーブレットが容易](https://reader030.fdocuments.us/reader030/viewer/2022041022/5ed28e6903aa710aa86097f3/html5/thumbnails/62.jpg)
Copyright© 2012, Oracle. All rights reserved. 62