[WLS, FMW] Announcing Oracle WebLogic Server 12.2.1

原文はこちら。
https://blogs.oracle.com/WebLogicServer/entry/announcing_oracle_weblogic_server_12

Oracle WebLogic Server 12.2.1 (12cR2) が一般提供(General Availability)されました。このリリースは日曜夕方のLarry EllisonのOracle OpenWorld 基調講演でも取り上げられ、本日の Inderjeet SinghのGeneral Sessionおよびプレスリリースで正式に発表されました。
Oracle Fusion Middleware Enhancements Enable Organizations to Innovate and Consolidate On-Premises and in the Cloud
https://www.oracle.com/corporate/pressrelease/fusion-middleware-102615.html
Oracle WebLogic Server 12.2.1はOracle Technology Network (OTN) のOracle Fusion Middlewareダウンロードページ、Oracle WebLogic Serverダウンロードページからダウンロードできます。
Oracle Fusion Middleware Software Downloads
http://www.oracle.com/technetwork/middleware/fusion-middleware/downloads/index.html
Free Oracle WebLogic Server 12.2.1 Installers for Development
http://www.oracle.com/technetwork/middleware/weblogic/downloads/wls-for-dev-1703574.html
製品ドキュメントはOracle Fusion Middleware 12.2.1のすべてのドキュメントとともにUpされており、アクセスできるようになっています。
Weblogic Serverのドキュメント(英語)
http://docs.oracle.com/middleware/1221/wls/index.html
Fusion Middleware 12.2.1のドキュメント(英語)
http://docs.oracle.com/en/middleware/middleware.html
Oracle WebLogic Server 12.2.1は過去最大のWebLogic Server製品のリリースです。今後数週間かけて、動画やブログで新機能を詳細にご紹介する予定です。このエントリが主要な新機能のサマリとお考えください。
  • Multitenancy
  • Continuous Availability
  • Developer Productivity and Portability to the Cloud

Multitenancy

WebLogic Server multitenancyは、アプリケーションのメンテナンスは分離し、フレキシビリティやアジリティは維持しつつ、アプリケーションを統合し、所有コストを削減することができるテクノロジーです。multitenancyを使うと、分離されたドメインパーティション内で実行することで、お互いからは分離している状態を維持しつつも、異なるアプリケーション(やテナント)が同一サーバーJVM(やクラスタ)、WebLogicドメインを共有できます。
ドメインパーティションはWebLogic Serverドメインやサーバーを隔てるサブセットです。ドメインパーティションは、アプリケーションや依存するリソース(データソース、JMSサーバなど)をカプセル化するマイクロコンテナのように振る舞います。パーティションはお互い分離しているので、一方のパーティションに存在するアプリケーションは、同一サーバーや同一ドメインの別のパーティション内で実行するアプリケーションを中断することはありません。素晴らしい機能セットで、こうした分離レベルを提供します。今後詳細をご紹介する予定です。
パーティションは分離してはいますが、多くのリソースを共有しています。実行している物理システムや仮想マシン(VM)、OS、JVM、WebLogic Serverライブラリなどです。彼らは、リソースを共有しているため、彼らはより少ないリソースを使用しています。リソースを共有しているので、より少ないリソースを使います。お客様は、個別のドメインにあるアプリケーションを統合し、より少ないドメインで、より少ない物理システムのより少ないJVMで実行することができます。統合はつまり管理対象のエンティティが減ることで、リソース使用量と所有コストの削減を意味します。
パーティションの利用は簡単です。アプリケーションを変更せずにパーティションにデプロイすることができます。既存のアプリケーションをパーティションに移行するためのツールを提供する予定です。パーティションをあるドメインからエクスポートし、別のドメインにインポートすることができるので、開発環境、、テスト環境、本番環境間やプライベートクラウドとパブリッククラウド間でのアプリケーションの移行が簡単です。パーティションによりアプリケーションの可搬性とアジリティが増すため、開発チーム、DevOpsチーム、テストチーム、本番環境チームに対しより柔軟性と開発やリリース、本番環境のアプリケーションを管理する上でより柔軟性を提供します。
WebLogic Serverの新しいMultitenancy機能はOracle JDK、Oracle Coherence、Oracle Traffic Director、Oracle Fusion Middlewareと統合されており、Oracle DatabaseのPluggable Databaseと緊密に協調するものです。
時間の経過とともにMultitenancyがOracle CloudやOracle Fusion Middlewareでより幅広く利用されていくことを目の当たりにされることでしょう。MultitenancyはWebLogic ServerおよびOracleのための重要な新しい技術革新なのです。

Continuous Availability

Oracle WebLogic Server 12.2.1には、マルチデータセンター構成で計画的・計画外のダウンタイムを最小限に抑えるための新機能が導入されています。WebLogic Serverをご利用のお客様の多くは、ディザスタリカバリアーキテクチャを実装して、アプリケーションの可用性とビジネスの継続性を提供しようとしてきました。WebLogic Serverの新しい連続可用性(continuous availability)機能を使うと、アプリケーションの可用性を向上させながら、そうした構成を簡単に作成、最適化、管理することができます。
  • Zero-downtime patching:パッチ適用時のアプリケーションの可用性を維持するために、クラスタ間でのパッチの適用を制御するオーケストレーションフレームワークを提供します。
  • Live partition migration:同一ドメイン内のクラスタ間のパーティションの移行を可能にします。やはり移行中はアプリケーションの可用性を維持しつつ、効率的にアプリケーションをクラスタ間で移動します。
  • Oracle Traffic Director:高性能、高い可用性を誇るロード・バランシング機能を提供し、パッチ適用時やパーティション移行時に最適化されたトラフィックルーティングとロードバランシングを実現します。
  • Cross-site transaction recovery:サイトに障害が発生したときにアクティブ - アクティブ構成でのトランザクション・リカバリの自動化を可能にします。
  • Oracle Coherence 12.2.1 federated caching:マルチデータセンター構成でデータグリッドの整合性と可用性を維持するため、クラスタやサイト間でデータグリッドのアップデートを複製することができます。
  • Oracle Site Guard:サイト障害とサイトの切り替えに関連したフェイルオーバーおよびフェイルバック操作の自動化ならびに信頼性のあるオーケストレーションを実現します。
これらの機能は、WebLogic ServerとCoherenceの既存の可用性機能と組み合わせ、ビジネスの継続に対する要件を満たすための強力な機能を提供します。これにより、WebLogic ServerとCoherenceが可用性の高いエンタープライズ環境のための最適なアプリケーション・インフラストラクチャになるのです。今後これらの機能を強化し、Oracle CloudとOracle Fusion Middlewareで利用できるようにしていきます。

Developer Productivity and Portability to the Cloud

Oracle WebLogic Server 12.2.1は、開発者の生産性をより向上させ、アプリケーションのクラウドへの移植を可能にします。個々の開発者をアシストするため、Oracle WebLogic Server 12.2.1は、開発者の技術革新のための新しいAPIを含む、Java SE 8およびJava Enterprise Edition (EE) 7 Platformを完全にサポートしています。新しい軽量なQuick Installerを開発者向けに提供しており、これは、テスト環境と本番環境の整合性を保つために簡単にパッチを適用します。デプロイのパフォーマンスを改善し、Oracle Enterprise Pack for Eclipse、Oracle JDeveloperとOracle NetBeansで提供しているIDEのサポートをアップデートしました。WebLogic Serverの開発者のための改善は、標準のJava SE 8のLambdaやStreamを使ってOracle Coherenceのアプリケーションを開発するための劇的な新しい技術革新との両輪をなしています。
チーム開発およびDevOpsツールは、上記の機能を補完し、オンプレミス環境とOracle Cloud間の移植性を提供します。例えば、EclipseベースやMavenベースの開発環境やビルド環境を簡単にOracle Cloudで提供しているDeveloper Cloud Serviceに切り出すことができるので、共有の継続的インテグレーション環境でチームでのアプリケーション開発ができます。このような形で開発されたアプリケーションを、伝統的なWebLogic Serverドメイン、またはWebLogic Serverパーティションにデプロイできますし、Java Cloud Serviceで実行中のOracle WebLogic Server 12.2.1にまもなくデプロイできるようになります。総合的なREST管理APIや自動化されたダイナミック・クラスタの弾力性、パーティション管理、引き続きDockerでの動作保証といった、新しいクラウド管理や移植のための機能を基にして、オンプレミスならびにOracle Cloudの両方で運用するアプリケーションを柔軟にデプロイ、管理、制御するための新しいツール提供されます。を前提にし、Oracleクラウドの両方の生産にアプリケーションの柔軟な導入と管理制御のための新しいツールを提供しています。
これらのすべての機能およびその他の多くの機能によって、Oracle WebLogic Server 12.2.1が技術革新とJavaアプリケーションを構築するお客様にとってのビジネス価値を伴う魅力的なリリースになっています。是非製品をダウンロードし、ドキュメントを確認いただいて、ご自身で評価してください。より詳細の情報をこのブログで発信していきます。

[Database] Apex 5.0.2 was released

原文はこちら。
https://blogs.oracle.com/proactivesupportDevTools/entry/new_apex_version_released_5

APEX (Oracle Application Express) の新バージョン、5.0.2が2015年10月20日にリリースされました。
これはApplication Express 5.0.0、Application Express 5.0.1の累積パッチセットです。
ダウンロード、リリースノート、インストールガイドは以下のリンクからどうぞ。
Oracle Application Express Downloads
http://www.oracle.com/technetwork/developer-tools/apex/downloads/index.html
このバージョンで登場した新機能の詳細は、以下のリンクからどうぞ。
Oracle® Application Express
Release Notes - Release 5.0
New Features
https://docs.oracle.com/cd/E59726_01/doc.50/e39143/toc.htm#HTMRN161

[Java] Java SE 8u65とJava SE 8u66の違い

すでにTweetでもお知らせしましたが、アメリカ太平洋時間2015年10月20日(日本時間10月21日)に公開されたCritical Patch Updateの一環で、Java SE 8 Update 65とUpdate 66がリリースされています。
JRE(Java Runtime Environment)のセキュリティベースラインが1.8.0_65にあがっていますので、Java SE 8をお使いの方はアップデートされることを強く推奨します。
Oracle Critical Patch Update Advisory - October 2015
http://www.oracle.com/technetwork/topics/security/cpuoct2015-2367953.html
8u65 Update Release Notes
http://www.oracle.com/technetwork/java/javase/8u65-relnotes-2687063.html
JPCERT/CCからも情報が提供されています。
2015年10月 Oracle Java SE のクリティカルパッチアップデートに関する注意喚起
JPCERT-AT-2015-0038 (JPCERT/CC)
https://www.jpcert.or.jp/at/2015/at150038.html
8u65では、以下のリンクにある通り、25件のセキュリティ脆弱性に対する修正が加えられています。このうち24件は認証なしでリモートから任意のコードを実行することができる恐れのある脆弱性です。
Oracle Java SE Risk Matrix
http://www.oracle.com/technetwork/topics/security/cpuoct2015-2367953.html#AppendixJAVA
その他の修正は以下のリンクにある通りです。
Bug Fixes (8u65)
http://www.oracle.com/technetwork/java/javase/2col/8u65-bugfixes-2686589.html
Java SE 6およびJava SE 7も同様にセキュリティベースラインがそれぞれ1.7.0_91と1.6.0_105に上がっていますが、Oracle JDKのJava SE 6、Java SE 7のアップデート無償提供はすでに終了しており、現在はサポート契約を締結されているお客様に対してのみ提供しています。

さて、8u65と8u66がリリースされたわけですが、それぞれの相違点は、種々のメディアからすでに情報が出ている通り、CPUとPSUの違いです。端的に言うと、以下のような感じです。
  • 8u65:4半期毎のCritical Patch Update(CPU)
  • 8u66:CPUに加え、複数の不具合を修正する累積パッチを含むPatch Set Update(PSU)
具体的には、以下のリンクをどうぞ。
Java CPU and PSU Releases Explained
http://www.oracle.com/technetwork/java/javase/downloads/cpu-psu-explained-2331472.html
Java SE Critical Patch Updates (CPU) contain fixes to security vulnerabilities and critical bug fixes. Oracle strongly recommends that all Java SE users upgrade to the latest CPU releases as they are made available. Java SE CPU releases are odd numbered versions (i.e. 7u71, 7u65 – see more on Java SE version numbering schemes here).
Java SE Patch Set Updates (PSU) contain all of fixes in the corresponding CPU, as well as additional non-critical fixes. Java PSU releases should only be used if you are being impacted by one of the additional bugs fixed in that version. The release notes call out the additional fixes available in Java SE PSU releases.
そんなわけで、8u66には8u65のセキュリティ脆弱性に対する修正に加え、以下の修正が入っています。
Bug Fixes (8u66)
http://www.oracle.com/technetwork/java/javase/2col/8u66-bugfixes-2692105.html
8u66で修正された箇所が開発中、もしくはご利用中のアプリケーションに影響するのであれば、ひとまず8u65のインストールを検討してください。それとは逆に、8u66の修正によって開発中もしくはご利用中のアプリケーションの不具合が解決する、すなわち所望の動作をするのであれば、有無を言わずに8u66をインストールするしかないでしょう。「あまりそういう切り分けをしたくない」ということでしたら、8u66をインストールされることをおすすめします。

[Cloud] ANNOUNCING: Oracle OpenStack for Oracle Linux Release 2

原文はこちら。
https://blogs.oracle.com/linux/entry/announcing_oracle_openstack_for_oracle

本日、Oracle OpenStack for Oracle Linux Release 2を発表します。最初の商用利用可能なDockerコンテナをベースとしたOpenStackデプロイメントで、個別にRPMを使ってコンポーネントのインストールをする必要はありません。
New Oracle OpenStack for Oracle Linux Now Available
https://www.oracle.com/corporate/pressrelease/oracle-openstack-4-oracle-linux-101915.html

基になったKiloリリースをベースとして、Oracle OpenStack for Oracle Linux R2にはHeatやMuranoといった新しいモジュールのサポートも含まれています。また、このリリースではMySQL Clusterを使い、ミッションクリティカルなActive-Activeの高可用性、高パフォーマンス、スケーラビリティをすべてのOpenStackサービスに提供します。

Highlights of Oracle OpenStack for Oracle Linux Release 2:

  • Docker ベースのコンテナを展開およびアップグレードに活用することで、他ベンダーのリリースに比べて、開発と運用がシンプルになりました。
  • Kiloをベースにしています。
  • 統合された高可用性機能を使うと、お客様はMySQLをActive/Active構成で展開することが可能です。これにより、エンタープライズデータベース機能をOpenStackクラウドデプロイメントで利用できるようになります。
    MySQL
    https://www.mysql.com/
  • Oracle All Flash FS Storage Systemおよび Oracle ZFS Storage Appliance 用のCinderドライバをサポートしています。
    Oracle All Flash FS Storage System
    https://www.oracle.com/storage/flash/fs1/index.html
    Oracle ZFS Storage Appliance
    https://www.oracle.com/storage/nas/index.html
    Ceph Object Gatewayを利用するためのテクノロジープレビューとして、Oracle LinuxでCeph Storageソリューションを提供します。
  • エンタープライズOpenStackクラウドソリューションが単一のサポートラインに統合されました
  • Oracle OpenStack for Oracle Linuxはご利用、ダウンロードとも無料です。

Read more


もしOpenWorld 2015に参加されるのであれば、以下のセッションやデモにお立ち寄りください。
  • [デモ]
    Oracle OpenStack for Oracle Linux Demopod
    Kiosk: SLX-010
    プロダクトマネージャやエンジニアと会話することができます。
    詳しくは以下のエントリをご覧ください。
    Oracle Linux, Oracle VM and OpenStack Showcase, Moscone South, Booth #121
    https://blogs.oracle.com/linux/entry/friday_spotlight_visit_our_oracle
  • [セッション]
    • General Session: Oracle Linux-the State of the Penguin [GEN9479]
      Tuesday, Oct 27, 11:00 a.m. | Park Central-Metropolitan II
    • Maximize Your Private Cloud Investment with Oracle OpenStack for Oracle Linux [CON9574]
      Wednesday, Oct 28, 4:15 p.m. | Park Central-Metropolitan II
    • Rapid Private Cloud with Oracle VM and Oracle OpenStack for Oracle Linux [CON9576]
      Wednesday, Oct 28, 1:45 p.m. | Park Central-Metropolitan II
    • HOL: Getting Started with Oracle OpenStack for Oracle Linux [HOL10473]
      Monday, Oct 26, 12:30 p.m. | Hotel Nikko—Nikko Ballroom II (3rd Floor)
Facebook、Blog、YouTube、SlideShareなどを通じてOracle OpenStack for Oracle Linuxと繋がってください。
Facebook
https://www.facebook.com/pages/Oracle-OpenStack/796023413845212?fref=ts
Blog
https://blogs.oracle.com/openstack/
YouTube
https://www.youtube.com/channel/UCH2IyEvbZQuxRu1pRUL2I-A/feed
SlideShare
http://www.slideshare.net/OracleOpenstack

[Java] A Great Example of the Power of Flight Recorder

原文はこちら。
https://blogs.oracle.com/buck/entry/a_great_example_of_the

以下はOracle  JVM Sustaining EngineeringチームのマネージャであるMattis Castegrenの寄稿です。

先頃JFR (Java Flight Recorder) のレコーディング機能を使いバグを解決した格好の例がありましたのでご紹介します。

The Problem

この問題は別のチームからもたらされたもので、彼らのアプリケーションが完全に5~6秒ほど、およそ5分おきに完全に固まってしまう、という現象でした。

GC?

アプリケーションを実行してJFRでレコーディングしました。そう、まず最初にチェックするのはGCです。

Parallel GCを使っており、30分のレコーディングで2回、4秒間のstop-the-worldが発生していました。しかし、このアプリケーションはその回数以上に固まっていました。この問題はGCによる停止が見られるクラスタの別のマシンなのか、このマシンが別のマシンを待っているのか、と考えましたが、G1GCですべてのマシンを実行した後、GCによる停止は減ったものの、まだ長時間の停止が見られました。

WLS Events

で、ほかに何を言うことができるでしょうか。このチームはWLDF(WebLogic診断フレームワーク / WebLogic Diagnostic Framework)を使っていました。このフレームワークはサーブレットのリクエストやデータベースのクエリのようなWLSアクションのイベントを生成し、非常に強力です。イベントグラフを見ると、サーブレット・リクエストのみを有効にし、ちょっと目を細めてみましょう。長いリクエストのバンドのような休止を確認することができます。



より明確にするため、[ログ]タブに移動し、サーブレット呼び出しイベントを時間で並べ替え、4秒を上回るものを選択し、右クリックしてドロップダウン・メニューから[操作セット]>[選択項目の設定]を選択しました。[グラフ]タブに戻り、[操作セットのみを表示]を選択すると、かなり明確なイメージが得られます。



どうも定期的に固まってしまうようで、しかもこれはGCが原因ではないように見えます(少なくともすべての一時停止がGCによって引き起こされたものではない)。

Is the JVM frozen?

次の疑問は、JVM全体が固まってしまうのか、それともワーカースレッドだけが固まるのでしょうか。ロックの問題か何かでしょうか。この疑問を解くため、すべてのイベントを有効にして「操作セットのみを表示」のチェックを外し、休止の一つにズームインしました。グラフビューに慣れていない場合、いささか雑然としているように見えるかもしれません(注意:上のタイムスライダーにズームインします)


基本的に、各スレッドには異なるイベントプロデューサを表す複数の線があります。スレッドの一つにズームインします。



上部の黄褐色のイベントは、長時間のサーブレット呼び出しです。その下の赤いイベントは長時間のデータベースへのリクエスト、長時間の青のイベントはI/Oイベントです。マウスカーソルをそれらの上におくと、各イベントの情報を得ることができます。
ここでは、このスレッドが長時間のデータベースリクエストによって発生している長いI/Oを待っているように見えますが、その他のスレッドのほとんどはこのパターンには合致しませんでした。長時間のI/Oが一つのスレッドを一時停止させ、そのスレッドがあるリソースを保持していたことが問題だったのでしょうか。同期イベントを発見しなかったのですが、もしかするとその他の何かがあったのでしょうか。もしそうだとすれば、この時間範囲内で、そのリソースが必要なくなったスレッドから別のイベントが発見できたはずです。さらにスクロールダウンしてみたところ、あるスレッドから答えを見つけました。
ちょっとズームインしてみましょう。以下のように見えるいくつかのスレッドが確認できました。



黄色のイベントは待機イベントです。これらにはすべて1秒のタイムアウトがありますが、6秒間の待機イベントが2個突然現れました。タイムアウトは変更なく1秒であったにもかかわらず、です。これはJVM全体が固まっていることを強く示すものです。

Why is it frozen?

では、なぜJVMが固まったのでしょう。ここで、再度一時停止したスレッドにズームインし、[ログ]タブに移動しました。一時停止する直前に生成されたイベントを知りたかったので、開始時刻ですべてのイベントを並べ替え、すべてのイベントのリストをスクロールし、一時停止直前のイベントを見てみました。


8時46分08秒に、4.8秒要した「VM Operation」イベントがあります。その後、8時46分13秒(約4.8秒後)まで他のイベントは作成されません。イベントを見ると、「oracle.webcenter.DefaultTimer」スレッドから呼び出されたThreadDumpイベント、であることがわかります。スレッドダンプは”stop the world”を引き起こすので、これは理にかなっています。

Putting the pieces together

操作セットをよい感じにしてみましょう。ズームアウトし、スレッドダンプが発生した4秒間のすべてのVMの操作イベントを選択しました(2回のGCに起因するParallelGCFailedAllocation操作に伴う2個のイベントもありました)。私は操作セットにこれらのイベントを追加しました。
また、[イベント]タブに移動してoracle.webcenter.DefaultTimerスレッドを選択し、そのスレッドでのすべてのイベントを操作セットに追加しました。



[グラフ]タブに戻り、すべてのイベントタイプを有効化し、[操作セットのみを表示]を選択すると、以下のいい感じのイメージができあがりました。



DefaultTimerスレッドは定期的に4分45秒待機します。待機を終了すると、VMThreadのスレッドダンプを収集する2個のVMOperationを呼び出します。これらのオペレーションはこのアプリケーションで見られた休止タイミングと完全に相互に関連があります(GCによって発生したVMOperationsを除きます)。

The problem?

それでは、何が問題だったのでしょうか。スレッドダンプを引き起こしたDefaultTimerスレッドでスタックトレースを発見したアプリケーションチームへ調査を戻したところ、ソースコードは以下のようになっていました。
ThreadInfo[] threadInfos = threadMXBean.getThreadInfo(threadIds, true, true);
このメソッドのJavadocを見ると、以下のような記載がありました。
Interface ThreadMXBean(Java SE 7)
http://docs.oracle.com/javase/7/docs/api/java/lang/management/ThreadMXBean.html#getThreadInfo%28long[],%20boolean,%20boolean%29
"This method obtains a snapshot of the thread information for each thread including:
  • the entire stack trace,
  • the object monitors currently locked by the thread if lockedMonitors is true, and
  • the ownable synchronizers currently locked by the thread if lockedSynchronizers is true.

This method is designed for troubleshooting use, but not for synchronisation control. It might be an expensive operation."
インタフェース ThreadMXBean (Java SE 7)
http://docs.oracle.com/javase/jp/7/api/java/lang/management/ThreadMXBean.html#getThreadInfo%28long[],%20boolean,%20boolean%29
"このメソッドは、スレッドごとにスレッド情報のスナップショットを取得します。たとえば次のとおりです。
  • スタックトレース全体、
  • lockedMonitorstrue の場合はスレッドによって現在ロックされているオブジェクトモニター、および
  • lockedSynchronizerstrue の場合はスレッドによって現在ロックされている所有可能なシンクロナイザ。

このメソッドはトラブルシューティングのために設計されていますが、同期制御のためのものではありません。このメソッドの操作は負荷が大きくなる可能性があります。"
これでわかりました。このメソッドを"true, true" で呼び出すことで、モニターを含めてスレッドダンプが生成され、その結果(Javadocが警告しているように)システムが数秒間固まったのです。監視情報を収集していなければ、この問題はわからなかったでしょう(わずかに長いParallel GCの休止を除けば、うまく動いているように見えたのですから)。

Summary

まとめると、このデバッグはJFRイベントによって可能になったもので、使えなかったとしたら、スレッドダンプによって発生した長時間の停止をとらえたログを見つけ出すまで何度も繰り返し実行しなければならなかったでしょう。そしてどのスレッドがスレッドダンプ生成のトリガーになっているのかを探し出すために、さらに繰り返しの作業が必要になったことでしょう。今や、必要なのは、1回の実行で取得できるデータ、つまり最初に失敗した際に取得したデータだけでよいのです。JFRのパワーを見せつける格好の例です。

[Java] Servlet 4 Early Draft Now Available

原文はこちら。
https://blogs.oracle.com/theaquarium/entry/servlet_4_early_draft_now

Java EE 8に取り込まれる予定の重要なServlet 4仕様の作業が進み、最初の早期ドラフトレビュー(EDR / Early Draft Review)がリリースされました。JCPサイトからダウンロードしてご覧頂けます。
JSR 369: JavaTM Servlet 4.0 Specification
https://www.jcp.org/en/jsr/detail?id=369
サーバーサイドJavaへのHTTP/2のサポートを提供することがServlet 4の主要な目的です。Specification LeadのEd BurnsがHTTP/2とServlet 4を説明したスライドをUpしています(もし埋め込みのスライドがご覧頂けない場合は、こちらをクリックしてください)。
関わったたり、いつものようにフィードバックを送信したり、様々な方法がありますが、今がそのタイミングです。JCPの仕様ページからExpert Groupに参加して頂いても結構ですし、単にServlet 4仕様のユーザーメーリングリストを購読して議論にいつでも参加できます。
Servlet Specification Mailing Lists
https://java.net/projects/servlet-spec/lists
JUGを通じてグループとして参加したいという場合には、Adopt-a-JSRプログラムを通じて簡単に参加できます。
Adopt-a-JSR for Java EE
https://glassfish.java.net/adoptajsr/

[Applications] Oracle E-Business Suite 12.2.5 Now Available

原文はこちら。
https://blogs.oracle.com/stevenChan/entry/ebs_12_2_5_available

Oracle E-Business Suite Release 12.2.5の一般提供を発表できうれしく思っています。

このEBS 12.2コードライン用リリースアップデートパック(RUP / Release Update Pack)のダウンロード、および適用の手順は以下のサポートドキュメントに記載されています。
What Does Release 12.2.5 Include?
統合スイート全体のパッチセットとして、このRUPには、新機能、法令や規制に対応するためのアップデート、安定性、パフォーマンス、およびセキュリティのための機能拡張が含まれています。
リリース12.2.5は累積的なパッチのため、新機能だけでなく、以前の12.2リリースに対する個別パッチとして当初利用可能だったアップデートも含まれています。
新機能の全リストは以下のサポートドキュメントをご覧下さい。
Common Questions About Upgrading
  • Release 11iからRelease 12.2.5へ直接アップグレードできますか?
いいえ。Release 11iをお使いのお客様はまずRelease 12.2.へアップグレードしてから、12.2.5を適用する必要があります。
Oracle E-Business Suite 12.2 Now Available
https://blogs.oracle.com/stevenChan/entry/ebs_12_2_now_available
[Applications] Oracle E-Business Suite 12.2 Now Available
http://orablogs-jp.blogspot.jp/2013/09/oracle-e-business-suite-122-now.html
  • EBS 12.0から直接12.2.4へアップグレードできますか?
いいえ。Release 12.0をお使いのお客様はまずRelease 12.2へアップグレードしてから、12.2.5を適用する必要があります。
Oracle E-Business Suite 12.2 Now Available
https://blogs.oracle.com/stevenChan/entry/ebs_12_2_now_available
[Applications] Oracle E-Business Suite 12.2 Now Available
http://orablogs-jp.blogspot.jp/2013/09/oracle-e-business-suite-122-now.html
  • EBS 12.2から12.2.5へ直接アップグレードできますか?
はい。Release 12.2をお使いのお客様は、皆様の環境に対し直接EBS 12.2.5を適用することができます。EBS 12.2.5はオンラインパッチなので、EBS 12.2実行中に適用することができます。
  • EBS 12.2の準備はどこから始めるとよいのでしょう?
まずは以下のサポートドキュメントをご覧になって準備してください。
Oracle E-Business Suite Release 12.2: Technical Planning, Getting Started, and Go-Live Checklist (Doc ID 1585857.1)
https://support.oracle.com/rs?type=doc&id=1585857.1

Additional References

Related Articles

[Database, Support] Extended Support Fee for Oracle 11.2.0.4 waived until May 31, 2017

原文はこちら。
https://blogs.oracle.com/UPGRADE/entry/no_extra_fee_for_extended

2015年10月16日(金)にOracleはOracle Database 11.2.0.4に対するExtended Supportの開始が2017年5月31日まで延期されると発表しました。この情報は以下のリンクのの6ページ、 Exceptions - For customers with a current support contract running に記載されています。
Oracle Software Technical Support Policies
http://www.oracle.com/us/support/library/057419.pdf
(抜粋)
(訳注)
11.2.0.4に対するPremier Supportは2015年1月31日までで、現在は、11.2.0.4の初年度のExtended Supportを追加コスト無しでご利用いただける期間です。この無料期間が2017年5月31日まで延長される、ということです。誤解を招く表現がありましたことをお詫びします。

いくつか補足しておきます。
  • Oracle Database 11.2.0.3以前に対するバグ修正のサポートはありません。
  • Oracle Database 11.2.0.4からOracle 12.1.0.2へのアップグレードの労力と比較する場合、テストなど全く同じ量の作業を実施する必要があり、差はありません。
  • 通常のサポートドキュメント(例:742060.1 / Release Schedule of Current Database Releases)をチェックした限りでは、まだ更新されておらず、この変更は反映されていません。おそらく来週初めに更新されることでしょう。
  • Release Schedule of Current Database Releases (ドキュメントID 742060.1) https://support.oracle.com/rs?type=doc&id=742060.1

[Mobile] Oracle MAF 2.2 New Features

原文はこちら。
https://blogs.oracle.com/mobile/entry/maf_2_2_new_features

Oracle Mobile Application Framework (MAF) の新リリースであるV2.2について、このリリースで追加された新機能をいくつかご紹介します。

1. UI Components

このリリースでは、いくつかの新しいコンポーネントや、最新のモバイルパターンをサポートする機能強化が導入されています。

Swipe To Reveal

ユーザーがリストの行をスワイプすると、Contextual Actionをコンテキスト・アクションを表示することができます。この機能は<amx:accessoryLayout/>をコンポーネントを使ってAMXページに追加できます。

[実行例]
Swipe To Reveal Sample


Pull To Refresh :

スワイプダウンして、ページのコンテンツを更新することができます。この機能は<amx:refreshContainer/>コンポーネントを使って追加することができます。

[実行例]
Pull to refresh

New Layout Components 

開発者が簡単にフレキシブルなダッシュボードやグリッドレイアウトを構築することができます。

MasonaryLayout 
通常、グリッド形式に配置したタイルを含むダッシュボードスタイルのページを作成する際に利用します。各タイルのサイズをCSSで調整でき、以下の主要機能を提供しています。
  1. 利用可能な幅を基にしてレイアウトを調整
  2. レイアウトでのタイルのドラッグ&ドロップが可能
[実行例]
Pull to refresh

FlexLayout
このレイアウト・コンポーネントを使うと、子レイアウトをグループで表示します。水平方向(holizontal)と垂直方向(vertical)をサポートし、デバイスの方向に従い自動的に変化します。デフォルトでは、レイアウトは子レイアウト各のスペースを均等に作成し、これらの子レイアウトを境界内で伸張します。

[実行例]



Data Visualization Enhancements :

  • Stock Charts(株価チャート):株価チャートは、時系列で株価データを表示するのに便利です。株価チャートのユニークな特徴として、始値、終値、高値、安値の株価データを表すローソク足チャートとして系列データを表示と系列データをレンダリングできることがあげられます。
  • Chart Drill Events(チャートドリルイベント):ユーザーが系列データ、グループ、データ項目をタップした際にグラフのデータにドリルインするためのイベントを発生させることができます。
  • タイムラインコンポーネントの概要および垂直方向のサポート

Alta Mobile V1.4 :  

Android LのGoogle Materialデザインをサポートする新しいスキン

2. Data binding Enhancements

Support For Nested DataControl Context:

  • 開発者がタスクフローを使って再帰ナビゲーションフローを構築できます。
  • タスクフローレベルで状態を分離します
  • スタックで維持されてされているタスクフローやデータコントロールインスタンスの個数を管理します
  • [例]Opportunity List -> Opportunity Detail -> Account Detail (Opportunityと関連づけられているaccountから) -> Related Opportunity List -> Opportunity Detail (以前のものとは異なるOpportunity)

3. Navigation Enhancements

  •  Full support for Androidの[戻る(back)]ボタンのフルサポート
    • <amx:systemActionBehavior>タグやJavaScript APIを使ったデフォルトの挙動のオーバーライドをサポート
    • "__back" ナビゲーションルールをデフォルトで利用
  • タスクフロー境界にpageFlowScope変数を制限するためのサポート

4. Performance Improvements

  • 以前のリリースに比べ、全体として30%の性能向上
  • 以下のポイントで特に性能が向上
    • JSONのパース:JSON-Pベースの新しいパーサーを使用
    • 新たに最適化されたJVM:Javaの処理で30~40%の性能向上
    • ページ表示時間が短縮され、UIの性能が向上

Summary  

Oracle MAF 2.2には多くのすばらしい機能が含まれていますので、皆様にアップグレードいただいて是非試していただきたいと思っています。上記の機能のいくつかはこのリリースで同梱されているサンプルアプリケーションでも使われています。サンプルコードを是非ご確認ください。コンポーネントギャラリー、レイアウトデモ、WorkBetterサンプルアプリで、上記の機能のほとんどを利用しています。

[Cloud, WebCenter, JavaScript] Oracle Documents Cloud Service and Node.js

原文はこちら。
https://blogs.oracle.com/OracleCloud4Developers/entry/oracle_documents_cloud_service_and

Oracle Documents Cloud Serviceでは、クラウドで直接REST APIを使ってファイルやフォルダ、ユーザーの管理ができる一連の機能を提供しています。
Oracle Documents Cloud Service
https://cloud.oracle.com/documents
この記事ではAPIの利用例をご紹介します。今回は、Node.jsでの操作についてご紹介します。
メインコンテナ、メインコンテナの子、特定のフォルダやファイルに関する情報にアクセスします。また、特定のファイルの内容を取得したり、アイテムを削除したり、項目の名前を変更したりします。これらはすべてNode.jsのExpressフレームワークを使用して構築したWebアプリケーションを介して実行します。

今回の例を実施するにあたっての前提条件は以下の通りです。
  • Node.js
  • Expressフレームワーク
  • 結果表示のためのテンプレートエンジン
  • 開発環境に含まれる、Node.js用RESTクライアント
  • スクリプト記述用テキストエディタ
  • APIのエンドポイントURL
  • 認証のための資格証明(ユーザー名とパスワード)
  • サービスのメインコンテナに配置する2個のテキストファイル
アプリケーションの全貌は下図をご覧ください。
img1
Node.js自身がHTTP Serverの機能を持っており、ルーティング、テンプレート化が簡単という理由から、Expressフレームワークを使うことにしました。

HTTP Serverが受け取ったリクエストは、REST APIと対話する適切なスクリプトにルーティングされます。スクリプトがAPIからレスポンスを受け取ると、即座に描画テンプレートを使ってブラウザに対してレスポンスを描画します。

テンプレートエンジンとしてEJSを、専用RESTクライアントとしてnode-rest-clientを選択しました。これらの2種類はExpressフレームワークとともに以下のコマンドを実行し、node package managerを使ってインストールすることができます。
  • npm install ejs
  • npm install node-rest-client
  • npm install express
アプリケーションサーバは非常に基本的なものです。Expressフレームワークと、テンプレートエンジン、2個のルーティングを設定します。最初のルーティングはインデックスページ、もう一つはREST APIへのHTTPリクエストを処理するページです。サーバーはポート番号3000でリクエストを受け付けます。

APIのエンドポイントURLを知るため、サービスのWebアプリケーションにログインします(cloud.oracle.comでデータセンターを選択、アイデンティティ・ドメイン、ユーザー名、パスワードを入力、Documentsクラウドサービスを選択して、サービスのコンソールを開きます)。

Webアプリケーションにリダイレクトされると、/home/nameascを/apiで置き換えることでAPIのエンドポイントを取得できます。WebアプリケーションのURLは以下のような構成になっています。
https://<account>-<identity domain>.documents.<datacenter>.oraclecloud.com/documents/home/nameasc
例として、実際のURLが以下のようであれば
https://foo-bar.documents.us.oraclecloud.com/documents/home/nameasc
APIのエンドポイントURLは以下のようになります。
https://foo-bar.documents.us.oraclecloud.com/documents/api
今後、このドメインを例にして説明を進めます。
APIの認証に使うユーザー名とパスワードはWebアプリケーションログイン時と同じものですが、この場合、アイデンティティ・ドメインは不要です。

前提条件として記載したように、サービスのメインコンテナに2個のテキストファイルを配置することを忘れないでください。

サービスのフォルダ構成を明確にするために、下図をご覧ください。
img1
実際のREST APIとの通信を司るスクリプトには2個のハンドラがあります。一つはGETリクエスト用、もう一つは自身へのPOSTリクエスト用です。

GETリクエストの場合、ボタンを持つフォームを含むテンプレートをレンダリングしますが、POSTリクエストの場合、さらにJSON形式で認証のための資格証明を含むテキストファイルを開き、その内容を解析してオブジェクトに格納します。

ファイルの中身は、次のような感じになります。
{"user" : "john.doe@company.com", "password" : "supersecret"}
続いて、基本認証を使ってAPIに対し認証するための組み込み機能を提供するnode-rest-clientが必要です。
var RESTClient = require('node-rest-client').Client;
restClient = new RESTClient({user : credentials.user, password : credentials.password});
その後、ファイルはAPIのエンドポイントURLを設定します。
var apiURL = "https://foo-bar.documents.us.oraclecloud.com/documents/api";
最後に、実際のリクエストをREST APIに対して送信する機能が含まれています。
//perform the api request
restClient.get(apiURL, function(data, apiResponse){
//set up params to be passed into the template
  var params = {
    respData: ((typeof data) == 'object') ? JSON.stringify(data) : data
  }
  //send HTTP response (render template)  
  res.render('rest', params);
});
ここで説明したPOSTハンドラはHTMLフォームが発行されたタイミングで呼び出されます。

REST APIへのリクエスト発行の最終ステップでNodeサーバーを起動しています。

この例はローカルのUbuntu上にインストールされたNode.jsを使っています。開始する場合には、ターミナルを開き、以下のコマンドを実行します。
sudo nodemon <path file.js="" server="" to="">
個人的には、スクリプト変更時に自動的にサーバーを再起動してくれ、手作業による再起動が不要なため、nodemonを使っています。

サーバーが起動したら、ブラウザでhttp://localhost:3000にアクセスすると、アプリケーションのインデックスページが開きます。これはこの記事の最初に説明した2個目のルートです。

2個目のルートへアクセスすると、フォームを含むテンプレートを表示するGETハンドラを起動します。フォームをルートに送信すると、POSTハンドラが呼び出され、スクリプトがAPIにアクセスします。APIからレスポンスが返ると、フォームの同じテンプレートを使って結果を表示します。

注意いただきたいのは、APIへの最初のリクエストはAPIの基本パスへのGETリクエストです。APIのデータフォーマットのデフォルトはJSONで、以下のような形式です。
{items: [{"version": "1.0", "isLatest": false}, {"version": "1.0", "isLatest": true }]}
メインコンテナに関する情報を入手するために、スクリプトを編集し、"/folders/self"を付加してapiURL変数を変更します。URLを以下のような感じに変更します。
https://foo-bar.documents.us.oraclecloud.com/documents/api/folders/self
上記URLへのGETリクエストを実行すると、APIはメインコンテナの情報をレスポンスとして返します。メインコンテナの子の情報を取得するには、エンドポイントURLの"/self"を"/items"に置き換えます。変更した結果、URLは以下のようになります。
https://foo-bar.documents.us.oraclecloud.com/documents/api/folders/items
上記URLへのGETリクエストを実行すると、APIはメインコンテナの子、つまりファイルやフォルダの情報をレスポンスとして返します。今回の場合、子は事前にメインコンテナにアップロードした2個のファイルです。

[注意]
"/folders/items"パスを使ってメインコンテナの子にアクセスします。メインコンテナに含まれるすべてのフォルダとファイルはおのおののIDを使ってアクセスします。

続いて、ファイルの一つの情報を取得しましょう。このために、ファイルのIDが必要です。このファイルのIDは先ほどメインコンテナの子の問い合わせの際に入手しました。この操作で利用するエンドポイントURLは以下のようになります。
https://https://foo-bar.documents.us.oraclecloud.com/documents/api/files/<file id>
上記URLに対するGETリクエストを実行すると、APIはファイルに関する情報(作成日、ファイル名、IDなど)を返します。ファイルの中身を取得したい場合には、URLに"/data"を付加します。URLは以下のようになります。
https://foo-bar.documents.us.oraclecloud.com/documents/api/files/<file id>/data
[注意]
ファイルの内容を問い合わせる際、APIの応答はJSON形式ではなく、ファイルの中身のみを含むプレーンテキスト形式です。

上記のURLに対しGETリクエストを発行すると、APIはファイルの内容を返します。以下はその例です。
"Hello Docs. This is file1's content"
開発、テストフェーズにて、このWebアプリケーションを使ってAPIが返す情報を常にダブルチェックすることができます。

ここまでで、APIを使って情報を取得しましたが、続いての例ではファイルを削除します。

アイテムの削除はアイテムの情報を入手するのと同じぐらいシンプルで、単にAPIへのリクエストメソッドをDELETEに変更すればよいのです。URLはアイテムの情報を入手した際に使ったものと同じです(先ほど追加した"/data"のことは忘れています)。RESTクライアントを使って、この形式でDELETEリクエストを送信することができます。
client.delete(requestPath, function(data, response){
  // do something with the response
});
これらの修正をスクリプトに対して実施し、リクエストをAPIに送信すると、操作結果を含むレスポンスが返ってきます。以下はその例です。
{ "errorCode" : "0" … }
これはファイルの削除が成功したことを示しています。

最後の例として、既存のリソースの名前を変更します。今回は、メインコンテナに残る別のファイルを対象にします。

ファイル名を変更するには、PUTリクエストをファイルのパスに対し発行しますが、ファイルの新規名称を含む追加のパラメータを指定する必要があります。URLのパターンはファイル情報を入手したときと同じです。以下はコード例です。
var args = {  parameters:{"name" : "changed-name.txt"} };
client.put(requestPath, args, function(data, response){
  // do something with the response
}); 
PUTリクエストをこのファイルのURLパスに送信すると、APIはファイルの情報を返します。その情報には新しいファイル名が含まれています。

先ほど実施したように、Webアプリケーションを使ってファイル名が正しく変更されていることを確認できます。

REST APIの機能に関する詳細情報は、REST APIリファレンスをご覧ください。
Developing for Oracle Documents Cloud Service
Oracle Documents Cloud Service REST API Reference
http://docs.oracle.com/cloud/latest/documentcs_welcome/WCCCD/GUID-205EBBB4-F8D5-4FD0-B82F-210960F5C6F7.htm#WCCCD3724

[Java] MVC 1.0 Second Early Draft Now Available

原文はこちら。
https://blogs.oracle.com/theaquarium/entry/mvc_1_0_second_early

Java EE 8に含まれる予定のMVC 1.0仕様の進捗が進み、このたび2回目の早期ドラフトレビュー(EDR, Early Draft Review)をリリースしました。JCPのWebサイトからドラフトをダウンロードしご覧頂けます。参照実装であるOzarkも試していただけます。
JSR 371: Model-View-Controller (MVC 1.0) Specification
https://www.jcp.org/en/jsr/detail?id=371
Ozark - Reference Implementation for MVC 1.0
https://ozark.java.net/
MVCを支援するコミュニティの勢いも同様に成長を続けています。最近では、Bulgarian Java User GroupがAdopt-a-JSRを介して仕様のワークショップを開催しました。ワークショップはNayden GochevとIvan St. Ivanovが主導しました。ワークショップを進める上で必要な手順やコードなどの全てがJUGのサイトに掲載されています。
Workshop JSR 371: MVC 1.0
https://jug.bg/events/adopt-a-jsr-mvc-1-0/
いつも通りフィードバックを送るだけでもいいですし、色々な形で関わることができます。仕様のJCPページを通じて、Expert Groupへの参加をいつでも歓迎いたします。
JSR 371: Model-View-Controller (MVC 1.0) Specification
https://www.jcp.org/en/jsr/detail?id=371
いつも通り、MVC 1.0仕様のユーザーエイリアスを購読して議論に参加することもできます。
MVC Specification Mailing Lists
https://java.net/projects/mvc-spec/lists
JUGを通じてグループとして参加したいという場合には、Adopt-a-JSRを通じて参加することができます。
Adopt-a-JSR for Java EE
https://glassfish.java.net/adoptajsr/

[Database, WLS] Active GridLink Configuration for Database Outages

原文はこちら。
https://blogs.oracle.com/WebLogicServer/entry/agl_database_outages

この記事では、Oracle Database RAC環境でのデータベース停止時に対応するための、Active GridLink (AGL) データソースの設計・展開について説明します。

AGL Configuration for Database Outages

Active GridLinkデータソースが以下のドキュメントに従って構成されているものとします。
Oracle® Fusion Middleware Oracle WebLogic Server JDBCデータ・ソースの管理 12c (12.1.3)
Active GridLinkデータ・ソースの使用方法
http://docs.oracle.com/cd/E57014_01/wls/JDBCA/gridlink_datasources.htm#JDBCA373
Oracle® Fusion Middleware Administering JDBC Data Sources for Oracle WebLogic Server 12.1.3
Using Active GridLink Data Sources
http://docs.oracle.com/middleware/1213/wls/JDBCA/gridlink_datasources.htm#JDBCA373
  • FANが有効化されます。FANはデータベースサービスやインスタンス、データベース自身、クラス田尾を構成するノードの状態が変化すると速やかに通知します。計画的なメンテナンスの間に、アプリケーションに対しどのような形であれエラー無しでインスタンスへの接続を返すことができます。
  • 自動ONSもしくは明示的なONSの設定
  • ダイナミックデータベース・サービス:データベースサービスやPDBサービスを使って接続しないでください。これらは管理用途のためであって、FACはサポートしていません。
  • 接続のテスト
    停止イベントが処理される前に接続を借り受けた場合、停止に応じて、アプリケーションは古い接続を受けとることがあります。例えばこの事象は、着信接続要求と同時にソケットを閉じた際にクリーンなインスタンスが停止した場合に発生することがあります。アプリケーションがエラーを受け取らないようにするためには、接続チェックを接続プールで有効化しておく必要があります。これはtest-connections-on-reserve(予約時に接続をテスト)をtrueにした上で、test-table(テスト表)を設定する必要があります(Oracle Databaseの場合、推奨値は"SQL ISVALID"です)。
  • SCANの利用の最適化
    DNSからSCANアドレス用に返されるSCANのIPアドレスの並べ替えの強制を最適化する場合、URL設定を12.1.0.2以後のデータベースドライバではADDRESSLISTのLOAD_BALANCE=TRUEを設定してURLを設定する必要があります(12.1.0.2以前では、接続プロパティoracle.jdbc.thinForceDNSLoadBalancingをtrueに設定します)。

Planned Outage Operations

計画停止において、ゴールは以下のことを達成することです。
  • 透過的な計画されたメンテナンス
    データベースサーバーでの計画的なメンテナンスプロセスがアプリケーションから見えるようになります。
  • セッションの排出
    データベースでインスタンスをメンテナンスのために停止すると、ノードでインスタンスを利用しているすべてのワークが完了し、アイドルセッションの削除がドレーニング(draining、排出)によって保証されます。セッションは実行中のワークに影響を与えずに排出されます。
目標は、データベース・サーバーでメンテナンスが進行中の場合にもアプリケーションを中断せずに計画されたメンテナンスを管理することです。メンテナンスの目的(例えば、ソフトウェアやハードウェアのアップグレード、修理、変更、システム内およびシステム間での移行)のため、利用されるサービスは、一度に1個もしくは複数のサービスを正常にシャットダウンします。FAN DOWNイベントの際に、AGLは、メンテナンスの対象となるインスタンスからセッションを排出します。(まだ残りの実行中のインスタンス上で利用可能であることを仮定して)メンテナンス対象のデータベース・インスタンス上で実行されている非シングルトンサービスを停止したり、シングルトンサービスをメンテナンス対象のインスタンスから別のインスタンスに再配置することが必要です。サービスがセッションを排出した後、インスタンスは、アプリケーションに対して全くエラーなしで停止します。
以下は計画停止が発生した場合の動きをまとめたものです。
  • メンテナンス対象のインスタンスに対してDBAが発生させた“DOWN”イベントを検知
  • 当該インスタンスからセッションを排出
  • 計画メンテナンスをデータベースサーバで実行
  • アップグレードされたノードで運用を再開
データベース・サーバと中間層の両方でオペレーションの調整が必要なマルチデータソースとは異なり、Active GridLinkではデータベースと協調し、これらのオペレーションすべてがデータベースから管理されるため、プロセスが簡素化されます。
下表はデータベース・サーバで実行される手順と対応する中間層での反応をまとめたものです。
データベースサーバでの操作手順 コマンド 中間層の反応

非シングルトンサービスを”-force”オプションを付けずに停止する、もしくはシングルトンサービスを別ノードに移す

インスタンス上のすべてのサービスで-serverオプションを省略する
    $ srvctl   stop service –db <db_name> -service <service_name> -instance   <instance_name>

    または

    $ srvctl   relocate service –db <db_name>
    -service <service_name> -oldinst <oldins> -newinst <newinst>
    サービスのFAN Planned   Down (reason=USER) (計画停止)イベントは接続プールに対し、サービスが利用できず、接続の排出が必要であることを知らせる。

    サービスのアイドル接続を即時解放する。利用中の接続はアプリケーションが返した(論理的に閉じた)際に解放される。

    新規接続は他のインスタンスやサービスを提供するデータベースで予約される。

    このFANアクションでは、アプリケーションを中断せずに、インスタンスからのセッションの排出を開始する。
    自動的に再起動されないことを保証するため、停止したサービスを必要に応じて無効化

    このステップは、メンテナンスが完了するまでサービスが再起動してはいけないメンテナンス時に推奨されるステップ 

    $ srvctl disable service –db <db_name> -service <service_name> -instance <instance_name>
    中間層で停止・利用できないサービスと新規接続を関連付けない。
    セッション排出


    セッション排出に要する時間はアプリケーションによって異なる。
    長時間実行中のクエリがある可能性がある。定期的に接続を返し、新しい接続を取得するようにバッチプログラムが作成されていない可能性があるため、バッチプログラムをメンテナンス前に排出することを推奨する。
    長時間実行中のセッションを確認

    トランザクションの切断を使用してこれらのセッションを終了させる

    セッションの排出を待つ

    セッションの残存を確認するためにクエリを再実行できる
    SQL>   select count(*) from ( select 1 from v$sessionwhere service_name in   upper('<service_name>') union all
    select 1 from v$transaction where   status = 'ACTIVE' )

    SQL> exec
    dbms_service.disconnect_session(
      '<service_name>', DBMS_SERVICE.POST_TRANSACTION);
    中間層の接続でエラーが発生する。
    Application Continuityを使用している場合は、自動的に別のインスタンスの新規接続でオペレーションを再生することで、アプリケーションからのエラーを隠すことが可能。それ以外の場合、アプリケーションはSQLExceptionを取得する。
    上記手順を繰り返す 計画メンテナンス対象のすべてのサービスに対し繰り返す
    immediate オプションを使ってデータベースインスタンスを停止 $ srvctl stop instance –db <db_name> -instance <instance_name> -stopoption  immediate データベースやサービスが再起動されるまで中間層に影響はない
    必要に応じ、インスタンスを無効化し、メンテナンス中に自動的に再起動しないようにする

    これは、サービスがメンテナンス中に再開できないようにするためのステップ
    $ srvctl   disable instance –db <db_name> -instance <instance_name>
    計画メンテナンスを実行 計画メンテナンスの実行(パッチ適用、修復、変更など)
    インスタンスの有効化および開始 $ srvctl   enable instance –db <db_name> -instance <instance_name>
    $ srvctl start instance –db <db_name> -instance <instance_name>
    サービスを有効化し、再起動し、サービスが立ち上がり、実行中になっていることを確認 $ srvctl   enable service –db <db_name> -service <service_name> -instance   <instance_name>
    $ srvctl   start service –db <db_name> -service <service_name> -instance   <instance_name>

    サービスのFAN UPイベントが、接続プールに新しいインスタンスが利用可能になったことを通知する

    次回のリクエスト送信で、このインスタンスでのセッション作成が可能

    セッションの自動リバランス開始

    下図は、計画停止前後の2個のRACインスタンスにわたるサービスへの接続の分散を示しています。接続ワークロードが両インスタンスで50:50から、100:0に遷移することに着目してください。言い換えると、メンテナンスビジネスに影響しないでRAC_INST_1のメンテナンスを実行することができる、ということです。
    (訳注)
    原文に記載されているリンクがアクセスできないリンクのため、このエントリでも非表示にしています。

    Unplanned Outages

    設定は計画停止、非計画停止で同じですが、非計画停止の場合にはいくつか相違点があります。
    • データベースサーバのコンポーネントが、当該ノードで実行中のインスタンス上のすべてのサービスを利用不可にすることに失敗する可能性があり、それゆえにサービスが停止、無効化されていない場合があります。
    • FANの非計画DOWNイベント (reason=FAILURE) が中間層に配信されます。
    • 非計画停止イベントに対応して、すべてのセッションが即座に閉じられ、アプリケーションがTCP/IPタイムアウトを待たなくてすみます。既存の他のインスタンスへの接続はそのまま利用可能で、必要に応じて他のインスタンスへの新規接続を開くことができます。
    • 接続は正常に排出されません。Application Continuityを使うよう構成されているサービスを利用するアプリケーションの場合、アクティブなセッションを生存しているインスタンスに復元し、オペレーションの再生、アプリケーションに対する停止の隠蔽をした上で、セッションを回復します。Application Continuityで保護されていない場合、インスタンスとのアクティブな通信している任意のセッションがSQLExceptionを受けとります。

    [Java] NPAPI Plugin Perspectives and the Oracle JRE

    原文はこちら。
    https://blogs.oracle.com/java-platform-group/entry/npapi_plugin_perspectives_and_the

    Javaが20年前に急激に世に知られるようになったのは、HotJavaブラウザで動作するDukeが宙返りするappletが出てからです。ブラウザの機能が非常に弱かったその当時、Appletはよりリッチな開発性と、ユーザーがアプリケーションをローカルでインストールしたり、アップデートしなくてもよいよう、アプリケーションの集中配布機能を提供しました。
    Java at 20 Years, Part 1: What's In a Name?
    https://adtmag.com/blogs/watersworks/2015/05/java-at-20.aspx
    How to make Applets
    https://docs.oracle.com/javase/tutorial/uiswing/components/applet.html
    HotJava
    https://en.wikipedia.org/wiki/HotJava
    HotJavaのappletのサポートはNetscapeに引き継がれました。1995年、表示可能なコンテンツの種類が増えたことで、Netscape Navigator 2.0とプラグインの人気が増しました。
    Netscape Navigator 2.0
    https://en.wikipedia.org/wiki/Netscape_Navigator_2
    Netscape Navigatorのプラグインインターフェース(NPAPI)は他のブラウザによって採用され、2004年からサポートされました。Webブラウザで動作するJavaアプリケーションのブラウザ間の互換性を提供する、共通のNPAPIプラグインインターフェースに依拠して各ブラウザでのJava appletがサポートされました。

    Javvaが主要な開発プラットフォームの一つとして進化するにつれ、appletのホストであるWebブラウザも進化しました。通常はプラグインのサポートがないモバイルデバイスのブラウザでのWebの利用が増えたことにより、利用可能な一連の機能をデスクトップ版とモバイル版で統合しようとすることで、ブラウザ提供元は自身の製品からプラグインのサポートを制限したり、プラグインのサポートを取りやめたいと思うようになりました。
    Thoughts on Flash
    http://www.apple.com/hotnews/thoughts-on-flash/
    モバイルの隆興に合わせ、アプリケーションの配布モデルとして「プラグインベース」のモデルではない、「app store」モデルが現れました。この「app store」モデルはシンプル、セキュリティ、可用性の集中化といった理由で成長しました。モバイル、アプリケーションの配信、機能といったこれらの進化を受け、標準ベースのプラグインのサポートを継続するブラウザは時間がたつにつれて少なくなっていきました。

    Mozillaからの発表は、Mozilla Firefoxでアプレットを利用している開発者やユーザーに対し、代替策の評価や代替策への移行のためのタイムラインを提供するものです。
    NPAPI Plugins in Firefox
    https://blog.mozilla.org/futurereleases/2015/10/08/npapi-plugins-in-firefox/
    Java Platform, Standard Edition Deployment Guide
    Applet Development Guide
    Migrating Java Applets to the Java Network Launching Protocol
    http://docs.oracle.com/javase/8/docs/technotes/guides/deploy/applet_dev_guide.html#JSDPG1032
    通常のリリースやFirefox延長サポート版でFirefoxからNPAPI機能が取り除かれるまでに、Java Web Startのようなプラグインを使わないテクノロジーの利用や、プラグインをサポートする別のブラウザへの移行を検討する必要があります。

    他のブラウザと同じように、Mozillaが必要なNPAPIのサポートを提供する限り、Oracle JREのみがFirefoxでのappletをサポートすることができます。過去数年間にわたるMozillaのエンジニアリングチームと定期的な会話を通じ、共通のユーザーがFirefoxとOracle JREでの改良の恩恵を受けることを保証するために、一緒に取り組んできました。私たちは、Java Web Startのようなプラグインを使わないテクノロジーへのスムーズな移行を可能にすることで引き続き協力していきます。

    その一方で、現時点では、追加のブラウザ固有のプラグインを提供する予定はありません。それは、そのようなプラグイン作成のためには、サポート対象のブラウザ固有のappletを作成するアプリケーション開発者を必要とするためです。また、(開発をしたとしても)ブラウザ毎に異なる、アプリケーション開発者にもユーザーにも影響が及ぶ、必要な機能のサブセットを提供することしかできないでしょう。

    以前の例と同様に、Oracle製品に関わる追加情報は対応する製品チームが提供する予定にしています。Internet ExploerおよびSafariブラウザはこの変更の影響を受けません。
    Java and Google Chrome Browser
    https://www.java.com/en/download/faq/chrome.xml

    この変更に対応するための準備をし、貴社組織内で利用しているapplet(やその他のJavaアプリケーション)の知見をためてきたいと思うシステム管理者は、Java Advanced Management Consoleの評価をされることをお勧めします。
    Java Advanced Management Console
    http://www.oracle.com/technetwork/java/javaseproducts/advanced-mgmt/advancedmanagementconsole-2254207.html

    [Database] 15 years of MyNA - Japan MySQL User Group - Come to celebrate with us!

    原文はこちら。
    https://blogs.oracle.com/MySQL/entry/15_years_of_myna_japan

    MySQL Japan User Group (MyNA) のドメインを登録して15年が経過したことを受け、この15周年を祝うことにしました。主要メンバーが一堂に会し、これまでの歴史を振り返るというまたとない機会です。次回のユーザー会を以下の要領で10月末に開催します。
    • タイトル:15th anniversary of MyNA, looking back User Group's 15 years and MySQL's 15 years(ユーザ会15周年記念パーティ〜ユーザ会とMySQLの15年を振り返る!〜)
    • 日時:2015年10月30日(金)19:00-21:30 (日本時間)
    • 会場:株式会社コロプラ(東京・恵比寿ガーデンプレイスタワー11階)
    • 4名の登壇者によるセッションを通じて、ユーザー会のこの15年間を振り返ります。
      • とみたまさひろ さん(ユーザ会代表・最初のMySQL日本語化)
      • 木下靖文 さん(InnoDB、XtraDBの元開発者)
      • 梶山隆輔 さん(MySQL K.K.→Sun Microsystems→Oracle MySQL GBU)
      • yoku0825 さん(Oracle ACE for MySQL、ユーザー会で大活躍)
    • ユーザー会のURL
      http://www.mysql.gr.jp/
    イベント登録は以下からどうぞ。皆様のご来場をお待ちしています。
    日本MySQLユーザ会15周年記念パーティー
    http://connpass.com/event/21179/?utm_campaign=promote_21179

    [SOA, Cloud] Extending SOA Cloud Service with Scheduler

    原文はこちら。
    https://blogs.oracle.com/integration/entry/extending_soa_cloud_service_with

    Now that SOA Cloud Serviceが利用できるようになったので、スケジューリング機能を使ってSOA Cloud Serviceを非常に簡単に拡張できます。スケジューリング機能のユースケースは、たとえば以下のようなものがあります。
    • Pull AdapterからPush Aapterへ定期的にバルクでのデータ転送を実施したい
    • Cloud Adapterを起動するSOAコンポジットをスケジュール起動することで、クラウドのエンドポイントをスケジューリングしたい
    • ESSとSOA間が標準で有するネイティブ統合を使って、Adapterの有効化・無効化、フォルトのリカバリをまとめて実行するなどのようなことを実現したい
    • BPELを使う一連のジョブやジョブセットを編成したい
    SOA Cloud Serviceを拡張してESSを利用可能にすることは簡単ですが、以下のことはオンプレミス環境では動作保証されていますが、SOA Cloud Serviceでは保証されていませんのでご注意ください。
    • すべてのサーバのシャットダウン
    • <Oracle_Home>/oracle_common/bin/rcuを実行して、SOAスキーマと同じ接頭辞を使ってESSスキーマを作成すること
    • <Oracle_Home>/oracle_common/common/bin/config.shを実行すること
      • ESS BasicテンプレートとEnterprise Manager plugin for ESSテンプレートの選択
      • ESS-MGD-SVRS(ユーザー拡張可能サーバーグループ)をSOA管理対象サーバに設定
      • ess_server1の削除

    [Java] GlassFish 4.1.1 is now available!

    原文はこちら。
    https://blogs.oracle.com/theaquarium/entry/glassfish_4_1_1_has

    GlassFish 4.1.1がリリースされました。マイナーバージョンアップとはいえ、4.1.1は些細なアップデートではありません。
    昨年、JAX-RS (JSR 339)、JMS (JSR 343)、CDI (JSR 346)、WebSocket (JSR 356) の仕様アップデートがありました。
    JSR-000339 The JavaTM API for RESTful Web Services 2.0 rev A (Maintenance Release)
    https://jcp.org/aboutJava/communityprocess/mrel/jsr339/index.html
    JSR-000343 JavaTM Message Service 2.0 (Maintenance Release)
    https://jcp.org/aboutJava/communityprocess/mrel/jsr343/index.html
    JSR-000346 Contexts and Dependency Injection for JavaTM EE 1.2 (Maintenance Release)
    https://jcp.org/aboutJava/communityprocess/mrel/jsr346/index.html
    JSR-000356 JavaTM API for WebSocket  (Maintenance Release)
    https://jcp.org/aboutJava/communityprocess/mrel/jsr356/index.html
    これらのメンテナンスリリースがGlassFish 4.1.1に統合されています。この期間に、Java EE 7仕様 (JSR 342) もまたメンテナンスリリースプロセスを通りましたが、変更点は仕様の明確化でしかなかったので、Java EE 7メンテナンスリリースは技術的には参照実装、つまりGlassFishへの影響はありません。
    JSR-000342 JavaTM Platform, Enterprise Edition 7 Specification (Maintenance Release)
    https://jcp.org/aboutJava/communityprocess/mrel/jsr342/index.html
    GlassFish 4.1.1では、基礎となるGlassFishコンポーネントのほとんどがアップデートされました。以下のリストでアップデートされたコンポーネントの一部をご紹介します。
    • Jersey 2.21 (JAX-RS 2.0.1 aka JAX-RS 2.0 rev A) 
    • Weld 2.2.13.Final (CDI 1.2)
    • MQ 5.1.1-b02 (JMS 2.0.1)  
    • Tyrus 1.11 (WebSocket 1.1 )
    • Mojarra 2.2.12
    • EclipseLink 2.6.1-RC1
    • Grizzly 2.3.23
    • HK2 2.4.0-b31
    • JBatch Runtime 1.0.1-b09
    • JSON-P RI 1.0.4
      などなど
    最後に、様々なバグ修正に加え、セキュリティに関連する修正も含まれています。
    GlassFish 4.1.1は以下からダウンロードできます。
    GlassFish Server Open Source Edition 4.1.1 Download
    https://glassfish.java.net/download.html
    ソースコードは以下からどうぞ。
    GlassFish v3 Repository - Project Kenai
    https://java.net/projects/glassfish/sources/svn/show/trunk/main

    [Java] Join the J1 GlassFish - Java EE Community Events!

    原文はこちら。
    https://blogs.oracle.com/theaquarium/entry/join_the_j1_glassfish_java

    Oracle Java EEチームはJavaOneに先立ち、年次のいつものコミュニティイベントをホストしています。今年も、10月25日(日)の16:30から19:15、Moscone South (Room 307) で開催します。ちょうどJavaOneキーノート(13:45-16:00)の直後にスタートです。イベント参加にはJavaOneのパスが必要です。
    JavaOne keynote
    https://www.oracle.com/javaone/keynotes.html
    流れは以下のようになっています。
    そして最後に、従来のpre-JavaOne Sundayパーティーなるものがなければ、GlassFishイベントとは言えないでしょう。ってわけで、長い一日をThirsty Beerで開催するGlassFish - NetBeans - Payara Partyで締めましょう。参加は無料ですが、チケットの数に限りがあるので、参加登録をお願いします。
    SUN, OCT 25, 2015 AT 8:00 PM
    GlassFish, NetBeans, Payara Party
    Thirsty Bear Brewing Company, San Francisco, CA
    https://www.eventbrite.com/e/glassfish-netbeans-payara-party-tickets-18933363199

    [SOA, Cloud] SOA Suite/Cloud ServiceをOracle Developer Cloud Serviceであれやこれややってみる

    現在、SOA SuiteをOracle Developer Cloud Serviceと組み合わせて使ってみよう、という一連のエントリが掲載されています。タイトル上はSOA CS(SOA Cloud Service)となっていますが、オンプレミス版のSOA Suiteで説明しています。
    SOA Suiteは12c (12.1.3) からMavenをサポートしており、Mavenを使ったビルドの自動化や依存性管理をするために必要な構成要素をMavenプラグインとして提供しています。
    Oracle® Fusion Middleware Oracle SOA SuiteでのSOAアプリケーションの開発 12c リリース1 (12.1.3)
    Oracle SOA Suite開発Mavenプラグインの使用
    http://docs.oracle.com/cd/E57014_01/soasuite/develop-soa/soa-maven-deployment.htm
    Developer Cloud Serviceは、Git、Mavenなど、開発に必要なサービスを提供するCloud Serviceです。
    Oracle Developer Cloud Service
    https://cloud.oracle.com/developer_service
    Oracle Developer Cloud Serviceドキュメント
    http://docs.oracle.com/cloud/latest/devcs_common/index.html
    原文もそれほど難しくなく、動画を見ればわかるようになっていますので、「SOA SuiteやService Busの開発でも、Javaの開発で使っている同じしくみでビルドを自動化し、Continuous Integrationもできる」ことを理解いただければ、と思います。

    原文はこちら(2015/12/12現在。今後も追加される予定です)
    https://blogs.oracle.com/integration/entry/soa_plus_odcs_chapters_01
    https://blogs.oracle.com/integration/entry/soa_plus_odcs_chapter_03
    https://blogs.oracle.com/integration/entry/soa_plus_odcs_chapter_04
    https://blogs.oracle.com/integration/entry/soa_plus_odcs_chapter_05
    https://blogs.oracle.com/integration/entry/soa_plus_odcs_chapter_06
    https://blogs.oracle.com/integration/entry/soa_plus_odcs_chapter_07
    https://blogs.oracle.com/integration/entry/soa_plus_odcs_chapter_08
    https://blogs.oracle.com/integration/entry/soa_plus_odcs_chapter_09
    https://blogs.oracle.com/integration/entry/soa_plus_odcs_chapter_10
    https://blogs.oracle.com/integration/entry/soa_plus_odcs_chapter_11
    https://blogs.oracle.com/integration/entry/soa_plus_odcs_chapter_12
    https://blogs.oracle.com/integration/entry/soa_plus_odcs_chapter_13
    https://blogs.oracle.com/integration/entry/soa_plus_odcs_chapter_14
    https://blogs.oracle.com/integration/entry/soa_plus_odcs_chapter_15
    https://blogs.oracle.com/integration/entry/soa_plus_odcs_chapter_16

    [Virtualization] Oracle VM VirtualBox 5.0.6 Now Available!

    原文はこちら。
    https://blogs.oracle.com/virtualization/entry/oracle_vm_virtualbox_5_010

    OracleはVirtualBox 5.0 Maintenance Release 6をリリースしました。
    このリリースは数多くの変更やバグ修正を含んでいます。その中でも大きな改善点としてお伝えしたいのが、ホスト、ゲストのいずれとしても、Microsoft Windows 10 RTM (Release 10240) プラットフォームをお使い頂けるようになったということ、それと同時に、(公式にはAppleから2日前に出たところですが)新しいOS XプラットフォームであるEl Capitanを、VirtualBox 5.0.6から公式にホストプラットフォームとしてOSとしてサポートします。
    バグ修正の完全なリストは以下のリンクからどうぞ。
    Changelog for VirtualBox 5.0
    https://www.virtualbox.org/wiki/Changelog
    ダウンロードは以下のリンクからどうぞ。
    Download VirtualBox
    https://www.virtualbox.org/wiki/Downloads

    [Mobile] MAF and OS X El Capitan and Xcode 6

    原文はこちら。
    https://blogs.oracle.com/mobile/entry/maf_and_el_capitan_and

    本日AppleはOS X El Capitanが9月30日(日本時間10月1日)からMacユーザー向けに無料で提供すると発表しました。
    OS X El Capitanのベータ版とXcodeの相性が悪いという報告が出ており、AppleはApple Developer Form上で回避策を提示しています。
    Workaround for El Capitan Xcode issue
    https://forums.developer.apple.com/thread/13458
    この投稿では、Xcode 7はOS X El Capitanで完全にサポートされていることが明らかなのですが、Xcode 6が完全にサポートされているのかどうかは不明なままです。

    MAF 2.1.3ではXcode 6が必要です。

    OS X El Capitanのリリース後速やかにMAF開発チームはOS X El Capitan上でXcode 6を使いMAF 2.1.3の検証作業を開始します。この検証作業が完了するまで、現在のOS Xリリースをアップデートされないほうがよいでしょう。