[WLS, FMW] WebLogic Server 12.1.3 on JDK 8

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

WebLogic Server 12.1.3がJava SE 8での動作検証が済み、動作が保証されました。2年ほど前にこの検証をはじめましたが、製品コードだけでなく、バイトコード操作のためのASM、Java開発ツールのEclipseといった様々な3rdパーティツールにも変更が必要でした。Windows、Linux、Solarisの64bitプラットフォームで、HotSpot JDK8 Update 20以降の組み合わせでサポートされます。あなたはのMaxPermSizeをコマンドラインで正しく設定しなければならない時代は終わりました(JDK8が無視します)。この動作認定は、WebLogic Server固有のものであって、特に明記しない限り、他のOracleソフトウェアは対象ではありません。

新しいJava SE 8の機能をこのエントリですべて記述しません(知りたい方は以下のリンクをどうぞ)が、これからは人気のある機能、具体的にはLamda式や、JSPを含む、アプリケーションのデフォルトメソッドといったものが使えるようになります。
What's New in JDK 8
http://www.oracle.com/technetwork/java/javase/8-whats-new-2157071.html
Lambda式を使った簡単なサーブレットのサンプルを以下につけておきます。

Java SE 8には、新しいJDBC 4.2のAPIがあり、JDBC 4.2をサポートするJDBCドライバは、Java SE 8上で動作するWebLogic Server 12.1.3でサポートします。WebLogic Server 12.1.3に同梱されているDerby 10.10ドライバはJDBC 4.2でテストしています(詳細は以下をどうぞ)。
JDBC 4.2-only features
http://db.apache.org/derby/docs/10.10/ref/rrefjdbc4_2summary.html
ベンダーインターフェースのAPIがアプリケーションに対して透過的に見えるよう、WebLogic ServerデータソースはDynamic Proxyを使います。JDK8の新しいデフォルトメソッドとDynamic Proxyの組み合わせによって、WebLogic ServerがJDBC 4,2をサポートする上で変更は不要でした。すべては、JVMとベンダーのJDBCドライバで行われます。今後、JDBC4.2に関する詳細情報を別のエントリでご紹介する予定です。.

統合が必要な領域は、Java EE Concurrency Features(JSR 236)、Java SEでのfork/joinとparallel streams機能です。現時点で、WebLogic Server 12.1.3はfork/joinやparallel streams機能を使うアプリケーションをサポートしないため、WebLogic Serverアプリケーションをビルドする際にはこれらの機能を使わないようにしなければなりません。この制限の理由は、 fork/joinスレッドプールが使うスレッドがWebLogic Serverが管理対象とするスレッドでないからです。セキュリティやトランザクションステートを含め、スレッドの状態が適切に作成されない可能性があるため、これらのスレッドで実行されるワークはすべて、WebLogic ServerやJava EEのファシリティを利用できない可能性があります。さらに、おそらく過度にスレッドを使用するため、これらのスレッドは、WebLogic Serverワークマネージャのスレッド管理機能によって制御されることはありません。
JDK8では数多くのセキュリティ面で機能強化が図られました。無制限強度の新しいJava暗号化拡張ポリシーJCEポリシー・プラットフォーム(Unlimited Strength Java(TM) Cryptography Extension Policy Files for the Java(TM) Platform, Standard Edition Runtime Environment 8)をインストールする必要があるかもしれませんが、JDK8用のJCE Unlimited Strength Jurisdiction Policy Filesは以下からダウンロードできます。
Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files 8 Download
http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html
開発に際してJDK8の機能を利用したい場合、お気に入りのIDEの最新版にアップグレードしたくなるかもしれません。一般的に、多くのツールがすでにJDK8をサポートするようになっていますが、jarjar(ASM 4の組込み版で、JDK8では動作しません)だけが、まだアップデートされていません。Java 8はEclipse Keplerのアップデート、Eclipse Luna(4.4)で利用いただけます。OracleはOEPEとして知られているOracle Enterprise Pack for Eclipse(12.1.3.1.1、現在12.1.3.2)を出荷していますが、これはLunaをベースとしており、JDK7、JDK8をサポートしています。詳細は以下のリンクをどうぞ。
Oracle Enterprise Pack for Eclipse (12.1.3.2)
http://www.oracle.com/technetwork/developer-tools/eclipse/downloads/index.html)
Oracle製品の開発でEclipseをお使いになる場合、「Oracleのミドルウェア、モバイル、データベースおよびクラウド·プラットフォームを活用できる、Eclipseの開発者のための比類のないデベロッパー・エクスペリエンス」のために、OEPEをお試しください。

WebLogic Server 12.1.3のドキュメントのWhat’s NewにJDK8サポートに関する詳細情報が記載されました。
What's New in Oracle WebLogic Server
Supported Configurations
http://docs.oracle.com/middleware/1213/wls/NOTES/index.html#NOTES193
最新のHotSpot SE 8 JVMをダウンロードし、新機能を試してみてください。

Calculator.java servlet:
import java.io.IOException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.Servlet;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet(
  name = "Calculator",
  urlPatterns = "/calculator"
)
public class Calculator extends HttpServlet implements Servlet {
  protected void doGet(HttpServletRequest request,
  HttpServletResponse response) throws ServletException, IOException {
    doPost(request, response);
  }

  protected void doPost(HttpServletRequest request,
  HttpServletResponse response) throws ServletException, IOException {
    Integer number1 = Integer.valueOf(request.getParameter("number1"));
    Integer number2 = Integer.valueOf(request.getParameter("number2"));
    String operator = request.getParameter("operator");

    Calculator myCalc = new Calculator();
    IntegerMath multiplication = (num1, num2) -> num1 * num2;
    IntegerMath division = (num1, num2) -> num1 / num2;
    IntegerMath addition = (num1, num2) -> num1 + num2;
    IntegerMath subtraction = (num1, num2) -> num1 - num2;

    Integer result = 0;
    switch(operator) {
    case("+"):
      result=myCalc.operatorBinary(number1,number2,addition);
      break;
    case("-"):
      result=myCalc.operatorBinary(number1,number2,subtraction);
      break;
    case("*"):
      result=myCalc.operatorBinary(number1,number2,multiplication);
      break;
    case("/"):
      result=myCalc.operatorBinary(number1,number2,division);
      break;
    }
    request.setAttribute("result", result);
    request.getRequestDispatcher("calculator.jsp").forward(request, response);
  }

  interface IntegerMath {
    int operation(int number1, int number2);
  }
  public int operatorBinary(int number1, int number2, IntegerMath op) {
    return op.operation(number1, number2);
  }
}

calculator.jsp
<form id="calculator" action="calculator" method="post">
  <p>
  First number <input name="number1" type="text"/>
  <select name="operator">
    <option value="*"> * </option>
    <option value="/"> / </option>
    <option value="+"> + </option>
    <option value="-"> - </option>
  </select>
  Second number <input name="number2" type="text"/>
    <button type="submit"> Calculate </button>
  </p>
  <p> Result: <span id="result">${result}</span></p>
</form>

なお、My Oracle Supportで、ダウンロードが必要かもしれない、2件のバグに対応するパッチが提供されています。
  • Patch 18729264 - JAVA8 JDT GA MAY FAIL WITH JDK8 RUNTIME AND "-SOURCE" / "-TARGET" LESS THAN 1.8
  • Patch 18428696 - EJBGEN HAS REFERENCES TO SUN.MIRROR.APT, WHICH GOES AWAY IN JDK8

[Database] Oracle Database 12.1.0.2 for MS Windows is available

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

ようやく、Microsoft Windows用Oracle Database 12.1.0.2がOTN、Oracle Software Delivery Cloud (eDelivery)、My Oracle Supportからダウンロード頂けるようになりました。

OTNのページへは以下のリンクからどうぞ。
Oracle Database Software Downloads
http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html

[Cloud] Announcing General Availability of Oracle OpenStack for Oracle Linux

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

本日Oracle OpenStack for Oracle Linux 1.0がリリースされたことを発表いたします。
Oracle OpenStack for Oracle Linux Now Generally Available
http://www.oracle.com/us/corporate/press/2298602
この発表とともに、Oracle LinuxおよびOracle VMをご利用のお客様に対し、商用OpenStackのサポートを提供します。OpenStackのサポートはOracle LinuxおよびOracle VMのPremier Supportの範囲でご利用いただけ、追加料金はかかりません。

2013年12月、OracleはOpenStack Foundationに参加し、5月にアトランタで開催されたOpenStack Conference中にHavanaをベースとしたテクノロジープレビュー版をリリースしました。以後、Icehouseをサポートするようテクノロジープレビューを更新し、引き続きインストールプロセスの簡略化やバグ修正などをすすめ、テクノロジープレビューを改善してきました。本日リリースしたこのGA版は、最新のIcehouseをベースとしています。

私たちの目標は、OpenStackを、信頼性、セキュリティ、パフォーマンスといったあらゆる要件を満たし、すべてのワークロードタイプに対応する、データセンター全体を運用できるエンタープライズグレードのソリューションにする支援をすることです。私たちは、OpenStackに第一級のソリューションにしてあらゆる規模の顧客のためのクラウドOSになってもらいたいと考えています。それを実現するためにOracleが支援できることの一つとして、テストし、要求の厳しいエンタープライズ·ワークロードをOpenStack上で実行できるようにすることがあります。これらのワークロードが信頼性のあるサポートされた方法でOpenStack上で実行できることを確認することが、OpenStackがエンタープライズグレードの、汎用クラウド管理ソリューションたらしめるための重要なステップです。仮想環境でデプロイし、エンタープライズのワークロードを管理する経験がある弊社は、OpenStackがクラウドOSとなるまでのアクティビティを推進する上で好位置にあり、これこそ、我々が計画していることなのです。

Oracle OpenStack for Oracle Linuxの詳細は以下からどうぞ。
来週はOracle OpenWorldですが、その中でOracle OpenStack for Oracle Linux 1.0をご紹介するとともに、セッションやハンズオンを実施しますので、ご来場をお待ちしております。以下はOpenStackをテーマにしたセッションです。

[Linux] Oracle Linux 5.11 is now available

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

Oracle Linux 5.11という、Oracle Linux 5の11回目かつ最終となるアップデートリリースを発表できうれしく思っています。
[El-errata] Oracle Linux Release 5 Update 11 for x86 (32 bit) and x86_64 (64 Bit) architectures
https://oss.oracle.com/pipermail/el-errata/2014-September/004468.html
Oracle Linux
http://oracle.com/linux
ISOイメージはOracle Software Delivery Cloudからまもなくダウンロードできるようになる予定です。個別のRPMパッケージは既にパブリックyumリポジトリに上がっています。
Oracle Software Delivery Cloud
http://edelivery.oracle.com/linux
Public yum repository
http://public-yum.oracle.com/repo/OracleLinux/OL5/11/
このリリースには、OracleがOracle Linux向けに推奨するカーネルUnbreakable Enterprise Kernel Release 2 (2.6.39-400)が含まれています。その他の詳細は、リリースノートをご覧ください。
Unbreakable Enterprise Kernel Release 2
https://blogs.oracle.com/linux/entry/oracle_unbreakable_enterprise_kernel_release
Release Notes for Unbreakable Enterprise Kernel Release 2 Quarterly Update 5
https://oss.oracle.com/ol6/docs/RELEASE-NOTES-UEK2-QU5-en.html
Oracle Linux 5.11 Release Notes
https://oss.oracle.com/ol5/docs/RELEASE-NOTES-U11-en.html
Oracle Linuxはダウンロード、利用、配布すべてが無料で、アップデートおよびエラータも無料でご利用いただけます。
Free Updates and Errata for Oracle Linux
https://blogs.oracle.com/linux/entry/free_updates_and_errata_for
サポートに関しては、どのシステムにサポートサブスクリプションを必要としているのか、各システムにどのレベルのサポートが必要なのかに応じて自由に決定いただけます。
Oracle Linux Support
http://www.oracle.com/us/technologies/linux/support/overview/index.html
すべての環境を最新に維持し安全に保ちながら、自身で個々のシステムに最適なサポート範囲を決定できるのです。Oracle Linuxは開発、テスト、本番システムのための理想的な選択肢といえるでしょう。

[Database] New AQ Background Architecture in Oracle 12c

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

Oracle Advanced Queuingを多様いただいているお客様を知っていますが、Oracle Database 12cでは、AQのバックグラウンドのアーキテクチャが変わりました。ドキュメントに詳細が明確に記述されています。
Oracle® Databaseアドバンスト・キューイング・ユーザーズ・ガイド 12c リリース1 (12.1)
基本的なコンポーネント
AQバックグラウンド・アーキテクチャ
http://docs.oracle.com/cd/E49329_01/server.121/b71332/componet.htm#ADQUE3663
Oracle® Database Advanced Queuing User's Guide 12c Release 1 (12.1)
Basic Components
AQ Background Architecture
http://docs.oracle.com/database/121/ADQUE/componet.htm#ADQUE3663
これまでにわかっている範囲では、後方互換性の問題はないはずですが、(いつものように)皆様からフィードバックをいただけるとうれしいです。

AQの変更点、追加機能、強化機能、新機能は以下からどうぞ。

[WLS] JMS JDBC Store Performance on Oracle RAC

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

JMS周りのパフォーマンステストの多くは、Oracle Real Application Clusters上のJDBCストアを使って行われてきました。この記事の目的は、いくつかの既存のドキュメントを参照しつつ、WebLogic Server 12.1.3の新しい関連機能をご紹介し、さまざまなアプローチをまとめることにあります。

まず、JMSバッキングストアに使っているOracle Databaseの表の最適化に関する提案です。現在のJMSのマニュアルでは”I/Oマルチスレッディング”を有効化する場合にはリバース・インデックスの利用を提案しています。これらは高負荷時にのみ推奨しています。Oracle DatabaseのPartitioningオプションを利用できる場合には、表に対しグローバル・ハッシュ・パーティション・インデックスを利用することができます。これを使うとインデックス競合の削減や、グローバル・キャッシュ・バッファの待機を削減し、アプリケーションの応答時間を劇的に改善することができます。パーティショニングはすべてのケースにおいて有効に働きますが、リバース・インデックスを使った場合には顕著な改善が見られない場合があります。詳しくは以下の記事をご覧ください(この記事にはプールサイズやキャッシュサイズに関して、興味深いコメントも掲載されています)。
Oracle FMW 11g R1 SOA with Oracle Database Real Application Clusters Assessment
Oracle Maximum Availability Architecture White Paper
November 2011
http://www.oracle.com/technetwork/database/availability/maa-fmw-soa-racanalysis-427647.pdf
二つ目におすすめするのは、セキュアファイルを使って性能を改善し、ストレージをより効率的かつ容易に管理する、というものです。これは、一般に、メッセージのサイズが大きい場合や、データベースへのネットワーク接続が遅い場合に、JDBCストアのスループットを改善するために推奨されるものです。セキュアファイルに関する詳細は、以下のホワイトペーパーをご覧ください。
Oracle FMW SOA 11g R1: Using Secure Files
Oracle Maximum Availability Architecture White Paper
September 2012
http://www.oracle.com/technetwork/database/availability/oraclefmw-soa-11gr1-securefiles-1842740.pdf
両者を組み合わせることで、JMSバッキングストアのスキーマは次のようになります。
CREATE TABLE JMS1.JMSWLSTORE (
        ID INT NOT NULL,
        TYPE INT NOT NULL,
        HANDLE INT NOT NULL,
        RECORD BLOB NOT NULL,
        PRIMARY KEY (ID) USING INDEX GLOBAL PARTITION BY HASH (ID) PARTITIONS 8
        TABLESPACE JMSTS
   )
   LOB (RECORD) STORE AS SECUREFILE (TABLESPACE JMSTS ENABLE STORAGE IN ROW); 
パーティションのサイズが一様になるよう、パーティションの個数は2のべき乗である必要があります。パーティションの推奨個数は、予想されるテーブルやインデックスの成長度合いによって変動するため、時間をかけてDBAが分析し、調整する必要があります。関連するパラメータは、以下のOracle Database VLDB and Partitioning Guideをご覧ください。
Oracle® Database VLDBおよびパーティショニング・ガイド
12c リリース1 (12.1)
http://docs.oracle.com/cd/E49329_01/server.121/b71291/toc.htm
Oracle® Database VLDB and Partitioning Guide
12c Release 1 (12.1)
http://docs.oracle.com/database/121/VLDBG/toc.htm
カスタムJMS JDBCストアテーブルを使用する場合には、カスタムDDL機能をご覧ください。
Administering Server Environments for Oracle WebLogic Server
Using the WebLogic Persistent Store
Using Custom File Stores and JDBC Stores
http://docs.oracle.com/middleware/1213/wls/CNFGD/store.htm#i1160628
Real Application Clustersに対してマルチデータソースもしくはActive GridLinkを使っているいずれの場合でもこうした改善の恩恵を受けることができます。
新しいトリックが、WebLogic Server 12.1.3のJMSに性能向上のためののパフォーマンスの飛び道具として追加されました。データベースを使用するすべてのアプリケーションと同様に、アプリケーションからデータベースまでのラウンドトリップすべてにオーバーヘッドがあります。JMS JDBCストアのコードでは、それをサポートするデータベースを用いたバッチ処理を使用しています。設定したバッチサイズ(すなわち、DeletesPerBatchMaximumとInsertsPerBatchMaximum)と、トランザクション内のオペレーションの数に応じて、バッチ実行のための1回以上のラウンドトリップと、1回のコミットのためのラウンドトリップでトランザクションが構成されます。新しい構成オプションであるOraclePiggybackCommitEnabledは、Oracle Thinドライバの場合のみ、バッチ操作にコミットも乗せてしまうというものです。小さなトランザクションでは、1回のラウンドトリップで、バッチを実行し、コミットします。つまり、ラウンドトリップの数の半分にします。
多くの研究が、マルチデータソースとActive GridLinkの両方について、全体的なパフォーマンスをチェックする多くの検証が行われてきました。WebLogic Server 12.1.2での接続アフィニティの強化以後、(ラウンドロビンではなく)フェールオーバーするよう構成されたマルチデータソースのパフォーマンスは、Active GridLinkとほぼ同じです。マルチデータソースのフェイルオーバアルゴリズムでは、接続アフィニティを有しているため、失敗するまで1つのインスタンスですべての接続を保持します。WebLogic Server 12.1.1以前では、Active GridLinkは単一インスタンスへの接続アフィニティを持たないため、フェールオーバを有効にしたマルチデータソースは、Active GridLinkよりもパフォーマンスに優れていました。管理性やフェールオーバを含む多くの領域で、より優れたRACサポートを提供しているため、マルチデータソースでActive GridLinkを使うことをおすすめします。詳細は以下のドキュメントをご覧ください。
Administering JDBC Data Sources for Oracle WebLogic Server
Using Active GridLink Data Sources
Comparing AGL and Multi Data Sources
http://docs.oracle.com/middleware/1212/wls/JDBCA/gridlink_datasources.htm#BABHGDJH
ただし、Active GridLinkの利用にはWebLogic SuiteもしくはExalogic Elastic Cloud Software(EECS)が必要です。最後に、パフォーマンスを出すための鍵は、(想像されている通り)ワークスレッドの個数だけではなく、同時に利用するプロデューサやコンシューマの個数です。10個を下回るプロデューサやコンシューマの場合、前述の通りハッシュ・パーティションを使ったインデックスやLOB用のセキュアファイルを伴う通常の複数RACインスタンス上のサービスを使ってください。(9個以上のプロデューサやコンシューマがいるような)より高い同時実行性を求める場合、シングルトン・データベース・サービスを使うとより効率がよいでしょう。優先インスタンスや高可用性のためのフェールオーバ・インスタンスを使って構成しておくべきです。
JMS JDBCストア用途で利用する場合、WebLogic Serverデータソースをチューニングしておくと、JMSのスループットおよび当該JMSを利用するアプリケーションのパフォーマンスを劇的に改善することができます。パフォーマンス調査にあたっては、ご自身のアプリケーションやデータを使って実施する必要があります。

[Java, Cloud, WLS] WebLogic Encrypt Tool Script for Remote and Cloud Servers

原文はこちら。
https://blogs.oracle.com/brunoborges/entry/weblogic_encrypt_tool_script_for

Oracle Java Cloud Serviceでは、クラウドでOracle WebLogic Serverのインスタンスを完全に管理できるようになります。
Oracle Java Cloud Service
https://cloud.oracle.com/java
このサービスを使うと、お客様が完全なWebLogic Serverインスタンスを好きなように管理することができます。しかし、作業を実施するために、お客様はSSHを使ってサーバに接続しなければなりません。セキュリティは弊社にとって重要と考えているので、WebLogic Serverは本番モードで実行している場合、WLSTスクリプトを実行したり、平文の機密情報を含むJDBCリソースのようなアーティファクトをデプロイする際に、開発者や運用管理者はデフォルトでは平文のテキストパスワードを使えなくなっています。

簡単に暗号化できるよう、以下のようなスクリプトを作成しました。クラウド運用管理者や開発者にとってだけでなく、オンプレミス環境で、スクリプトやXMLファイルに平文テキストパスワードを保存してはいけない状況下でデプロイする場合にも、きっと有用だと確信しています。
encrypt-password-on-remote-wls-domain.sh
https://gist.github.com/brunoborges/e0236a55fe42f2d1cb62
#!/bin/sh
# Util script to encrypt a password on a remote WebLogic domain through SSH

REMOTE_DOMAIN_HOME=/home/bruno/Work/tools/oracle/mw1212/user_projects/domains/base_domain

DIR="$( cd "$( dirname "$0" )" && pwd )"

PRIVATE_KEYFILE=~/.ssh/id_rsa

ssh bruno@localhost -i $PRIVATE_KEYFILE DOMAIN_HOME=$REMOTE_DOMAIN_HOME PASSWORD=$1 '/bin/bash -s' <<'ENDSSHSESSION'
  cd $DOMAIN_HOME/bin
  source setDomainEnv.sh
  java weblogic.security.Encrypt $PASSWORD
ENDSSHSESSION
フィードバックをお待ちしています!

[Exa*, FMW] Working with SSL Certificates in OTD

原文はこちら。
https://blogs.oracle.com/csoto/entry/working_with_ssl_certificates_in

結構よく見られるOracle Traffic Director (OTD)の問題として、以下のようなSSL証明書の警告が出る、というものがあります。
SSL server certificate Admin-Server-Cert is expired.
管理者のSSL CA証明書の有効期限が切れると、このエラーがよく発生します。このエラーを回避するには、CA/SSL証明書を有効期限までに更新して延長(1年から10年)する必要があり、次の2方法があります。
  1. 人為的に管理サーバのホストの時計を設定する
  2. 新しい管理サーバを作成し、古い管理サーバを置き換える(これにより、古い構成済みSSL鍵を失う可能性があります)
とはいえ、その時点で1年間の証明書を取得し、10年間使いたいとして、以下のコマンドの実行が成功したとしても、有効期限の日付は変わるわけではありません。
./bin/tadm renew-admin-certs --user=<管理サーバのユーザ> --port=<管理サーバのポート> --validity=120
問題は、最新のパッチを当てなければ、現在のところ管理ノードの証明書が1年間だけ有効になって、毎年の更新が必要になる、ということです。毎年管理ノードの証明書を更新しないですませるには、Oracle Traffic Director 11.1.1.7のパッチ 11.1.1.7.2 MLR#2 (2014年4月) 以後の適用が必要です。パッチ適用後、起動バナーには適切な新しい日付が表示されます。管理サーバの証明書を更新すると、管理ノードの証明書もまた同じ年数だけ更新されます。

詳細は以下のMy Oracle Supportのドキュメントをご覧下さい。

[Cloud, SOA] Big News: Oracle iPaaS Cloud Integration OpenWorld Sessions

原文はこちら。
https://blogs.oracle.com/SOA/entry/big_news_oracle_integration_cloud

Oracleがintegration Platform as a Service (iPaaS)を出す、という噂を聞いてらっしゃるかもしれませんが、“Introducing Oracle Integration Cloud Service: iPaaS on Oracle Cloud”という独立したセッションとHands-on Labを含む、Oracle Integration Cloud Serviceに関するコマが、Oracle OpenWorld 2014のアジェンダに追加されています。このお知らせができることをうれしく思っています。
Oracle OpenWorld
https://www.oracle.com/openworld/index.html
Oracle Integration Cloud Serviceを使うことで、劇的にクラウド間やクラウドとオンプレミス間の統合を簡素化できます。Oracle SaaSアプリケーションへのネイティブ接続と、作成済みのマップ、フローなどを含む、使いやすい、新しいサードパーティ・アプリケーションの統合機能について知っていただけます。
これらのセッションでOracle Integration Cloud Serviceのお披露目した後、未発表の最高にクールな機能をこのブログでご紹介します。
2個のセッションは以下の通りです。
Oracle Integration Cloud ServiceのデモもMoscone Southでご覧いただけます。
Oracle Integration & SOAセッションに関する詳細は、以下のURLにあるFocus Onドキュメントからどうぞ。
Focus On Service Oriented Architecture
https://oracleus.activeevents.com/2014/connect/focusOnDoc.do?focusID=18207
皆さんもわくわくされることでしょう。まだ信じられないという方はこれらのセッションに参加してください。

[Java, WLS, Cloud] Oracle Java Compute Cloud Service Now Available!

原文はこちら。
https://blogs.oracle.com/imc/entry/oracle_java_database_compute_cloud

本日Oracleは新しいサービスをPublic Cloudとして追加しました。

First Things First

まずはOracle Compute Cloudサービスです。これはElastic Compute Capacityを提供します。つまりお客様は自身の仮想マシンインスタンスを管理したり、セルフサービスでプロビジョニングできたりします。Compute Cloudについては、以下のURLからどうぞ。
Oracle Compute Service
https://cloud.oracle.com/compute

What's new in Java Cloud Service

Java Cloud Serviceが利用できるようになってしばらくたちましたが、このサービスはクラウド特有のコンソールに制限されており、お客様は自身の環境を完全に制御・管理することはできません。このサービスはOracle SaaSの機能を拡張するためのサービスを目的としていたからです。
今回の新しいOracle Java Cloud Service—Virtual Imageを使うと、お客様は基盤となっているOracle WebLogic Server(負荷分散機能が必要であればOracle Traffic Director)の組み込みツールを使ってクラウドのご自身の環境のライフサイクルを管理することができます。
現時点では、WebLogic Serverの2種類のバージョン(12.1.2.0と11.1.1.7)がご利用いただけます。両方のバージョンで関連するFusion Middlewareをサポートしています。

What's in the box

以下はこのサービスのアーキテクチャです。ご覧頂くとわかる通り、Oracle Compute Cloud Service上で動作しています。Java Cloud Serviceでは、管理サーバ、管理対象サーバ、そしてTraffic Directorの全てがご利用頂けます。

Available flavors

3種類のオプションを組み合わせて利用できます。
  • 仮想イメージのみ、もしくは仮想イメージ+ツール
  • StandardもしくはHigh Memory
  • WebLogicのエディションはStandard、Enterprise、もしくはSuite

全てのオプションのお値段は下表からどうぞ(全て執筆時点)。


Lear more

Java Cloud Serviceについてもっと知りたい方は、以下のURLに行くか、ドキュメントをご覧下さい。
Oracle Java Cloud Service
https://cloud.oracle.com/java
Oracle Java Cloud Service Documentation
http://docs.oracle.com/cloud/latest/jcs_gs/index.html

[Java] Java EE Configuration JSR Deferred

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

ConfigurationはJava EE 8サーベイの中でも人気のあるアイテムの一つでした。
Java EE 8 Survey Final Results
https://blogs.oracle.com/theaquarium/entry/java_ee_8_survey_final
Java EEのconfigurationに関するJSRに含まれる機能は比較的曖昧なままですが、大部分はCredit SuisseのAnatole Treschが先頭に立って、予定されているJSRが出るのを楽しみにしていました。この考えはJSRがJava EEアプリケーションの構成に対する一貫したソリューションを提供し、(仕様をリードする責任を可能な限り共有することを含めて)一定レベルのサポートをOracleから得る、というものでした。残念ながら、configurationのJSRの取り組みは現在、主に、特に関連するリファレンス実装(RI)だけでなく、互換性テストキット(TCK)の開発および維持するための長期的なリソーシング·コミットメントに関連した、予期せぬ、しかしながらやむを得ない事情のために、
これがJava EEとは関係ないベンダー(この場合はCredit Suisse)がJava EEプラットフォームの重要なパートに貢献するという模範例だったので、これは本当に残念なことです。Anatole Treschのイニシアティブ、情熱、献身と勇気に対し称賛することの重要性は変わりません。同様に、Java EEプラットフォームやコミュニティの前進を支援するための多額の投資を真剣に考えて下さっているCredit Suisseに対し、感謝しなければなりません。ITに携わっている全員が知っているように、リソースに関する難しい判断は決してたやすいものではなく、後の作業の段階での判断にくらべ、早期に難しい決断をするほうがずっとよいのです。Anatoleは現在もなおconfiguration JSRの取り組みに関するJavaOne 2014のセッションの内容を詰めています。
A First Draft of Java EE Configuration [CON1696]
https://oracleus.activeevents.com/2014/connect/sessionDetail.ww?SESSION_ID=1696
このセッションは、考えを共有し、コミュニティからのフィードバックを通して基礎となるユースケースを固める絶好の機会です。configure JSRの取り組みは少なくとも今のところ延期が必要ですが、それほどがっかりする理由はありません。例えばJSRが解決するような良く理解された問題のいくつかは、Java EE 8プラットフォームのJSRの一部と見なすことができます。独立したJSRであれば、おそらくプラットフォームレベルでの高度な連携が必要だったことでしょう。別の可能性は、CDIのようなコアのAPIに、Java EEでより簡単に設定・構成するために何をすべきかを検討させることです。最後に、JSRが対処しようとしてきた問題のいくつかは、以下のようなJava EEに含まれているメカニズムや、Java EE開発でよく使われるツールを使って解決可能だ、ということは念頭に置いておいて損はしないでしょう。
コンサルタントとしての私自身の個人的な経験では、Mavenの機能がJava EEプロジェクトの大多数に対する、十分にして使いやすい、しかもエレガントなソリューションでした。それはそれとして、Mavenがビルド時のソリューションであるのに対し、configuration JSRの特質は、おそらくデプロイ時、および実行時に構成の問題を解決する必要があるのだろう、ということです。

どう思われますか?いつも通り、躊躇せずに率直にどうぞ。
(お約束ですが、この内容は個人(Reza Rahman)の見解で、Oracleの見解ではありません)。

[訳注]
Spec LeadのAnatole Treschさんのブログでも、Configuration JSRが延期になることを記載しています。
No Java EE Configuration JSR for EE 8
http://javaeeconfig.blogspot.jp/2014/09/no-java-ee-configuration-for-ee8-dear.html

[Cloud] Oracle Developer Cloud Service has Launched!

原文はこちら。
https://blogs.oracle.com/jdeveloperpm/entry/oracle_developer_cloud_service_has

Oracle Developer Cloud Serviceは、クラウドベースのソフトウェア開発プラットフォーム(PaaS)であり、アプリケーション開発インフラストラクチャのためのホスティング環境です。Oracle Developer Cloud Serviceを使うと、開発チームは生産性を最大化できます。Oracle Developerクラウドサービスを使用すると、開発チームは、Oracleクラウドプラットフォームへのシームレスな展開に加えて、チームのコラボレーションや管理ユーティリティだけでなく、アプリケーションライフサイクル管理(ALM)機能へもすぐにアクセスできるため、生産性を最大化することができます。 Oracle Developer Cloud Serviceは、開発、コラボレーション、Oracle Cloud内でのアプリケーションデプロイのためのエンタープライズ・グレードのプラットフォームを提供します。オンプレミスでのデプロイやGitHubとの統合をサポートしています。Oracle Developer Cloud Serviceを使うと、Oracle Cloudと他のクラウド、もしくはオンプレミス環境の間でコードをシームレスに移動することができるだけでなく、信頼性の高い、拡張性に富んだ、柔軟なクラウド環境へのサブスクリプションベースのセルフサービスアクセスといったPaaSのすべての利点を企業は享受することができます。Oracle Enterprise Pack for Eclipse (OEPE) やOracle JDeveloper、NetBeansに連係機構が組み込まれているので、Oracle Developer Cloud Serviceで皆様のコードと対話することができます。

詳細はOracle Developer Cloud Serviceの製品ページからどうぞ。
Oracle Developer Cloud Service
https://cloud.oracle.com/developer

[WLS, Java] Top 10 solution documents for Weblogic Server J2EE June 2014 -Aug 2014

原文はこちら。
https://blogs.oracle.com/proactivejavadevelopment/entry/top_10_solution_documents_for4

下表は、2014年6月から8月までの間で、WebLogic Server Java EEのSR(Service Request)で解決策になったトップ10のドキュメントです。
1215249.1 Spring Framework Support in Oracle WebLogic Server Versions
Oracle WebLogic ServerでサポートするSpring Frameworkのバージョンがまとまっています。
1584779.1 Socket Leaks When Calling Web-Service Over SSL
これは既知のもの(bug 16810786)で、10.3.5にパッチを適用すると対応できます。12.1.3では既に修正済みです。
1300770.1 WLS Web Application: Error page configuration!
error-pageタグを使ってweb.xmlで特定のエラーコードに対するカスタムエラーページを設定すると、カスタムエラーページが適切にロードされていないという問題。
1284413.1 InvalidAlgorithmParameterException when client invokes secure webservice on WLS, due to "trustAnchors parameter must be non-empty"
クライアントがWebLogic Server 10.3.3上の保護されたWebサービスを呼び出すと、[SEVERE: AbstractWebServiceBindingComponent.dispatchRequest Unable to dispatch request]という例外が原因で、SOAP Faultが発生する、という問題。
1436012.1
The exception is seen on the log file while navigating to a page that access a file which size has been recently modified. 直近にサイズが変わったファイルにアクセスするようなページへ遷移すると、ログファイルに例外が見られる、という問題。具体的には、このエラーは特定のファイルのサイズが小さくなった場合に見られる。
1306295.1 Deployment Issue - BEA-2156203 A version attribute was not found in element persistence in the deployment descriptor
WebLogic Server 10.3.3以上で動作するアプリケーションでEJBのコンパイルをWebLogic Serverに付属するユーティリティを使って実施した場合にこのエラーが見られる。
1679110.1 WebLogic searches the entire jars in the classpath to determine the Jaxp implementation class to load
WebLogic Serverが間欠的にハングし、スレッドダンプには数多くのスレッドがロックを取得しようとしてブロックされている、という問題。
(例) java/util/Collections$SynchronizedList
1476767.1 "java.lang.IllegalArgumentException: com.sun.xml.messaging.saaj.soap.LocalStrings" With WLS11g (Java 6) And SAAJ When Having The wls-wsat.war Deployed
If the web service (using saaj-impl 1.3.jarを使用する)Webサービスを"wls-wsat.war"より前にデプロイするとサービスには問題がないが、"wls-wsat.war"のデプロイに失敗する。
948932.1
(JRockitのアップグレードと同時に)Weblogic 10.3へアップグレードした後、以下のJSPのコンパイルエラーが発生する。
Failed to compile JSP /xxx/Search.jsp Search.jsp:19:2: The code of method _jspService(HttpServletRequest, HttpServletResponse) is exceeding the 65535 bytes limit
966191.1 WLS 10.0 MP1: JAVA.NET.PROTOCOLEXCEPTION IN THE LOGS. 
On deploying their web application 'abc-portal-5.2.5.war', on WebLogic Server 10.0 MP1に'abc-portal-5.2.5.war'というカスタムWebアプリケーションをデプロイすると、以下のエラーに頻繁に遭遇する。
In servlet context "weblogic.servlet.internal.WebAppServletContext@584e97 - appName: 'abc-portal-5', name: 'abc-portal-5.2.5.war', context-path: ''" failed, java.net.ProtocolException: Didn't meet stated Content-Length, 

[BPM] Process level Exception Handling in BPM12c

原文はこちら。
https://blogs.oracle.com/OBPM-leaning/entry/process_level_exception_handling_in

BPM 12cでは、よりコントロールされたアクションでプロセスレベルのトランザクションを取り扱うことができます。BPM 11.1.1.7では、イベント・サブプロセスを使って全てのビジネス例外やシステム例外を捕捉しましたが、BPMNプロセスフローの失敗したアクティビティに戻って再開したり、失敗したアクティビティをスキップして処理を進めることはできません。この機能はBPM 10gR3における主要な機能で、Process Exceptionsを使い、BPMインスタンスをよりコントロールしていました。
BPM 12cでは、プロセス·フロー実行中に例外が発生した場合、例外を発生したフローオブジェクトに戻って再試行するか、メインプロセスフローの次のフローオブジェクトにプロセス·インスタンスを移動するかを選択できます。
この設定は、事前定義済み変数"action"に特定の値を入れることで定義できます。
利用可能な値は、以下の2種類です。

1. BACK

例外を捕捉し、BPMプロセスフローの例外を吐いたアクティビティを再実行したい場合は、スクリプトタスク内で事前定義済み変数actionに文字列"back"を設定します。

2. SKIP

例外が発生した場合に次のアクティビティにインスタンスを遷移するためには、スクリプトタスクで事前定義済み変数actionに文字列"skip"を指定します。

Retry Failed BPM instance

以下の手順でイベント・サブプロセスを構成すると、例外が発生したBPMプロセスのアクティビティを再実行します。
  1. ヒューマンタスク、サービスタスクなどといったアクティビティを使ってBPMプロセスを作成します。また、ビジネス例外(ここではRetryExceptionとします)をBPMプロジェクトのビジネスカタログ・コンポーネントに定義しておきます。
  2. イベント・サブプロセスをBPMプロセスにドラッグ&ドロップで貼り付けます。
  3. スタート・アクティビティを右クリックし、[実装]タブに移動します。
  4. [実装タイプ]では[エラー]を選択し、[リカバリ可能なエラー]チェックボックスにチェックを入れます。
  5. [タイプ]では、RetryExceptionを選択します。
  6. [データ・アソシエーション]タブで、例外の詳細を記述するようにプロセスデータオブジェクトで定義されている"errorInfo"に値をマッピングします。
  7. スクリプトタスクを同じイベント・サブプロセスに追加します。
  8. スクリプトタスクの[実装]タブを開き、事前定義済み変数actionに"back"を指定します。
  9. BPMアプリケーションをデプロイ、テストします。
  10. イベント・サブプロセスが例外を捕捉すると、手順8で定義した内容に従い、BPMインスタンスは例外が発生したアクティビティに戻って再実行します。

Skip Failed BPM instance

以下の手順でイベント・サブプロセスを構成すると、失敗したBPMプロセスのアクティビティをスキップし、次のアクティビティから実行を再開します。
  1. ヒューマンタスク、サービスタスクなどといったアクティビティを使ってBPMプロセスを作成します。また、ビジネス例外(ここではSkipExceptionとします)をBPMプロジェクトのビジネスカタログ・コンポーネントに定義しておきます。
  2. イベント・サブプロセスをBPMプロセスにドラッグ&ドロップで貼り付けます。
  3. スタート・アクティビティを右クリックし、[実装]タブに移動します。
  4. [実装タイプ]では[エラー]を選択し、[リカバリ可能なエラー]チェックボックスにチェックを入れます。
  5. [タイプ]では、SkipExceptionを選択します。
  6. [データ・アソシエーション]タブで、例外の詳細を記述するようにプロセスデータオブジェクトで定義されている"errorInfo"に値をマッピングします。
  7. スクリプトタスクを同じイベント・サブプロセスに追加します。
  8. スクリプトタスクの[実装]タブを開き、事前定義済み変数actionに"skip"を指定します。
  9. BPMアプリケーションをデプロイ、テストします。
  10. イベント・サブプロセスが例外を捕捉すると、手順8で定義した内容に従い、BPMインスタンスは例外が発生したアクティビティをスキップし、プロセスフローで定義されている次のアクティビティに移動して実行を継続します。
今後、BPM 10gR3に含まれていた機能のうち、BPM 12cで復活した新機能をご紹介していく予定です。このエントリがOracle BPMの開発者にお役に立つことを願っています。


例外処理のProof of Concept用プロジェクトを作成しました。こちらからダウンロードできます。

[Java] GlassFish Server Open Source Edition 4.1 Released!

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

GlassFish Server 4.1 Open Source Editionがダウンロードできるようになりました。世界初のJava EE 7アプリケーションサーバであるこのリリースには、いろいろな新機能や役に立つ機能、アップデートが含まれています。以下に一例をまとめてみました。
GlassFish Server Open Source Edition 4.1 Download
https://glassfish.java.net/download.html
  • サポート対象のプラットフォーム
    このリリースではJava 8、CDI 1.2、WebSocket 1.1のサポートが追加されています。GlassFish,という世界最初のJava EE 7アプリケーションサーバは引き続き最新のJava EE仕様との優れた互換性を維持しています。
  • Developer Experienceの改善
    GlassFish 4.1はオープンソースとしてのリリースのみではありますが、品質や生産性、Developer Experienceはやはり主要な注力ポイントです。GlassFish Serverは20以上のサブプロジェクト(Tyrus、Jersey、Weld、EclipseLinkなど)から構成されています。各プロジェクトでは機能追加やバグの修正など、1000点以上の改善がなされています。GlassFish 4.1 FishCATプログラムに参加し、GlassFishをよりよいものにしてくれた開発者の皆様に感謝します。特に、GlassFishがMac OS X 10.10 (Yosemite) で起動しないバグを発見してくれたJoonas Lehtinenには感謝しています!
  • 新機能
    重要なアップデートをリストにしてみました。
    • Tyrus (WebSocket 1.1の参照実装)WebSocketの1.1仕様をサポートしました。それにあたり、ラムダ式のサポートを改善するため数個のAPIを追加しています。Tyrusでは、仕様を超えたいくつかの機能が追加されています。例えばオープンしているセッション数の調整、JMXでのメトリック公開、クライアント再接続やプロキシのサポート、全てのオープンしているソケットへのメッセージブロードキャストの最適化機能などです、
    • Jersey (JAX-RS 2.0の参照実装)いくつかの印象的な新機能が追加されています。Jerseyは元々Jersey 1.1の時からOAuthをサポートしていますが、新たにOAuth 1およびOAuth 2をサポートするクライアント用APIが追加されました。Jerseyでは診断機能が改善され、わかりやすい、エラーレポートやJerseyメトリックのJMS経由での公開、リクエスト毎のトレースをログファイルやHTTPレスポンスヘッダに出力できるようになっています。Jerseyはクライアント側のServer-Sent Eventの再接続をサポートも追加されました。
    • OpenMQ (JMS 2.0の参照実装)Open MQにはWebSocketをを介して通信できるようになりました。2種類のWebSocketクライアントをサポートしています。一つは、mqstompという、STOMP 1.2プロトコルをサポートする任意のWebSocketクライアント、もう一つはmqjsonstompという、(WebSocket)クライアントがJSON形式のメッセージをSTOMP1.2プロトコルを使用して送信できるクライアントです。 
  • Java EE 7 SDK
    Java EE 7 SDKがアップデートされ、全体的により使いやすくなりました。第1に、zip形式でリリースされているため非常にインストールが簡単です。SDKには、GlassFish 4.1がバンドルされており、Java 8をサポートしています。最後に、Java EE 7 SDKバンドルには、アップデートされたJava EE 7 Tutorial とJava EE 7 First Cupが両方含まれています。
  • [アップデート]
    Netbeans 8.0.1 available for download; bundles GlassFish 4.0.1をバンドルしたNetBeans 8.0.1がダウンロードできるようになっています。
まとめると、GlassFish 4.1ではサポートプラットフォームがアップデートされ、Developer Experienceが改善され、新機能が提供されています。また、アップデートされたJava EE 7 SDKにバンドルされています。GlassFish 4.1はglassfish.orgからダウンロードできます。Java EE 7 SDKは、Oracle Technology Network(OTN)からダウンロードできます。
GlassFish Server Open Source Edition 4.1 Download
https://glassfish.java.net/download.html
Java EE 7 SDK Downloads
http://www.oracle.com/technetwork/java/javaee/downloads/index.html

[FMW] JDeveloper 12.1.3での自動ビルドを停止する

久しぶりにオリジナルです。

SOA SuiteやBPM Suiteの12c (12.1.3) がリリースされ、Oracle Service Bus (OSB) やOracle Event Processing (OEP) の開発環境がEclipse (厳密にはOracle Enterprise Pack Eclipse) からJDeveloperに代わったこともあり、JDeveloperを使う機会が増えた、という方も多いかもしれません。

JDeveloperには内部にMavenが入っており、デフォルトでは保存と同時にビルドするようになっています。しかし、保存の都度ビルドはちょっと、という方もいらっしゃるはず。そういう方のために、Mavenの自動ビルドを停止する設定をご紹介します。

方法は以下の通りです。
  1. JDeveloper のメニューから、[ツール]>[プリファレンス]を選択します。
  2. [プリファレンス]>[コード・エディタ]>[保存アクション]の設定画面で、[プロジェクトおよび依存を保存後に作成]を[×]をクリックして削除します。
  3. 削除が終われば、[OK]を押します。