2016年10月28日

[WLS] WebLogic Server 12.2.1.2 Datasource Gradual Draining

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

2014年10月にOracle WebLogic Server 12.2.1をOracle Fusion Middleware 12.2.1リリースの一つとしてリリースしました。そして、2015年10月に最初のパッチセットリリースである12.2.1.1をリリースしています。そして今週、2個目のパッチセットである12.2.1.2がご利用いただけるようになりました。この新しいWebLogic Server 12.2.1.2のインストーラはOracle Technology Network、Oracle Software Delivery Cloudからダウンロードできます。
Oracle WebLogic Server Installers
http://www.oracle.com/technetwork/middleware/weblogic/downloads/wls-main-097127.html
Oracle Software Delivery Cloud
https://edelivery.oracle.com
(訳注)
My Oracle Supportからもダウンロードいただけます。
My Oracle Support
https://support.oracle.com
新しいWebLogic Serverに対応したドキュメントもご利用いただけるようになっています。
Oracle WebLogic Server 12.2.1.2.0
http://docs.oracle.com/middleware/12212/wls/index.html
あまり紹介されていませんが、新しいデータソースの機能がいくつかあります。そのうちの一つが、”gradual draining”と呼ばれるものです。
計画的なメンテナンスがOracle RAC構成で発生する場合、計画的なサービスダウンのイベントを当該データベースを利用するActive GridLinkデータソースが処理します。デフォルトでは、プール内の予約されていない接続全てを閉じ、借りられていた接続はプールに返却された際に閉じられます。ただこの処理は以下の理由で性能にむらが出る可能性があります。
  • 代替インスタンスで新規接続を作成する必要がある
  • 他のインスタンスでログオンストーム(logon storm:ログオンの嵐)が発生する可能性がある
即座に接続を全て停止するのではなく、徐々に接続を排出するほうが望ましいのです。アプリケーションは接続が閉じられるまで排出時間を定義することができます。これあデータソースの接続プロパティ中の weblogic.jdbc.drainTimeout 値を使って構成します。いつも通り、WebLogic Server管理コンソールやEnterprise Manager、WLSTで設定することができます。下図は管理コンソールでの設定例です。


結果、接続は段階的に5秒間隔で閉じられます。アプリケーションがアクティブに接続を使用している場合、代替インスタンスで接続を同じ速度で作成します。下図は、一定の負荷を生成するサンプルアプリケーションを使い、1分間での接続の排出と新規接続の作成のデモの結果です。gradual drainingがない場合、停止したインスタンスのキャパシティはLBAの割合と同様に即座になくなり、迅速に代替インスタンス上で接続を作成することになるでしょう。


RACサービスのライフサイクル、データソースの一時停止やシャットダウン、接続サスペンションやシャットダウン、接続のグラビテーション(リバランス)などとの相互作用について詳細が記載が、以下のドキュメントに記載されています。
Oracle® Fusion Middleware Administering JDBC Data Sources for Oracle WebLogic Server 12c (12.2.1.2.0)
Gradual Draining
http://docs.oracle.com/middleware/12212/wls/JDBCA/gridlink_datasources.htm#JDBCA373
WebLogic Serverデータソースのその他の領域のように、Oracle Database 12.2ドライバおよびサーバとともに利用する場合に、この機能は自動的に強化される予定です。詳細は、Database 12.2が出たタイミングでお知らせします。

[Cloud] Oracle Bare Metal Cloud Services Are Now Available

原文はこちら。
https://blogs.oracle.com/cloud/entry/oracle_bare_metal_cloud_services

# このエントリは、 Don Johnson(Oracle Cloud Platformの製品開発部門VP)によるものです。

Oracle Bare Metal Cloud Servicesの一般提供(General Availability)を発表できることに非常に興奮しています。Oracle Open Worldで、業界初の最新のIaaS Platformに対する投資を発表しました。このBare Metal Cloud Servicesは最新のプラットフォーム上に構築された最初のサービスであり、世界中のお客様から多大な関心と関与をいただいています。

The latest computing infrastructure, available on-demand

これは完全に仮想化された、ハイパフォーマンスのネットワーク環境でのベアメタル・コンピュートの最初のパブリッククラウドサービスです。このBare Metal Cloud Servicesは統合されたネットワーク・ブロックストレージ、オブジェクト・ストレージ、 IDおよびアクセス管理、VPN接続、Software-defined Virtual Cloud Network (VCN) も提供します。お客様はこのVCNを使うと、セキュアでエラスティックにオンプレミスのネットワークを拡張するものとして、Bare Metal Cloud Servicesを取り扱うことができます。サービスをオンデマンドでプロビジョニングすることができますし、もちろんコンソールやAPIでも可能です。費用は使った分だけです。
このサービスは新たなPhoenix(アリゾナ)リージョンでご利用いただけます。Phoenixリージョンは3個の完全にfault-independentなアベイラビリティ・ドメイン(Availability Domains、ADs)で構成されており、AD間は1ミリ秒以下で接続されています。 この結果、お客様はパフォーマンスを犠牲にせずに、高い可用性、耐久性を持つアプリケーションをクラウドに構築することができます。
弊社のベアメタル・コンピュート・インスタンスは最も厳しいアプリケーション要件に対して理想的なインスタンスでありつつも、パフォーマンス、信頼性、およびガバナンスに関する要件を持つ様々なお客様の利用用途にも適しています。これらのユースケースを、定期的な機能追加で展開していく予定です。例えばより小さなコンピュート・リソース(VM)や負荷分散サービスだけでなく、データベースサービスやその他のリージョンへの展開などを検討しています。Oracle Bare Metal Cloud Servicesの詳細は、以下のURLをご覧ください。
Bare Metal Cloud Services
https://cloud.oracle.com/ja_JP/bare-metal(日本語)
https://cloud.oracle.com/bare-metal(英語)

Oracle offers vastly superior cloud performance, governance, and flexibility

Bare Metal Cloud Servicesは完全なオンプレミスのデータセンターをエミュレートするために構築されており、お客様が期待するオペレーションのコントロール、セキュリティ、分離、そして高性能かつ予測可能なパフォーマンスをもたらします。
  • フラットな、非ブロッキングネットワークにより、ノード間のレイテンシがたったマイクロ秒というネットワーク帯域を最大限に利用することができます。
  • より高密度のサーバやNVMeストレージにより、1個のベアメタル・インスタンスで400万IOPSをたたき出します。
  • 機能のホスト、完全に分離されたベアメタル・インスタンス、高セキュリティネットワーク、完全に仮想、物理ネットワークの分離といった機能を含むたくさんの機能により、妥協のないセキュリティを実現します。
  • カスタマイズ可能なリソースの区画化と高い柔軟性をもつアクセスコントロールにより、強力なガバナンスを実現できます。
  • 完全な柔軟性とワークロードの可搬性を担保しています。ご自身でお持ちのOS。ハイパーバイザー、スタック全体を実行することができます。

The best price performance in the market enables countless business opportunities

我々は、市場で最高の価格性能を提供するように設定しています。処理及びストレージの観点から、Oracle Bare Metal Cloud ServicesはHadoopやトランザクション処理、リアルタイム分析、3Dレンダリング、ビデオエンコーディングのようなシステム要求事項として厳しいものを求めるアプリケーションに対し、大きな価値を提供します。人工知能の会社のFalkonryのようなお客様は、より低コストで2倍のシミュレーション件数を実行できるため、結果としてよりよいサービスを提供できるようになりました。


企業向けビデオソリューション会社であるuStudioのようなパートナーは、9倍高速にHDビデオをトランスコードすることができることを証明しました。
Using Oracle’s Bare Metal for Video at uStudio
https://ustudio.com/blog/using-oracle-bare-metal-video-ustudio/ 
私たちのネットワークの価格設定は、付加価値をもたらします。例えば、アベイラビリティ・ドメイン間、アベイラビリティ・ドメイン内のトラフィックに対して課金しません。つまり、アプリケーション全てを、電源、ネットワーク、サイト障害に対する耐性をもち冗長化されている高可用性を持った環境に展開することができるのです。しかもネットワークコストのペナルティはありません。これは、高可用性を提供するCassandra Clustersのために3サイト必要とするDatastax Enterpriseのようなスケールアウト・データベースに最適です。
Run your cloud apps at any scale with DataStax Enterprise and Oracle’s Bare Metal Cloud Service
https://www.datastax.com/2016/10/cloud-apps-at-any-scale-with-dse-and-oracle-bare-metal 
当社のインフラとコスト構造を使うと、Oracle MAA(Maximum Availability Architecture / 最大可用性アーキテクチャ)のようなデータ損失ゼロ構成を全てのアプリケーションでデフォルトにすることができます。
1ヶ月あたりアウトバウンド帯域幅として10テラバイトまで無料でお使いいただけます。それ以上のトラフィックは、1ヶ月あたり$0.01/GBしか課金されません。他の大手クラウドプロバイダーよりも80%安いだけでなく、異なるビジネスモデルの足枷を外すものです。例えば、ビデオ・プロバイダーはオリジン・サーバをクラウド上に構築し、弊社のコンピュートを使ってより速くコンテンツのトランスコードを実施し、ずっと経済的にコンテンツを企業の支社・支店やCDNに提供することができます。
コンピュート、ストレージ、ネットワーク、そしてよりシンプルな価格設定に対し、よりよい価値を提供します。

Let’s get started, together


チームと私は過去数年間、このサービスに取り組んできました。皆様がこのBare Metal Cloud Servicesを試してその違いをすぐに理解されることでしょう。我々はテクノロジーに情熱をもっており、クラウドでの皆様の成功に対し強いコミットメントを持っています。このOracle Bare Metal Cloud Servicesが、最高のパフォーマンスのアプリケーションだけでなく、分離、管理、低オーバーヘッドという、ベアメタルでなければ提供できない要求事項を求める、最高に機密性の高いアプリケーションにとって切実なサービスであることを知ってもらえればと思っています。サービスについての詳細を知ったり、開始したりする場合は以下をご覧ください。
Bare Metal Cloud Services
https://cloud.oracle.com/ja_JP/bare-metal(日本語)
https://cloud.oracle.com/bare-metal(英語)
貴社担当の営業に連絡して、Bare Metal Cloud Servicesについて尋ねていただくこともできます。

2016年10月20日

[Java] Reactive Programming with JDK 9 Flow API

原文はこちら。
https://community.oracle.com/docs/DOC-1006738

リアクティブ・プログラミング(Reactive Programming)は非同期データ・アイテムのストリームを処理するものです。アプリケーションはデータ・アイテムが発生すると、そのデータ・アイテムに反応します。Rahul Srivastavaによるこの記事で、JDK 9 Flow APIを使った例をご紹介します。

What is Reactive Programming ?

Reactive Programmingとは、非同期データ項目のストリームを処理するものです。ここで、アプリケーションはデータ項目が発生するとそのデータに対応します。データストリームは基本的に時系列で発生するデータ項目の並び(シーケンス)です。このモデルは、データをストリームとして処理するため、インメモリデータの反復処理と比較するとメモリ効率がよいものです。

Reactive Programmingモデルでは、Publisher(パブリッシャ)とSubscriber(サブスクライバ)が存在します。Publisherはデータストリームを発行(publish)し、Subscriberは非同期で当該データストリームを購読(subscribe)します。

このモデルは、Processorを使ってストリーム上で動作するより高い高階関数を提供するメカニズムも提供します。Processorはデータストリームを変換します。この際、PublisherやSubscriberを変更する必要はありません。Processor (もしくはProcessorのチェーン)はPublisherとSubscriberの間に位置し、データストリームを次々変換します。PublisherとSubscriberはデータストリームに発生する変換とは無関係です。


Why Reactive Programming ?

  • よりシンプルなコードで、より可読性が高い
  • ボイラープレートを取り除き、ビジネスロジックに集中できる
  • 低レベルのスレッド、同期、並行性の問題を取り除くことができる
  • ストリーム処理はメモリ効率がよい
  • このモデルを適用すると、ほとんど全ての種類の問題を解決することができる

JDK 9 Flow API

JDK 9のFlow APIはデファクトスタンダードのReactive Streams Specificationに対応します。Reactive Streams SpecificationはReactive Programmingを標準化するイニシアティブの一つです。
Reactive Streams Specification
http://www.reactive-streams.org/ 
既にいくつかの実装がReactive Streams Specificationをサポートしています。
Reactive Streams 1.0.0 is here!
http://www.reactive-streams.org/announce-1.0.0 



Flow API Interfaces

@FunctionalInterface  
public static interface Flow.Publisher<T> { 
    public void    subscribe(Flow.Subscriber<? super T> subscriber); 
}  
 
public static interface Flow.Subscriber<T> { 
    public void    onSubscribe(Flow.Subscription subscription); 
    public void    onNext(T item) ; 
    public void    onError(Throwable throwable) ; 
    public void    onComplete() ; 
}  
 
public static interface Flow.Subscription { 
    public void    request(long n); 
    public void    cancel() ; 
}  
 
public static interface Flow.Processor<T,R>  extends Flow.Subscriber<T>, Flow.Publisher<R> { 
} 
Flow API (とReactive Streams API)は、ある点では、Iteretor(イテレータ)やObserver(オブザーバ)パターンからのアイデアの組み合わせです。Iteretorは、アプリケーションがソースからアイテムを引っ張るというプル・モデルです。Observerは、ソースからの項目をアプリケーションにプッシュするプッシュ・モデルです。Flow APIを使うと、アプリケーションは最初にN個の項目を要求し、その後Publisherは最大でN
個の項目をSubscriberにプッシュします。それゆえ、PullプログラミングモデルとPushプログラミングモデルの組合せなのです。

The Subscriber

SubscriberはコールバックのためにPublisherを購読します。データ項目はリクエストがない限りSubscriberにプッシュされませんが、複数の項目がリクエストされる可能性があります。指定されたSubscriptionに対するSubscriberのメソッド呼び出しは厳密に順序付けされます。アプリケーションは、Subscriberが利用可能な、以下のコールバックに反応することができます。
コールバック(Callback) 説明
onSubscribe 指定されたSubscriptionのための、任意の他のSubscriberメソッドを呼び出す前に呼び出されるメソッド
onNext Subscriptionの次の項目を伴って呼び出されるメソッド
onError PublisherもしくはSubscriptionによってリカバリできないエラーが発生したときに呼び出されるメソッド。その後、Subscriptionは他のSubscriberメソッドを呼び出さない。
PublisherがSubscriberにデータ項目を発行できないというエラーに遭遇した場合、SubscriberはonErrorを受け取り、その後それ以上のメッセージを受信しない。
onComplete エラーによって未終了のSubscriptionのために追加のSubscriberメソッド呼び出しが発生しないことがわかっている場合に呼び出されるメソッド。このあと、別のSubscriberメソッドはSubscriptionから呼び出されることはない。
後続のメッセージがSubscriberに発行されないことがわかっている場合、SubscriberはonCompleteを受け取る。

Subscriberのサンプル
import java.util.concurrent.Flow.*; 
... 
 
public class MySubscriber<T> implements Subscriber<T> { 
  private Subscription subscription; 
 
  @Override 
  public void onSubscribe(Subscription subscription) { 
    this.subscription = subscription; 
    subscription.request(1); //a value of  Long.MAX_VALUE may be considered as effectively unbounded 
  } 
 
  @Override 
  public void onNext(T item) { 
    System.out.println("Got : " + item); 
    subscription.request(1); //a value of  Long.MAX_VALUE may be considered as effectively unbounded 
  } 
 
  @Override 
  public void onError(Throwable t) { 
    t.printStackTrace(); 
  } 
 
  @Override 
  public void onComplete() { 
    System.out.println("Done"); 
  } 
} 

The Publisher

Publisherはデータ項目のストリームを登録されたSubscriberに発行(publish)します。Publisherは通常はExecutorを使って、データ項目をSubscriberに非同期で発行します。Publisherは各SubscriptionのSubscriberのメソッド呼び出しの厳密な順序付けを保証します。

JDKのSubmissionPublisherを使ってデータ項目のストリームをSubscriberに発行する例
import java.util.concurrent.SubmissionPublisher; 
... 
    //Create Publisher 
    SubmissionPublisher<String> publisher = new SubmissionPublisher<>(); 
 
    //Register Subscriber 
    MySubscriber<String> subscriber = new MySubscriber<>(); 
    publisher.subscribe(subscriber); 
 
    //Publish items 
    System.out.println("Publishing Items...");
    String[] items={"1", "x", "2", "x", "3", "x"};
    Arrays.asList(items).stream().forEach(i -> publisher.submit(i));  
    publisher.close();  

The Subscription

Flow.PublisherとFlow.Subscriberをリンクします。Subscriberは要求された場合のみデータ項目を受信します。Subscriptionを介していつでもキャンセルすることができます。
メソッド(Method) 説明
request このsubscriptionに対する現在の満たされていない要求に対して、指定されたn件の項目を追加する
cancel (最終的に)Subscriberにメッセージの受信を停止させる

The Processor

SubscriberとPublisherの両方として機能するコンポーネントです。Processorは、PublisherとSubscriberの間に位置し、ストリームを次々と変換します。一つ以上のProcessorが互いに繋がることができます。チェーンの最後のProcessorの結果がSubscriberによって処理されます。JDKは具体的なProcessorを提供しませんので、必要となる任意のProcessorの実装は個々人に任されています。

StringをIntegerに変換するProcessorのサンプル
import java.util.concurrent.Flow.*; 
import java.util.concurrent.SubmissionPublisher; 
... 
 
public class MyTransformProcessor<T,R> extends SubmissionPublisher<R> implements Processor<T, R> { 
 
  private Function function; 
  private Subscription subscription; 
 
  public MyTransformProcessor(Function<? super T, ? extends R> function) { 
    super(); 
    this.function = function; 
  } 
 
  @Override 
  public void onSubscribe(Subscription subscription) { 
    this.subscription = subscription; 
    subscription.request(1); 
  } 
 
  @Override 
  public void onNext(T item) { 
    submit((R) function.apply(item)); 
    subscription.request(1); 
  } 
 
  @Override 
  public void onError(Throwable t) { 
    t.printStackTrace(); 
  } 
 
  @Override 
  public void onComplete() { 
    close(); 
  } 
} 
Processorを使ってデータストリームを変換するコードのサンプル
import java.util.concurrent.SubmissionPublisher; 
... 
 
    //Create Publisher 
    SubmissionPublisher<String> publisher = new SubmissionPublisher<>(); 
 
    //Create Processor and Subscriber 
    MyFilterProcessor<String, String> filterProcessor = new MyFilterProcessor<>(s -> s.equals("x")); 
 
    MyTransformProcessor<String, Integer> transformProcessor = new MyTransformProcessor<>(s -> Integer.parseInt(s)); 
 
    MySubscriber<Integer> subscriber = new MySubscriber<>(); 
 
    //Chain Processor and Subscriber 
    publisher.subscribe(filterProcessor); 
    filterProcessor.subscribe(transformProcessor); 
    transformProcessor.subscribe(subscriber); 
 
    System.out.println("Publishing Items..."); 
    String[] items = {"1", "x", "2", "x", "3", "x"}; 
    Arrays.asList(items).stream().forEach(i -> publisher.submit(i)); 
    publisher.close(); 

Back pressure

Subscriberが消費するペースよりもはるかに速いペースでPublisherがデータ項目を生成している場合に、Back Pressure(背圧)がかかります。
Back-Pressure
http://www.reactivemanifesto.org/glossary#Back-Pressure
未処理のデータ項目がバッファリングされているバッファサイズが制限されることがあります。Flow APIは、Back Pressureを合図したり、対処したりするようなAPIを提供しませんが、Back Pressureを処理する実装する上では様々な戦略が考えられます。RxJavaでのBack Pressureの処理方法を確認してください。

Summary

Reactive Programming APIがJDK 9に加わるのは幸先がよいことです。他の多くの製品は製品機能にアクセスするためのReactive Programming APIも提供しています。Flow APIを使うと、プログラマーはリアクティブなプログラムを書き始めることができますが、エコシステムがもっと進化する必要があります。

例えば、リアクティブ・プログラムであってもやはり最終的には、これまでのAPIを使ってデータベースにアクセスする可能性があります。というのも、全てのデータベースがReactive ProgrammingのAPIをサポートしているわけではないからです。つまり、リアクティブ・プログラムが依存するAPIが、リアクティブ・プログラミング・モデルをまだサポートしていない可能性がある、ということです。

References

About the Author

Rahul Srivastavaは以前ApacheでXerces2-Jプロジェクトのコミッタをつとめていました。現在はOracleのApplication Server開発チームの技術スタッフの主要メンバーです。

[FMW] Oracle Fusion Middleware 12cR2 (12.2.1.2.0) がリリースされました

US時間2016年10月19日、Oracle Fusion Middleware 12c Release 2 (12.2.1.2.0) がリリースされました。
12.2.1.1のリリースからおよそ4ヶ月でのリリースです。例によって、OTN、OSDC (Oracle Software Delivery Cloud、旧E-Delivery)、My Oracle Supportからダウンロードいただけるようになっています。
Software Downloads
http://www.oracle.com/technetwork/indexes/downloads/index.html
Oracle Software Delivery Cloud
https://edelivery.oracle.com/
My Oracle Support
https://support.oracle.com/
製品稼働にあたって動作保証されているOS、JDK、データベースなども少々変更がありますので、ご注意ください。これまでお伝えしていませんでしたが、SOA SuiteなどのUpper Stackと呼ばれる製品のリポジトリは、12.2.1以後、Oracle Databaseだけではなく、Microsoft SQL Server、IBM DB2もリポジトリとして利用可能なデータベース(Repository Creation Utilityでリポジトリを作成する対象のデータベース)に追加されています(12.1.3では、Upper Stackのためのリポジトリを作成可能なデータベースはOracle Databaseのみでした)。
RCUのスクリーンショットを確認すると、データベースタイプを選択できることがわかります。ただ、このスクリーンショットではMySQLが含まれていますが、MySQLはOracle Data Integratorのリポジトリを作成する場合のみ利用できますので、ご注意ください。

ドキュメントも12.2.1.2版がご覧いただけますので、ご利用ください。
Oracle Fusion Middleware Documentation
http://docs.oracle.com/en/middleware/middleware.html
いろいろ機能追加や修正が含まれていますが、それらについては、ちょびちょび記載したり、エントリをご紹介したりしていきます。おそらくびっくりされるのは、あれじゃないかな、と思いますが、それはまた今度。

2016年10月19日

[Java, Security] JDK 8u111, 8u112, 7u121, and 6u131 Released!

原文はこちら。
https://blogs.oracle.com/thejavatutorials/entry/jdk_8u111_8u112_7u121_and

JDK 8u111、8u112、7u121、6u131がご利用頂けるようになりました。最新のJDKリリースは以下のページからダウンロードできます(7u121、6u131はサポート契約者のみMy Oracle Supportからダウンロードできます)。
Java SE Downloads
https://www.oracle.com/technetwork/java/javase/downloads/index.html
これらのリリースに含まれる機能や修正の情報は、以下の各リリースのリリースノートをご覧ください。
JDK 8u111では、JDK 8u111 for ARMもリリースされています。この製品の情報は以下のリリースノートをご覧ください。
Java™ Development Kit for ARM Release Notes 8 Update 111
http://www.oracle.com/technetwork/java/javase/8u111-arm-relnotes-3125005.html

[Java, Security] Oracle JRE will no longer trust MD5-signed code by default

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

2017年4月のCritical Patch Updateから、MD5を使って署名されたJARファイルを、Oracle JREは署名されたものとみなさないようになります。影響を受ける、MD5で署名されたJARは信頼されなくなり、その結果、例えばJavaアプレットやJava Web Startアプリケーションなどの場合デフォルトでは実行できなくなります。
MD5はもはやセキュアではなく、セキュリティ用途では適切でない、と幅広く考えられているため、JREの挙動に関する今回の変更は必要とされています。実際のところ、MD5 with RSAアルゴリズムは2006年のJaav SE 6でデフォルトのJAR署名オプションではなくなりました。アルゴリズムが提供する検証メカニズムで信頼を維持する場合、当該アルゴリズムが弱いと知られたらMD5のような弱いハッシュアルゴリズムを非推奨にすることが重要です。
MD5署名済みJARが影響を受けるこの変更は、2017年1月のCritical Patch Updateでリリース予定のOracle Java SE 8u121と同時にデフォルトで有効になります。サポート契約をお持ちのお客様がMy Oracle Supportを通じて入手可能なOracle Java SE 7、Oracle Java SE 6、Oracle JRockit R28についても、このタイミングに合わせて同様の変更が適用されます。
来る変更に備えるために、開発者は自身が作成したJARファイルがMD5で署名していないことを確認する必要があります。ビルドプロセスがJava 6以後を使って、意図的にMD5を選択せずにJARファイルを署名していることを検証することによって、自身のJARファイルがMD5を使っていないことを確認できます。署名していないJARファイルや自身で作成したものではないJARファイルを使っている場合、ベンダーに詳細情報を問い合わせる必要があります。利用しているJARファイルがMD5で署名されているかどうかを確認できない場合、問題のJARファイルをよりモダンなアルゴリズムを使って再署名することを推奨します。その際、再署名する前にまず既存のMD5署名を削除するようにしてください。Zipユーティリティで以下のように実行すれば削除できます。
zip -d test.jar 'META-INF/*.SF' 'META-INF/*.RSA' 'META-INF/*.DSA'
技術的な情報の詳細は2016年10月のCritical Patch Updateの、Java SE向けRelease Noteをご覧ください。
Oracleは既にソースライセンシーを含む数多くのソフトウェアベンダーに対してこの将来の変更をお知らせしています。3rdパーティ製のアプリケーションにおいてこの変更が及ぼす影響について懸念される方は、各ベンダーにお問い合わせください。

暗号 (cryptography) はダイナミックな分野です。この分野における今度の変更をユーザーや開発者にお知らせし続けるために、Oracleは最近新しいWebページを作成し発行しました。
Oracle JRE and JDK Cryptographic Roadmap
https://www.java.com/cryptoroadmap
このページでは来るOracle JREおよびOracle JDKでの暗号に関する変更の情報ならびに関連する技術的な取り扱い説明を提供しています。

2016年10月18日

[Database] Optimizer Adaptive Features in the Exadata Express Cloud Service

原文はこちら。
https://blogs.oracle.com/optimizer/entry/optimizer_adaptive_features_in_the

Introduction

Exadata Express Cloud Service (Oracle Database 12c Release 2) では、オプティマイザのアダプティブ機能を管理・制御できるように変更されました。このエントリでは、変更点と利用すべき設定の選択方法をご紹介します。

What’s Changed

Oracle Database 12c Release 1では、データベースのパラメータ optimizer_adaptive_features で、アダプティブ機能の全てを以下のように管理・制御しています。


Oracle Database 12c Release 2では、このパラメータが廃止され、新たな2個のパラメータに置き換わりました。下図のように、Adaptive Plan(適応計画)とAdaptive Statistics(適応統計)を別々に管理・制御します。


What are the Optimizer Adaptive Features?

適応計画と適応統計は、数多くあるオプティマイザ機能の包括的な用語です。

デフォルトで有効化されている機能
optimizer_adaptive_plans
(デフォルト:
 TRUE)
Description
ネステッド・ループ/ハッシュ結合の選択 オプティマイザがクエリ実行時にネステッド・ループかハッシュ結合を選択する
適応的なパラレル配分方法 パラレル配分方法を実行時に決定する
スター型変換ビットマップ・プルーニング 見積よりも選択性が非常に悪い場合、実行時にビットマップ・インデックスをSQL実行計画から削除する

デフォルトで無効化されている機能
optimizer_adaptive_statistics(デフォルト:FALSE)
Description
SQL計画ディレクティブ SQL計画ディレクティブを作成し、SQL実行計画に適用する
結合のための統計フィードバック 表結合からのカーディなりティを使ってSQL実行計画を改善する
パフォーマンス・フィードバック PARALLEL_DEGREE_POLICY を ADAPTIVE に設定した場合、選択された並列度を改善する
並列実行のための適応的な動的サンプリング 動的統計を特定の並列クエリのために収集し、カーディなりティの見積を改善する。サンプルサイズは自動的に決定される。

SQL Plan Directives

optimizer_adaptive_statistics をFALSEに設定すると、SQLプラン・ディレクティブの作成は無効にはなりませんが、その代わりにSQL実行計画に影響を与える動的統計に関連して利用されないようにします。

Statistics Feedback

optimizer_adaptive_statistics を FALSE に設定すると、結合のためのOracle Database 12c の統計フィードバックが無効化されます。単一表カーディなりティのための統計フィードバック(カーディナリティ・フィードバックとしてOracle Database 11gで導入されました)は常に有効であることにご注意ください。

Adaptive Dynamic Sampling

optimizer_adaptive_statistics を TRUE に設定すると、optimizer_dynamic_sampling がデフォルト値の2の場合、適応サンプルサイズを使う動的統計はある並列クエリを呼び出します。
Oracle® Databaseリファレンス 12cリリース1 (12.1)
OPTIMIZER_DYNAMIC_SAMPLING
http://docs.oracle.com/cd/E57425_01/121/REFRN/GUID-43655FC3-3C32-486B-8B11-8C20C152618D.htm
Oracle® Database Reference 12c Release 1 (12.1)
OPTIMIZER_DYNAMIC_SAMPLING
https://docs.oracle.com/database/121/REFRN/GUID-43655FC3-3C32-486B-8B11-8C20C152618D.htm#REFRN10140
optimizer_adaptive_statistics を FALSE に設定すると、並列クエリによって適応的な動的サンプリングは開始されません。

Changes to Auto Creation of Column Group Statistics

Oracle Database 12c Release 1では、SQL計画ディレクティブ(SQL Plan Directives)は、統計を収集する際に列グループ統計を呼び出します。以下のようなクエリを使って、自動的に作成された拡張統計を確認することができます。
select owner, table_name, extension, extension_name 
  from dba_stat_extensions 
 where creator = 'SYSTEM' 
 order by owner, table_name, extension_name;
DBAがこの機能を管理・制御できるようにしたいとのフィードバックをもらったので、Oracle Database 12c Release 2では、自動列グループ統計の作成は DBMS_STATSのプリファレンスAUTO_STAT_EXTENSIONSによって制御されます。デフォルトでは、プリファレンスはOFFであり、拡張統計は自動的には作成されません。この機能を再度有効化するには、以下のプロシージャを発行します。
EXEC DBMS_STATS.SET_GLOBAL_PREFS('AUTO_STAT_EXTENSIONS','ON')

Choosing What Settings to Use

デフォルトは幅広いワークロードに対して最適な設定が選択されていますので、ほとんどのシステムではこのデフォルト設定を使うことを推奨します。既にOracle Database 12c Release 1の全ての適応機能を使っており、Exadata Express Cloud Serviceでも同じ設定にしたい場合には、optimizer_adaptive_statistics をTRUEに設定し、プリファレンスAUTO_STAT_EXTENSIONS をONにすることにより、デフォルト値をオーバーライドしてください。

適応計画についてお客様から非常に肯定的なフィードバックをもらっています。非常に幅広いワークロードに対しシステムパフォーマンスを向上させる上でとても有効であることがわかりました。還元すれば、実行時に実行計画を適応することは、あらゆるシステムにとってメリットがありそうです。そのため、optimizer_adaptive_plans のデフォルト値をTRUEに設定することにしました。もちろん、最初から使いたくない場合には、パラメータをFALSEに設定することができます。

適応統計機能はクエリ、データ分布、スキーマが非常に複雑な環境ではより一層有用です。クエリ実行時間がより長くなるこのようなシステムでは、オプティマイザが時間やリソースを投入して実行計画の全体的な質を改善することは特に理に適っています。このような環境では、 optimizer_adaptive_statistics というパラメータをTRUE に設定することできます。

Conclusion

Oracleはアダプティブ機能を管理・制御するように改善を施しました。もっと情報が欲しい場合には、特に現在Oracle Database 12c Release 1を利用中もしくは12c Release 1にアップグレードしている場合は、以下のエントリをご覧ください。
OOW 2016 Update
https://blogs.oracle.com/optimizer/entry/oow_2016_update 
アダプティブ機能に関する詳細は、Oracle Database 12c Release 1のホワイトペーパーをご覧ください。アップデート版はまもなくリリースされます。
Optimizer with Oracle Database 12c(英語)
http://www.oracle.com/technetwork/database/bi-datawarehousing/twp-optimizer-with-oracledb-12c-1963236.pdf
Oracle Database 12cのオプティマイザ(日本語)
http://www.oracle.com/technetwork/jp/database/bi-datawarehousing/twp-optimizer-with-oracledb-12c-1963236-ja.pdf 

2016年10月14日

[Java] JDK 9 Language, Tooling and Library Features

原文はこちら。
https://blogs.oracle.com/java/jdk-9-language-tooling-libraries

JDK 9の主要な新機能であるモジュール (Modularity) のほかに、言語、ツール、ライブラリに対する変更がJDK 9で導入される予定です。Modularityに比べれば小さいけれどもJava SE Platformにとっては重要な変更について、JDKエンジニアであるJoe Darcyが、「JDK 9 language, tooling and library features」というタイトルでJavaOneで講演しました。
JDK 9 Language, Tooling, and Library Features [CON2497]
Joe Darcy, JDK Engineer, Oracle
https://events.rainfocus.com/scripts/catalog/oow16.jsp?search=CON2497&search.event=javaone
彼の1時間のプレゼンテーションで変更点の説明にたどり着きやすくするため、プレゼンテーションをブレイクダウンしてリンクをまとめました。

2016年10月13日

[WebCenter, Cloud] Oracle Sites Cloud Service: Getting Started with Custom Components

原文はこちら。
https://blogs.oracle.com/webcenter/entry/oracle_sites_cloud_service_getting

# 著者はIgor Polyakov (Senior Principal Product Manager, Oracle) です。

この9ステップのチュートリアルでは、シンプルなOracle Sites Cloud Service (SCS) コンポーネントを作成する方法を学びます。このコンポーネントは、要素<div> を属性"contenteditable"とともに使って、エンドユーザーがページ内に独自のテキストを入力し、コンポーネントに保存できるようにします。この中で、コンポーネント作成時に入手する事前定義済みファイルを変換し、自身の実装に入れる方法を紹介しています。この意図は、事前定義済みのファイルの中でどれが必須でどれが任意選択可能なものかを説明することにあります。コンポーネント作成時に、そのままで利用可能な事前定義済みのファイルを入手します。この事前構成済みのコードは、製品のほとんどのコンポーネントの機能をカバーしています。SCSのドキュメント「Tutorial: Developing Components with Knockout」では全てのコンポーネントを組み合わせる方法を説明しています。
Oracle® Cloud Developing for Oracle Sites Cloud Service
Tutorial: Developing Components with Knockout
http://docs.oracle.com/cloud/latest/sitescs_gs/SCSDV/GUID-D7A70996-FE39-4F8F-931B-28F459CC0F35.htm#SCSDV-GUID-D7A70996-FE39-4F8F-931B-28F459CC0F35
このチュートリアルでは、事前構成済みのコードを変更してカスタムコンポーネントを作成する方法、そして標準のチュートリアルでは取り上げていない別の特徴をも取り上げています。例えば…
  • コンポーネントのViewModeを基にした異なるテンプレートを提供する方法
  • 設定パネルからではなく、コンポーネントからのデータを保存する
  • ページのUndo/Redoイベントとの統合
[注意]
このサンプルは、汎用SCSカスタムコンポーネントを構成する様々な要素を説明することを目的にしているため、このまま利用して本番環境で利用するコンポーネントとして使うことはご遠慮ください。 


Step 1: Create New Component

この手順を実施すると、すぐにページに配置可能なSites Cloud Serviceを使うコンポーネントを作成することができます。これは新しいコンポーネントを作成するスタート地点です。

ローカルコンポーネントを作成するには
  1. [サイト]>[コンポーネント]へ移動
    (注意)16.4.1ではサイトをExperienceと読み替えてください。
  2. [作成]>[ローカルコンポーネントの作成]
  3. コンポーネント名を指定(例:BasicTextEditor)。コンポーネントの説明は任意。
  4. [作成]をクリックして新規コンポーネントを作成



Checkpoint 1
コンポーネントを無事に作成できると、コンポーネント・カタログおよび、作成した任意のサイトで[追加]>[カスタム・コンポーネント・パレット]でこのコンポーネントを確認できるはずです。以下の手順を使ってコンポーネント作成の検証をしてください。
  1. 任意の事前構成済みの新規サイトを作成する。今回は”StarterTemplate”というテンプレートを使って、”ComponentTest”というサイトを作成する。
  2. [編集]オプションを選択してSite Builderで開き、サイトのアップデートを作成する。
  3. 作成したサイト内のページを編集する。
  4. 左側の"+" ボタン(追加)をクリックして、カスタムコンポーネントのリストのために[カスタム]を選択する

  5. "BasicTextEditor" をカスタム・コンポーネント・パレットから選択し、ページに配置する。作成したローカル・コンポーネントのデフォルト描画を確認できるはず。
  6. 配置したコンポーネントのバナーで、コンテキスト・メニューを選択する。
  7. ドロップダウン・メニューから[設定]を選択する。設定を変更すると、事前構成済みコンポーネントの描画が変わる様子を確認することができる。
Step 2から9までを確認したい方は、こちらからどうぞ。

2016年10月6日

[EM] Enterprise Manager 13.2 Now Available

原文はこちら。
https://blogs.oracle.com/oem/entry/enterprise_manager_13_2_now

Oracle Enterprise Manager Cloud Control 13c Release 2 (13.2) がご利用いただけるようになりました。このリリースはOracleのオンプレミスシステム管理プラットフォームの継続進化における重要なマイルストンと位置づけられており、ご利用のお客様がオンプレミスのデータセンターやOracle CloudにあるOracleスタックを管理を1箇所で実現します。Oracleの製品スタックとの緊密な統合により、Oracle Enterprise Managerは、市場をリードする管理機能や自動化機能をOracleアプリケーション、データベース、ミドルウェア、ハードウェア、Engineered Systemsに対して提供します。
このリリースのトピックを以下に列挙します(これだけではありません)。
  • よりセキュアかつスケーラブルに管理
    TLS 1.2およびIPv6プロトコルをサポート
  • Engineered Systemsやインフラストラクチャの管理性向上
    Exadata X6-2、X6-8、OracleVM 3.4、ASRの統合および、標準でのSolaris Complianceチェックをサポート
  • 改善されたハイブリッド・クラウド管理
    パブリック・クラウド・サービス(DBCS、JCS)のアセット発見を自動化、JCS-VI用やSOACS環境のFusion Middlewareをサポート
さらに、このリリースにはOracleエコシステムを管理・監視するための重要な修正が含まれています。
このリリースの詳細はOTNのページをご覧ください。
Oracle Enterprise Manager
http://www.oracle.com/technetwork/oem/enterprise-manager/overview/index.html
追加リソースもチェックしてください。最新のバイナリは以下のURLからダウンロードできます。
Oracle Enterprise Manager Downloads
http://www.oracle.com/technetwork/oem/enterprise-manager/downloads/index.html

2016年10月4日

[Applications] Microsoft Edge Certified with EBS 12.1 and 12.2

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

Microsoft Edgeが新たにOracle E-Business Suite 12.1および12.2で動作保証されたブラウザとして追加されたことを発表できうれしく思っています。
Microsoft Edge Browser
https://www.microsoft.com/en-us/windows/microsoft-edge
Microsoft Edgeを使って、OAフレームワーク(OAF)を使うOracle E-Business SuiteのWebベースのHTML製品である、E-Business Suite Self-Service Web Applications (SSWA) を利用することができます。

EBS Prerequisites for Edge (Edge利用にあたっての前提条件)

EdgeでE-Business Suite 12.1/12.2を利用するにあたって、クライアント側でのパッチ適用は必要ありませんが、E-Business Suiteサーバのパッチ適用が必要です。詳細は以下のSupportドキュメントをご覧ください。
Recommended Browsers for Oracle E-Business Suite Release 12 (Note 389422.1)
https://support.oracle.com/rs?type=doc&id=389422.1

Can EBS Forms run in Edge? (EBSのFormsはEdgeで動作するか)

いいえ。Microsoft Edgeはプラグインをサポートしません。詳細は以下のMicrosoft EdgeのFAQページをご覧ください。
Frequently Asked Questions - Microsoft Edge Development(英語)
https://developer.microsoft.com/en-us/microsoft-edge/platform/faq/
E-Business SuiteのFormsベースの製品ではJava JREが必須ですが、Edgeはプラグインをサポートしないため、Java JREプラグインはこのブラウザでは動作しません。
Oracle Formsを使うE-Business Suite製品は、WindowsデスクトップのInternet Explorer 11およびFirefox ESR、MacデスクトップクライアントのSafariで動作します。

What about Java Web Start? (Java Web Startはどうなの)

Java Web Startを使ってE-Business Suite Formsベースの製品を使ったプロトタイプをテストしています。このテストが完了すれば、Edgeのようなブラウザを使う場合でもFormsベースの製品を実行できることでしょう。詳細は以下のエントリをご覧ください。
Do E-Business Suite Users Need to Worry About Java 9?
https://blogs.oracle.com/stevenChan/entry/jre_ebs_directions
https://orablogs-jp.blogspot.jp/2016/02/do-e-business-suite-users-need-to-worry.html
この検証作業はうまくいっており、現在セキュリティおよびUIの問題の解決に取り組んでいます。利用できるようになったら速やかにこのブログでアップデートを投稿する予定です。

Does Edge work with EBS 11i or 12.0? (EBS 11iや12.0でEdgeが使えるか)

いいえ。既存のE-Business Suite 11iや12.0のパッチをダウンロードすることはできますが、これらのE-Business Suiteのリリースは現在Sustaining Supportフェーズにありますので、新たに動作検証、動作保証を追加することはありません。
E-Business Suite 11iや12.0を使っている場合、エンドユーザーは引き続きInternet Explorer 11、Firefox ESR、もしくはSafariを使う必要があります。

Related Articles

(免責事項)上記の事項は、弊社の一般的な製品の方向性に関する概要を説明するものです。また、情報提供を唯一の目的とするものであり、いかなる契約にも組み込むことはできません。上記の事項は、マテリアルやコード、機能を提供することをコミットメント(確約)するものではないため、購買決定を行う際の判断材料になさらないで下さい。オラクル製品に関して記載されている機能の開発、リリースおよび時期については、弊社の裁量により決定されます。

[Java] NetBeans Profiler 8.2 Released

原文はこちら。
https://blogs.oracle.com/nbprofiler/entry/netbeans_profiler_8_2_released

NetBeans IDE 8.2がリリースされました。
NetBeans
http://www.netbeans.org/
このリリースには改良されたJavaプロファイラが搭載されています。このプロファイラには、新しいSQLクエリモード、結果のカラーリング機能が含まれ、および暗いUIテーマを完全サポートしています。


SQLクエリプロファイラは、JavaプロセスがJDBC APIを使って実行した全てのSQLクエリを表示します。ターゲットのデータベースは問いません。各クエリについて、呼び出し回数、トータルの実行時間を表示するだけでなく、呼び出しのツリーも表示します。詳細なフィルタリング機能を利用すると、収集した結果を処理することができます。詳細は以下のWikiをご覧ください。
Profiling SQL Queries
http://wiki.netbeans.org/ProfilerSqlQueries


ユーザー定義フィルタを基にして異なる色を使って、プロファイラの結果を表示することができます。これはSQL呼び出しツリーで特に有用ですが、全てのプロファイラ・ビューで有効です。


グラフや結果の表が含まれるプロファイラのUIは、完全にNetBeansの暗色のテーマをサポートします。プロファイラの詳細、NetBeansのダウンロードは以下のURLからどうぞ。
NetBeans Profiler
http://profiler.netbeans.org
Profiler - NetBeans Wiki
http://wiki.netbeans.org/Profiler
NetBeans IDE 8.2 ダウンロード
https://netbeans.org/downloads/