2016年4月27日

[Solaris, Cloud] Oracle Solaris Now Available in the Oracle Cloud

原文はこちら。
https://blogs.oracle.com/solaris/entry/oracle_solaris_in_the_oracle

オンデマンドの世界で生きている現在、オンプレミスにするかパブリッククラウドにするかに関わらず、お客様にはビジネス上重要なアプリケーションのホスト場所やホスト方法により多くの選択肢があります。この前例のない柔軟性は、つまるところコンピューティング環境作成までに何時間、何週間、何ヶ月も待つ時代は終わったことを意味します。IT予算の振り分けは、CAPEXや低い利用状況の設備に対する支払いから、オンデマンドOPEX、つまり利用したものに対する支払いへと移っています。そのため、クラウドを利用可能なクラウド・ネイティブ・アプリケーションの次の波とともに貴社のビジネスを変化させることに貢献するか、それともこれまでのエンタープライズアプリケーションに依拠するかは関係なく、セキュアで、信頼性の高い、エンタープライズで利用可能なクラウド環境が必要になるでしょう。
Oracleはオンプレミスソリューションの幅広いオファリングと統合されたクラウドオファリングを持っているがゆえに、ユニークなポジショニングをされています。Oracle Solarisは、ビジネスにとって重要なアプリケーションをホストするための、セキュアでミッションクリティカルなプラットフォームを提供するその戦略の重要な基盤の一つです。
Oracle Solaris
http://oracle.com/solaris
ビジネスをどのように実行したいのか、という問いに対し、最も完全な選択肢を提供します。そして、その選択肢を本日拡大します。
Oracle Solaris がOracle Cloudで利用できるようになったことを発表いたします。
お客様はOracle Compute Cloud Serviceを使い、オンデマンドでOracle Solaris VMを作成することができます。その際追加コストは必要ありません。
Oracle Compute Cloud Service
https://cloud.oracle.com/ja_JP/compute(日本語)
https://cloud.oracle.com/en_US/compute(英語)
このサービスはinfrastructure as a service (IaaS) であり、セルフサービス・ポータルを使って、柔軟かつスケーラブルなコンピューティング環境、ブロックストレージ、ネットワーキング・サービスを提供します。共有マルチテナントインフラストラクチャであろうと、専用コンピューティング環境であろうと、Oracle Cloudはみなさまのニーズに合う幅広い価格オプションでたくさんの選択肢を提供しています。
Compute Cloud Pricing
https://cloud.oracle.com/ja_JP/compute?tabID=1385152358039(日本語)
https://cloud.oracle.com/en_US/compute?tabID=1406491857419 (英語)
Oracle Solaris環境をOracle Cloud上にオンデマンドで非常に簡単に作成できることを、以下の動画で確認ください。

2016年4月26日

[JavaScript] Updated Tutorial: "Getting Started with Oracle JET Applications"

原文はこちら。
https://blogs.oracle.com/geertjan/entry/updated_tutorial_getting_started_with

Oracle JET Supportプラグイン ver. 0.91のリリースに伴い、関連するチュートリアルのアップデートが必要になりました。そのため、Oracle JETワークショップを開催しているNetBeans Day India期間中、チュートリアルにいくつか問題点がありましたが、本日すべて修正しました。
Getting Started with Oracle JET Applications
https://netbeans.org/kb/docs/webclient/ojet-gettingstarted.html

このチュートリアルは非常にシンプルになっており、多くの不具合が修正されています。Oracle JETに初めて触るという方であれば、こちらのチュートリアルを試してください。
Getting Started with Oracle JET Applications
https://netbeans.org/kb/docs/webclient/ojet-gettingstarted.html
(訳注)
Oracle JET
http://www.oracle.com/webfolder/technetwork/jet/index.html
Oracle JET CookBook
http://www.oracle.com/webfolder/technetwork/jet/uiComponents-formControls.html

2016年4月25日

[JavaScript, Java] JavaScriptオブジェクトとJavaオブジェクトを判断する

Nashornを使っていると、Java ObjectとJavaScript Objectが混在するため、どちらがどちらなのか判断したくなることがありますが、そんな時のため、Java.isJavaObject(obj)という関数があります。
この関数を使うと、Java Objectの場合はtrue、JavaScript Objectの場合はfalseを返してくれます。
ただし、nullの場合はJava Objectであってもfalseという判断をしてしまうのでご注意ください(ま、仕方ないですね)。
以下は試した例です。
var data = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
print(Java.isJavaObject(data)); // false

var stdout = java.lang.System.out;
print(Java.isJavaObject(stdout)); // true

var ObjectType = Java.type("java.lang.Object");
print(Java.isJavaObject(ObjectType)); // true

var _null = null;
print(Java.isJavaObject(_null)); // false

var stdout = null;
print(Java.isJavaObject(stdout)); // false

[Java, JavaScript] Extracting a single .class file from java9 platform jimage modules file

原文はこちら。
https://blogs.oracle.com/sundararajan/entry/extracting_a_single_class_file

JavaのFile System APIをNashorn JavaScriptから利用して、Java 9プラットフォームのjimageモジュールファイルから、一つの.classファイルを抽出することができます。
FileSystem (Java Platform SE 8)
https://docs.oracle.com/javase/8/docs/api/java/nio/file/FileSystem.html
Nashorn - OpenJDK Wiki
https://wiki.openjdk.java.net/display/Nashorn/Main
JEP 220: Modular Run-Time Images
http://openjdk.java.net/jeps/220
以下のシンプルなNashornスクリプトを使って、指定されたクラス名の.classを抽出します。

File: jextract.js

// This script extracts .class for a single class
// from the platform jimage ($JDK9/lib/modules) file.
// Specify module/class like java.base/java.util.Vector

if (arguments.length == 0) {
    print("Usage: jjs jextract -- <module>/<classname>")
    exit(1)
}

// Java types used from file system and net API
var FileSystems = Java.type("java.nio.file.FileSystems")
var Files = Java.type("java.nio.file.Files")
var URI = Java.type("java.net.URI")

var name = arguments[0]
var moduleName = name.substring(0, name.indexOf('/'))
var className = name.substring(name.indexOf('/') + 1)
var pathName = "/modules/" + moduleName + "/" +
        className.replace(/\./g, '/') + ".class"

// get jrt fs file system instance
var fs = FileSystems.getFileSystem(URI.create("jrt:/"))

// read .class content
var content = Files.readAllBytes(fs.getPath(pathName))

// write to a file in current dir (using default fs)
// simple class name
var simpleName = className.substring(className.lastIndexOf('.') + 1)
Files.write(FileSystems.default.getPath(simpleName + ".class"), content)
上記スクリプトを使って、以下のように実行してみましょう。一つ目はVector.class、二つ目はScriptObjectMirror.classをファイルに抽出することができます。
$ jjs jextract.js -- java.base/java.util.Vector
$ jjs jextract.js -- jdk.scripting.nashorn/jdk.nashorn.api.scripting.ScriptObjectMirror

2016年4月20日

[Java, Security] New Release JDK 8u91 and JDK 8u92

原文はこちら。
https://blogs.oracle.com/java/entry/new_release_jdk_8u91_and

2個のJava 8のアップデート、JDK 8u91と8u92が利用可能になっています。重要なセキュリティ修正が含まれているため、Java SEをご利用のほとんどのお客様に対し、最新のJava 8u91 CPU (Critical Patch Update) へのアップグレードをOracleは強く推奨します。Java SE 8u92はPatch Set Updateで、Java 8u91に追加機能が含まれています。
Critical Patch Updates, Security Alerts and Third Party Bulletin
http://www.oracle.com/technetwork/topics/security/alerts-086861.html
Oracle Critical Patch Update Advisory - April 2016
http://www.oracle.com/technetwork/security-advisory/cpuapr2016v3-2985753.html
Oracle Java SE Risk Matrix
http://www.oracle.com/technetwork/topics/security/cpuapr2016-2881694.html#AppendixJAVA
最新のJDKリリースは以下のURLからダウンロードできます。
Java SE Downloads
http://www.oracle.com/technetwork/java/javase/downloads/index.html
これらのリリースに含まれている新機能やバグ修正の情報は、以下のリリースノートをご覧下さい。セキュリティベースラインも8u91に変更されています。
JDK 8u91 Release Notes
http://www.oracle.com/technetwork/java/javase/8u-relnotes-2225394.html
JDK 8u92 Release Notes
http://www.oracle.com/technetwork/java/javase/8u-relnotes-2225394.html
CPUとPSUの詳細説明は以下のリンクをご覧下さい。
Java CPU and PSU Releases Explained
http://www.oracle.com/technetwork/java/javase/cpu-psu-explained-2331472.html 
(訳注)
過去のエントリですが、参考にどうぞ。
[Java] Java SE 8u65とJava SE 8u66の違い
http://orablogs-jp.blogspot.jp/2015/10/java-se-8u65-vs-java-se-8u66.html

2016年4月18日

[SOA/BPM] 12c XSLT Editor – XSLT View - Refactoring

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

XSLT Viewは2種類のグラフィカルビューのうちの一つで、新しくなった12cのXSLTエディタで提供されています。このエントリでは、再利用可能なmatched template(テンプレート・ルール)を作成するための、XSLTエディタのXSLT Viewでサポートされているリファクタリング機能についてご紹介します。
12cのXSLTエディタのグラフィカル・ビューに関する概要は、以下のエントリをご覧ください。
12c XSLT Editor Overview
https://blogs.oracle.com/integration/entry/12c_xslt_editor_overview
http://orablogs-jp.blogspot.jp/2016/04/12c-xslt-editor-overview.html
このエントリのために、Map Viewの説明で使ったサンプルを使います(Map Viewの説明エントリは以下のリンクからどうぞ)。
12c XSLT Editor – Map View Overview
https://blogs.oracle.com/integration/entry/12c_xslt_editor_map_view
http://orablogs-jp.blogspot.jp/2016/04/12c-xslt-editor-map-view-overview.html
このサンプルでは、Purchase Order(発注書)からInvoice(送り状)へのマッピングをXSLTエディタのMap Viewを使って作成しました。

ソース側のShipToノード配下にはるAddressをターゲット側のShippedToノード配下のAddressにマッピングしました。BillTo配下のAddressもマッピングする必要があります。BillToとShipToのaddressのaddress構造は同じなので、address情報の汎用的なマッピングを含む一つのテンプレートを作成し、テンプレートをBillToとShipTo配下のaddressのマッピングに再利用するのは理に適っています。
既存のShipToからShippedToへのマッピングをリファクタリングし、別のルール・テンプレートを作成することでこれを実現します。こうすることで、ShippedToとBilledToのaddressを出力XMLに設定が必要な箇所で、xsl:apply-templatesステートメントを使うテンプレートを呼び出すことができます。
まず、XSLTビューに移動しましょう。エディタのツールバー右側にあるXSLTボタンをクリックし、XSLTビューに移動します。

XSLT ViewでXSLT(右上方)の分割ビューとターゲットスキーマツリー(右下方)を表示されています。
XSLTのShippedToノードにあるマッピングを複製し、リファクタリングして、別のテンプレートに配置する必要があります。ShippedToエリアをXSLTパネルで開くと、以下のようになります。

XSLTパネルのShippedTo/Addressノードを右クリックし、[テンプレートに作成]をクリックします。

新しいテンプレート・ルール・ダイアログが、新規テンプレート用に提示された一致文字列を伴って表示されます。ダイアログでOKを選択すると、リファクタリングが始まります。

新しく作成されたルール・テンプレートには、Addressノード用の元のマッピングが含まれています。xsl:apply-templatesステートメントはXSLT中のAddressノードの元の位置に挿入されます。出力XMLのこの位置にAddress出力ノードが作成されるよう、このxsl:apply-templates ステートメントが、新しいルール・テンプレートにXSLTのこの位置で実行させます。
ソース・ツリーのShipTo/Addressノードは紫のバブルで強調表示されます。これは新規テンプレートのコンテキストノードである、つまり新規テンプレートの相対XPath式がこのコンテキストノードに関連することを示しています。
このルール・テンプレートを再利用して、BillToアドレス情報をマッピングしましょう。まず、ルール・テンプレートの一致文字列を両エリアで使えるよう汎用化します。新しいxsl:templateノードをダブル・クリックすると、xsl:templateステートメントの属性を変更できるダイアログが現れます。

属性情報をプロパティウィンドウで編集することもできます。[OK]をクリックすると、テンプレート中の一致文字列が/ns0:PurchaseOrder/ShipTo/AddressからAddressに変わります。これはAddressという名前のすべてのノードに一致します。

一致文字列がAddressで、ソースのAddressの任意のノードに一致する可能性があったとしても、テンプレートの実行はxsl:apply-templatesのために定義された、選択された式に制限されます。一致文字列がAddressで、xsl:apply-templatesで選択されたものが、/ns0:PurchaseOrder/ShipTo/Addressである場合、BilledToエリアのためのAddress テンプレート・ルールを実行するため、出力側のBilledToノードの下に別のxsl:apply-templatesステートメントを追加する必要があります。
BilledToノードをXSLTに追加するため、その親ノード(tns:Invoice)を右クリックし、[スキーマから子を追加]>BilledToを選択します。

BilledToノードをすべての必要とする子とともに追加します。

ShippedToノードと同じようにxsl:apply-templates 要素をAddressノードの代わりに置き換えます。Addressノードを削除し、xsl:apply-templates要素を選択し、BilledTo要素の子として追加します。

BillTo/Address フィールドを xsl:apply-templates ステートメントにマッピングして、テンプレートを呼ぶようにします。同様に、NameフィールドをShppedToにマッピングします。
Addressテンプレートをクリックすると、テンプレート用に2個のコンテキストノードが紐付いています。

Addressテンプレート内で使われている相対XPath式に着目してください。CityというXPath式を選択しています。Cityは2個のAdressコンテキストノードに関連しています。

2016年4月12日

[WLS] New WebLogic Server Running on Docker in Multi-Host Environments

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

Oracle WebLogic Server 12.2.1はDocker 1.9コンテナ上での動作を保証しています。この動作保証の一環として、複数の物理ホストにまたがるOracle WebLogic Server 12.2.1クラスタを構成することができます。マルチホストで動作するコンテナを、Dockerfilesを使ってビルドされた既存のOracle WebLogic 12.2.1インストールイメージの拡張としてビルドします。ドメインイメージはDockerfilesを使ってビルドします。既存のOracle Linuxイメージは以下で公開されているOracle Linux Imagesを使います。この作業をするにあたり、サンプルとしてGitHubでスクリプトを公開しています。
インストールイメージ
https://github.com/oracle/docker-images/tree/master/OracleWebLogic/dockerfiles/12.2.1
ドメインイメージ
https://github.com/oracle/docker-images/tree/master/OracleWebLogic/samples/1221-domain
Oracle Linuxイメージ
https://registry.hub.docker.com/_/oraclelinux/
Oracle WebLogic on Multihost Network Docker
https://github.com/oracle/docker-images/tree/master/OracleWebLogic/samples/1221-multihost
下表はDocker 1.9でのWebLogic Server 12.2.1のCertification状況を示したものです。Dockerイメージを作成する上では、Oracle WebLogic Server、JDK、LinuxそしてDockerバージョンの組合せを利用することができます。
WLSバージョン JDKバージョン Host OS Kernel Dockerバージョン
12.2.1 8 Oracle Linux 6 UEK 4 1.9
Oracle Linux 7
事前に、その他のDockerバージョンでのOracle WebLogic Server 12.1.3とOracle WebLogic Server 12.2.1のcertificationに関する詳細を記載した以下のエントリを一読ください。
Oracle WebLogic Server 12.2.1 Running on Docker Containers
https://blogs.oracle.com/WebLogicServer/entry/oracle_weblogic_server_12_21
http://orablogs-jp.blogspot.jp/2015/11/oracle-weblogic-server-1221-running-on.html 
Kernel 4以後で動作しDocker ContainerをサポートするLinuxホストOSで動作する、動作保証済みのDocker ContainerでOracle WebLogic Serverはサポートされます。詳細はサポート文書をご覧ください。
 Support for Oracle WebLogic Server Running in Docker Containers on Non-Certified Linux Host Operating Systems (Doc ID 2017945.1)
https://support.oracle.com/rs?type=doc&id=2017945.1 
現時点のOracle WebLogic Serverがサポート対象とする構成に関する詳細は、以下のCertificationページをご覧ください。
Supported Virtualization and Partitioning Technologies for Oracle Fusion Middleware
http://www.oracle.com/technetwork/middleware/ias/oracleas-supported-virtualization-089265.html
GitHubにUpしたマルチホスト環境をサポートするスクリプトは、Docker Networking、Docker Swarm、Docker Composeの最新バージョンをベースにしています。Docker MachineはDockerオーバーレイネットワークによって構成されたDocker Swarmに参加します。WebLogic Serverの管理サーバコンテナだけでなく、管理対象サーバコンテナも、Swarm内の異なるVMで動作し、互いに通信することができます。

我々が提供しているDockerfilesとスクリプトを使うと、単一ホストOSやVM、もしくは複数のホストOSやVMで動作する開発および本番環境を含む、クラスタ、非クラスタのOracle WebLogic Serverのドメイン構成を作成することができます。作成したドメイン構成で実行中の各サーバーはDockerコンテナで実行され、他のサーバ と必要に応じて通信することが可能です。これらのコンテナがWebLogicクラスタ内で実行される場合、メモリセッションレプリケーション。HTTP ロードバランシング、サーバ移行などのWebLogicクラスタのすべての高可用性機能がサポートされます。

以下のYouTubeの動画で、WebLogic Serverのドメインやクラスタをマルチホスト環境で作成する方法をご覧ください。Dockerコンテナ上でWebLogic Serverの異なる構成の実行を試されることを期待しています。みなさまからのフィードバックを楽しみにしております。

(訳注)
原文はリンクが壊れているので、該当する動画のリンクを掲載しています。