2014年1月31日

[WLS, Java] Precompiled JSP Behavior on WebLogic 12c. Suddenly consuming more memory?

原文はこちら。
https://blogs.oracle.com/configandruntime/entry/precompiled_jsp_behavior_on_weblogic

最初のエントリとして、サーバーのメモリ消費量を最大限制御しつづける上でお役に立つかもしれないことを共有したいと思います。

weblogic.appcを使ってデプロイする前にコードをプリコンパイルし、アプリケーションの性能を向上させようとする場合、この問題に出くわす可能性があります。ご存知かもしれませんが、仮想プロセスのサイズはJavaヒープと非Javaヒープによって構成されています。このため、全てのオブジェクトとサーバー実行に必要なデータはJavaのヒープ外からのロードが多数発生します。この特定のケースでは、プリコンパイルされたJSPファイルをJavaヒープの外部に格納します。特にHotSpot JDKでは、PermSpaceに格納されてしまいます。

Well, why is this important?

WebLogic Server 11gから12cへアプリケーションを移行し、JSPをプリコンパイルする場合、アプリケーションを起動するたびにPermSpaceをどこからともなく消費することがわかります。この件の速やかな説明は明らかではありませんが、完全に予想されることなのです。

数多くのプリコンパイル済みJSPがアプリケーションで使われている場合、これは問題になるでしょう。

How can I know if I'm facing this problem?

クラスローディングのデバッグを有効(Javaのシステムプロパティ -verbose:class を使う)にすれば、アプリケーション起動時(つまり、例えば管理コンソールに入るか、WLSTを使用し、準備済み(Prepared)からアクティブ(Active)状態へ遷移するタイミング)にロードされる、全てのプリコンパイルされたJSPファイルを確認できます。
[Loaded javax.ws.rs.ext.Provider from file:/refresh/home/WLS/12.1.1/modules/com.sun.jersey.core_1.1.0.0_1-9.jar]
[Loaded $Proxy108 from sun.misc.Launcher$AppClassLoader]
[Loaded jsp_servlet.__dummyjsp1603 from file:/refresh/home/WLS/12.1.1/user_projects/domains/myDomain/servers/AdminServer/tmp/_WL_user/native_test_1211/7vonl8/war/WEB-INF/lib/_wl_cls_gen.jar]
[Loaded jsp_servlet.__dummyjsp1602 from file:/refresh/home/WLS/12.1.1/user_projects/domains/myDomain/servers/AdminServer/tmp/_WL_user/native_test_1211/7vonl8/war/WEB-INF/lib/_wl_cls_gen.jar]
[Loaded jsp_servlet.__dummyjsp1605 from file:/refresh/home/WLS/12.1.1/user_projects/domains/myDomain/servers/AdminServer/tmp/_WL_user/native_test_1211/7vonl8/war/WEB-INF/lib/_wl_cls_gen.jar]
[Loaded jsp_servlet.__dummyjsp1604 from file:/refresh/home/WLS/12.1.1/user_projects/domains/myDomain/servers/AdminServer/tmp/_WL_user/native_test_1211/7vonl8/war/WEB-INF/lib/_wl_cls_gen.jar]
[Loaded jsp_servlet.__dummyjsp1607 from file:/refresh/home/WLS/12.1.1/user_projects/domains/myDomain/servers/AdminServer/tmp/_WL_user/native_test_1211/7vonl8/war/WEB-INF/lib/_wl_cls_gen.jar]
...
...
...
[Loaded jsp_servlet.__dummyjsp1890 from file:/refresh/home/WLS/12.1.1/user_projects/domains/myDomain/servers/AdminServer/tmp/_WL_user/native_test_1211/7vonl8/war/WEB-INF/lib/_wl_cls_gen.jar]
メモリ使用量を控えめにしたい場合、アクセス権を基にこれらのプリコンパイルされたJSPだけをロードだけしたいのでしょうか。確かにそれが、ここでデフォルトの動作として起きていないことですからね。

Under the hood

WebLogic Server 12.1.1では、新しい機能が実装されています。これは、initContainerInitializer()と呼ばれるメソッドによって基本的に表されるものです。この問題でクラッシュしている場合には、アプリケーションを起動し、数個のスレッドダンプを収集すると、デプロイメントを利用可能にするために読み取り、膨らませる役目を担う次のメソッドがスレッド上に現れていることを確認できるでしょう。
[ACTIVE] ExecuteThread: '0' for queue: 'weblogic.kernel.Default (self-tuning)'" daemon prio=10 tid=0x0af82000 nid=0x1e9f runnable [0x353bd000]
java.lang.Thread.State: RUNNABLE
  at java.util.zip.ZipFile.read(Native Method)
  at java.util.zip.ZipFile.access$1200(ZipFile.java:31)
  at java.util.zip.ZipFile$ZipFileInputStream.read(ZipFile.java:460)
- locked (a java.util.jar.JarFile)
  at java.util.zip.ZipFile$1.fill(ZipFile.java:243)
  at java.util.zip.InflaterInputStream.read(InflaterInputStream.java:141)
  at weblogic.utils.io.DataIO.readFully(DataIO.java:351)
  at weblogic.utils.io.DataIO.readFully(DataIO.java:328)
  at weblogic.utils.classloaders.ZipSource.getBytes(ZipSource.java:76)
  at weblogic.utils.classloaders.GenericClassLoader.defineClass(GenericClassLoader.java:321)
  at weblogic.utils.classloaders.GenericClassLoader.findLocalClass(GenericClassLoader.java:302)
- locked (a weblogic.utils.classloaders.GenericClassLoader)
  at weblogic.utils.classloaders.GenericClassLoader.findClass(GenericClassLoader.java:270)
  at java.lang.ClassLoader.loadClass(ClassLoader.java:305)
- locked (a weblogic.utils.classloaders.GenericClassLoader)
  at java.lang.ClassLoader.loadClass(ClassLoader.java:246)
  at weblogic.utils.classloaders.GenericClassLoader.loadClass(GenericClassLoader.java:179)
  at java.lang.Class.forName0(Native Method)
  at java.lang.Class.forName(Class.java:247)
  at weblogic.application.utils.annotation.ClassfinderClassInfos.loadClass(ClassfinderClassInfos.java:109)
  at weblogic.application.utils.annotation.ClassfinderClassInfos.getHandlesImpls(ClassfinderClassInfos.java:68)
  at weblogic.servlet.internal.War.getHandlesImpls(War.java:413)
at weblogic.servlet.internal.WebAppServletContext.initContainerInitializer(WebAppServletContext.java:1279)
at weblogic.servlet.internal.WebAppServletContext.initContainerInitializers(WebAppServletContext.java:1229)

  at weblogic.servlet.internal.WebAppServletContext.preloadResources(WebAppServletContext.java:1726)
- locked (a weblogic.servlet.internal.WebAppServletContext)
  at weblogic.servlet.internal.WebAppServletContext.start(WebAppServletContext.java:2740)
  at weblogic.servlet.internal.WebAppModule.startContexts(WebAppModule.java:1704)
  at weblogic.servlet.internal.WebAppModule.start(WebAppModule.java:781)

赤で協調されている部分に気づきましたか?注意深く見ると、これらのメソッドは11gのコードにはないことがわかることでしょう。従って、WebLogic Server 11gで実行した場合、この挙動を見ることはないのです。おおっ、真ん前に決定的証拠がありますね。

Ok, problem is there... How do I fix it?

いい知らせがあります。この問題は既に対処済みということです。もし以前のWebLogic Server 11gの挙動に戻したい、ということであれば、2段階の方法を実施する必要があります。
  • パッチをインストール(WebLogic Server 12.1.1の場合のみ。12.1.2以上であればこの手順は無視してください)
    • 質問のバグは未発表の不具合です
      Bug 14805810 - psr:perf:soa severe impact on startup time,webappservletcontext.initcontainerini
  • デプロイメントディスクリプタ(weblogic.xml)を修正して、パッチが有効になるようにします

weblogic.xmlデプロイメント・ディスクリプタはパッチを有効にするためには以下のような感じになるはずです。
<?xml version="1.0" encoding="UTF-8"?>
<wls:weblogic-web-app xmlns:wls="http://xmlns.oracle.com/weblogic/weblogic-web-app" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd http://xmlns.oracle.com/weblogic/weblogic-web-app http://xmlns.oracle.com/weblogic/weblogic-web-app/1.4/weblogic-web-app.xsd">
  <wls:weblogic-version>12.1.1</wls:weblogic-version>
  <wls:context-root>native_test_1211</wls:context-root>
  <wls:container-descriptor>
    <wls:container-initializer-enabled>false</wls:container-initializer-enabled>
  </wls:container-descriptor>
</wls:weblogic-web-app>
デプロイメントプランを使うか、直接アプリケーションに指定するかのいずれかで設定できます。どちらでも効果があります。

パッチのインストール方法や、これを複製する方法に関する詳細は、以下のサポートドキュメントをご覧下さい。
WebLogic Server 12.1.1 Loads All Precompiled JSPs Into Native Memory Causing Out of Memory Problems (Doc ID 1571737.1)
https://support.oracle.com/rs?type=doc&id=1571737.1
まだ何かご質問や問題があれば、是非サポートに対してSR(Service Request)を起こしてください。必要な情報を回答できるかと思います。

[Java] Slides: "Smart Migration to JDK 8"

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

現在取りかかっているScreencast用のスライドで、効率的にJDK 8へ移行する方法をまとめています。つまり、移行にあたっては、そのためのツールを持つ必要があり、持たなければ悪夢のような作業が待っている、というものです。

このデモ込みのスライドは、どこでNetBeans IDE 8に切り替え、どこでちょっとしたデモを実施するか、がポイントです。

このスライドは変更される可能性があります。SlideshareのURLは以下の通りです。
http://www.slideshare.net/GeertjanWielenga/smart-migration-to-jdk-8
関連する記事として、Btett RyanのNetBeans 8を使ったJDK 8への移行に関するすばらしいエントリもご覧下さい。
Migrating to JDK 8 with NetBeans
http://drunkendev.blogspot.nl/2014/01/migrating-to-jdk-8-with-netbeans.html

[Java] YouTube: "Smart Migration to JDK 8"

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

JDK 8へ移行する上でどこから手をつけたらいいのかわからない方に、Java 8での言語仕様の変更を活用するためにコードをアップグレードする上での適切な心構えをまとめました。

フィードバックお待ちしています!

[Virtualization, Solaris] Announcing Oracle SDN Support in New Solaris Drivers

原文はこちら。
https://blogs.oracle.com/eSTEP/entry/announcing_oracle_sdn_support_in

2014年1月28日付けで、Oracle SDNをサポートするOracle Solaris 11用のOracle Virtual Effective Networkingドライバがリリースされたことを発表しています。Oracle Virtual Networkingは今やOracle SPARC T-series、M5の両サーバーだけでなく、x86サーバー上でのOracle SDNもサポートします。

お客様はOracle Solarisの仮想化環境用のネットワーク仮想化機能を拡張することができます。Oracle SDNを使ってアプリケーション用に作成された高速なネットワークを使い、ファブリック間での仮想マシンのライブマイグレーションを実行することができます。Oracle Virtual Networkingの仮想I/Oデバイスは物理I/OデバイスとしてハイパーバイザーやOSに現れます。

2014年1月30日

[Linux] Ksplice SNMP Plugin

原文はこちら。
https://blogs.oracle.com/ksplice/entry/ksplice_snmp_plugin

KspliceチームはSNMP plugin for Kspliceのリリースならびに本日からUnbreakable Linux Networkから入手いただけることを発表できうれしく思います。このプラグインを使うと、Oracle Enterprise Managerを使って貴社システムの全てのノードのKspliceの状態を監視するだけでなく、SNMP互換の任意の監視ソリューションとも連係することができます。

Installation

ご利用のディストリビューションとアーキテクチャに対応するKspliceチャネルのプラグインを見つけてください。x86_64アーキテクチャのOracle Linux 6であれば、ol6_x86_64_kspliceです。このプラグインを(rootで)以下のコマンドを使ってインストールします。
yum install ksplice-snmp-plugin

Configuration

SNMPのセットアップが済んでいない場合、少々設定が必要です。以下のファイルはプラグインを試すためのサンプルとなる /etc/snmp/snmpd.conf ファイルです。
# Setting up permissions
# ======================
com2sec local localhost public
com2sec mynet 10.10.10.0/24 public

group local v1 local
group local v2c local
group local usm local
group mynet v1  mynet
group mynet v2c mynet
group mynet usm mynet

view all included .1 80

access mynet "" any noauth exact all none none
access local "" any noauth exact all all none

syslocation Oracle Linux 6
syscontact sysadmin <root@localhost>

# Load the plugin
# ===============
dlmod kspliceUptrack /usr/lib64/ksplice-snmp/kspliceUptrack.so
com2sec の隣のIPアドレスを、貴社のローカルネットワークのアドレスもしくはSNMP監視ソフトウェアのアドレスに置き換えて下さい。x86-32bitアーキテクチャ上で実行する場合は、dlmodパスのlib64libに置き換えて下さい。上記の設定はサンプルであり、あくまでもテスト用途です。SNMPの設定に関する詳細は、SNMPのドキュメント、snmpdsnmpd.confのmanページをご覧下さい。
Net-SNMP
http://www.net-snmp.org/docs/readmefiles.html
SNMPD
http://www.net-snmp.org/docs/man/snmpd.html
SNMPD.CONF
http://www.net-snmp.org/docs/man/snmpd.conf.html

Testing

snmpwalk コマンドを使って応答を検証し、設定をテストすることができます。以下はコマンドの例です。
$ snmpwalk -v 1 -c public -O e localhost KSPLICE-UPTRACK-MIB::kspliceVersion
KSPLICE-UPTRACK-MIB::kspliceVersion.0 = STRING: 1.2.12

$ snmpwalk -v 1 -c public -O e localhost KSPLICE-UPTRACK-MIB::kspliceStatus
KSPLICE-UPTRACK-MIB::kspliceStatus.0 = STRING: outofdate

$ snmpwalk -v 1 -c public -O e localhost KSPLICE-UPTRACK-MIB::kspliceBaseKernel
KSPLICE-UPTRACK-MIB::kspliceBaseKernel.0 = STRING: 2.6.32-100.34.1.el6uek.x86_64

SNMP and Enterprise Manager

プラグインが起動して動作したら、システムをOracle Enterprise Managerで監視することができます。具体的には、SNMP Adapterを作成してEnterprise Managerのエージェントが、プラグインがインストールされている各システムのKspliceの状態を問い合わせることができるようになります。詳しくは、"22.6 About Metric Extensions"を含む、以下のEnterprise Managerのドキュメントをご覧下さい。
(訳注)
日本語版のドキュメントでは、22.6ではなく、「12.6 メトリック拡張について」です。
Oracle® Enterprise Manager Cloud Control Administrator's Guide 12c Release 3 (12.1.0.3)
22 Introducing Enterprise Manager Support for SNMPhttp://docs.oracle.com/cd/E24628_01/doc.121/e24473/snmp_ovw.htm
Oracle® Enterprise Manager Cloud Control管理者ガイド 12c リリース3 (12.1.0.3)
12 Enterprise ManagerのSNMPサポートの概要
http://docs.oracle.com/cd/E26854_01/doc.121/b65081/snmp_ovw.htm
このプラグインはKspliceとEnterprise Managerを連係するすばらしい機能の最初のステップであり、次に何が来るのか、とわくわくしています。プラグインに関する質問や将来の発展のためのご提案があれば、このエントリ(訳注:お約束ですが原文にコメントをお願いします)のコメント欄に記載戴くか、ksplice-support_ww at oracle.comへご連絡下さい。

[Java] Survey Sez: Java EE 7 Adoption Looking Pretty Good!

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

Java.netのエディタであるKevin Farnhamがまたいい仕事をしています。彼は、Java EEに関する世論調査を行い、非常に驚くべき答えを得ました。その質問とは非常にシンプルですが深遠なものです。
「Java EE 7は、これまでのところあなたの仕事にどのくらいのインパクトを与えていますか?」
驚くべきことに、回答者の大半( 55%)は、すでにJava EE 7を採用していたり、近い将来に採用する見込みである、というものです。事実を正しくとらえると、Java EE 7は昨年6月にリリースされたのです。わずかに半年前のことです。以下は結果の大まかなグラフならびに実際の内訳をまとめたものです。
How much impact has Java EE 7 had on your work thus far?
(Java EE 7は、これまでのところあなたの仕事にどのくらいのインパクトを与えていますか?)
  • 17% - Significant: I'm working with Java EE 7 on a regular basis(普段からJava EE 7を使っています)
  • 19% - Some: I'm starting to work with Java EE 7 increasingly(これから徐々にJava EE 7を使っていきます)
  • 2% - Slight: I don't use it myself, but I work with developers who do(自分では使っていませんが、Java EE 7を使っている開発者と一緒に仕事をしています)
  • 17% - None yet, but I expect Java EE 7 will impact some of my work soon(まだ使っていませんが、Java EE 7が近い将来自分の仕事になんらかのインパクトを与えると思います)
  • 19% - None: all of my Java EE work will remain on earlier versions long into the future(過去のバージョンのJava EEに関する仕事が長く続くことでしょう)
  • 20% - None, because all of my work is completely unrelated to Java EE(Java EEとは全く関わりのない仕事をしています)
  • 6% - Other(その他)
これはもちろん良いニュースです。このように、ほとんどのJava.netの読者はおそらく、Java EEの採用に動こうとしているか、少なくともかなりJava EEについてご存知なのではないか、と思っています。全体の母集団もかなり小さい(149)のです。企業で数年働いてきたので、これに対する私の直感的反応は、JBoss/WildFly/TomEEコミュニティやその他の多くの人たちは、これまでよりもずっと、Java EEの情報をうまく流している、というものです。とはいえ、かなり自明なのは、まだまだやるべきことがある、ということです。特にWebLogicおよびWebSphereのコミュニティのようなことについてはなおのことです。最終的なタイムラインとは関係なく、Googleトレンドをさらっと見たところでも、ベクトルは正しい方向を向いているように思えます。

Google トレンド(ウェブ検索の人気度: j2ee, spring framework, java ee - すべての国, 2004年 - 現在)
http://www.google.com/trends/explore?q=j2ee%2C+spring+framework%2C+java+ee#q=j2ee%2C%20%20spring%20framework%2C%20%20java%20ee%2C%20%20spring%20data&cmpt=q

Java EEのファンは、まずは喜び、Java EE 7が組織で採用されるところを見ることになるでしょうし、Java EE 8で必要なものを考え始め、そして皆さんの考えを知らせてください。
Java EE 8 Community Survey - Part 2! (The Aquarium)
https://blogs.oracle.com/theaquarium/entry/java_ee_8_community_survey

興味をお持ちになった方は、Kevinが調査の詳細をまとめていますので、そちらをどうぞ。
Poll Result: Java EE 7 Impact Is Increasing
https://weblogs.java.net/blog/editor/archive/2014/01/26/poll-result-java-ee-7-impact-increasing

2014年1月29日

[Java, Security] Java 8 will use TLS 1.2 as default

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

Transport Level Security (TLS) は2者間の会話を暗号化して他者が会話を読み取ったり改変できないことを保証することを目的として設計されています。認証局(Certificate Authorities)と組み合わせることで、適切な信頼レベルを確立します。つまり、会話の相手は誰なのか、そして会話が盗聴されたり改変されないように保護されていることがわかります。
Java 7(2011年)に初めてTLS 1.2のサポートが登場しました。互換性の理由により、デフォルトでサーバーソケットでは有効になっていますが、クライアント側では無効になっています。それ以後、業界では大幅な改善を行い、相互運用性と下位互換性の維持に対処してきました。
今回、以下の2個の理由から、Java 8ではTLS 1.2をデフォルトで利用することにしました。
  1. TLSには後方互換性があり、デフォルトから1.2へアップグレードした後も、TLS 1.1や1.0を使っているシステムは継続して機能を利用可能であるため(*)
    1. * セキュリティ上の理由で削除されたアルゴリズムを使って構成していないことが前提。ほとんどのシステムはこの影響を受けることはない。
      参考:Wikipedia
      https://en.wikipedia.org/wiki/Transport_Layer_Security#cite_ref-ciphers_16-2
    2. TLS 1.2を完全に理解したい方は、RFCをご覧下さい。
      The Transport Layer Security (TLS) Protocol Version 1.2
      Appendix E. Backward Compatibility
      http://tools.ietf.org/html/rfc5246#appendix-E
    3. TLSとSSLの違いを知りたい方は以下のリンクをどうぞ。
      Differences between SSL and TLS Protocol Versions
      http://www.yassl.com/yaSSL/Blog/Entries/2010/10/7_Differences_between_SSL_and_TLS_Protocol_Versions.html
  2. 盗聴に対し、インターネット通信の保護機能が強化されているため
    It’s Time for TLS 1.2
    https://casecurity.org/2013/09/19/its-time-for-tls-1-2/
Java 8の早期アクセス版でテストする場合、この設定はbuild 122からなされています。
JDK™ 8 Early Access Releases(2014/01/29現在、b124です)
https://jdk8.java.net/
TLSはほとんどの開発者やユーザーに透過的なものです。詳細をご所望の方のために、以下の内容について説明します。
  • Threats and the role of encryption(脅威と暗号化の役割)
  • Compatibility with Java and other systems(Javaや他システムとの互換性)
  • Understanding your TLS implementation(あなたのTLS実装の理解)
  • Other Considerations for TLS(TLSのその他の考慮事項)

Threats and the role of encryption

活発な暗号化に関するIETFのワーキンググループと、TLS 1.2に対する業界の幅広いサポートがあるため、システムのデフォルトを更新するにはちょうどよいタイミングです。
New IETF Group to Tackle TLS Implementation in Applications
https://threatpost.com/new-ietf-group-to-tackle-tls-implementation-in-applications/103183
Qualys SSL LabsがTLSの脅威モデルを説明するすばらしい研究結果をまとめています。TLS脅威モデルを扱う上でのベストプラクティスがこの動きを後押ししています(具体的には「2.2 use secure protocols」に説明があります)。
SSL脅威モデル(マインドマップ)
https://www.ssllabs.com/downloads/SSL_Threat_Model.png
SSL/TLS Deployment Best Practices
https://www.ssllabs.com/downloads/SSL_TLS_Deployment_Best_Practices_1.3.pdf

Compatibility with Java and other systems

TLS 1.2はRFCのAppendix Eにあるように、後方互換性をもつよう設計されています。TLS 1.2のクライアントが古いバージョンのTLSを実行しているサーバーと接続する場合、クライアントがあわせます。逆に、古いバージョンを使うクライアントがTLS 1.2を使っているサーバーに接続する場合、サーバーがあわせます。後方互換性のために、TLS 1.2をサポートするクライアントは改善された通信を受信できるとともに、旧バージョンのクライアントは継続して機能します。
Trustworthy Internet's SSL Pulseによる採用統計によると、十分数多くのインターネットに接続されたシステムがTLS 1.2と互換性のある暗号を使用しています。
SSL Pulse
https://www.trustworthyinternet.org/ssl-pulse/

Understanding your TLS implementation

開発者やシステム管理者は、Qualys SSL LabsやHow's My SSLといったウェブサイトを使ってサーバーやクライアントをテストすることができます。
Qualys SSL Labs - Projects / SSL Server Test
https://www.ssllabs.com/ssltest/index.html
Qualys SSL Labs - Projects / SSL Client Test
https://www.ssllabs.com/ssltest/viewMyClient.html
How's My SSL?
https://www.howsmyssl.com/ 
システム管理者は管理しているシステムのTLS実装を確認し、クライアントを監視したり、特定のTLSバージョンを無効化することができます。例えば、機密性の高いビジネスに関わるあるシステム管理者であれば、これまで使ってきた古いバージョンのTLSを無効化したくなるかもしれません。

GUIでクライアントのTLSのバージョンを確認するには

  1. Javaコントロールパネルを開く
  2. 詳細タブへ移動
  3. 最下部に「高度なセキュリティ設定」へ
  4. 「TLS X.Yを使用する」のチェックボックスをON/OFF

サーバーでの設定もしくはGUIを使わずに設定する場合

  1. 全体に適用する場合
    1. ユーザーレベルもしくはシステムレベルのdeployment.propertiesファイルを開く
    2. 適切なプロパティを設定する
      deployment.security.TLSvX.Y=false
  2. 特定のアプリケーションもしくはスクリプトに設定する場合
    1. スタートアップフラグを使う。
      -Ddeployment.security.TLSvX.Y=false

Other Considerations for TLS

「Keeping Your Secrets」というInfoQの記事では、開発者が理解しておくべきトランスポートセキュリティや暗号化に関する追加の情報を取り上げています。
Keeping Your Secrets (InfoQ)
http://www.infoq.com/articles/keeping-your-secrets
TLSのプロトコルバージョンの持つ役割の範囲外で、この記事は情報を保護するためのよいテクニックを説明しています。

システム管理者(もしくは開発者)へ

Perfect Forward SecrecyをJava TLS接続で使用することができます。このPerfect Forward Secrecyを使用すると、過去の会話を保護できます。鍵を将来紛失してしまった場合でも、誰も過去の会話を解読することはできません。TLSの実装と同様、Perfect Forward Secrecyはデフォルトで有効になっていません。利用したい場合は、https.cipherSuitesプロパティを更新する必要があります。このプロパティに設定可能な一般的な値は次のとおりです。

2014年1月28日

[Big Data, Virtualization] Announcing: Oracle BigDataLite Virtual Machine

原文はこちら。
https://blogs.oracle.com/datawarehousing/entry/announcing_oracle_bigdatalite_virtual_machine

OracleのBig Dataプラットフォームについて色々聞いてらっしゃることかと思いますが、本日、Oracle BigDataLite Virtual Machineという、このBig Dataプラットフォームをさわりだそうという方にお役立ちの環境を発表できることをうれしく思っています。そして、OTN Virtual Developer Dayイベントにて、このBig Data製品をワークショップの一環で使い始めることができます。
Oracle BigDataLite Virtual Machine
http://www.oracle.com/technetwork/database/bigdata-appliance/oracle-bigdatalite-2104726.html
BigDataLiteとはVirtualBox VMで、OracleのBig Dataプラットフォームの主要コンポーネントが含まれています。そのコンポーネントとは、Oracle Database 12c Enterprise Edition、Oracle Advanced Analytics、Oracle NoSQL Database、Cloudera Distribution including Apache Hadoop、Oracle Data Integrator 12c、Oracle Big Data Connectorsなどです。開発者用マシンで動作するように構成済みで、全てのBigDataLiteを実行するには、複数コアのCPUと、5GB以上のRAMを割り当てる必要があります。つまり、ホストPCには少なくとも8GBのRAMが必要、ということになります。BigDataLiteを使い、Big Dataアプリケーションを開発し、Oracle Big Data Applianceにデプロイすることができますし、もしくは、アプリケーション開発中のBDAのクライアントとしてBigDataLiteを使うこともできます。

どこから始めましょうか…って2014年2月4日(火)に予定されているVirtual Developer Dayに登録するしかありませんよね。
(訳注)日本時間では全くの夜間です。
アメリカ太平洋時間:2014/2/4 9:00-13:00
アメリカ東部時間:2014/2/4 12:00-16:00
ブラジル時間:2014/2/4 13:00-19:00
日本時間:2014/2/5 2:00-6:00
OTN_VDD
製品エキスパート(OracleならびにOracle ACE)による45分のセッションがありますが、目玉は、Tom KyteとJonathan Lewisの基調講演「Landscape of Oracle Database Technology Evolution」です。Big Data関連のテクニカルセッションには以下のようなものがあります。
  • Oracle NoSQL Database Installation and Cluster Topology Deployment
  • Application Development & Schema Design with Oracle NoSQL Database
  • Processing Twitter Data with Hadoop
  • Use Data from a Hadoop Cluster with Oracle Database
  • Make the Right Offers to Customers Using Oracle Advanced Analytics
  • In-DB Map Reduce with SQL/Hadoop
  • Pattern Matching in SQL
是非お見逃しなく!Virtual Developer Dayで、この新しいBigDataLite VMの活用方法を発表する予定にしています。そして、もちろん、皆さんが作成するすばらしいアプリケーションについてもお話を伺いたいと思っています。

[Mobile, Java] Tyrus/WebSocket Client on Android

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

JavaOne San Francisco 2013でRyan Cuprak、Bala Muthuvarathanと共に「Android and iOS Development with Java EE 7」というタイトルのセッションで講演しました。
Android and iOS Development with Java EE 7
https://oracleus.activeevents.com/2013/connect/sessionDetail.ww?SESSION_ID=3868 
RyanはConnecticut JUGのリーダーで、親友であり、まもなく出る「EJB 3 in Action」第2版の共同執筆者です。Balaも友人で、前職(CapTech Consulting)の同僚です。多くの人が今日モバイルのバックエンドプラットフォームとしてJAX-RS/Java EEを使っており、Java EE 7がますますこの開発モデルの候補として勢力を増しているという事実にもかかわらず、意外にもこのトピックに関してほとんど話題になっていなかったので、このトピックを選択しました。セッション動画は以下でご覧戴けます。このセッションで紹介したデモのコードはGitHubにUpしてあり、スライドはSlideShareからご覧戴けます。
Java EE for Mobile (Andriod and iOS) Demo(デモコード)
https://github.com/m-reza-rahman/javaee-mobile
Android and iOS Development with Java EE 7(セッション資料)
http://www.slideshare.net/reza_rahman/con3868-rahman

我々が驚いたことの一つに、AndroidがいまだにWebSocketを使った開発に対するサポートが非常に弱い、ということです。その結果、Java EE 7で標準化されたWebSocketクライアントAPIがAndroidで動作すればすばらしいことだろうと考え、Tyrusに対しAndroidをサポートするようにJIRAに登録しています。
[#TYRUS-256] Support Client API on Andriod - Java.net JIRA
https://java.net/jira/browse/TYRUS-256
Tyrusチームが実際にこの問題に対応したことに、うれしい驚きをもたれたかもしれません。Pavel Bucekのブログエントリで、このとっかかりの作業の詳細がサンプルコードと共にご覧戴けます。もしこの機能が有用と思われたら、是非深掘りしてTyrusメーリングリストやJIRAであなたの考えを共有してください。JavaOneのセッション用サンプルコードに貢献することもできますよ(現在のコードはAutobahn Androidライブラリを使っています)。
WebSocket Client on Android – Tyrus
https://blogs.oracle.com/PavelBucek/entry/websocket_client_on_android_tyrus
http://orablogs-jp.blogspot.jp/2014/01/websocket-client-on-android-tyrus.html

2014年1月27日

[Identity Management] Oracle Unified Directory 11gR2PS2 Released !

原文はこちら。
https://blogs.oracle.com/directoryservices/entry/oracle_unified_directory_11gr2ps2_released

Oracle Unified Directory 11gR2PS2 (11.1.2.2)をリリースしました。
Oracle Unified Directoryはストレージ、プロキシ、同期、仮想化機能を全て備えたall in oneソリューションです。
アプローチを統一する一方で、高性能なエンタープライズおよびキャリアグレードの環境で必要とするすべてのサービスを提供します。Oracle Unified Directoryは数十億ものエントリにも対応する拡張性、インストールのしやすさ、柔軟な展開、エンタープライズ用途の管理性と効果的な監視を確保します。

このパッチセットには新機能が含まれています。
  • シンプルな展開と標準のJVMチューニングでチューニング
  • Attribute Encryption機能による追加のセキュリティ 
  • 管理を簡単にするOracle Directory Services Managerでサーバー間の複製を管理
  • Replication Gatewayを使ったODSEE(Oracle Directory Server Enterprise Edition、旧Sun Java Directory Server Enterprise Edition)ととの共存またはOracle Unified Directoryへの移行の監視機能を強化
  • Oracle Identity製品との統合時のパフォーマンス向上
Oracle Unified DirectoryはOracle Directory Services Plusの構成コンポーネントであり、堅牢なアイデンティティ管理を実現するための総合的なディレクトリ·ソリューションを提供します。
Oracle Unified Directoryに関する詳細は以下のリンクをどうぞ。
Oracle Directory Services
http://www.oracle.com/us/products/middleware/identity-management/directory-services/resources/index.html
Oracle Unified Directory
http://www.oracle.com/technetwork/jp/middleware/id-mgmt/overview/oud-433568.html
http://www.oracle.com/technetwork/middleware/id-mgmt/overview/oud-433568.html
ドキュメント(2014/01/27現在、英語のみ)
http://docs.oracle.com/cd/E49437_01/index.htm
試使用ダウンロード
http://www.oracle.com/technetwork/middleware/id-mgmt/downloads/oid-11gr2-2104316.html

2014年1月25日

[Java] Do you use sun.misc.Unsafe ?

原文はこちら。
https://blogs.oracle.com/dave/entry/do_you_use_sun_misc

JDKの計画に役立てるため、是非皆様にAPIの利用、特にsun.misc.Unsafeの利用に関するアンケートにご協力戴ければと思います。
sun.misc.Unsafe
https://www.surveymonkey.com/s/sun-misc-Unsafe

2014年1月23日

[Java, Mobile] WebSocket Client on Android – Tyrus

原文はこちら。
https://blogs.oracle.com/PavelBucek/entry/websocket_client_on_android_tyrus

Java EEライブラリやフレームワークを標準に準拠していないVMで実行するのはそれほど珍しいことではありませんし、それはTyrusにおいても同じです。この作業は主としてReza RahmanからのTYRUS-256という課題レポートで始まったと認めなければなりません。
Project Tyrus (JSR 356: Java API for WebSocket - Reference Implementation)
https://tyrus.java.net/
TYRUS-256 (Support Client API on Andriod)
https://java.net/jira/browse/TYRUS-256
Reza Rahman
https://blogs.oracle.com/reza/
Dalvik上でのTyrusの実行を公式にはサポートしていませんし、これがいい考えなのかわかりませんが、重要なこととして、Tyrusは動作し、必要なら動作するようにできる、ということです。

Android上での動作を妨げる問題は、javax.naming.InitialContextクラスの利用に集約されています。簡単な代替策はありませんが、幸運にも、そのクラスがないならその依存性を取り除くためのリフレクションハッキングを行うことも可能性として存在します。残りはサンプルアプリケーションを作成しスマートフォン上でテストすることでしかなく、それほど大変なことではありませんでした。IntelliJ IDEAチームのAndroid Studioに対してではなく、サポートに対し賛辞を申し上げなければなりません。gradleをビルドツールとして利用しており、(もしかしてみなさんはご存知かもしれませんが、筆者はgradleについてそれほど詳しくないのです)AndroidプラグインがJavaプラグインと衝突するため、Javaライブラリをインクルードできなかったのです。ビルドスクリプトとサポートを利用することが今回のタスクにとって有効でした。

テストに使用したアプリケーションをワークスペースのgithubにUpしました。
Test project used to debug Tyrus Client runtime on Android
https://github.com/pavelbucek/tyrus-client-android-test
ご自由にテストし、pull requestを提供してください。gradleのビルドスクリプトに特に興味があります。

今日はこれでおしまいです。AndroidでTyrusを使ったり、関連するコメントがあれば、Tyrusのメーリングリストや機能拡張リクエストとしてご意見をお知らせ下さい。
TyrusのJIRA
https://java.net/jira/browse/TYRUS

2014年1月22日

[Cloud] Cloud Odyssey: A Hero's Quest, a sci-fi movie by Oracle, coming to a city near you

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


既に"Cloud Odyssey: A Hero's Quest"という、Oracleが作ったSFムービーのことをご存知かもしれません。
Cloud Odyssey: A Hero's Quest
https://www.facebook.com/CloudOdyssey
この短い動画はミステリアスなTerranuvemというクラウド惑星への地球のトップエンジニアの乗組員の旅を取り上げたものです。チーフエンジニアであるCyrus Agarwalは、旅のために船を準備しており、正しいアーキテクチャを選択し、未知のことに対応できるように準備ができていなければなりません。
Cloud Odyssey: A Hero's Questのキャラクター
https://www.facebook.com/photo.php?fbid=166607520212298&set=pb.115103012029416.-2207520000.1390339563.&type=3&theater
今回、OracleのSFアクションアドベンチャームービー「Cloud Odyssey—Hero's Quest」の独占上映に参加して、彼らの旅に同乗することになります。ストーリーに沿って、共有型インフラストラクチャをもち、アジャイルに提供でき、かつスケーラブルなプライベートクラウドを設計、展開する方法を学びながら、IT部門が遠大なゴールを達成できる様子をご覧いただきます。このエントリのバナーをクリックして、お近くで開催される独占上映の登録が可能です。

(訳注)
2014/01/22現在、日本というかAsia Pacificでは予定されていないようですね…

太平洋時間2月4日10時から開催される、Rex Wang(VP of Product Marketing , Oracle、このSF映画のエグゼクティブプロデューサー)とのTwitterベースのチャットに参加すれば、映画や主人公の旅が企業のプライベートクラウド導入への道のりに類似していることをより一層知ることができます。Twitterでハッシュタグ #CloudOdyssey を使うか、以下のリンクからチャットに参加することができます。
TweetChat(Twitterによる認証が必要です)
http://tweetchat.com/room/CloudOdyssey

2014年1月21日

[JRockit] JRockit R28 issue with exact profiling and generics

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

JRockit R28をお使いの方の中には、Javaのgenerics機能を使用するメソッドに対し、Mission Controlでのexact profilingを使用すると、問題が起こることをご存知の方がいらっしゃるかもしれません。その問題とは、こうしたメソッドのInvocationカウンタが応答しない、つまり、各メソッドを呼び出すと、対応するコールカウントをインクリメントすることができない、というものです。

R28での正確なメソッド・プロファイリングのために、我々はApacheのByte Code Engineering Library (BCEL)で、元々のバイトコードインスツルメンテーション・ソリューションを置き換えました。BCELがすでにJAXPの内部コンポーネントとしてJDKに含まれているため、BCELを使うと、よりきれいなコード生成パイプラインができました。

ところが、JDKに含まれるBCELのバージョンは非常に安定しており、JAXPが必要とする非常に狭いユースケースに対し正常に動作するのに対し、Mission Control Consoleのプロファイリングツールが必要とするような状況、つまりこのBCELを使い任意のコードに対して測定する場合には問題があったのです。

これらの課題の一つは、Javaのgenericsを完全にサポートするようにBCELで実装されていなかった、ということでした。具体的には、genericなコードを持つメソッドを測定すると、LocalVariableTable(LVT)属性とLocalVariableTypeTable(LVTT)属性間の不整合を持つバイトコードを生成する可能性がありました(詳細は以下のドキュメントを参照して下さい)。
The class File Format
http://docs.oracle.com/javase/specs/jvms/se7/html/jvms-4.html 
ありがたいことに、この問題はBCELプロジェクトが(開発ブランチで)発見し、修正してくれました。
Bug  39695 - java.lang.ClassFormatError: LVTT entry for 'local' in class  file org/shiftone/jrat/test/dummy/CrashTestDummy does not match any LVT  entry
https://issues.apache.org/bugzilla/show_bug.cgi?id=39695
ただ不幸にも、JDKに含まれるBCELにはこの修正が含まれていません。そのため、JRockitがBCELを使ってこれらのメソッドを計測しようとすると、元の測定されていないメソッドのバージョンが残ったまま、新しいメソッドのバイトコードは無効になり、その後のバイトコード検証に失敗します。

JRockitにコードを追加すればBCELの問題を回避できると簡単に考えましたが、JDK自体に含まれるBCELのバージョンを修正するのが王道のように思えました。ただ残念ながら、バグ39695の修正は、最近のJDKに含まれているものよりもずっと新しいBCELのバージョンをベースとしていたので、正常に動作するよう、他の多くのコードを移植する必要がありました。
JDK-8003147: port fix for BCEL bug 39695 to our copy bundled as part of jaxp
https://bugs.openjdk.java.net/browse/JDK-8003147
BCELの修正やその他の必要なコードは、5u45、6u60および7u40に入れました。なお、Java 5についてご注意いただきたいのですが、修正はCPUリリースにしか組み込むことはできなかったということです。なぜならもはやJava 5に対するCPUリリース以外での修正を提供していないからです。これはつまり、この修正を施したJRockitのバージョンは、Javaのメジャーバージョンによって変わる、ということです。具体的に言うと、Java 5はR28.2.7、Java 6はR28.2.9です。LVT/LVTTは通常はデバッグビルドにのみ含まれますので、-gフラグなしで影響を受けたクラスの再コンパイルは、以前のリリースをお使いの方にとって実行可能な回避策でもあります。

それほど多くの方にこの問題が影響しないことを願うばかりです。「JRockit: The Definitive Guide」に詳しく記載があるように、(Flight Recorderが提供する類の)サンプリングベースのプロファイリングは、ほとんどの場合はexact profilingよりもよい選択です。
Oracle JRockit: The Definitive Guide
http://www.packtpub.com/oracle-jrockit-definitive-guide/book 
しかし、この話は別の理由で興味深いものです。すなわち、JDKに含まれる(公式に文書化されていない)内部クラスに依存することがほとんどの場合は常に間違った考えであるか、を示す好例です(*1)。たとえ痛い目に遭うとわかっていても。

(*1) 今後のJavaクラスライブラリのモジュール化によって、内部JDKクラスを外部で使用できないようになることを期待しています。(その機能が既にあったなら)もしかしたらここで役立ったかもしれません。

[SOA, FMW] SOA Suite Healthcare on-demand trainings

原文はこちら。
https://blogs.oracle.com/soacommunity/entry/soa_suite_healthcare_on_demand

Oracle Learning Libraryに、SOA Suite Healthcare Integrationに関するオンデマンドトレーニングがUpされています。
Oracle Learning Library(Healthcare Integration関連)
http://apex.oracle.com/pls/apex/f?p=44785:2:0:FORCE_QUERY::2,RIR,CIR:P2_SEARCH,P2_GROUP_ID,P2_PRODUCT_ID:Healthcare%2C1001%2C2007
タイトルリリース日対象製品およびリリースタグレベル対象
Testing a Healthcare SOA Composite Application2013/09/30SOA Suite 11gR1Dashboard, HL7, Healthcare, Reporting, SOA, Simulator中級開発者(システム連係、アプリケーション)
Creating Java Callouts with Oracle SOA Suite for Healthcare Integration2013/09/30SOA Suite 11gR1HL7, Healthcare, Java, SOA, callout中級開発者(システム連係、アプリケーション)
Creating Endpoints with Oracle SOA Suite for Healthcare Integration2013/09/21SOA Suite 11gR1HL7, Healthcare, SOA, endpoint初級開発者(システム連係)
Creating a Healthcare SOA Composite Application2013/09/21SOA Suite 11gR1HL7, Healthcare, SOA, composite中級開発者(システム連係、アプリケーション)
Introduction to Oracle SOA Suite for Healthcare Integration Part 22013/08/24SOA Suite 11gR1Healthcare, SOA, data integration初級SOAアーキテクト
開発者(アプリケーション)
Getting Started with Oracle SOA Suite for Healthcare Integration Series2013/08/23SOA Suite 11gR1Healthcare, SOA, data integration, soa suite初級SOAアーキテクト
開発者(アプリケーション)
Introduction to Oracle SOA Suite for Healthcare Integration2013/04/11SOA Suite 11gR1Healthcare, SOA, data integration初級

2014年1月17日

[FMW, SOA] Oracle Cloud Adapter for Salesforce.comをJDeveloperにインストールする時に注意すること

US時間の2014年1月16日のプレスリリース、ならびに先ほどのエントリでもご紹介したように、Oracle Cloud Adapter for Salesforce.comがリリースされました。

このAdapterは、JDeveloperとSOA Suiteの両方へOPatchを使ってインストールする必要があります。
日本語環境のWindowsで動作するJDeveloperに対しAdapterをインストールする際、OPatchの以下のようなエラーが出現する可能性があります。

OPatchを使ったことがある方なら「あー、あれを設定すればいいわけね」とすぐにわかるかと思いますが、もしかしたら「どうすればいいんだ?」と頭を抱えてらっしゃる方もいらっしゃるかもしれません。

この問題は、OPatchを英語ロケールで実行していないことが原因で発生します。そのため、opatch.batのopatchファイルに
-Duser.language=en -Duser.region=US
の設定を入れましょう。
具体的には、opatch.batで oracle/opatch/OPatch を検索します。なお、この検索で2カ所ヒットしますが、一つはechoでデバッグ表示するだけなので、もう一つのほうに対して、次のように追加します。
%JAVA% -cp "%BASE%\ocm\lib\emocmutl.jar;%CP%\OraInstaller.jar;%CP%\share.jar;%CP%\srvm.jar;%CP%\xmlparserv2.jar;%BASE%jlib\opatch.jar;%BASE%jlib\opatchutil.jar;%BASE%jlib\opatchprereq.jar;%BASE%jlib\opatchext.jar;%BASE%jlib\opatchfmw.jar;%BASE%jlib\opatchactions.jar;.\;." -DOPatch.ORACLE_HOME=%OH% -DOPatch.DEBUG=%DEBUGVAL% -DOPatch.RUNNING_DIR=%BASE% -Docm.endpoint=%OCM_SERVICE% -Duser.language=en -Duser.region=US oracle/opatch/OPatch %PARAMS%
という感じです。
この修正後、OPatchを再実行すると、Adapterをインストールすることができます。

Linux環境であれば、環境変数(LANG)を変更すればOKですね。
Bashの場合、
export  LANG=en_US.UTF-8
としてからOPatchを実行してください。

[Database] New Version of Slide Deck available: Upgrade/Migrate/Consildate to Oracle Database 12c

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

ようやく「Upgrade, Migrate & Consolidate to Oracle Database 12c」のスライドをアップデートしました。ようやくスライド枚数が460枚を切りました。フォーマットの変更(スライドを4:3形式から16:9形式に変更)だけでなく、多くのコンテンツを変更しました。Oracle Database 11gR2にまだ興味を持っている皆様も、このスライドからたくさんの有用な情報を入手できることでしょう。
ダウンロードは以下のリンクからどうぞ。
New Version: Upgrade/Migrate/Consolidate to Oracle Database 12c
http://apex.oracle.com/pls/apex/f?p=202202:2:::::P2_SUCHWORT:migrate12c

[SOA] Oracle Introduces Cloud Adapter to Simplify Salesforce.com Integration

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

"A game changer addition to Oracle…"
(Matt Wright, CTO of Rubicon Red)
とプレスリリースの中で述べています。
Oracle Cloud Adapters Dramatically Simplify Integration Between Cloud and On-Premise Applications
http://www.oracle.com/us/corporate/press/2104960
「クラウド統合のためだけに既存のプラットフォームとは別の統合ツールが必要だろうか?」とか、「統合が必要なクラウドアプリケーションにある、限定的な機能の統合ツールを使うべきだろうか…その結果、統合方式が統一されなかったり、重複したりして、複雑でごちゃごちゃするのではないだろうか」と自問自答したことはありませんか?
もしそうなら、是非Oracle Cloud Adaptersをどうぞ。このツールにより、Salesforce.comとの統合が劇的に簡単になります。Oracle SOA SuiteとOracle Cloud Adapter for Salesforce.comを使って、クラウドやオンプレミスのアプリケーションにまたがって存在するお客様やバックエンドのデータに対する完全かつ統一されたビューをより簡単に手にすることができます。是非Oracle Media Networkの動画をご覧下さい。この中で、Matt Wright、Maulik Shah(Technical Lead for Brocade Communications)、Badhri Rajagopalan(Practice Director SOA Integration, Bluenog)が語っています。
上記質問に対し、このリリースのOracleの統合戦略を説明しましょう。お客様はクラウドアプリケーションに特化したクラウド統合プラットフォームや、既存のアプリケーションのために個別の統合プラットフォームを使う必要はありません。Oracle SOA Suiteは、アプリケーションのロケーション(パブリッククラウド、プライベートクラウド、オンプレミス)に関係なく、アプリケーション統合のための単一ソリューションを提供します。このアプローチは、プロプライエタリな言語を使うことがほとんどの、アプリケーション組み込みの統合ツールキットや複数の異種統合プラットフォームを管理することに比べて、統合が簡単で、かつTCOが下がるように設計されています。Oracle SOA Suiteをお使いのお客様が数年にわたってOracle OpenWorldでクラウド統合の成功事例を紹介してきましたが、今回のリリースにより、手作業の手順の多くを削減し、セッション管理タスクを自動化し、大幅にセキュリティ設定を簡素化します。
例:Unifying Cloud Applications with On-Premises Applications Customer Panel(Oracle OpenWorld 2013の講演スライド)
https://oracleus.activeevents.com/2013/connect/fileDownload/session/4EA017C2227F843773A4F1F9EC34FB25/CON8552_Tierney-CON8552-Oracle%20SOA%20Suite-Unifying%20Cloud%20Applications%20with%20On-Premises-wide-01a.pdf
Oracle Application Adapterをご存知のOracle SOA Suiteのお客様であれば、Oracle Cloud Adaptersが同じウィザードベースのアプローチを使い、Oracle SOA Suiteから直接Salesforce.comのビジネスオブジェクトを見ることができ、統合を簡単にしていることがおわかりになることでしょう。Oracle SOA Suiteのコンポーネントがこれらのアプリケーションに統合もしくは組み込んであるので、E-Business SuiteやOracle Fusion ApplicationsなどのOracle Applicationsを使っているお客様は既に簡単に統合されています。Oracle Cloud Adapter for Salesforce.comと組み合わせることで、OracleおよびSalesforce.comアプリケーションのお客様は、クラウドおよびオンプレミスにまたがるアプリケーション間でシームレスに統合できます。統合を簡単にする方法をもっと知りたい方は、以下のOracleのホワイトペーパーをご覧下さい。
Resource Kit : Cloud Integration - A comprehensive Solution
http://www.oracle.com/go/?&Src=7629232&Act=96&pcode=WWMK12059441MPP039
(訳注) 日本語版は以下のリンクからどうぞ。
クラウド統合-包括的ソリューション
http://www.oracle.com/jp/solutions/cloud-integration-wp-1873149-ja.pdf
Oracle Cloud Adapter for Salesforce.comをダウンロードするには、OTNのOracle Integration Adaptersのページへどうぞ。
Release Downloads for Oracle Integration Adapters
http://www.oracle.com/technetwork/middleware/adapters/downloads/index.html
そして、"Simplify Integration with Oracle Cloud Adapter for Salesforce.com"というWebcastにも是非ご参加下さい。
Webcast: Simplify Integration with Oracle Cloud Adapter for Salesforce.com
https://event.on24.com/eventRegistration/EventLobbyServlet?target=registration.jsp&eventid=728133&sessionid=1&key=AC4C7F3DD17191ADA62564071E094CCD
(訳注) 開催日時は以下の通りです。 2014年2月13日(木)10時(PST) 2014年2月14日(金)3時(JST) Register for Webcast

2014年1月16日

[FMW] January 2014 FMW Proactive Patches Released

原文はこちら。
https://blogs.oracle.com/soacommunity/entry/january_2014_fmw_proactive_patches

以下に挙げるFusion Middleware (FMW) Proactive Patchが2014年1月14日(US時間)にリリースされました。

Bundle Patch(BP)とは

BPとは、特定の製品に対する十分にテストされ、管理された重要なバグ修正の集まりです。時としてセキュリティに関する内容や小規模の機能強化が含まれている場合があります。累積的なものなので、最新のBPには過去にリリースされたBPが含まれています。Suite Bundle Patchは、製品スイートを構成する複数製品のBPを集めたものです。
  • Oracle SOA Suite (SOA) 11.1.1.7.2 bundle patch
  • Oracle Business Intelligence Enterprise Edition (OBIEE) 11.1.1.7.140114 bundle patch
  • Oracle Data Integrator (ODI) 12.1.0.2.1 bundle patch
  • Oracle Identity Management Suite Bundle Patch 11.1.1.5.6。これには以下のBPが含まれます。
    • Oracle Identity Manager (OIM) 11.1.1.5.10 bundle patch
    • Oracle Access Manager (OAM) 11.1.1.5.6 bundle patch
    • Oracle Adaptive Access Manager (OAAM) 11.1.1.5.2 bundle patch
    • Oracle Entitlement Server (OES) 11.1.1.5.4 bundle patch
  • Oracle Identity Management Suite Bundle Patch 11.1.2.0.5。これには以下のBPが含まれます(注意:このSuiteのBundle Patchのリリースは数日ほど遅れます)。
    • Oracle Access Manager (OAM) 11.1.2.0.5 bundle patch
    • Oracle Adaptive Access Manager (OAAM) 11.1.2.0.3 bundle patch
    • Oracle Entitlement Server (OES) 11.1.2.0.2 bundle patch
  • Oracle Identity Management Suite Bundle Patch 11.1.2.1.2。これには以下のBPが含まれます。
    • Oracle Access Manager (OAM) 11.1.2.1.2 bundle patch
    • Oracle Adaptive Access Manager (OAAM) 11.1.2.1.2 bundle patch
  • Oracle Identity Manager (OIM) 11.1.2.0.13 bundle patch
  • Oracle Identity Manager (OIM) 11.1.2.1.4 bundle patch
  • Oracle GlassFish Server (OGFS) 3.1.2.8 bundle patch.
  • Sun Java System Application Server 8.1.36 and 8.2.20 bundle patches
  • Oracle iPlanet Web Server (OiWS) 6.1.18 and 7.0.19 bundle patches
  • Oracle iPlanet Web Proxy Server (OiWPS) 4.0.23 bundle patch
  • Oracle WebCenter Portal (WCP) 11.1.1.8.2 bundle patch

詳細は…

2014年1月15日

[Java] JDK 7u51 and JavaFX 2.2.51 Documentation Updates

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

JavaFX 2.2.51を同梱しているJava Development Kit 7 Update 51 (JDK 7u51)がリリースされ、Java SE Downloadsのページからダウンロードできるようになりました。
Java SE Downloads
http://www.oracle.com/technetwork/java/javase/downloads/index.html
このリリースの詳細情報はリリースノートをご覧下さい。
Update Release Notes : Java™ SE Development Kit 7, Update 51 (JDK 7u51)
http://www.oracle.com/technetwork/java/javase/7u51-relnotes-2085002.html
JDKの以下の変更についてドキュメントが更新されています。
JavaFXチュートリアルにいくつかの修正や変更が入っています。JavaFX APIドキュメントは2.2.51に対応するようにアップデートされました。
チュートリアルやガイド、APIドキュメントについては以下のリンクからどうぞ。
Java SE Technical Documentation
http://docs.oracle.com/javase/
JavaFX 2 Documentation
http://docs.oracle.com/javafx/

[Java] Java SE 7 Update 51 Released

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

Java SE 7 Update 51 (Java SE 7u51)がご利用戴けるようになっています。
Java SE Downloads
http://www.oracle.com/technetwork/java/javase/downloads/index-jsp-138363.html
このアップデートリリースには重要なセキュリティ修正ならびに機能強化と機能変更が含まれています。OracleはJava SE 7をお使いの全てのお客様がこのリリースにアップグレードすることを強く推奨します。詳細情報は、Oracle Critical Patch Update Advisoryをご覧下さい。
Oracle Critical Patch Update Advisory - January 2014
http://www.oracle.com/technetwork/topics/security/cpujan2014-1972949.html
このリリースに含まれている変更内容はリリースノートをご覧下さい。
Java™ SE Development Kit 7, Update 51 (JDK 7u51) Release Notes
http://www.oracle.com/technetwork/java/javase/7u51-relnotes-2085002.html
変更の一部をご紹介しましょう。
  • セキュリティスライダーの変更(追加情報は以下のエントリおよびJavaコントロールパネルのドキュメントをご覧下さい)
  • 高セキュリティ設定の場合、自己証明書で署名されたAppletや未署名のAppletをブロック
  • 高セキュリティ設定ではPermissions属性が必要
  • 中セキュリティ設定では、Permissions属性がないことをユーザーに警告
  • 例外サイトリスト(Exception Site List)
    この例外サイトリスト機能を使うと、エンドユーザーは最新のセキュリティ要件に合致しないJava AppletやJava Web Startアプリケーションを実行することができます。例外サイトリストに記載されているサイトでホストされているRich Internet Applicationsをセキュリティプロンプト付きで起動することができます。詳細情報は以下のエントリもしくは例外サイトリストのドキュメントをご覧下さい。
  • タイムスタンプを付けるよう、Jarsignerをアップデート
  • 以前設定した決定をクリアするためのプロンプト
  • デフォルトのSocket Permissionの変更
  • JAXP Xalan拡張関数への変更
Java SE Embedded 7 Update 51もご利用いただけるようになっています。
Java SE Embedded 7 Update 51
http://www.oracle.com/technetwork/java/embedded/downloads/javase/index.html
Java SE Embedded 7 Update 51はJava Development Kit 7 Update 51 (JDK 7u51)をベースとしており、組み込みシステムに特化した機能やサポートを提供しています。 詳細情報はリリースノートをご覧下さい。
Java™ SE Embedded 7 Update 51 Runtime Environment Release Notes
http://www.oracle.com/technetwork/java/javase/emb7u51-relnotes-2087618.html
このリリースに関する詳細や、ベストプラクティスに関する情報は、以下のJava Product Group, Product Managementのブログをご覧下さい。
Java Platform Group, Product Management blog
https://blogs.oracle.com/java-platform-group/

2014年1月14日

[Java] Java EE 8 Community Survey - Part 2!

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

Java EE 8 Community Serveyの2回目がスタートしています。
Community Survey: Features for Java EE 8 - Part 2
https://www.surveymonkey.com/s/JavaEE8-Part2
この5週間の間に最初の調査でのコミュニティからのレスポンスで、数多くの貴重なフィードバックを頂きました。非常にうれしく思っています。このことはつまり、処理すべきたくさんのデータがあるということで、本当にすばらしいことです。Part 1の調査に参加いただいたみなさまに感謝します。まだの方も、まだ時間はありますので、是非Part 1の調査にも参加して下さい。
Community Survey: Features for Java EE 8 - Part 1
https://www.surveymonkey.com/s/KGV7RWS
Part 2の調査では、Cloud、Security、Logging、Deployment、Testabilityなどにフォーカスしています。再度様々なトピックに関する皆様のフィードバックをお願いします。

今後数週間で、2回の調査結果をまとめ、コミュニティに結果を報告する予定です。その後、こうした機能の優先度付けにご協力いただくことをお願いすることになるでしょう。

Java EE 8の初期の方向付けのために、2回目のコミュニティサーベイに参加頂きますよう、お願いいたします。

2014年1月11日

[Virtualization] Oracle VM VirtualBoxの4.2.22、4.1.30、4.0.22、3.2.20がリリースされました

本日、Oracle VM VirtualBoxの4.2系、4.1系、4.0系、そして3.2系のメンテナンスリリースがリリースされました。いずれも現在の安定版バージョンに対し、安定性の向上とリグレッションの修正を施しています。
変更履歴、ダウンロードは以下のリンクからどうぞ。
バージョン変更履歴最新版ダウンロード
4.2http://www.virtualbox.org/wiki/Changelog-4.2http://download.virtualbox.org/virtualbox/4.2.22
4.1http://www.virtualbox.org/wiki/Changelog-4.1http://download.virtualbox.org/virtualbox/4.1.30
4.0http://www.virtualbox.org/wiki/Changelog-4.0http://download.virtualbox.org/virtualbox/4.0.22
3.2http://www.virtualbox.org/wiki/Changelog-3.2http://download.virtualbox.org/virtualbox/3.2.20

[Data Integration] ODI - High performance data movement using Datapump

原文はこちら。
https://blogs.oracle.com/dataintegration/entry/odi_high_performance_data_movement

A-Team(Oracleのアーキテクトチーム)の一員であるBen(Benjamin Perez-Goytia)が、改善されたODIでのDatapumpのサポートに関してまとめています。記事だけでなく、ODIのKM(Knowledge Module)をJava.netにUpしています。
Oracle Data Integration Code Samples
https://java.net/projects/oracledi
Using Oracle Data Pump in Oracle Data Integrator (ODI) (A-Team Chronicles)
http://www.ateam-oracle.com/using-oracle-data-pump-in-oracle-data-integrator-odi/
コメントは原文のコメント欄からどうぞ。

[Database, Security] Now Available, Securing Oracle Database 12c: A Technical Primer eBook

原文はこちら。
https://blogs.oracle.com/securityinsideout/entry/gratis_ebook_securing_oracle_database

新しいデータベースセキュリティの無料eBook、Securing Oracle Database 12c: A Technical Primerを入手してください。
Securing Oracle Database 12c: A Technical Primer
http://books.mcgraw-hill.com/ebookdownloads/Oracle12cSecurity/

この本は、Oracle Databaseのセキュリティについて学びたいデータベース管理者向け、そしてあらゆるIT環境においてOracle Databaseをセキュアに保つ方法を学びたいセキュリティプロフェッショナル向けです。タイトルはOracle Database 12cとうたっていますが、内容のほとんどはOracle Database 9i以後にあてはまるものです。このeBookを手元に置いて、Oracle Database12cセキュリティの頼りになる新しい書籍としていつでも利用できるようにしておいてください。
この本はデータベースセキュリティチームのPaul Needham(Senior Director of Product Management)とScott Rotondo(Consulting Member of Technical Staff)の二人と、Michelle Malcher(IOUG PresidentでありDRW HoldingsのDBA Team Lead)が執筆しました。彼らは、Oracle Database 12c で利用可能なセキュリティ機能の技術入門書とこの入門書を活用する方法をまとめました。

そして、この書籍を前書きを書いてくれたTom Kyteにはとても感謝しています。
Ask Tom
http://asktom.oracle.com/The Tom Kyte Blog
http://tkyte.blogspot.com/
eBookへのコメントを是非お寄せ下さい(訳注:お約束ですが、原文のコメント欄からどうぞ)。皆様からのフィードバックをお待ちしています。

2014年1月10日

[Applications] Are you thinking about Upgrading to Oracle E-Business Suite Release 12.2?

原文はこちら。
https://blogs.oracle.com/ebs/entry/are_you_thinking_about_upgrading

Release 11i、12.0.x、12.1.xからRelease 12.2.3へアップグレードする場合、Oracle E-Business Suite Release 12.2.0へのアップグレードを完了させてください。これには、Oracle E-Business Suite Release 12.2.3を適用する前のアップグレード後の手順も含みます。
Release 12.2.0以後では、新しいadop(AD Online Patching)ユーティリティでパッチを適用することをご存知でしたか?このツールを使うと、高可用性を要求する組織で劇的に計画停止時間を削減することができます。しかも最新の先進的なOracleプラットフォームの機能を生かして性能を向上させることができます。その結果、主要なビジネスアプリケーションにまたがる、クロスインダストリでのエンハンスメントを提供します。
最新のOracle E-Business Suite Release 12.2.3 Readmeを確認してください
(My Oracle Support Doc ID 1586214.1)
Oracle E-Business Suite Release 12.2 Information Centerには、必要なドキュメントやリソースを用意していますので、是非ご確認下さい。
Oracle E-Business Suite Release 12.2 Information Center (Doc ID 1581299.1)
http://support.oracle.com/rs?type=doc&id=1581299.1

[Database] Oracle Database 12c for AIX, HP-UX IA and zLinux now available

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

HP-UX IA、AIX、zLinux用Oracle Database 12c Release 1のStandard Edition、Standard Edition One、Enterprise Editionがリリースされました。

2014年1月5日

[Java, Linux] UseLargePages on Linux

原文はこちら。
https://blogs.oracle.com/poonam/entry/uselargepages_on_linux

JVMのオプションにJDK 5u5で導入されたUseLargePagesというものがあり、これを使うと、システムがラージメモリをサポートしていれば、システムからラージメモリページをリクエストすることができます。ラージメモリページのサポートの目的はプロセッサのTranslation-Lookaside Buffers(TLB)を最適化し、結果としてパフォーマンスを向上することです。

最近ラージメモリページを使っている際にいくつかのHotSpotのインスタンス(JDK7)がクラッシュするという現象がありました。
8013057: assert(_needs_gc || SafepointSynchronize::is_at_safepoint()) failed: only read at safepoint
https://bugs.openjdk.java.net/browse/JDK-8013057
8007074: SIGSEGV at ParMarkBitMap::verify_clear()
https://bugs.openjdk.java.net/browse/JDK-8007074

原因

これらのクラッシュの原因はmmapのLinuxプラットフォームでの動作方法にあります。ラージページのサポートがシステム上で有効になっている場合、LinuxプラットフォームでのHotSpotのcommit_memory()実装は、ラージページを使うmmapコールで、既に予約されたメモリをコミットしようとします。十分なサイズのラージページがない場合には、mmapコールは予約されたメモリをリリースできず、同じメモリ領域を他の割り当て(アロケーション)に利用できません。このために同じメモリ領域を使う異なる目的で使うと予期せぬ挙動を引き起こします。

症状

上記問題と共に、以下のようなスタックトレースを伴うクラッシュを目にすることがあります。
V  [libjvm.so+0x759a1a]  ParMarkBitMap::mark_obj(HeapWord*, unsigned long)+0x7a
V  [libjvm.so+0x7a116e]  PSParallelCompact::MarkAndPushClosure::do_oop(oopDesc**)+0xce
V  [libjvm.so+0x485197]  frame::oops_interpreted_do(OopClosure*, RegisterMap const*, bool)+0xe7
V  [libjvm.so+0x863a4a]  JavaThread::oops_do(OopClosure*, CodeBlobClosure*)+0x15a
V  [libjvm.so+0x77c97e]  ThreadRootsMarkingTask::do_it(GCTaskManager*, unsigned int)+0xae
V  [libjvm.so+0x4b7ec0]  GCTaskThread::run()+0x130
V  [libjvm.so+0x748f90]  java_start(Thread*)+0x100
この例では、ParMarkBitMapがマップした領域のアドレス0x00007f2cf656eef0に書き込もうとした時点でクラッシュしています。そしてそのメモリは(hs_err.logファイルによると)rt.jarに属しています。
7f2cf6419000-7f2cf65d7000 r--s 039dd000 00:31 106601532                  /jdk/jdk1.7.0_21/jre/lib/rt.jar
このバグが原因で、同じメモリ領域を2個の異なるアロケーションのためにマップするとこのクラッシュが発生します。

解決策

8013057については、Linuxプラットフォームでのmmapの不具合のエラー処理を強化し、これらの障害のための診断情報も追加しました。この不具合は7u40で修正されています。

8007074については、Linuxプラットフォームでラージページを利用する際に予約されたメモリマッピングロスの問題を修正しています。この修正の詳細は以下の通りです。
Review request (hs24): 8007074: SIGSEGV at ParMarkBitMap::verify_clear()
http://mail.openjdk.java.net/pipermail/hotspot-dev/2013-July/010117.html
JDK8で修正されますが、この内容は7u60にも取り込まれています。7u60のリリースは2014年5月を予定しています。

回避策

  1. JVMオプションでラージページの利用(-XX:-UseLargePages)を無効化する
  2. システムで利用可能なラージページのサイズを増やす。十分なサイズのラージページがシステムにある場合、メモリコミットの失敗のリスクを減らすことができ、このラージページの問題に遭遇する可能性が減る。ラージページのサイズを構成する方法は以下のリンクを参照すること。
    Java Support for Large Memory Pages
    http://www.oracle.com/technetwork/java/javase/tech/largememory-jsp-137182.html

その他の関連する修正

8026887: Make issues due to failed large pages allocations easier to debug
https://bugs.openjdk.java.net/browse/JDK-8026887
8013057の修正に伴い、メモリコミットの失敗に対する診断情報を追加しました。以前は以下のようなエラーメッセージを表示していました。
os::commit_memory(0x00000006b1600000, 352321536, 2097152, 0) failed;
error='Cannot allocate memory' (errno=12)
8026887のこの修正に伴い、ラージページが不足していることが原因でメモリコミットに失敗していることを示すようにエラーメッセージが修正されました。現時点では以下のようになっています。
os::commit_memory(0x00000006b1600000, 352321536, 2097152, 0) failed;
error='Cannot allocate large pages, falling back to small pages' (errno=12)
この変更は7u51に統合されました。

8007074に対する修正は7u60で利用できるようになります(7u51には取り込まれていません)ので、この変更(JDK-8026887)の結果、ラージページに関連するメモリコミット障害を示すエラーメッセージの表示がなされるため、より有益な情報を提供することになります。これらのメッセージをJVMのログで見かけた場合、バグ8007074が原因で予期せぬ挙動が起こる可能性があります。
8024838: Significant slowdown due to transparent huge pages
https://bugs.openjdk.java.net/browse/JDK-8024838
8007074の修正に伴い、顕著なパフォーマンスの低下が見られました。このリグレッションはJDK8でJDK-8024838として修正され、この内容はJDK 7u60にも取り込まれる予定です。

2014年1月1日

[BPM] BPM Suite 11.1.1.7 with Adaptive Case Management (ACM) User Interfaceavailable for download

原文はこちら。
https://blogs.oracle.com/soacommunity/entry/bpm_suite_11_1_1
新しい BPM Suite 11.1.1.7用の、Adaptive Case Managementのユーザーインターフェイスを統合するパッチがダウンロードできるようになりました。My Oracle Supportでパッチ番号17767877を検索してください。

[訳注]
このパッチは、サンプルやチュートリアルで別途デプロイしていたCase UIを統合するものです。