2012年3月30日

[Java] Migrating Spring to Java EE 6 Article Series at OTN - Part 3

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

春は、さまざまな理由から、鳥類、クジラ、チョウ、カエル、そして他の動物が移住する季節と特徴づけられます。Springフレームワークを使用していて、どのような理由であれ、標準ベースのJava EEプラットフォームへの移行に興味をお持ちであれば、ソリューションを用意しています。

David Heffelfingerという有名な著者にして熱烈なJava EEのファンが、OTNでSpringからJava EEへの移行に関する記事の第3部を公開しています。一連の記事は、典型的なSpringアプリケーションをNetBeansを使用してJava EE 6に移行する方法を示しています。

Spring to Java EE Migration, Part 1
http://www.oracle.com/technetwork/articles/java/springtojavaee-522240.html
Spring to Java EE Migration, Part 2
http://www.oracle.com/technetwork/articles/java/springtojavaee2-1414289.html
Spring to Java EE Migration, Part 3
http://www.oracle.com/technetwork/articles/java/springtojavaee3-1569377.html

Part1、Part2に引き続くこの新しいパートでは、生成されたWARファイルとXML構成ファイルの行数を両環境について比較します。「なぜJava EE 6がSpringより優れているのか」という興味深い説明もどうぞ。

Why is Java EE 6 better than Spring ?
https://blogs.oracle.com/arungupta/entry/why_java_ee_6_is

[Database] Oracle RDBMS Server 11gR2 Pre-Install RPM for Oracle Linux 6 has been released

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

Oracle Linux 6とUnbreakable Enterprise KernelでのOracle Database 11gR2の動作保証が発表されたことをうけ、oracle-rdbms-server-11gR2-preinstallという、Oracle RDMBS Server 11gR2のプリインストールRPMパッケージ(以前はoracle-validatedとして知られていたものです)がご利用可能になったことをご案内できることをうれしく思います。

Announcing: Oracle Database 11g R2 Certification on Oracle Linux 6
https://blogs.oracle.com/linux/entry/announcing_oracle_database_11g_r2
[El-errata] Oracle RDBMS Server 11gR2 Pre-Install RPM for Oracle Linux 6 x86_64 (64 Bit) architecture
http://oss.oracle.com/pipermail/el-errata/2012-March/002727.html


Oracle Database 11gR2をOracle Linux 6にインストールするため、Linuxインストールガイドにあるように、システムをいくつかの事前要件に適合させる必要があります。Oracle RDBMS Server 11gR2 プリインストールRPMを使って、ほとんどのインストール前の事前構成タスクを完了することができます。このRPMはUnbrekable Linux NetworkもしくはOracleのパブリックyumサーバからダウンロードできます。

Oracle Database 11gR2 Linux Installation Guides
http://www.oracle.com/pls/db112/portal.portal_db?selected=11&frame=#linux_installation_guides
Unbreakable Linux Network
http://linux.oracle.com/
Oracle Public Yum Repository
http://public-yum.oracle.com/

このプリインストールパッケージはx86_64のみで利用可能です。特記することとして、このパッケージは以下のことがあります。
  • データベースのインストールに必要なさまざまなソフトウェアパッケージのダウンロードやインストールが発生します。これらのパッケージの依存性はyumによって解決します。
  • データベースのインストール時に使用されるデフォルト設定として、ユーザーoracleとグループoinstall、dbaを作成します
  • /etc/sysctl.conf 中のカーネルパラメータを編集し、共有メモリ、セマフォ、ファイル記述子の最大数などの設定を変更します。
  • 例えば、open filesの数やprocessesの数、スタックサイズといった、/etc/security/limits.conf中のハードシェルリソースおよびソフトシェルリソースを、Oracle Database 11g Release 2  Serverのインストール要件に基づき、必要とする最小値に設定します。
  • x86_64マシンのカーネル起動パラメータにnuma=offを設定します。
詳細および手順はリリース情報(EL-errata)をご確認下さい。また、OTN上にGinny Henningsenの書いた「How I Simplified Oracle Database Installation on Oracle Linux」があります、これは一般的なOracle LinuxへのOracle Databaseのインストール方法を記載し説明している記事ですので、こちらもご一読下さい。記事はOracle Linux 5と以前のパッケージ"oracle-validated"について記載していますが、Oracle Linuxでの手順は非常に似通っています(現在この記事をOracle Linux 6用にアップデートしようと考えています)。

How I Simplified Oracle Database Installation on Oracle Linux
http://www.oracle.com/technetwork/articles/servers-storage-admin/ginnydbinstallonlinux-488779.html

[ADF, WLS] Solution for installing the ADF 11.1.1.6.0 Runtimes onto a standalone WLS 10.3.6

原文はこちら。
https://blogs.oracle.com/onesizedoesntfitall/entry/solution_for_installing_the_adf

お客様がJDeveloper 11.1.1.6.0に関する以下の問題に遭遇しているので、解決策をまとめておくと何かよいことが起こりそうですね。
過去のエントリで記載しているように、ADF Runtime for JDeveloper 11.1.1.6.0 はWebLogic Server 10.3.5と10.3.6で動作します。

ADF Runtimes vs WLS versions as of JDeveloper 11.1.1.6.0
https://blogs.oracle.com/onesizedoesntfitall/entry/adf_runtimes_vs_wls_versions
http://orablogs-jp.blogspot.jp/2012/03/adf-runtimes-vs-wls-versions-as-of.html (ロジ子訳)

これはお客様がJDeveloperのインストーラを使って、スタンドアロンのWebLogic Server(10.3.6)のミドルウェアホームに ADF Runtime(11.1.1.6.0)をロードしようとしているために発生しています。このときインストーラは以下のようなポップアップを出します。

現在のサーバ(WebLogic Server 10.3.5.0)の製品メンテナンスレベルと、あなたのシステム(WebLogic Server 10.3.6.0)にインストールされている製品のメンテナンスレベルに互換性がありません。互換性のあるインストーラを入手するか、ご所望のレベルに到達するよう現在のシステムをメンテナンスしてください。

解決策は、OTN( "アプリケーション開発実行"の下のオプションを参照)から、スタンドアロンのADF Runtimeライブラリインストーラ(11.1.1.6.0)を入手してランタイムライブラリをインストールすることです。

Downloads for Oracle ADF 11g (OTN)
http://www.oracle.com/technetwork/jp/developer-tools/adf/downloads/index.html (日本語)
http://www.oracle.com/technetwork/developer-tools/adf/downloads/index.html (英語)

[訳注]
ADF Runtimeライブラリは、Application Developement Runtimeの下のオプションにあります。


[BI] OBIEE 11.1.1 - IBM JDK Tuning for WebLogic 11G under AIX 6.x

原文はこちら。
https://blogs.oracle.com/pa/entry/obiee_ibm_jdk_tuning_for

setOBIDomainEnv.shの各行を以下のような感じで編集します
if [ "${JAVA_VENDOR}" = "IBM" ] ; then
   # 64-bit IBM JVM is the only JVM supported for AIX
   # assume to always use Managed server memory args for 64-bit IBM JVM
   SERVER_MEM_ARGS="-Xms2048m -Xmx2048m -Xmns512m -Xmnx512m -Xss2m -Xrs -Xgcpolicy:gencon -Xverify:none"
   export SERVER_MEM_ARGS
用語集
-Xms<size>初期Javaヒープサイズ
-Xmx<size>最大Javaヒープサイズ
-Xss<size>Javaスレッドスタックサイズ
-XrsJava VMによるOSシグナルの使用を削減 (ドキュメントを参照)

-Xmns<size>
-Xgcpolicy:gencon使用時に、新しい世代(nursery)のヒープの初期サイズを指定された値に設定。 デフォルトでは、このオプションはシステムの能力に従って内部的に選択する。このオプションを -Xmn とともに使用しようとすると、エラーが戻る。

-Xmnx<size>
-Xgcpolicy:gencon使用時に、新しい世代(nursery)のヒープの最大サイズを指定された値に設定。 デフォルトでは、このオプションはシステムの能力に従って内部的に選択する。このオプションを -Xmn とともに使用しようとすると、エラーが戻る。
-Xverify:<option>パラメータを指定せずに、検証を可能にする。これがデフォルトであることに注意。そのままではこのオプションは効果がない。

チェックすべきそのほかのパラメータ
JVMにより効果的にメモリを管理できるラージページの使用を強制するには…
Java VM コマンドラインオプション: -Xlp64K
JVM Environment Entry: LDR_CNTLR = "DATAPSIZE=64K@TEXTPSIZE=64K@STACKSPSIZE=64K"

ヒュージページを利用するには…
PPC64は4K(デフォルト)と16Mをサポートしています(これは高速化に寄与しそうではありますが、ヒープの問題を解決することにはならなさそうです...)
AIX & PPC向けのラージページに関する一般的な情報はこちらからどうぞ。

AIX 6.1 情報 > パフォーマンス・マネージメントおよびチューニング > パフォーマンス・マネージメント > メモリー・パフォーマンス
ラージ・ページ
http://publib.boulder.ibm.com/infocenter/aix/v6r1/index.jsp?topic=/com.ibm.aix.prftungd/doc/prftungd/large_page_ovw.htm

Java VMのコマンドラインオプション: -Xlp<size>

AIXでは、JVMに対し、Javaヒープ(Javaオブジェクトが割り当てられるからヒープ)を(サイズを指定していない場合は16MBのページ)ラージページに割り当てるよう指示します。ラージ·ページが利用できない場合、Javaヒープは、次により小さな、システムでサポートされているページサイズに割り当てられます。AIXでラージ·ページを有効にするには、特別な設定を行う必要があります。詳細は上のラージページに関するリンクをどうぞ。

SDKは、Javaヒープの共有メモリセグメントを補強するためだけにラージページの使用をサポートしています。JVMはshmget()にSHM_LGPG と SHM_PIN flags というフラグを使ってラージページを割り当てようとします。 -Xlpオプションは環境変数 IBM_JAVA_LARGE_PAGE_SIZE の設定に優先します。
(AIX、Linux、Windowsのみ)
サイズ<size>が指定されている場合、JVMはそのサイズのページを使用して、JITコードのキャッシュメモリを割り当てようとします。失敗した場合や、そのサイズの実行可能ページがサポートされていない場合は、JITコードのキャッシュメモリが利用可能な最小の実行可能ページサイズを使用して割り当てられます。

verbose gcを有効にするには…
Java VM コマンドラインオプション:–verbose:gc

以下の(IBMのJava VM固有の)Java VMコマンドラインオプションも検討してみましょう

-Xgcpolicy:subpool
ヒープ上のオブジェクトを割り当てる際に優れた性能を出すため、改善されたオブジェクト割当てアルゴリズムを使います。大規模なSMPシステムで性能が向上する可能性があります。

-Xcompressedrefs
以下のいずれかの状況で使用します。
  • Javaアプリケーションに25GB以上のJavaヒープが不要の場合
  • アプリケーションが大量のネイティブメモリを使い、JVMは小さなメモリ使用量で実行する必要がある場合
-Xcompactexplicitgc
System.gc() が呼び出される都度圧縮されます。

-Xcompactgc
(システムおよびグローバルの)全てのガベージコレクションで圧縮します。

-Xsoftrefthreshold<number>
対象がマークされていない場合にソフト参照がクリアされてからのGCの数を決定する数値で、GCが使う数値を設定します。デフォルト値は32です。つまり、参照先がマークされていないソフト参照は、32*(ヒープの空き領域の百分率)のGCサイクル後にクリアされることを意味します。これを減らすとすぐにソフト参照がクリアされます。ソフト参照ベースのキャッシュを使用している場合、キャッシュのヒット率が下がりますが、メモリはより速く解放されます。しかし、これによってOOMの問題を直接解決するわけではありません。というのは、すべてのソフト参照は、OutOfMemoryErrorがスローされる前にクリアされていることが保証されているからです。
デフォルト(圧縮オプションが指定されていない)の場合、トリガーのシリーズは、JVMの将来のパフォーマンスに有益である場合にのみ、圧縮を試行する一連の動きに基づいたGC圧縮が走ります。

[Java, FMW] GC Tuning Tips for your FMW

原文はこちら。
https://blogs.oracle.com/rammenon/entry/gc_tuning_tips_for_your

Rupesh (Rupesh Ramachandran) は社内におけるJVMエキスパートの一人です。彼がGCチューニングに関する素晴らしいエントリを投稿しています。

Java Tuning in a Nutshell - Part 1
http://randomlyrr.blogspot.jp/2012/03/java-tuning-in-nutshell-part-1.html

[訳注]
Rupesh RamachandranはOracleのPrincipal Solution Architect、通称"A-Team"のメンバーの一人です。

2012年3月29日

[SOA, Database] Select for update, nowait, skip locked

原文はこちら。
https://blogs.oracle.com/rammenon/entry/select_for_update_nowait_skip

私たちのDatabase Adapterはskip lockingを使って分散ポーリング(インバウンドDBの処理をスケールアップする方法の一つ)を有効にしています。私は一般的にアップデートを選択する方法は概念レベルの説明をするため、一般的なselect for updateと、skip lockingがどのように機能しているのかを絵にしようと考えました。



[VM] New Oracle VM Hardware Certifications

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

これまでHP ProliantのOracle VM 3.0の動作保証について、コミュニティから問い合わせを受けていましたが、このたび動作検証作業が終了しました。
新たに動作保証されたシステムは以下の通りです。
  • ProLiant DL980 G7 Hewlett Packard Oracle VM 3.0 x86_64
  • ProLiant BL680c G7 Hewlett Packard Oracle VM 3.0 x86_64
  • ProLiant BL465c G7 Hewlett Packard Oracle VM 3.0 x86_64
  • ProLiant BL460c G7 Hewlett Packard Oracle VM 3.0 x86_64
  • ProLiant DL380 G7 Hewlett Packard Oracle VM 3.0 x86_64
詳細はOracle VM動作検証済みハードウェアのページをご確認下さい。

Oracle Linux and Oracle VM Certified Hardware
http://linux.oracle.com/pls/apex/f?p=117:1:5773793518142288:pg_R_9228723630255391:NO

Oracle VMの詳細は、Oracle Virtualizationのページを参照頂くか、Twitter、Facebook、YouTubeやNewsletterをどうぞ。

Oracle Virtualization
http://www.oracle.com/virtualization
Twitter (@orcl_virtualize)
http://twitter.com/orcl_virtualize
Facebook
https://www.facebook.com/OracleVirtualization
YouTube (Oracle Virtualization)
http://www.youtube.com/OracleVirtualization
INFORMATION INDEPTH NEWSLETTER - Virtualization Edition
http://www.oracle.com/us/corporate/newsletter/samples/virtualization-193077.html

2012年3月28日

[SOA] How to Reset a SOA 11g DMS Metric

原文はこちら。
https://blogs.oracle.com/soaproactive/entry/how_to_reset_a_soa

[訳注]
SOA SuiteのバージョンによってDMS Spyから確認・設定できる内容に違いがありますので、ご注意下さい。

DMSって何?
DMSは'Dynamic Monitoring Service'を意味し、これを通じて、WebLogic Serverとデプロイされたアプリケーションがランタイム情報を公開します。最上位にDMSナウンのリストがあり、これらの DMSナウンには特定の値が保持されている属性が含まれています。

ランタイムDMSを見るには、実行中のWebLogicインスタンスで次のURLにアクセスしましょう。
http://<host>:<port>/dms/Spy
管理者権限でログインすると以下の画面を確認できます。


SOA環境をデプロイしていて実行中の場合、以下のようなDMSナウンに関連するSOAのリストを確認できるはずです。


コンポジット名やコンポーネントなど、デプロイされているものを単に表示しているものもありますが、SOAコンポーネントのランタイムメトリック(処理リクエスト件数、リクエストの平均処理時間など)を提供しているものもあります。これらのメトリックのほとんどは、コンポジットやコンポーネント全体で集約されたものです。

メトリックをリセットする理由

特定のメトリックを実行時にリセットすることに対して理由がいくつかありますが、ここで関心を持っているユースケースはWLDF(WebLogic診断フレームワーク/WebLogic Diagnostics Framework)Watchを構成して状態を監視する場合です。 "soainfra_component"でBPELプロセスの平均処理時間を監視しているものとします。平均時間が5秒を超えると、診断フレームワークインシデントを起動し、メトリックをリセットしたいのです。これにより、何度もWatchが起動されずに監視を継続できますし、サーバを再起動しなくて済みます。

Spyでメトリックを見てみましょう。


平均時間は1545ミリ秒です。負荷を与えて、5秒という平均処理時間のしきい値を超えるようにします。


インシデントが生成された場合に、この特定のメトリックをリセットしたいのですが、これを行うには、Spyサーブレットにいくつかの引数をURLに含めて渡します。

引数
  • operation: 指示したいオペレーション
  • format: データのフォーマット
  • cache: キャッシュデータに対する作業
  • name: リセットしたいオブジェクト名
  • recurse: 再帰的にリセットするか否か

今回使う値は以下の通りです。
  • operation = reset
  • format = raw
  • cache = refreshall
  • name = <以下で説明します>
  • recurce = all
'name' は非常に長いため、WLDF Watch構成から直接取得します。以下の式を使って、WebLogic Server管理コンソールから取得したWatchを作成しました。



ここから'name'をコピーし、URLに貼り付けます。以下が完全なURLです。
http://<HOST>:<PORT>/dms/Spy?operation=reset&format=raw&cache=refreshall&name=/soa_cluster_prod_jrockit_7001/soa_server1/soainfra/default/TestProject2/1.0/soa_a684ec4b-6c01-4901-979b-7c6b44bdee07/bpel/BPELProcess2&recurse=all
環境によって異なりますし、また名前はプロジェクトを再デプロイすると変わることがあります。

代替案として、'name'の値を手で作成する、という手があります。以下の形式で作成します。
/<DOMAIN NAME>/<SERVER NAME>/<PROJECT DEPLOYMENT PATH>/<COMPOSITE NAME>/<COMPOSITE REVISION>/<COMPOSITE LABEL>/<COMPONENT TYPE>/<COMPONENT NAME>
次のフィールドは、DMS Spyのsoainfra_component表の括弧で囲んだ列の値に相当します。
  •     COMPOSITE NAME (soainfra_composite)
  •     COMPOSITE REVISION (soainfra_composite_revision)
  •     COMPOSITE LABEL (soainfra_composite_label)
  •     COMPONENT TYPE (soainfra_component_type)
  •     COMPONENT NAME (Name)
これらのフィールドは使用しているDMSメトリックに従って変わることがあります。そのため、WLDFを使って、今後使用するテンプレートを作成することができます。

URLをブラウザに貼り付けて要求を指示します。Spyでメトリックをリフレッシュし、リセットされた状況を確認します。


'soainfra_Binding'メトリックを見て、'soainfra_component'だけがリセットされたことを確認します。


全てのメトリックをリセットするには、以下のURLを使います。
http://<HOST>:<PORT>/dms/Spy?operation=reset&format=raw&cache=refreshall&name=/&recurse=all
この記事がDMSメトリックを使ってみようと考えている人にとって役に立ち、DMSメトリックがどう機能しているかの理解に役立つことを願っています。

[Network] InfiniBand Building Blocks

原文はこちら。
https://blogs.oracle.com/networking/entry/infiniband_building_blocks

このエントリを書き下ろしながら、InfiniBandテクノロジーを使っているOracleの最新のEngineered Systemsを参照しています。Exalogic、Exadata、SuperClusterのプラットフォームについて説明していきます。
最小かつ最小限の構成では、我々は、デュアルスタートポロジでInfiniBandスイッチのペアにホストを接続させています。なぜ2つかというと、冗長性を提供するためです。各ホストには1つのデュアルポートIB HCAがあり、これらのポートはQSFPカッパーケーブルを介して独立したIBスイッチに接続します。スイッチには、ホスト間の代替パスを提供するインターリンクもあります。これで、ラック内のハードウェア構成と接続のほとんどは完了です。

下図は基本的な接続ブロック図です。ActiveとPassiveの概念は後ほど説明します。


次はソフトウェアコンポーネントです。各ホストには、必要なIBソフトウェアスタックがオペレーティングシステムに組み込まれています。それぞれのIBスイッチには、接続されたエンドポイントの管理および理解のため、独自のソフトウェアの実装があります。Linuxのコンピューティング環境では、IBソフトウェアはOFED(訳注:OpenFabrics Enterprise Distribution)に基づいています。ここで特筆すべき一つの特別なソフトウェアは、サブネットマネージャ(Subnet Manager)です。このソフトウェアがネットワークで機能していないと非管理のInfiniBandネットワークになってしまい、望むものではありません。 IBネットワークにおけるサブネットマネージャの主目的は、接続されたホスト間の通信経路を有効にし、定期的にネットワークの物理的変化を監視し、それに応じて調整できるようにすることです。この記事のコンテキストでは、この役割はIBスイッチが努めています。いま、ラック内に複数のスイッチがありますが、どれを使いましょう。答えは、1つ以上を使い、一つは冗長性のためにおいておきます。サブネットマネージャの接続インスタンスの間でのメッセージングプロトコルがあり、接続インスタンスは実際にどちらのスイッチがサブネット管理の役目を果たすかをお互いに交渉することができます。これがマスターサブネットマネージャ(Master Subnet Manager)として知られているものです。複数ある場合は、スタンバイサブネットマネージャ(Standby Subnet Manager)として待機します。マスタースイッチに障害が発生した場合、定義済みの条件に従い次のスイッチがサブネットマネージャに昇格します。

今、詳細をお伝えするため、サブネットマネージャは物理的な変更を検知するため定期的にファブリックをチェックし、LIDをエンドポイントに割当て、構成ファイル中で指定したルーティングアルゴリズムに基づいたフォワーディングテーブルを作成し、いくつかの重要な機能を実行します。ポイントを終了するには、蓋を割り当て、設定ファイルで指定されたルーティング·アルゴリズムに基づいて、転送テーブルを作成し、私は延期しますさらにいくつかの重要な機能を実行します(実行する機能については後で説明します)。

この設定により、OSIモデルのL2を使って通信する準備が完了しました。前述の通り、テクノロジーは上位レベルのプロトコル(upper level protocols / ULP)に対して透過的なので、L3のIPアドレスは個々のホストに割り当てられています。これはイーサネットベースのネットワークの場合と同様です。冗長性のため、IBインターフェースのペアをアクティブ-スタンバイモードで接合し、IPv4アドレスを割り当てています。ここで、ホストの観点からL3での高可用性や冗長性が達成されることを覚えておいてください。ホストからの両リンクは、スイッチとInfiniBandネットワークの観点からすると常にアクティブなのです。

ここで理解を助けるための例をお見せします。
以下のスクリーンショットはホストのInfiniBandポートの状態を示しています。両ポートはアクティブで、LIDがアサインされており、レートは40、つまりオートネゴシエートで4X QDRになっています。


次のスクリーンショットでは、IPoIBのL3構成になっています。


bonding状態を見てみましょう。下のスクリーンショットではインターフェースib0がアクティブなのに対し、ib1はスタンバイになっています。それゆえ、L3での冗長性と高可用性がホストから認識されています。


接続されたファブリックのホストもまた独自のIPoIBのアドレスを持つようになります。これでInfiniBandネットワークの基本的なセットアップが終了し、ここからは、さらにカスタマイズして微調整して、上位層のアプリケーションおよびプロトコルのためにこの高速かつ効率的なスイッチング·ファブリックを利用できるようになります。

次のセクションでは、近隣を照会したり、ファブリックの状態をチェックしたり、他のホストとの通信などについてご紹介します。

2012年3月27日

[Exalytics] 超高速分析専用マシン「Oracle Exalytics In-Memory Machine」発表

原文はこちら。
https://blogs.oracle.com/Oraclejapanpr/entry/%E8%B6%85%E9%AB%98%E9%80%9F%E5%88%86%E6%9E%90%E5%B0%82%E7%94%A8%E3%83%9E%E3%82%B7%E3%83%B3_oracle_exalytics_in_memory

昨年のOracle OpenWorld 2011で発表されたExalytics(正式にはOracle Exalytics In-Memory Machine)の国内での提供を開始しました。

原文は日本語なので、ぜひ原文をどうぞ。


[SOA, Security] Policy Authorization Example in SOA Suite 11g

原文はこちら。
https://blogs.oracle.com/soaproactive/entry/how_to_configure_policy_authorization

ユースケース
アクセス制限が必要なコンポジットに対し、HTTPベーシック認証と認可ポリシーを使ってアクセスを制限し、特定のグループに属するユーザに許可しようとしています。WebLogic Server管理コンソールを使ってユーザとグループを作成し、コンポジット用の認証・認可をEnterprise Managerで構成する手順をご紹介します(いくつかの設定はJDeveloperでも可能です)。

ユーザ・グループの設定
(このセクションにはスクリーンショットはありませんが、次のセクションで使います)
  1. WebLogic Server管理コンソールにログイン (http://<host>:<port>/console)
  2. 左側のメニューから「セキュリティレルム]をクリック
  3. ユーザとグループを作成したいレルムを選択。デフォルトは"myrealm"。
  4. [ユーザとグループ]タブをクリック
  5. [ユーザ]で[New]を選択し、新規ユーザのユーザ名とパスワードを指定。今回はBob1、Bill1、janeというユーザを使うことにする。
  6. [グループ]タブで新しいグループを作成する。名前はGroup1とする。
  7. [ユーザ]タブに戻り、Bob1を選択。
  8. [グループ]タブでGroup1を追加する。Bill1についても同様。意図的にjaneはこのグループに入れないでおく。
これでユーザとグループが構成できました。まだコンポジットをデプロイしていないなら、このタイミングでデプロイしましょう。

1. Enterprise Manager(EM)での設定

1.1) Enterprise Manager Fusion Middleware Controlにログイン。
1.2) [セキュリティ]>[資格証明]をクリック。


1.3) [マップの作成]をクリック


1.4) マップ名は'oracle.wsm.security'


1.5) 入力したら'OK'を押す。


1.6) マップを選択して、[キーの作成]を押す。


1.7) キーの名前は'basic.credentials'
1.8) ユーザ名とパスワードを入力。ここでは、管理者ユーザ(weblogic)を使用。


1.9) [OK]を押すと、資格証明は以下のようになっているはず。


次はアプリケーション・ロールとアプリケーション・ポリシーを作成します。これらは認可ポリシーで使用します。

2. アプリケーション・ロールの作成

2.1) 左側のメニューでドメイン名を右クリック
2.2) [セキュリティ]>[アプリケーション・ルール]を選択


2.3) [アプリケーション・ストライプ]のプルダウンから'soa-infra'を選択
2.4) [追加...]を押して、新しいアプリケーション・ロール(GroupOneRole)を作成する。


2.5) [メンバー]の下の[追加]をクリック。[タイプ]はグループにしておく。
2.6) 検索し、先ほど作成したGroup1を選択する。
2.7) [OK]を押す。


メンバーにGroup1が追加されているはず。


3. アプリケーション・ポリシーの作成
3.1) 再度ドメイン名を右クリック。
3.2) [セキュリティ]>[アプリケーション・ポリシー]を選択


[アプリケーション・ストライプ]は 'soa-infra'、[プリンシパル・タイプ]は[アプリケーション・ロール]になっている。

3.3) 検索
3.4) [作成...]をクリック


3.5) [権限]の下の[追加]をクリック


3.6) [続行]をクリックし、カスタムエントリフォームへ移動する(ぱっと見ではここでの選択が必要なように見えるが、実際のところ、この画面では何もできないのです)。


3.7) [権限クラス]に 'oracle.wsm.security.WSFunctionPermission' を指定。
3.8) 今回はリソース名とアクセス権のアクションの両方に'*'を入力する。実際の実装では、おそらくWebサービスと関連するアクションを指定する。


3.9) [選択]を押す。[権限]は以下のような表示になっているはず。


3,10) [権限受領者]の下にある[追加]をクリック


3.11) デフォルト条件で検索して、 'GroupOneRole' を選択
3.12) 'OK' を押す。


[アプリケーション権限の作成]の画面は以下のようになっているはず。


3.13) 右上部の[OK]を押して、GroupOneRoleプリンシパルがリストに出てくることを確認。


これでプロジェクトにポリシーを追加する準備ができました。

4.  WS-Policyをプロジェクトに追加

4.1) プロジェクト名を右クリック
4.2) [ポリシー]を選択。現時点では、プロジェクトに関連づけられているポリシーはない。


4.3) [アタッチ先/デタッチ元]を選択


プロジェクトによっては、図よりも多くのコンポーネントがあるでしょうが、今回は 'bpelprocess2_client_ep' というコンポジットのエントリポイントを使うことにします。先ほどの操作で、以下の画面が開きます。


これから、3個のポリシーを追加します。
  • 認証のための'oracle/wss_http_token_service_policy'
  • ポリシーアクティビティのロギングのための'oracle/log_policy'
  • 認可のための'oracle/binding_permission_authorization_policy'
これらのポリシーは全て、JDeveloperからコンポジットデザインビューでサービスを右クリックし、[WSポリシーの構成...]を選択することで、Webサービスに追加することができます。画面は上記のEnterprise Managerの画面と似ています。

[訳注]
JDeveloperの画面はこちら。




4.4) リストから設定するポリシーを選択し、「アタッチ]をクリック。上記3ポリシーの設定が完了すると、[直接アタッチされたポリシー]は以下のようになるはず。


4.5) [検証]を押して、[OK]を押すと、ポリシーは以下のようになっているはず。


これで構成は完了です。

では、JMeterを使ってテストしてみましょう。HTTP認証ヘッダを付けたリクエストを送信してみます。JMeterの構成は扱いませんが、2個のリクエストに対するレスポンスをご紹介しましょう。まずは、"Bob1"で試してみましょう。

HTTP認可ヘッダの値は以下の通りです。
Basic Qm9iMTp3ZWJsb2dpYzE=
これはBase64エンコーディングされており、元の値は'Bob1:weblogic1'です。

サーバからのレスポンスは…


では、ドメインには属しているけれどもGroup1メンバーでないjaneで試してみましょう。
HTTP認可ヘッダの値は以下の通りで、'jane:weblogic1'がBase64でエンコードされています。
Basic amFuZTp3ZWJsb2dpYzE=
サーバからのレスポンスは…


レスポンスコード403が確認できます。これは当該リクエスタによるリソースの利用が禁止されていることを意味します。標準出力には以下のようなエラーメッセージが出ています。
<Error> <oracle.wsm.resources.security> <WSM-00045> <HTTP authentication/authorization failure.>
このエントリがSOA 11gコンポジットアプリケーションに対して認可を有効にしようとしている皆さんにお役に立つことを願っています。非常に簡単な例ですが、おそらくよい出発点ではないかと思います。将来、複雑な認可に関するエントリを追加するかもしれません。

[Java, WLS] Oracle Enterprise Pack for Eclipse 12.1.1 update on OTN

原文はこちら。
https://blogs.oracle.com/oepe/entry/oracle_enterprise_pack_for_eclipse

Oracle Enterprise Pack for Eclipse (OEPE) 12.1.1.0.1が先週リリースされました。新しい標準や機能のサポートが含まれています。例えば…
  • Eclipse Indigo SR2 (3.7.2)のサポート
  • Glassfish 3.1.2用サーバプラグインのアップデート
  • WebLogic ServerへのデプロイおよびデバッグにおけるSSL構成のサポート
SSLの構成オプションはWebLogic Server接続の新規作成時に現れます。

For Eclipseのアーリーアダプタ向けに、Eclipse Juno M6ベースのOEPE 12cのアップデートがまもなくリリースされる予定です。

2012年3月26日

[Hardware] SPARC Power Management Article at OTN

原文はこちら。
http://www.c0t0d0s0.org/archives/7448-SPARC-Power-Management-Article-at-OTN.html

同僚のKaroly VeghがTweetの中で指摘していましたが、SPARC Tシリーズシステムの電源管理の使い方に関して、本当に興味深い記事が出ています。

Karoly VeghのTweet
https://twitter.com/#!/kvegh/statuses/183862011107614722

この記事では、電源管理を使用する方法、動作のしくみ、電源管理が出来ること、予想される負荷パターンに従って動的な方法で使う方法について説明しています。OTNに上がっている"How to Use the Power Management Controls on SPARC Servers"(Bruce Evans、Julia Harper、Terry Whatley)という記事がそれです。

How to Use the Power Management Controls on SPARC Servers
http://www.oracle.com/technetwork/articles/servers-storage-admin/pwr-mgmt-sparc-cmt-1563618.html

[SOA] SOA 11g & SAP – Single Channel/Program ID for Multiple IDOCs

原文はこちら。
https://blogs.oracle.com/ateamsoab2b/entry/soa_11g_sap_single_channel

SAP R/3とSOA Suiteを統合しようとした場合に推奨される方法は、Oracle Application Adapter for SAP R/3 (SAP JCo 3.0) です。

Oracle® Fusion Middleware Application Adapter for SAP R/3 (SAP JCo 3.0) User's Guide for Oracle WebLogic Server 11g Release 1 (11.1.1.4.0)
http://docs.oracle.com/cd/E17904_01/doc.1111/e17656/toc.htm

このアダプタは数多くのお客様の環境で使われSAPアウトバウンド(アダプタからSAPを呼ぶ)およびインバウンド(SAPからのイベントをアダプタに伝える)の統合がうまくいっています。しかし、製品の種類によっては、こうした機能がただし、製品の機能が及ばなかったり、エッジケースに対しては工夫が必要な場合があります。 SAPアダプタにおけるエッジケースの一つとして、複数のIDOCが同じプログラムIDを共有できるというSAPの機能を利用するものです。標準的な場合、Application Explorer(Oracle Application Adaptersに付属のユーティリティ)で構成したChannelを介して、SAPはIDOCをSAP Adapterに送信します。、SAPアダプタにIDOCを送信するための標準的な場合は、アプリケーション·エクスプローラ(のOracleアプリケーションアダプタに付属のユーティリティ)で行わチャネル構成を使用することです。Application Explorerを使ってOracle JDeveloperのアーティファクトを生成しているときに、ウインドウに赤字で「 You must create a separate channel for each inbound service(インバウンドサービスの各々で異なるチャネルを作成する必要があります)」と明記されていることにお気付きの方もいらっしゃるかもしれません。



Application Explorerでのチャネル定義の理由は、アダプタとSAPシステムで定義されているプログラムID間の相関関係を作成するためです。基本的には、IDOCがリリースされた際にプログラムIDと関連づけられており、これはIDOCを送信するホスト名とポート(つまりチャネル)を見つけるために使われます。アダプタがIDOCを受信すると、最終的に生成されているSOAコンポーネントインスタンスに送信するために、どのパートナーリンクに送信すべきかを決定します。
アダプタの制限の一つに、異なるIDOCなのに同じチャネルを選択している場合、Application Explorerからアーティファクトをエクスポートした際に、生成されたアーティファクトから作成される全てのパートナーリンクが、同じチャンネル/プログラムIDで流れる全てのIDOCのコピーを受け取ってしまう、という問題があります。例えば、あるDEBMAS06とMATMAS05用のアーティファクトが同じチャネルを使って生成されており、DEBMAS06とMATMAS05用の2個のパートナーリンクが作成されるとしましょう。2つのBPELプロセスが作成され、1つはDEBMAS06パートナに、他方はMATMAS05パートナにワイヤリングされている場合、共通チャネル/プログラムIDに対してSAPから発行されたIDOCにかかわらず、両方のBPELプロセスがインスタンス化されてしまいます。

アダプタのこのファンアウトの振る舞いは、多くのIDOCが流れ、チャネル/プログラムIDを各IDOCタイプに定義する管理の手間を省きたいと考えている企業にとって悩みの種ですが、幸いなことに、このシナリオに対する希望があります。ただし、メディエータ・コンポーネントまたはOracle Service Bus(OSB)のいずれかを導入する必要があります。このエントリでは、メディエータを使ったソリューションを取り上げることにします。OSBのソリューションの詳細は以下にあります(OSBを使った、複数のIDOCでシングル·チャンネル/プログラムIDを使うソリューションはまもなくご案内できます)。

アダプタからIDOCのファンアウトを制御する基本的なことは、かなり単純です。
  1. 共通チャネルを流れるIDOCの一つだけを基にして、アプリケーションエクスプローラで作成したアーティファクトを使ってパートナーリンクを作成します(詳細は以下のリンクを参照下さい)。

    Oracle® Fusion Middleware Application Adapter for SAP R/3 (SAP JCo 3.0) User's Guide for Oracle WebLogic Server 11g Release 1 (11.1.1.4.0)
    Configuring a Mediator Inbound Process
    http://docs.oracle.com/cd/E17904_01/doc.1111/e17656/example_esb.htm#CIHIEHCJ

  1. パートナーリンクで指定されているWSDLを使って、メディエータコンポーネントを作成します。

  1. アダプタのパートナーリンクをメディエータをワイヤリングし、メディエータから 共通チャネルを流れる種々のIDOCを取り扱うことができるコンポーネントへワイヤリングします。

重要なことは、このチャネルの全てのIDOC型は、関連するWSDL、XMLスキーマ、JCAファイルに関係なく、構成されたIDOCパートナーリンクに流れていくことを認識しておく必要があります。コンポジット中のBPELプロセスは、一方向インターフェースで作成されており、特定のIDOCタイプを受け入れるようなっています(つまり、アプリケーションエクスプローラで各々のIDOCに対するXMLスキーマが作成されています)。
  1. XMLドキュメントルート要素名に基づいて、メディエータの静的ルーティングの各々に対して、フィルタを追加します。
    [例]
    name($in.event_DEBMAS06/*) = 'DEBMAS06'

  1. 保存し、コンポジットアプリケーションをデプロイします。
パートナリンクを作成するために使われたIDOCのペイロードを評価しているように見えるため、メディエータ内の各静的ルーティングのためのフィルタ式は少し奇妙に思えるかもしれません(例えば、name($in.event_DEBMAS06/*) = 'MATMAS05')。フィルタ式はペイロードのルート要素を評価し、name()関数はIDOCの名前を含む文字列と比較し、ルート要素名を取得します。アダプタからのIDOCの各々には、IDOCタイプの名前を持つルート要素を含んでいますので、それに従ってドキュメントをルーティングすることができます。新しいIDOCをチャンネル/プログラムIDに追加すると、IDOC名に基づいたメディエータの新しい静的ルーティングを設定する必要があります。