2011年5月31日

[Java] Oracle Java ME Embedded Client 1.0 released for download

Oracle Java ME Embedded Client (OJEC) 1.0がリリースされました。

ORACLE Java ME for Embedded Client Download
http://www.oracle.com/technetwork/java/javame/embedded/download/javame/index.html

Java ME Connected Device Configuration(CDC)をご存知ない方は、こちらをご覧になって要件や背景について知っていただければと思います。


原文はこちら。
http://blogs.oracle.com/hinkmond/entry/oracle_java_me_embedded_client

[SOA] Show Notes: SOA Governance First Steps

今週のArchBeat Podcastでは3部に分けて"SOA Governance First Steps"をお送りします。 効果的なSOAガバナンスプログラムに取りかかることが想像よりも簡単でかつ恐れる必要がない、ということについて、説得力のある議論をするための専門知識を持つ人々を迎えています。

パネリストは以下の3名です。
  • Cathy Lippert / director of product management for Oracle SOA Governance [Linkedin | Blog]
  • Mark Dutra / consulting director with Oracle Consulting Services [LinkedIn]
  • Bruce Bailey / Oracle Fusion Middleware sales consultant [LinkedIn]

  • 第1部
    SOAに基づくシステムを利用している企業でさえも、SOAガバナンスが非公式プロセスのままというのは問題がある。
  • 第2部 (6月1日)
    Wikiとスプレッドシートはよいツールだが、SOAガバナンスには向いていない。パネリストがSOAアセットのインベントリをメンテナンスし、管理することの重要性を語ります。
  • 第3部 (6月8日)
    よく管理されたSOAアセットのインベントリと、プロジェクトデリバリ、ハイレベルアーキテクチャの関連性をパネリストが議論します。

議論の中でCathy、Mark、BruceがOER (Oracle Enterprise Repository) について言及しています。

関連記事
For a whole bunch of OTNのSOAガバナンスのリソースをお探しの方は、このブックマークをご利用ください。
delicious.com/OracleTechnologyNetwork/soagovernance

OTN SOA Centerからもどうぞ。
OTN SOA Center (OTN-US)
http://www.oracle.com/technetwork/topics/soa/whatsnew/index.html
OTN SOA Center (OTN-JP)
http://www.oracle.com/technetwork/jp/topics/soa/whatsnew/index.html

まもなく登場
  • トロントで開催されたOTN Architect Dayのパネルディスカッション
  • Paul Priess (IASA's CEO)との専門職としてのITアーキテクチャの議論
  • Thomas Erl と Anne Thomas Manesへのインタビュー
OTN ArchBeatのFeedはこちらからチェックしてください。
http://feeds2.feedburner.com/OtnArch2Arch


原文はこちら。
http://blogs.oracle.com/archbeat/entry/show_notes_soa_governance_first

[B2B] Implementing Oracle B2B 11g as a Hub

Oracle B2Bをハブとして使う方法についてご紹介します。B2B 11gから、特別な構成を施さなくてもハブとして利用することができます。

説明に使用するトレーディングパートナーは以下の通りです。
  • OracleServices : ハブのホスト
  • MarketInc : HL7 ADT_A01ドキュメントをOracleServicesの提供するサービスを介してRetailIncに送信するトレーディングパートナー
  • RetailInc :  HL7 ADT_A01ドキュメントをOracleServicesの提供するサービスを介してMarketIncから受信するトレーディングパートナー
つまり、メッセージは物理的には以下のように流れます。
MarketInc  <- ADT_A01 -> OracleServices <- ADT_A01 -> RetailInc
しかし、OracleServicesはハブなので、論理的には以下のように流れます。
MarketInc  <---------> RetailInc
MarketIncのB2Bサーバでは、MarketIncとRetailInc間のアグリーメントを構成しますが、OracleServicesがメッセージを待機するチャネルは一つだけです。

では、まずOracle B2BコンソールでHL7ドキュメントを作成しましょう。

以下の2個のドキュメント定義を作成します。特殊な設定はしません。通常の1対1の通信と同じように設定します。
  • ADT_A01_Def
  • ACK_A01-Def
ドキュメント設定が終了すると、トレーディングパートナーを設定します。リモートトレーディングパートナーの"MarketInc"の「ドキュメント」タブから、作成したドキュメントの定義を追加します。

MarketIncをADTの送信者、ACKの受信者として設定します。同様に、RetailIncではADTの受信者、ACKの送信者として設定します。ドキュメントを追加したら、チャネルを設定しトレーディングパートナーのプロファイル識別子を追加します。


次に、アグリーメントを設定します。まず、MarketIncに2つのアグリーメント(インバウンド用のADTとアウトバウンド用のACK)を設定します。RetailIncについても、2つのアグリーメント(インバウンドにACK、アウトバウンドにADT)を設定します。

アグリーメントの作成が完了したら保存し、検証後サーバにデプロイしましょう。デプロイが済めば、テストが可能になります。
メッセージフローをテストするには、ADT_A01メッセージを、OracleServicesの外部リスニングチャネルに配置する必要があります。今回の場合はファイルチャネルなのでディレクトリに配置しました。
ファイルがチャネルディレクトリから削除されると、Oracle B2Bのレポートへ移動し、以下のことを確認しましょう。
  1. MarketIncから受信したADTは正常に処理されている
  2. ADTに対するACKはMarketIncに返信されている
  3. ADTはRetailIncに転送されている
注:RetailIncも同様に設定しているなら、RetailIncからACKを返していることが確認できるはずです。

これで実装は終了です。

仕組み
単にインバウンドメッセージの受信者を識別しようとしているだけです。受信したメッセージのトレーディングパートナーをホストしていない場合、送信先に紐付くアウトバウンドのアグリーメントを探します。トレーディングパートナーが見つかれば、受信したメッセージを当該トレーディングパートナーへ転送します。

このサンプル実装の設定をこちらからダウンロードできます。この設定を使っている場合はチャネルエンドポイントの設定を変更することを忘れないでください。テストで使用したサンプルADTメッセージもこちらからダウンロードできます。

この実装に関連する質問がありましたら、OTN Oracle B2Bフォーラムでどんどん質問してください。

Forum: Integration - B2B


原文はこちら。
http://blogs.oracle.com/oracleb2bgurus/entry/implementing_oracle_b2b_11g_as

2011年5月29日

[WLS] Using QBrowser v2 with WebLogic JMS for 10.3

WebLogic ServerにはJMSの送り先を確認する便利なツールは備わっていませんが、フリーのツールで、QBrowser version2というツールをちょっと構成すれば簡単にWebLogic JMSの送り先を確認できます。QBrowserをどのように構成すれば、WebLogic Server 11g(10.3.x)の管理するJMSの送り先を確認できるようになるか、具体的に説明していきます。
このエントリの原文は以下にあり、ここからダウンロードできるPDFで手順を紹介しています。
http://blogs.czapski.id.au/2011/05/using-qbrowser-v2-with-weblogic-jms-for-10-3


原文はこちら。
http://blogs.oracle.com/javacapsfieldtech/entry/using_qbrowser_v2_with_weblogic

[Database] Windows版 RAC 11g がSAP社から認定されました

Linuxに引き続き、2011年5月25日からWindows版のRAC 11gがSAPで利用可能になりました。OCFS(Oracle Cluster FileSystem)ベースでの認定ではなく、ASMベースでの認定ということです。


 原文はこちら。
http://blogs.oracle.com/mamoruiwasaki/entry/windows%E7%89%88_rac_11g_%E3%81%8Csap%E7%A4%BE%E3%81%8B%E3%82%89%E8%AA%8D%E5%AE%9A%E3%81%95%E3%82%8C%E3%81%BE%E3%81%97%E3%81%9F

2011年5月28日

[B2B] Oracle SOA Suite 11g B2B HL7 v2 Inbound to WebLogic JMS Queue

HL7 MessagingをSOA Suiteへ移行する場合、eGate/Java CAPSのやり方に慣れている人は、”HL7v2Adapter-JMS Queue”パターンを再現したがることがわかりました。
これはSOA Suiteを使う場合には必ずしも必要ではありませんが、どうしてもというなら実現可能です。このエントリではOracle SOA Suite 11gR1PS3を使ってこのパターンを実装する上での手順を示します。
(訳注:原文では11gR3となっていますが、11gR1 PS3)
  1. JMSを確認するためのQBrowserツールを構成する
  2. HL7 Senderツールを構成する
  3. WebLogic JMS Queueを二つ作成する
  4. HL7 v2 Inbound Trading Partnership Agreementを作成し、デプロイする
  5. HL7 v2のメッセージを送信し、対応するJMS Queueにてメッセージをチェックする
  6. 4、5の手順を繰り返して別のインバウンドメッセージを送受信する
このエントリの原文は以下のURLにあります。

Oracle SOA Suite 11g B2B HL7 v2 Inbound to WebLogic JMS Queue
http://blogs.czapski.id.au/2011/05/oracle-soa-suite-11g-b2b-hl7-v2-inbound-to-weblogic-jms-queue

この原文の中で、Oracle SOA Suite B2B HL7インフラを構成して、複数のインバウンドMLLPチャネルからメッセージストリームを受信し、各ストリームを別々のJMS送り先に対して配信することができることを説明しています。これはeGateおよびJava CAPSで実現していたことです。


原文はこちら。
http://blogs.oracle.com/javacapsfieldtech/entry/oracle_soa_suite_11g_b2b

[CardDAV] 100% XML CardDAV query

CARDDAV:address-dataのリクエストXMLの要素を使うと、content-typeとバージョンのXMLパラメータによって、どのフォーマットでのアドレス帳を期待しているかを、クライアントが指定することができます。

10.4. CARDDAV:address-data XML Element
http://tools.ietf.org/html/draft-ietf-vcarddav-carddav-10#section-10.4

まもなく出版されるxCard形式(http://tools.ietf.org/html/draft-ietf-vcarddav-vcardxml)と共に、100%のXML CardDAVクエリのレスポンスを要求するために使用することができます。
<CARDDAV:address-data/>
を使うのではなく、
<CARDDAV:address-data content-type="application/vcard+xml" version="4.0" />
を使うことができます。

[リクエスト]
REPORT /home/bernard/addressbook/ HTTP/1.1
Host: addressbook.example.com
Depth: 1
Content-Type: text/xml; charset="utf-8"
Content-Length: xxxx
<?xml version="1.0" encoding="utf-8" ?>
<C:addressbook-query xmlns:D="DAV:" xmlns:C="urn:ietf:params:xml:ns:carddav">
  <D:prop>
    <D:getetag/>
    <C:address-data content-type="application/vcard+xml" version="4.0"/>
  </D:prop>
  <C:filter/>
</C:addressbook-query>
[レスポンス]
HTTP/1.1 207 Multi-Status
Date: Sat, 11 Nov 2006 09:32:12 GMT
Content-Type: text/xml; charset="utf-8"
Content-Length: xxxx
<?xml version="1.0" encoding="utf-8" ?>
<D:multistatus xmlns:D="DAV:"
 xmlns:C="urn:ietf:params:xml:ns:carddav">
  <D:response>
    <D:href>/home/bernard/addressbook/v102.vcf</D:href>
    <D:propstat>
      <D:prop>
        <D:getetag>"23ba4d-ff11fb"</D:getetag>
        <C:address-data content-type="application/vcard+xml" version="4.0">
          <vcards xmlns="urn:ietf:params:xml:ns:vcard-4.0">
            <vcard>
              <fn><text>J. Doe</text></fn>
              <uid><uri>xxx:12</uri></uid>
              <email>
                <parameters><type><text>work</text></type></parameters>
                <text>john.doe@example.ca</text>
              </email>
            </vcard>
          </vcards>

        </C:address-data>
      </D:prop>
      <D:status>HTTP/1.1 200 OK</D:status>
    </D:propstat>
  </D:response>
</D:multistatus>
"X-HTTP-Method-Override" HTTP Headerと組み合わせて、HTTP POSTを使ってREPORTをラップすると、ほとんどのブラウザとの親和性が高いCardDAVクエリを作ることができます。

xCard: vCard XML Representation draft-ietf-vcarddav-vcardxml-11
http://tools.ietf.org/html/draft-ietf-vcarddav-vcardxml


原文はこちら。
http://blogs.oracle.com/arnaudq/entry/100_xml_carddav_query

[E20] WebDAV in UCM 11g

UCM11gから、WebDAVのURLが変化しています。
http://server:16200/_dav/cs/idcplg/webdav/
OHSをUCMの前に置く場合は、mod_wl_ohs.confに _davの場所を追加しましょう。
<Location /_dav>
.
.
.
</Location>
 上記の設定をすると、以下のURLで利用できるようになります。
http://server/_dav/cs/idcplg/webdav/

原文はこちら。
http://blogs.oracle.com/ecmarch/entry/webdav_in_ucm_11g

[SOA/BPM] Purging Strategies in Oracle SOA Suite 11gR1 PS3

[訳注]PS3の話をしていますが、PS4でも同様です。

Oracle SOA Suiteのインスタンスデータや監査証跡のデータをどのようにパージするか…パージはコンピュータリソースをかなり使用しますので、通常の運用に少なからず影響が及びます。そのため、PS3でパージのためのスクリプトを改善しました。パージの方法についてまとめたスライドにある通り、パージには以下の方法があります。
  • Enterprise Manager Fusion Middleware Controlを使ったパージ
  • PL/SQLのスクリプト
    • ループパージ
    • パラレルパージ
  • データベースパーティショニング(厳密な意味でのパージではありませんが)
上記スライドは現在も編集していますので、パージに関する質問があれば、コメント欄にお願いします(原文のコメント欄にお願いします from ろじ子)。

原文はこちら。
http://blogs.oracle.com/SOA/entry/purging_strategies_in_oracle_soa

[SOA/BPM] How to "turn off EDN" if its not being used in a SOA deployment

FMW11gでは、EDN(Event Delivery Network)という仕組みがデフォルトで有効になっていますが、これを止める方法です。
  1. Enterprise Manager Fusion Middleware Controlを開く
  2. System MBean Browser > MBean Application > Defined MBeans > oracle.as.soainfra.config > Server: SOA_cluster_name > EDNConfig > edn を辿り、Paused属性をtrueにする。これにより、EDN listener/pollerスレッドの個数が0になり、結果としてイベント配信が停止する。ただし、EDN-DBとEDN-JMSは停止しない。 
EDNイベント配信の有効化・無効化のためのWLSTコマンドは以下の通りです。
sca_enableEventsDelivery()
sca_disableEventsDelivery()
Enterprise Managerで実施した手順をWLSTでやってみます。
  1. connect('<user>','<password>','t3://<soa server>:<port>')
  2. custom()
  3. cd('oracle.as.soainfra.config/oracle.as.soainfra.config:name=edn,type=EDNConfig,Application=soa-infra')
  4. set('Paused', 1)
    注:set('Paused', 0)にするとEDNイベント配信が再開されます。
  5. exit()
この操作の後サーバを再起動する必要はありません。


原文はこちら。
http://blogs.oracle.com/dasoa/entry/how_to_turn_off_edn

2011年5月27日

[ODI] Oracle Data Integration 11g EStudy

"Oracle Data Integration 11g, New Features"と題したOTN Learning Libraryのコンテンツが追加されました。チュートリアルを通じて、1時間弱でODI 11gの新機能に関することがわかります。なお、ODIに関する一般的な概要はこのコンテンツには含まれておりません。

Oracle Data Integration 11g, New Features
https://apex.oracle.com/pls/apex/f?p=44785:24:0::NO:24:P24_CONTENT_ID,P24_PREV_PAGE:5496,16



原文はこちら。
http://blogs.oracle.com/dataintegration/entry/oracle_data_integration_11g_estudy

[Security] IRM 11g Quick Setup Guide

Oracle IRM11gをダウンロード、インストール、構成、ドキュメントへのシール、区分方法までの手順をまとめたQuick Setup Guideができました。

原文はこちら。
http://blogs.oracle.com/irm/entry/irm_11g_quick_setup_guide

[Java] JavaFX 2.0 Beta Now Available

JavaFX 2.0のベータ版がダウンロード可能になりました。
(訳注:現状ではWindowsのみのバイナリです。)

Download JavaFX
http://javafx.com/downloads

何か不具合を発見されましたら、製品品質および機能向上のためにどんな些細なことでも報告してください。

報告先はこちら。
http://javafx-jira.kenai.com/

チュートリアルやAPIのドキュメントはこちらからどうぞ。
http://download.oracle.com/javafx



原文はこちら。
http://blogs.oracle.com/java/entry/javafx_2_0_beta_now

2011年5月26日

[Exadata, Exalogic] New papers: DR for Exalogic and Exadata + Oracle GoldenGate on Exadata

MAA(Maximum Availability Architecture)のホワイトペーパーの更新版である、"Oracle GoldenGate on Oracle Exadata Database Machine Configuration"がリリースされました。

Oracle GoldenGate on Oracle Exadata Database Machine Configuration
http://www.oracle.com/technetwork/database/features/availability/maa-wp-gg-oracledbm-128760.pdf

以下の新しい情報が追加されています。
  • DBFSの性能の構成
  • ノードフェイルオーバ向けのDBFSの構成の詳細
  • GoldenGateレプリカのコミットの挙動の構成
  • GoldenGateのクリーンスタートアップのためのエージェントのフェイルオーバスクリプト
もう一つ、”Disaster Recovery for Oracle Exalogic Elastic Cloud with Oracle Exadata Database Machine”と題したドキュメントがリリースされました。

Disaster Recovery for Oracle Exalogic Elastic Cloud WITH ORACLE EXADATA DATABASE MACHINE
http://www.oracle.com/technetwork/database/focus-areas/availability/maa-exalogic-dr-401789.pdf

このドキュメントでは以下の点について言及しています。
  • Oracle Fusion Middlewareの災害対策のためのアーキテクチャと、Oracle Exadata Database MachineとOracle Exalogicへのデプロイメント戦略
  • Oracle Fusion Middleware災害対策ソリューションの、Oracle Exalogic と Oracle Exadata Database Machine へのデプロイメントと構成の手順の詳細
  • Exalogic と Exadataを使ったOracle Fusion Middleware災害対策ソリューションのベストプラクティス

原文はこちら。
http://blogs.oracle.com/XPSONHA/entry/dr_for_exalogic_and_exadata

[Solaris] ipadm

Solaris 11ではIPインターフェースの管理のための新しいコマンド、ipadmが導入されています。ipadmはifconfigを発展させたものですが、ifconfigとは違い、ipadmで設定すると再起動しても設定が消えないようになります。もはや構成ファイルで混乱することはありません。

ifconfigがなくなるわけではありませんが、新しいipadmコマンドになれるため今はifconfigを使わないようにしています。ipadmはサブコマンドを紹介するすっきりしたインターフェースで使い方を紹介しています。
bleonard@solaris:~$ ipadm
usage:  ipadm <subcommand> <args> ...
    create-if    [-t] <interface>
    disable-if    -t <interface>
    enable-if    -t <interface>
    delete-if    <interface>
    show-if        [[-p] -o <field>,...] [<interface>]

    set-ifprop    [-t] -p <prop>=<value[,...]> -m <protocol> <interface>
    reset-ifprop    [-t] -p <prop> -m <protocol> <interface>
    show-ifprop    [[-c] -o <field>,...] [-p <prop>,...]
            [-m <protocol>] [interface]

    create-addr    [-t] {-T static <static_args> | -T dhcp <dhcp_args> |
            -T addrconf <addrconf_args>} <addrobj>
            static_args = <[-d] -a {local|remote}=addr[/prefixlen]>
            dhcp_args = <[-w <seconds> | forever]>
            addrconf_args = <[-i interface-id]
                    [-p {stateful|stateless}={yes|no}]>
    down-addr    [-t] <addrobj>
    up-addr        [-t] <addrobj>
    disable-addr    -t <addrobj>
    enable-addr    -t <addrobj>
    refresh-addr    [-i] <addrobj>
    delete-addr    [-r] <addrobj>
    show-addr    [[-p] -o <field>,...] [<addrobj>]

    set-addrprop    [-t] -p <prop>=<value[,...]> <addrobj>
    reset-addrprop    [-t] -p <prop> <addrobj>
    show-addrprop    [[-c] -o <field>,...] [-p <prop>,...] <addrobj>

    set-prop    [-t] -p <prop>[+|-]=<value[,...]> <protocol>
    reset-prop    [-t] -p <prop> <protocol>
    show-prop    [[-c] -o <field>,...] [-p <prop>,...] [protocol]
ifconfigと比較してみましょう…
bleonard@solaris:~$ ifconfig
usage: ifconfig <interface> | -a[ 4 | 6 | D ][ u | d ][ Z ]
    [ <addr_family> ]
    [ <address>[/<prefix_length>] [ <dest_address> ] ]
    [ set [ <address>][/<prefix_length>] ] [ <address>/<prefix_length>] ]
    [ destination <dest_address> ]
    [ addif <address>[/<prefix_length>]  [ <dest_address> ] ]
    [ removeif <address>[/<prefix_length>] ]
    [ arp | -arp ]
    [ auto-revarp ]
    [ broadcast <broad_addr> ]
    [ index <if_index> ]
    [ metric <n> ] [ mtu <n> ]
    [ netmask <mask> ]
    [ plumb ] [ unplumb ]
    [ preferred | -preferred ]
    [ private | -private ]
    [ local | -local ]
    [ router | -router ]
    [ subnet <subnet_address>]
    [ trailers | -trailers ]
    [ token <address>/<prefix_length> ]
    [ tsrc <tunnel_src_address> ]
    [ tdst <tunnel_dest_address> ]
    [ auth_algs <tunnel_AH_authentication_algorithm> ]
    [ encr_algs <tunnel_ESP_encryption_algorithm> ]
    [ encr_auth_algs <tunnel_ESP_authentication_algorithm> ]
    [ up ] [ down ]
    [ xmit | -xmit ]
    [ modlist ]
    [ modinsert <module_name@position> ]
    [ modremove <module_name@position> ]
    [ ipmp ]
    [ group <groupname>] | [ group ""]
    [ deprecated | -deprecated ]
    [ standby | -standby ]
    [ failover | -failover ]
    [ zone <zonename> | -zone ]
    [ usesrc <interface> ]
    [ all-zones ]
or
    ifconfig <interface> |  -a[ 4 | 6 | D ] [ u | d ]
    auto-dhcp | dhcp
    [ wait <time> | forever ]
    [ primary ]
    start | drop | ping | release | status | inform
最初にはまったのはaddrobjでした。addrobjは、ネットワークインターフェース上に構成されたアドレスに対してユーザが付与する名前で、後でアドレスを参照する際に利用できるというものです。2個のパートから構成されていて、アドレス構成済みのネットワークインターフェースと、好みの文字列をスラッシュで分けています。アドレスを表現する文字列を使うことが一般的です(v4dhcp、v6static、など)。
addrobj = <network interface>/<any string>
例えば、
addrobj = e1000g0/v4static
このaddrobjはアドレスの参照に使います。addrobjを用いるipadmのサブコマンドの名前にはすべてaddrという文字が入っています。同様に、インターフェースを用いるipadmのサブコマンドの名前にはすべてifという文字が入っています。
一般に、ifconfigでやることと言えば、インターフェースへアドレスを構成することと、それらのアドレスを表示することです。ifconfigでやっていることをipadmでやってみたいと思います。注意頂きたいのは、ネットワークインターフェースを構成するためにipadmを使おうと考えている場合には、network/nwamenablenetwork/physical:default:を以下のように無効にしてください。
bleonard@solaris:~$ svcs nwam physical:default
STATE          STIME    FMRI
disabled       11:32:38 svc:/network/physical:nwam
online         11:32:55 svc:/network/physical:default

インターフェースの構成
ifconfigの場合
インターフェースを立ち上げるためには少なくとも2度コマンドを発行する必要があります。しかも再起動するとその設定は失われてしまいます。
bleonard@solaris:~$ sudo ifconfig e1000g0 plumb
bleonard@solaris:~$ sudo ifconfig e1000g0 10.0.2.15/24 up
ipadmの場合
コマンド1回ですみます。しかも設定が永続化されます。
bleonard@solaris:~$ sudo ipadm create-addr -T static -a 10.0.2.15/24 e1000g0/v4static
ipadmはifconfigよりも長い設定ですが、これはアドレスに名前を割り当てているからです。

インターフェースの表示
ifconfigの場合
IPアドレスを確認するときは…
bleonard@solaris:~$ ifconfig -a
lo0: flags=2001000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv4,VIRTUAL> mtu 8232 index 1
    inet 127.0.0.1 netmask ff000000
e1000g0: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 4
    inet 10.0.2.15 netmask ffffff00 broadcast 10.0.2.255
lo0: flags=2002000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv6,VIRTUAL> mtu 8252 index 1
    inet6 ::1/128
e1000g0: flags=20002000840<RUNNING,MULTICAST,IPv6> mtu 1500 index 4
    inet6 ::/0
ちょっとごちゃごちゃしていますが、慣れてしまいました。

ipadmの場合
こんな感じです。
bleonard@solaris:~$ ipadm show-addr
ADDROBJ           TYPE     STATE        ADDR
lo0/v4            static   ok           127.0.0.1/8
e1000g0/v4static  static   ok           10.0.2.15/24
lo0/v6            static   ok           ::1/128
<interface>/?の形でaddrobjを表示させる場合、libipadm APIを使用していないアプリケーションにより、インターフェース上にアドレスを構成していることに注意が必要です。

こちらにifconfigとipadmのコマンドオプションの比較表があります。

Comparison Tables: ipadm Command and Other Networking Commands
http://download.oracle.com/docs/cd/E19963-01/html/821-1458/gkjdw.html#gjtrh#scrolltoc

ipadmは設定を/etc/ipadm/ipadm.confに永続化しています。
bleonard@solaris:~$ cat /etc/ipadm/ipadm.conf
#
# CDDL License...
#
# DO NOT EDIT OR PARSE THIS FILE!
#
# Use the ipadm(1m) command to change the contents of this file.
_ifname=e1000g0;_family=2;
_ifname=e1000g0;_family=26;
_ifname=e1000g0;_aobjname=e1000g0/v4static;_ipv4addr=10.0.2.15,;up=yes;
_ifname=e1000g0;_aobjname=e1000g0/v4static;prefixlen=24;
その他、参考資料はこちらにあります。


原文はこちら。
http://blogs.oracle.com/observatory/entry/ipadm

[IRM] IRM Item Codes – what are they for?

多くの同僚がIRMのitem code(アイテムコード)について最近尋ねてくるようになりました。「これは何のためにあるの?」「いつ役に立つの?」「お客さまの要件にどうやってあわせるにはどうすればいいの?」これはかなり大きなトピックですがここではいくつかの回答をするにとどめます。
アイテムコードはシールされた各ドキュメントのメタデータにデフォルトで含まれるものです。アイテムコードはファイルをシールしたときに決まり、通常はタイムスタンプとファイル名の組み合わせになります。
この時間・名前の組み合わせはアイテムコードが各々の新しい文書に対してユニークになる傾向がありますが、実際にはアイテムコードはユニークである必要はありません。ほとんどのユースケースでは、アイテムコードはユーザ権限の評価に使われることはありません。コンテキスト名がメタデータ中の重要な項目なのです。ユーザは通常、アイテムコードにかかわらず、情報の区分全体に対するアクセスが許可されるロールを持っています。これがOracle IRMソリューションが簡潔にして高い管理性を持つ鍵なのです。
アイテムコードは時としてUIの中に出てきますが、ほとんどのユーザはたぶん気にすることもないでしょう。とはいいながら、どうすればアイテムコードを確認できるか、ご覧にいれたいと思います。シールされたファイル上にマウスポインタをもっていってみてください。



ご覧の通り、タイムスタンプとファイル名でアイテムコードができていることがわかります。

ではなんのためにあるの?
第一のメリットはコンテキスト用に定義したポリシーに対する例外を管理できることです。これにより、あらゆるoracle - internalファイルにアクセスできるようになります(ただし 2011_03_11 13:33:29 Board Minutes.sdocx は除く)。
この単純なメカニズムにより、Oracle IRMは必要に応じてファイルごとの制御を可能にする一方で、大多数のユーザやコンテンツを区分ベースで制御する上で拡張性と管理性を提供します。ファイルを個別に管理したくないと思ってらっしゃるでしょうが、それって絶対と言い切れますか?

アイテムコードを逆の目的で使うこともできます。通常はアクセスを拒否するロールである場合に、ユーザ権限にファイルを含める、というやり方です。つまり、特定のアイテムコードにのみアクセスを可能とするようなロールを割り当てることができるのです。例えば、が正確に一つのファイル(先ほどのファイル)だけアクセス可能とするようなロールも可能です。

では、どのようにアイテムコードをセットするの?
ほとんどの場合、アイテムコードはシールする際に自動的にセットされます。シールのためのAPIはタイムスタンプとファイル名を使いますが、ユーザが意識する必要はありません。APIは自動的に実用的な目的でユニークになるようなアイテムコードを生成します。アイテムコードは、管理UIから権限を見たり割り当てるときに参照したいと思っているユーザにとってわかりやすいものです。適切に認可されたユーザおよびアプリケーションがアイテムコードを手動もしくは必要であればプログラムから設定することも可能です。

アイテムコードをIRMデスクトップから手動で設定する
手で設定するプロセスは、シールのタスクを少々拡張します。認可されたユーザは「Advanced...」を選択してシールのオプションを選択できます。するとアイテムコードを指定できるオプションのダイアログが開きます。



このオプションを使う場合、ユーザロールにアイテムコードを設定する権利が必要です。ほとんどのユーザにアイテムコードのことを考えさせたくないので、デフォルトではこのオプションは隠されています。

アイテムコードをプログラムで設定する
より一般的なユースケースとしては、 アプリケーションがアイテムコードをプログラムで管理するということです。例えば、ワークフローの一環でドキュメントをシールするドキュメント管理システムがアイテムコードをドキュメントのユニークな識別子に合わせて、リポジトリに格納する、というような場合です。IRMの権利の評価機能をドキュメント管理システムに定義されたセキュリティモデルと直接結びつけるためのオプションを提供します。再度言いますが、ドキュメントをシールするアプリケーションにはアイテムコードの設定が認可されている必要があります。

給与明細のシナリオ
アイテムコードが実際にどのように使われるかを表す完全な例として人事のワークフロー、例えば給与明細のワークフローを考えてみましょう。ゴールはHRチームが全従業員の給与明細書へアクセスできることですが、従業員は個々人の給与明細にのみアクセスできる必要があります。これを実現するために、PayslipsというIRM分類を持つことになるでしょう。HRチームは通常すべての給与明細にアクセスできますが、各従業員には特定のアイテムコードをもつファイルにのみアクセス可能というアイテム読み取りを与えます。アイテムコードは従業員番号に一致するものとすれば、従業員番号123123123の従業員はそのアイテムコードを持つファイルにアクセスすることになります。これがアイテムコードが一意である必要がない理由です。管理の簡便性のために、意図的に同じコードを複数のファイルに設定することができるのです。
従業員は給与明細のシールを外したり、印刷することができますので、このソリューションはセキュアな配信メカニズムとして機能します。 会社のe-mailで給与明細を配信しても、IT管理者がアクセスしたり、うっかり意図した受信者以外に転送されたりしても情報漏洩しないのです。
残る部分は、個々人の給与明細がシールされている場合に正しいアイテムコードが割り当てられていることを確保することですが、これは簡単なIRMシールアプリケーションで容易に管理できます。月々、従業員の給与明細は同じアイテムコードでシールされるので、ユーザがアクセスするアイテムのリストをメンテナンスし続ける必要はありません。従業員コードを使っているすべてのドキュメントにアクセスできます。


原文はこちら。
http://blogs.oracle.com/irm/entry/irm_item_codes_what_are_they_f

2011年5月25日

[GlassFish] Buy Oracle GlassFish Server, what do you get?

GlassFish Open Source Edition とOracle GlassFish Serverの違いは何なのでしょうか?

GlassFish Open Source Edition (OSE)
http://glassfish.org/

Oracle GlassFish Server (OGS)
http://www.oracle.com/us/products/middleware/application-server/oracle-glassfish-server/index.html

簡単な答え(GlassFish Server Control)は以前のエントリに記載しました。

GlassFish Server Control
http://www.oracle.com/us/products/middleware/application-server/glassfish-server-control-ds-072078.pdf
Oracle GlassFish Server Control DataSheet
http://blogs.oracle.com/theaquarium/entry/oracle_glassfish_server_control_datasheet

でもちょっと待ってください、他にも違いはあるんです。細かい点は、ライセンスドキュメントに記載されています。列挙すると、
  • Oracle GlassFish Message Queue
  • Oracle GlassFish Server HTTP load balancer plug-in
  • GlassFish Server Control
  • Oracle TopLink
だけでなく、Oracle JRockit JDKやHotspot JDKも含みます。

Oracle® Fusion Middleware Licensing Information 11g Release 1 (11.1.1)
http://download.oracle.com/docs/cd/E17904_01/doc.1111/e14860/products.htm#BABDJDAD

Oracle GlassFish Serverはプロセッサライセンスで、上記ドキュメントにはOracle Coherence、WebLogic、TopLinkなどのライセンス情報も同様に含まれています。
覚えておいてほしいのは、Open Source EditionをOracle GlassFish Server製品にアップグレードできる、ということです。アップグレードするには、製品の機能であるUpgrade Centerを使用します。

Upgrading to Oracle GlassFish Server From GlassFish Server Open Source Edition


原文はこちら。
http://blogs.oracle.com/theaquarium/entry/buy_oracle_glassfish_server_what

[WLS] WebLogic MDB and Distributed Queue Elastic Capabilities

MDBは分散Queueにどのように作用するのか、特に自動サービスマイグレーションのイベントが発生した後の作用について知りたいという問い合わせを受けました。移行やフェールオーバがシームレスに行われるようにするため、WebLogic Serverは優れた技術で構成されています。おそらくこの話題に興味がある方がいらっしゃるのではないでしょうか。
なお、このエントリの読者は、WebLogic Serverの分散QueueやTopicをご存知という前提とします。分散送り先について知りたい方は、こちらを参照してください。

Oracle® Fusion Middleware Configuring and Managing JMS for Oracle WebLogic Server
4 Configuring Advanced JMS System Resources
Configuring Distributed Destination Resources
http://download.oracle.com/docs/cd/E21764_01/web.1111/e13738/advance_config.htm#i1079175

"Mr. MDB Container, Meet Ms. JMS Service"
WebLogic ServerのMDBの挙動の鍵は、MDBコンテナとJMSサービスの関係です。両者間には、最終結果を可能にする補完する職務の分離があります。最終結果というのは、それは以下の目的を達成することを意味します。
  • 分散Queueのすべてのメンバを使用可能にするMDB (孤立したメンバやメッセージを作らない)
  • メッセージの作成・消費とも負荷分散する
  • WebLogicのトポロジーの変化に動的に対応する
MDBの挙動の背後にある基本的な前提は、分散Queueでメッセージを待機しているMDBが分散Queueの変化に対応すべき、というものです。それゆえ、クラスタ、分散Queueは、もともと柔軟性を持っています。クラスタメンバを追加したり、あるホストマシンから別のマシンへクラスタメンバを移行したり、JMSサービスはクラスタ内のある管理対象サーバから別のサーバに移行することができます。MDBは何もしなくてもその柔軟性を全て処理できるようにする必要があります。内部的には、いくつかのハンドシェイクやクラスタ内のJMSサービスとMDBコンテナ間で会話をします。分散Queueを待機しているMDBを含むアプリケーションをデプロイすると、MDBコンテナはクラスタ内のJMSサービスに分散Queueのメンバリストを要求します。そしてメンバが変化した場合には、JMSサービスにMDBコンテナに通知するように依頼します。技術的には、分散Queueのメンバ更新の通知サービスを使ってMDBコンテナが登録します。更新情報には分散Queueメンバの死活と各メンバの所在場所を含みます。クラスタ内のサーバの障害やクラスタ内のサーバ移行、管理対象サーバ間でのJMSサービス移行時クラスタの拡大により変化が発生します。MDBコンテナは これらの変化に対応します。実際の対応は分散QueueがMDBとして同一クラスタ内にホストされている(ローカル)か、別のクラスタにホストされている か(リモート)によって変化します。

Local or Remote
クラスタにアプリケーションをデプロイし、分散Queueへのメッセージ到着を待つMDBがアプリケーションに含まれている場合、分散QueueがローカルにあるかリモートにあるかでMDBコンテナがMDBを管理する方法が異なります。いずれの場合でも、MDBコンテナは上記目的を達成す るために正しい動作をします。

Local
分散Queueがローカル(同一クラスタ内)の場合、MDBコンテナは、分散Queueを実行している各ホストの分散Queueのメンバごとに、MDBマネージャもしくはMDBプールを作成します。この考え方は分散Queueのすべてのメンバが動作していることを確認したいと思うでしょう。
そして、アプリケーションが同一クラスタ上にデプロイされているので、アプリケーションのインスタンスがローカルで実行可能です。クラスタ内の管理対象サーバ各々のJMSサーバを一様に構成している場合、分散Queueのメンバの一つがクラスタ内の各管理対象サーバに存在するはずです。MDBコンテナはMDBプールを各管理対象サーバに作成し、各分散Queueを使えるようにします。メッセージが発生した場合、分散Queueをまたがったメッセージの負荷分散はクラスタ間でバランシングされます。
図1:ローカルMDBと分散Queue。MDBコンテナは分散Queueメンバがどこに存在してもMDBマネージャを作成する。

管理対象サーバをJMSサーバを持つクラスタに追加する場合、MDBコンテナが反応してMDBプールを新しいサーバに作成します。このMDBコンテナは新しい分散Queueメンバについて、内部通知サービスから情報を入手します。
図2:ローカルMDBと拡大した分散Queue。WebLogicクラスタが新しい管理サーバやJMSサーバで広がると、分散Queueは新しいサーバに広がり、MDBコンテナは新しいローカルMDBマネージャを作成する。

同様に、MDBコンテナは任意のマイグレーションシナリオを処理します。そのマイグレーションシナリオとは、管理サーバ全体が新たなロケーションへのマイグレーション(サーバーマイグレーション)と、管理サーバのJMSサービスのクラスタ内の別の管理サーバへのマイグレーション(自動サービスマイグレーション)のいずれかです。

Remote
デプロイしているアプリケーションがリモートアクセスする分散Queueがクラスタにホストされている場合、そのアプリケーションは、分散Queueを構成する全てのメンバが生きていて、メッセージコンシューマが反応し分散Queueのトポロジーの変化に対応できることを確認する必要がありますが、その方法はローカルの場合とはちょっと違います。リモートの場合、MDBコンテナは、クラスタの各メンバサーバに存在する分散Queueの各メンバへのMDBプールを作成します。MDBコンテナは分散Queueの構成メンバの状況を内部通知サービスで取得します。これと同じサービスにより、リモートのMDBコンテナは分散Queueの構成メンバに発生した更新情報を入手することができます。
図3:リモートMDBと分散Queue。MDBコンテナは各分散QueueメンバのためのMDBプールを作成する

この設計はアプリケーションが分散Queueの全てのメンバのメッセージを待つことを保証します。分散Queueのトポロジーに変化(クラスタの拡張、サーバの故障、サーバの統合、JMSサービスの統合)がある場合、JMSサービスはMDBコンテナに通知し、MDBコンテナは通知に対応します。
図4:リモートMDBが拡大したクラスタおよび分散Queueに動的に適応する

まとめ
JMSサービス、WebLogic ServerのMDBコンテナとも、WebLogic Serverのメッセージングに対する拡張性と高可用性を担保する役割を果たします。JMSサービスはQueueやTopicをホストし、クラスタ間でメッセージを分散させ、全てのメッセージが適切にルーティングされ処理されることを確認します。そしてメッセージングトポロジーにおける変更を他のシステムに通知します。MDBコンテナは分散送り先のすべてのメンバーが参加していることを確認し、もしトポロジーに変化がある場合には、MDBがその変化に対応します。
もっと詳しいことを知りたい場合には、以下のドキュメントを参照ください。

原文はこちら。
http://blogs.oracle.com/WebLogicServer/entry/weblogic_mdb_and_distributed_queue

2011年5月24日

[SOA] Installing the Latest & Greatest

以前のエントリでは、VirtualBoxのOracle Linux 6にDatabase 11gR2をインストールしました。今回は、この同じ仮想環境にSOA Suiteをインストールします。64Bit Linuxの環境なので、JVMも64Bit、WebLogicはgeneric installerを使います。インストールするのは以下のソフトウェアです。
そして、Repository Creation Utility(以下、RCU)を実行してデータベース中にスキーマを作成します。

OSへの追加作業
RCUを流す上で、以下のパッケージをインストールする必要があります。
  • libXext.i686
  • libXtst.i686
yumで追加しておきましょう。
yum install libXext.i686 libXtst.i686
SOAリポジトリの作成
パッケージを追加してから、RCUを実行してDatabase 11gR2にリポジトリを作成します。RCUは実行しているクライアントはチェックしませんので、ターゲットのデータベースが動作検証済みであれば問題なく実行できます。

Javaのインストール
64Bit環境のため、WebLogicにバンドルされる32Bit JVMは使いたくないので、JVMをインストールするところから始めます。
JVMをインストールするまでに、JVMのインストール先でもあるMiddleware_Homeディレクトリを作成します。データベースインストール時に、ORACLE_BASEは "/home/oracle/app/oracle"、ORACLE_HOMEは "$ORACLE_BASE/product/11.2.0/db" に割り当てられています。今回は同じORACLE_BASEを使うことにし、MW_HOMEとして "$ORACLE_BASE/product/FMW" を割り当てました。
その後、ディレクトリを移り、HotSpot JVM(JDK6)、JRockit JVM(JDK6)、JDK7をインストールしました。将来のアップグレードが容易になるよう、JVMにシンボリックリンクを張りました。
ln –s jrockit-jdk1.6.0_24-R28.1.3-4.0.1 jrockit-jdk1.6
ln -s jdk1.7.0 jdk1.7
ln -s jdk1.6.0_25 jdk1.6
シンボリックリンクを使うと、JDKの最新バージョンをインストールしてリンクを更新することにより、新しいJDKを使って起動することができるようになります。

WebLogicのインストール
JVMをインストールしてようやくWebLogicのインストール準備ができました。今回は64Bit JVMを使っているので、jarファイルとして提供されているgeneric installerを使います。JVM利用リストに先ほどの3個のJVMを登録し、HotSpot JVM (JDK6) をデフォルト使用することにしました。WebLogicはJVMを識別し、実ディレクトリに到達するシンボリックリンクをフォローします。JDK 7はSun JDKではなくOracleとして認識されました。通常ベンダーがOracleの場合、WebLogicはJRockit JVMと認識しますが、JRockitはHotSpotと異なるパラメータをとるため、これは後々問題になるでしょう。
WebLogic Serverをインストール後、 $MW_HOME/wlserver_10.3/common/bin/commEnv.sh を編集して、実ディレクトリではなくシンボリックリンクを参照するようにしました。これは将来のJVMのアップグレードを容易にするためです。
JAVA_HOME="/home/oracle/app/oracle/product/FMW/jdk1.6"
OSBのインストール
OSBもSOA SuiteもOracle Universal Installerを使いプラットフォームやOSパラメータ、インストール先のシステムパッケージの確認をします。ただ、OELはOSプラットフォームのリストに含まれていないため、インストーラは事前チェックで失敗してしまいます。データベースインストーラでは、GUIからチェックに失敗するものを無視するように選択できましたが、OSBはそれができませんので、次の2つのオプションを考えます。
事前チェックを無視する
新しいチェックを追加する
どちらを選択しても、OSBのインストールは進みます。デザイナ32bit向けのみのため、インストールしませんでした。サーバVMではなくクライアント機にデザイナをインストールするつもりです。

Option 1 – 事前チェックを無視する
インストーラ起動時に -ignoreSysPrereqs をつけることで、事前チェックを無視することができます。
./runInstaller –ignoreSysPrereqs
これは簡単で早くできるという点で有利ですが、本当に必要なものがわからずに、インストールに失敗する可能性があります。そのときはOption 2を試してください。

Option 2 – OEL用に新しいチェックを作成する
事前チェックはインストールメディアの “Disk1/stage/prereq/linux64/refhost.xml” に記載されています。<CERTIFIED-SYSTEMS>の中に<OPERATING-SYSTEM>タグを新しく追加しますが、今回はRed Hat 5.4のタグをコピーし、"<VERSION>"の"VALUE"属性を"6.0"に、"<PACKAGE>"要素の"i386""ARCHITECTURE"属性を"i686"に変更しました。
<OPERATING_SYSTEM>
<VERSION VALUE="6.0"/>
<ARCHITECTURE VALUE="x86"/>
<NAME VALUE="Linux"/>
<VENDOR VALUE="redhat"/>
<GLIBC ATLEAST="2.5-12">
</GLIBC>
<PACKAGES>
<PACKAGE NAME="binutils" VERSION="2.17.50.0.6" />
<PACKAGE NAME="compat-libstdc++-33" VERSION="3.2.3" ARCHITECTURE="x86_64" />
<PACKAGE NAME="compat-libstdc++-33" VERSION="3.2.3" ARCHITECTURE="i686" />
<PACKAGE NAME="elfutils-libelf" VERSION="0.125" />
<PACKAGE NAME="elfutils-libelf-devel" VERSION="0.125" />
<PACKAGE NAME="gcc" VERSION="4.1.1" />
<PACKAGE NAME="gcc-c++" VERSION="4.1.1" />
<PACKAGE NAME="glibc" VERSION="2.5-12" ARCHITECTURE="x86_64" />
<PACKAGE NAME="glibc" VERSION="2.5-12" ARCHITECTURE="i686" />
<PACKAGE NAME="glibc-common" VERSION="2.5" />
<PACKAGE NAME="glibc-devel" VERSION="2.5" ARCHITECTURE="x86_64" />
<PACKAGE NAME="glibc-devel" VERSION="2.5-12" ARCHITECTURE="i686" />
<PACKAGE NAME="libaio" VERSION="0.3.106" ARCHITECTURE="x86_64" />
<PACKAGE NAME="libaio" VERSION="0.3.106" ARCHITECTURE="i686" />
<PACKAGE NAME="libaio-devel" VERSION="0.3.106" />
<PACKAGE NAME="libgcc" VERSION="4.1.1" ARCHITECTURE="x86_64" />
<PACKAGE NAME="libgcc" VERSION="4.1.1" ARCHITECTURE="i686" />
<PACKAGE NAME="libstdc++" VERSION="4.1.1" ARCHITECTURE="x86_64" />
<PACKAGE NAME="libstdc++" VERSION="4.1.1" ARCHITECTURE="i686" />
<PACKAGE NAME="libstdc++-devel" VERSION="4.1.1" />
<PACKAGE NAME="make" VERSION="3.81" />
<PACKAGE NAME="sysstat" VERSION="7.0.0" />
</PACKAGES>
<KERNEL>
<!--
<PROPERTY NAME="semmsl" NAME2="semmsl2" VALUE="250" />
<PROPERTY NAME="semmns" VALUE="32000" />
<PROPERTY NAME="semopm" VALUE="100" />
<PROPERTY NAME="semmni" VALUE="128" />
<PROPERTY NAME="shmmax" VALUE="536870912" />
<PROPERTY NAME="shmmni" VALUE="4096" />
<PROPERTY NAME="shmall" VALUE="2097152" />
<PROPERTY NAME="file-max" VALUE="65536" />
<PROPERTY NAME="ip_local_port_range" ATLEAST="1024" ATMOST="65000" />
<PROPERTY NAME="rmem_default" VALUE="4194304" />
<PROPERTY NAME="rmem_max" VALUE="4194304" />
<PROPERTY NAME="wmem_default" VALUE="262144" />
<PROPERTY NAME="wmem_max" VALUE="262144" />
-->
<PROPERTY NAME="VERSION" VALUE="2.6.18"/>
<PROPERTY NAME="hardnofiles" VALUE="4096"/>
<PROPERTY NAME="softnofiles" VALUE="4096"/>
</KERNEL>
</OPERATING_SYSTEM>

こうすると、インストーラを通常通り実行できます。事前チェックを正しく検証してくれるので、自信を持ってセットアップできるでしょう。

SOA Suiteのインストール
OSBをインストールしたら、OSBのインストール時に施した、OS周りの事前チェックに関する作業を同じようにSOA Suiteについても実施した上で、SOA Suiteをインストールします。同じリポジトリから異なるドメインを作成するできるようにするため、この時点でスナップショットをとっておきました。

開発用ドメインの作成
次にSOA Suite/OSBの開発用ドメインを作成します。ドメイン構成ウィザードにてOSBとSOA Suiteの開発者用テンプレートを選択します。これを使うと、単一サーバ(AdminServer)にSOAおよびOSBコンポーネントをインストールするため、メモリ使用量が小さくなります。ドメインを作成して管理サーバ(AdminServer)を起動してから、jconsoleを立ち上げてJVMのメモリ使用量を確認したところ、最大1.5GBのところ1.3GBでコミットしていることを確認しました。驚いたことに、PermGenは最大500MB使うようです。初期デフォルトメモリサイズは750MBで、最大値は1.5GBなので、setSOADomainEnv.shを編集してメモリ設定を変更しました。初期メモリサイズを1.5GBとし、PORT_MEM_ARGSを設定することで、最大メモリサイズを2.5GBにしました。また、初期PermGenサイズを512MBに変更し、最大PermGenサイズは750MBとしました。
PORT_MEM_ARGS=”-Xms1536m –Xmx2560m”
PORT_MEM_ARGS=”${PORT_MEM_ARGS} -XX:PermSize=512m -XX:MaxPermSize=768m"
今回、PORT_MEM_ARGSを使ったのは、64bit Linuxだったからです。32bitシステム上ならDEFAULT_MEM_ARGSを使うでしょう。
ここでVMイメージのスナップショットをとれば、必要なときに戻ることができます。

本番ドメインの作成
単一サーバによる開発ドメインを作成したら、SOA/BPMのすべての環境をもつ本番環境のドメインも欲しくなりました。BPM Suite、SOA Suite、Enterprise Manager、Service Bus、Business Activity Monitoringのテンプレートをドメイン構成ウィザードから選択します。ドメインを本番モードに指定して、これ以外はデフォルトの設定でウィザードを実行します。これにより、独立した管理対象サーバ(soa_server1、bam_server1、osb_server1)が作成されます。コンソールは管理サーバ(AdminServer)で動作します。サーバを起動する前に、boot.propertiesを変更して以下のプロパティを追加しておきます。
username=weblogic
password=welcome1
次のディレクトリをドメインのディレクトリの下に配置し、boot.propetiesファイルを各々に保存します。
<Domain_Home>/servers/AdminServer/security
<Domain_Home>/servers/soa_server1/security
<Domain_Home>/servers/bam_server1/security
<Domain_Home>/servers/osb_server1/security
管理サーバを起動します。サーバ起動中に、以下のコマンドを実行して、ノードマネージャが管理対象サーバを起動できるようにした上で、ノードマネージャを起動します。
“$MW_HOME/oracle_common./common/bin/setNMProps.sh”
ノードマネージャが起動したら、コンソールが正常に動作していることを確認できました。その際、OSBサーバがマシンに割り当てられておらず、ノードマネージャからの起動ができないことがわかったので、"osb_server1"をデフォルトの"LocalMachine"に割り当てて、管理対象サーバを起動しました。
すべて問題なく動作したことを確認した上で、マシンをシャットダウンし、VMのスナップショットをとりました。

堅牢なベース
私はいつもこういうVM構成を使っていますが、これはベースとなるソフトウェアから所望の要件にあう新しいドメインをいつでも作成できるからです。しかし、ほとんどの場合既存ドメインの一つを利用することができます。この方法はディスクをかなり圧迫しますが、複数のイメージを持つための効率的な方法だと思います。これが皆さんのお役にたつことを願っています。


原文はこちら。
http://blogs.oracle.com/reynolds/entry/installing_the_latest_greatest

[Java] Java Spotlight Episode 21 - Stephen Chin, Java Champion, on Visage

Roger Brinkley: 21回目のJava Spotlight Podcastにようこそ。Roger Brinkleyです。

Alexis Moussine-Pouchkine: Alexis Moussine-Pouchkineです。

Roger: 今回のPodcastでは、JavaチャンピオンのStephen ChinとVisageプロジェクト(JavaFXスクリプトコンパイラ)のインタビューです。それではニュースのコーナーです。今週開催のServerSideシンポジウムが近づいてきました。Steve HarrisとAdam Messignerが基調講演します。JavaFX 2.0に関連するJSRがリリースされたところですから、Steveの話はかなり楽しみですね。Jeromeと、このPodcastにも一度登場いただきましたAdam Bienも登場の予定です。そして、IBMのJim Knutsonがこれからの10年のEnterprise Javaプラットフォームについてプレゼンテーションをする予定です。
あとは、GlassFish 3.1ですね。たくさんとりあげることがありますね、Alexis。

Alexis: ええ、aquarium(GlassFish 3.1の新機能などを紹介していました)を訪問してくださる人数、およびダウンロード数ともかなりの数ですね。計測しているのですが、このリリースについてはかなりいいですね。ここでお伝えすべきことが2つあります。一つはGlassFishのクラスタリングに関する記事の更新版を投稿しました。これはバージョン2.xのときに記載したものですが、これを最近書き換えました。クラスタリングやアプリケーションのサービスに興味がある人向けですが、たぶんそういうことに興味が強くなくてもおもしろいと思います。クラスタの定義、ノードや集中管理、グループ管理システムの意味から始めて、すべて明らかにしてから、どのように動作するのか、どのようにGlassFish 3.1で実装されているのかという仕様に進みます。
もう一つは組み込みGlassFishのTweetがたくさんRetweetされていることです。そしてGlassFishはクラスタモードでの本番利用に確かに適しているのですが、組み込みバージョンもあるのです。あらゆるGlassFishを起動したり、停止したり、アプリケーションをデプロイしたりするためのAPIです。
アプリケーションサーバのランタイムにアプリケーションをデプロイするのと対照的に、基本的にアプリケーション中にランタイムをバンドルすることができます。これはたくさんの方にRetweetしていただきました。3.1の新機能を示したブログのリンクやコミュニティメンバーによって実施されたスクリーンキャストをShow Notesにまとめておきます。

Roger: Alexis、Java EE 6を採用したことで安定したようですね。

Alexis: 完全ではありませんが、かなりですね。何度もGlassFishについて言及していますし、これは私が取り組んできたことですから、おそらくそれが原因でしょう。JbossやOracle WebLogicについては以前お話したように、今年の年末までにはJava EE 6の完全サポートを目指しています。Apache GeronimoやIBM WebSphereについてですが、これらはJava EE 6をサポートしようとしているベータ版を出しています。Caucho Resinについても言及しておきましょう。これは小さなWebサーバで、Web Profileのみをサポートすると宣言したので非常に興味を持ってみています。これは単にサーバコンテナとして利用し、いつでもWeb Profileをサポートするでしょう。そして最後に、会話していたのはJOnAS、これはOW2コンソーシアムから出たオープンソースアプリケーションサーバです。5.2マイルストーン5バージョンがリリースされたところで、Java EE 6の機能をたくさん実装しています(すべてではありませんが)。まだ認定されていないのですが、利用するお客様や開発者にとって競合製品がたくさんあるということなのだと思います。競争も選択もいいことですね。

Roger: 最終的に重要なことは目の辺りにしていることはこれらの人々の実装のすべてであろうと思います。前進する上でこれはJava EE 6の強さを示す強力な指標ですね。

ではイベントの紹介に移りましょう。
  • WebLogicトラブルシューティングとパフォーマンスチューニング(Webcast) (3月17日)
  • PC Quest and Spark IT 2010(3月17日)
    我々は5個のセッションを実施します。
  • ExlipseCon(3月21日、22日)
    • Mark Reinholdをはじめとする人々が様々なプレゼンテーションを実施します
  • OTN Developer Days
    • インド・バンガロール/プネ-/チェンマイ(3月22日、23日)
    • レストン、バージニア(4月7日)
  • ナッシュビルのJava User Groupでのセッション(3月30日)
  • JavaOne in Russia (4月12日、13日)
ではfeature interviewに移ります。ブラジルで開催されたJavaOneでStephen ChinさんとVisageプロジェクトについて会話する機会がありました。では、インタビューの模様をどうぞ。

---- インタビューここから ----

ブラジルで開催されているJavaOneに、Stephen Chinさんとご一緒しています。現在彼が取り組んでいるプロジェクトのお話を伺います。

Stephen Chin: 数年間Java.textコミュニティの活動に参加してきました。JavaFX 2.0の大きな変化の一つに、JavaFXスクリプト言語が削除されてjava APIになりました。おもしろいことに、もはやJavaFXスクリプト言語をサポートしませんが、コンパイラは未だに現在までの数年間オープンソースであるJavaFXの一部として残っています。それゆえ、JavaFX Script Compilerをオープンソースプロジェクト(Visage)に迎え入れ、現在の機能に新しい言語機能を追加し、新しいJavaFX 2.0 APIのサポートを追加しました。言語を生き続けさせることができると思っています。

Roger: どういうことですか?

Stephen: オープンソースプロジェクトです。たくさんの様々なコントリビュータはコンパイラの作業に携わり、ちょこっとした作業を実施したプロジェクトメンバーです。この点で、私はコンパイラに対する最大のコード変更を実施した一人ですが、他のメンバーはバグ修正を加速し、より小さくすることに注力しています。JavaFX 2.0 APにIはJavaFXスクリプトと一緒に使えるようにするためにある程度のラッピングが必要です。そのため、コンパイラ設計者ではなく言語に興味を持つ方の手を借りる必要があります。

Roger: プロジェクトに参加するこの手の人は、コンパイラ開発の経験が必要なのでしょうか。

Stephen: コアコードベースでは実際にjavacから生成されているため、本当のコンパイラや、antスクリプト、パーサージェネレータといったものです。全くコンパイラ開発の経験がないなら、ちょっと最初は難しいかもしれませんね。

Roger: やってましたね。一度だけですが、戻りたくはないです。他に何かできることがありますか?

Stephen: ええ、コンパイラの作業は実際にはもっともハードなのですが、他の手伝って欲しい作業というのは、JavaFX 2.0 APIのように、別のライブラリ上へのプロキシAPIクラスの作成なのです。そして言語に対応するようコンパイラに変更を施す必要があります。しかしそれと同時にクリーンで洗練されたUIや言語、APIライブラリのセットを作成するという作業がたくさんあります。この作業では、新しいJavaFX 2.0のAPIを使って作業できますよ。

Roger: それでは、javascriptが対象外になるというJavaFX 2.0の発表以来、このプロジェクトにどれぐらい取り込まれているのでしょうか。

Stephen: 非常に関心が高いですね。たぶん50~60名ほどの人がメーリングリストでアイデアをやりとりしています。たぶん一握りの人だけが実際にコードを変更したり、プロジェクトの作業をしていると思うのですが、明らかに多くの関心を集めています。というのは、2.0以前のJavaFX開発をしていた人にとって、Java APIでアプリケーションを書き直すというのは重要な投資だからです。今日JavaFXスクリプトを使っている皆さんからの関心が高いので、自分たちの現行アプリケーションのギャップを埋めるためにできるだけ近づいて情報を得ようとしています。ひょっとすると、性能の理由でJava APIを使うかもしれませんし、新しいJava APIを試すかもしれません。ただし、それはUIを設計するにあたってより手際よく、エレガントで、よりシンプルな方法がある場合です。

Roger: ではツールの統合に関する話に移りましょう。コンポーザはスクリプトをサポートしています。将来はスクリプトをサポートする必要がないはずですが、ツールの計画や方針はどうなっていますか?

Stephen: 今ツールセットを見ると、JavaFXツールが実現する2つの別の事柄があります。一つはJavaFX Scriptコードの編集と新しいJava APIで、ここは我々が引き継いだ部分です。この分野へOracleが投資し続ける理由がありませんから。NetBeansやEclipseプラグイン、IntelliJプラグインは現在開発進行中ですが、これらのコードベースを手にいれ、新しいVisageコンパイラで使えるようにアップデートしています。そしてJava IDEと同じ品質レベルになるように時間をかけています。JavaFX IDEで実施してきたことのもう一つは、ツールの生成です。つまり、JavaFXのコードを生成するツールです。私の理解では、実際に彼らはJavaFXスクリプトをモデリング言語として使い続ける予定だということです。コンポーザがFXDファイルに出力するJavaFXスクリプトのサブセットがあります。UIに変化するコードを生成する方法として、シリアライズされたJSONに類似したJavaFXスクリプトの部分は維持するつもりです。JavaFXスクリプトのサブセットを生成するツールのクラスはまだOracleによるサポートが継続される可能性があります。

Roger: では、ここに欠けているのは何でしょう?NetBeansやEclipse、InteliJといったコンポーザに足りないものはなんでしょうか?JavaFXのスクリプティングツールを使いたい場合に足りないものは?

Stephen: JavaFX 2.0がリリースされたら、引き続きVisageをできるだけ早くリリースする予定です。Visageはコード編集のためのIDEのプラグインとともに、JavaFXスクリプトの機能を提供します。
それゆえ、JavaFX 2.0のリリース後すぐにJavaFXスクリプトを作成したいということなら、人員配置を変更する必要があります。

Roger: おたずねしたいのですが、なぜそうするのでしょうか。

Stephen: 異なるJVM言語を試して、Java API上で何ができるかを確認してきました。新しいAPIで記述する必要があるJavaコードと同等のJavaFXスクリプトを見比べると、JavaFXスクリプトのコードに対して、Java側ではすぐにその2倍の量のコードを書くことになります。タイピングの量や記述が必要なコードの量ではありません。言いたいのは、あるレベルのJavaコード開発者は、別の言語の場合よりもより冗長なコードを受け入れるということです。そして、JavaFXスクリプトは非常に先進的だったと思います JavaFXは、UIの問題を解決する一般的な言語を実際に作成する唯一のプラットフォームでした。この領域で他製品が何をしているかをみてみると、Flex SDK、Androidライブラリ、Apache Pivotの例などをみてもわかるように、すべて同じことを達成するため、XMLモデリング言語を持っています。
命令コードがUIデザインにマッチしないことがわかったため、UIをもっと簡潔にしてエレガントに表現するため、XMLベースの言語を作成しましたが、これは私見ですが、XMLはUI設計者や開発者がUIを表現するための言語に求めるものに対して不十分だと思います。

Roger: プロジェクトはどこにありますか?

Stephen: VisageプロジェクトはGoogle Codeにあります。短いURL( http://visage-lang.org )があります。メーリングリストもあります。コードリポジトリもあります。そこに変更を提供することができます。非常にオープンなプロジェクトです。もし貢献したいという方がいらっしゃるなら、喜んで受け入れます。

Roger: ライセンス形態は?

Stephen: コンパイラ自体はGPLライセンスです。それはOracleにライセンス許諾されているものです。コンパイル結果は同じライセンスに準拠する必要はないため、利用者にとっては問題ではありません。ライブラリについてはその上に構築しています。できるだけオープンの状態にするため、BSDライセンスのままにしています。

Roger: できるだけ可搬性を持たせる、ということですか?

Stephen: そうです。

Roger: Stephen、貴重な時間をどうもありがとうございました。

Stephen: どうもありがとう。

---- インタビューここまで ----

Roger: では、What's Coolに行きましょう。Alex、どうですか?

Alexis: 詳細がわからないので手短に言いますが、Julien PongeはGlassFishコミュニティメンバーで、GlassFishインストーラを書いた人であり、IzPackプロジェクトの創始者です。彼はわずか2ワットしか消費しないものの上でGlassFishを走らせた、と先週Tweetしました。これはかなりクールなことだと思います。よくわかっているのは、それがJava ACMベッド上で動くGlassFishの最新バージョンであるということです。

Roger: Alexis、私がクールと思ったのは、Java Duchesses、Clara KoとRegina Ten BruggencateがJava Championに選ばれたということです、おめでとうございます。Java Duchessesと実施するプログラムがあります。聴きたいなら、Java Spotlight Podcast 10に戻って聴いてください。

Roger: 21回目のJava Spotlight Podcast、聞いていただきありがとうございました。Roger Brinkleyでした。

Alexis: Alexis Moussine-Pouchkineでした。

Roger: フィードバック受け付けています。feedback@javaspotlight.orgまでよろしく!


原文はこちら。
http://blogs.sun.com/javaspotlight/entry/java_spotlight_episode_21_stephen

[Java] 6u27-b01 Early Access is Available

Java SE 6 Update 27 (6u27ea-b01)というアーリーアクセス版がダウンロードできるようになりました。ダウンロードはこちらからどうぞ。

Welcome to the Java SE 6 Updates Early Access Program!
http://jdk6.dev.java.net/6uNea.html

詳細は、リリースノートをご覧ください。

リリースノート
http://download.java.net/jdk6/6u27/promoted/b01/changes/JDK6u27.b01.list.html

不具合を発見された場合には、バグレポート用のWebページに登録いただき、フォーラムで情報を共有くださいませ。

Report a Bug or Request a Feature
http://bugreport.sun.com/bugreport/

6uN Early Access Forum (訳注:日本時間の2011/05/24 14時現在、まだオープンされていないようです)
http://forums.java.net/jive/forum.jspa?forumID=119


原文はこちら。
http://blogs.oracle.com/javase/entry/6u27_b01_early_access_is

[Database, Solaris] Oracle DB 11gR2 Certified for Solaris Containers

先週、Oracle RAC 11gR2(クラスタウェア付き)がOracle Solaris 10 Containers ("Zones") での動作確認を完了したということです。詳細は、以下のURLを確認してください。

Supported Virtualization and Partitioning Technologies for Oracle Database and RAC Product Releases
http://www.oracle.com/technetwork/database/virtualizationmatrix-172995.html

11gR2向けというわけではありませんが、Best Practices for Deploying Oracle RAC Inside Oracle Solaris Containersというホワイトペーパーもお役に立つかもしれません。

Best Practices for Deploying Oracle RAC Inside Oracle Solaris Containers
http://www.oracle.com/technetwork/articles/systems-hardware-architecture/deploying-rac-in-containers-168438.pdf


原文はこちら。
http://blogs.oracle.com/JeffV/entry/oracle_db_11gr2_certified_for

2011年5月22日

[ODI] Extending the Interface Accelerator

ODI11g SDKの機能を以前のエントリで説明しました(訳注:日本語はこちら)。このエントリではソーステーブルとターゲットテーブルを記載した簡単な制御ファイルを作成しました。ODIのUIが持つ自動マッピング機能はカラム名が同一のものをマッピングします。
では、ちょっと違う名前の列のマッピングを自動化するにはどうすればよいのでしょうか。例えば、標準的な接頭辞・接尾辞が列名に追加されている場合にはどうすればよいのでしょうか。以前のエントリの方法では、どの列もマッピングしないでしょう。これは自動マッピング機能を使用したからです。詳しくは前回のエントリで紹介したinterfaceAccelerator.javaファイルの以下の行を確認してください。
interactiveHelper.performAction(new InterfaceActionSetTargetDataStore(targetDatastore, new MappingMatchPolicyLazy(), new AutoMappingComputerLazy(), new AutoMappingComputerLazy(), new TargetKeyChooserPrimaryKey()));
ODIが提供する自動マッピングクラスに手を入れてこのロジックを改良します。それではMyRegexpAutoMappingComputer.javaで定義したクラスを作成しましょう。このクラスはターゲット列のマッピングを作成するperformAutoMappingメソッドを改良します。これはスーパークラスのメソッドを呼ぶこともできますし、必要であれば名前の正確な一致によるマッピングも利用できます。
interactiveHelper.performAction( new InterfaceActionSetTargetDataStore(targetDatastore, new MappingMatchPolicyLazy(), new MyRegexpAutoMappingComputer( MyRegexpAutoMappingComputer.MatchTypes.TGTENDSWITH), new MyRegexpAutoMappingComputer( MyRegexpAutoMappingComputer.MatchTypes.TGTENDSWITH), new TargetKeyChooserPrimaryKey()));
上の呼び出しをご覧下さい。新しい自動マッピングクラスを使っており、TGTENDSWITHというenumerationに渡して、マッチングするようにしています(それゆえEMPNOと命名されたソース側はターゲット側のSTF_EMPNOとマッチングします)。新しいファイルは以下のリンクから利用できます。

原文はこちら。
http://blogs.oracle.com/dataintegration/entry/extending_the_interface_accelerator

[SOA/BPM] Resolving MaxMessageSizeExceededException Errors Caused By Large Payloads

大きなメッセージ(例えば12MBとか)をSOAコンポジットアプリケーションに渡して、監査証跡画面で”View XML Document”をクリックしてペイロードを閲覧すると、MaxMessageSizeExceededExceptionが発生します。この例外は次のようにJVMパラメータを設定すれば回避することができます。
  1. <Middleware_Home>/domains/{ドメイン名}/bin/setDomainEnv.shを開く(Windowsの場合はsetDomainEnv.bat)
  2. weblogic.MaxMessageSizeプロパティに以下の値を設定する
    EXTRA_JAVA_PROPERTIES="$(EXTRA_JAVA_PROPERTIES) -DweblogicMaxMessageSize=20000000"
    export EXTRA_JAVA_PROPERTIES
  3. サーバを再起動

原文はこちら。
http://blogs.oracle.com/anirudhpucha/entry/resolving_maxmessagesizeexceededexception_errors_caused_by

[SOA/BPM] Unable to set the activation state to true for the application 'FtpAdapter'

サーバを立ち上げるときに、以下のような例外が現れる場合は、<Domain_Home>/libにFileAdapter.rarファイルを配置して再起動しましょう。
####<Apr 7, 2011 12:30:36 PM IST> <Warning> <Connector> <inhysu01> <AdminServer> <[ACTIVE] ExecuteThread: '1' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <0000Iwikhf_8TsO8mjGNtn1DbM3f000002> <1302159636869> <BEA-190104> <While configuring an object of type: oracle.tip.adapter.ftp.FTPManagedConnectionFactory of Resource Adapter FtpAdapter.rar, the following errors/omissions were found:
Unable to invoke the setter method for the key : useSftp
Unable to invoke the setter method for the key : enableCipherSuits
Unable to invoke the setter method for the key : password
Unable to invoke the setter method for the key : preferredCipherSuite
>
####<Apr 7, 2011 12:30:36 PM IST> <Info> <Common> <inhysu01> <AdminServer> <[ACTIVE] ExecuteThread: '1' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <0000Iwikhf_8TsO8mjGNtn1DbM3f000002> <1302159636915> <BEA-000625> <The application has disabled periodic testing of free resources in pool "eis/Ftp/FtpAdapter".>
####<Apr 7, 2011 12:31:14 PM IST> <Error> <Deployer> <inhysu01> <AdminServer> <[ACTIVE] ExecuteThread: '1' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <0000Iwikhf_8TsO8mjGNtn1DbM3f000002> <1302159674606> <BEA-149231> <Unable to set the activation state to true for the application 'FtpAdapter'.
java.lang.NoClassDefFoundError: oracle/tip/adapter/file/FileLogger
at oracle.tip.adapter.ftp.FTPManagedConnectionFactory.createConnectionFactory(FTPManagedConnectionFactory.java:154)
at weblogic.connector.security.layer.AdapterLayer.createConnectionFactory(AdapterLayer.java:787)
at weblogic.connector.outbound.ConnectionPool.getConnectionFactory(ConnectionPool.java:2013)
Caused By: java.lang.NoClassDefFoundError: oracle/tip/adapter/file/FileLogger
at oracle.tip.adapter.ftp.FTPManagedConnectionFactory.createConnectionFactory(FTPManagedConnectionFactory.java:154)
at weblogic.connector.security.layer.AdapterLayer.createConnectionFactory(AdapterLayer.java:787)
at weblogic.connector.outbound.ConnectionPool.getConnectionFactory(ConnectionPool.java:2013)
####<Apr 7, 2011 12:31:14 PM IST> <Info> <Deployer> <inhysu01> <AdminServer> <[ACTIVE] ExecuteThread: '1' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <0000Iwikhf_8TsO8mjGNtn1DbM3f000002> <1302159674612> <BEA-149059> <Module FtpAdapter.rar of application FtpAdapter is transitioning from STATE_PREPARED to STATE_NEW on server AdminServer.>
####<Apr 7, 2011 12:31:14 PM IST> <Info> <Deployer> <inhysu01> <AdminServer> <[ACTIVE] ExecuteThread: '1' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <0000Iwikhf_8TsO8mjGNtn1DbM3f000002> <1302159674640> <BEA-149061> <Module FtpAdapter.rar of application FtpAdapter failed to transition from STATE_PREPARED to STATE_NEW on server AdminServer.>
####<Apr 7, 2011 12:31:14 PM IST> <Error> <Deployer> <inhysu01> <AdminServer> <[ACTIVE] ExecuteThread: '1' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <0000Iwikhf_8TsO8mjGNtn1DbM3f000002> <1302159674653> <BEA-149250> <Unable to unprepare application 'FtpAdapter'.
weblogic.application.ModuleException: Error occurred while trying to rollback the module: weblogic.connector.exception.RAException:
There are 1 nested errors:
There are 1 nested errors:
ObjectLifeCycleException: weblogic.common.resourcepool.ObjectLifeCycleException: Attempted to shutdown the pool eis/Ftp/FtpAdapter when it is currently not in SUSPENDED state (Running)
at weblogic.common.resourcepool.ResourcePoolImpl.shutdown(ResourcePoolImpl.java:299)
at weblogic.connector.outbound.ConnectionPool.shutdown(ConnectionPool.java:355)
at weblogic.connector.outbound.RAOutboundManager.internalShutdownPool(RAOutboundManager.java:346)

原文はこちら。

2011年5月21日

[Database] Hadoop, Oracle and cloud computing

本日のパートナーとの打ち合わせで、Hadoopとこのオープンソースの分散”データベース”ソリューションにおけるOracleの役割に関する会話になりました(訳注:Hadoopがデータベースか、という議論があると思いますが、ここは原文の通りに訳しています)。
クラウド指向の企業(Facebook、Twitter、GoogleそしてYahooなど)は全てHadoopを使っているように、クラウドコンピューティングにおいてHadoopは重要な役割を演じています。
Hadoopにはいくつかの興味深い様相があります。
  1. ハードウェアサーバのグリッドにわたって分散データ処理する
  2. 列ベースのソリューションで、データウェアハウスを意図している
  3. 書き込みは1回で、読み出しは多数発生する
  4. HadoopではJavaから作成、アクセス、問い合わせをすることが多い
Oracleが提供する(データベースエンジンの外側での)データクラスタリングのソリューションはOracle Coherenceですが、興味深いことに、Oracle CoherenceとHadoopは非常に補完的なソリューションです(訳注:原文はcomplimentaryですが、文意からcomplementaryにおきかえています)。これはHadoop Java ObjectsをOracle Coherenceソリューション(Oracle CoherenceはJavaオブジェクトをクラスタ化します)によりクラスタ化することが可能だからです。

では、HadoopはクラウドにおいてOracle Databaseにとって変わるものなのでしょうか。おそらくすぐにはそうはならないでしょう。付け加えるなら、Hadoopのデータウェアハウス(write once)アーキテクチャは、OLTPが必須のC2B(Consumer to Business)やB2B(Business to Business)環境ではそれほどお客様や業務に役に立つわけではありません。


原文はこちら。
http://blogs.oracle.com/cloudmigrations/entry/hadoop_oracle_and_cloud_computing

[Jersey] Limiting threads used for asynchronous requests - Jersey Client

Jersey Clientでは非同期リクエストが作成できますが、作成にはデフォルトでExecutorServiceを利用します。これはリクエスト毎に新しいスレッドを作成するため、あまり役に立たないことがほとんどです。この場合、カスタムのExecutorServiceを設定することができ、スレッド数を指定することも可能なのです(Client.setExecutorService()を参照してください)が、あまり知られていません。

そのため、作成したExecutorServiceのスレッドプールサイズを表すClientConfigクラスに別のプロパティを追加しました。以下のコードサンプルをご覧ください。
ClientConfig cc = new DefaultClientConfig();
cc.getProperties().put(ClientConfig.PROPERTY_THREADPOOL_SIZE, 10);
Client c = Client.create(cc);
AsyncWebResource r = c.asyncResource("http://somehost.tld/resource").build());
カスタムのExecutorServiceへ設定する可能性はまだ残っていますので、これはちょっとした可視性の向上ととらえてほしいと思います。


原文はこちら。
http://blogs.oracle.com/PavelBucek/entry/limiting_threads_used_for_asynchronous

[Exadata] Customers Discuss Oracle Exadata in New Oracle Reference Booklet

Oracle Exadata導入事例事例集が出ました。

Customers Achieve Extreme Performance at Lowest Cost with Oracle Exadata Database Machine
http://www.oracle.com/us/products/database/exadata-reference-booklet-400018.pdf

Exadataの導入の結果、サーバの集約やデータ圧縮によるストレージの節約によりお客様のITコストが削減され、アプリケーションの性能が向上し、リアルタイムに意思決定ができる基盤ができあがったことが、事例からもわかります。
事例集にはExadataの広告も含まれています。この広告にはお客様の改善点も記載していますので、事例とあわせて製品の優位性がわかるようになっています。


原文はこちら。
http://blogs.oracle.com/exadatapartnercommunity/entry/customers_discuss_oracle_exadata_in

2011年5月19日

[WLS] Browse your weblogic Mbeans with wlnav

たいていの場合は自分でやったことを話すのですが、今回はあまりわかっていないツール WLNAV (WebLogic Navigator) をご紹介します。
WLNAV は、WebLogicの完全なMBean階層のブラウズ、更新、デプロイ、そしてログの閲覧が可能なWebアプリケーションです。
更新処理はやっていませんが、ブラウズは本当に役に立つと思います。このツールのよいところは、WebLogic 9.xからアップデートされていないのに、今だに最新のWebLogic(Coherenceサーバ/クラスタのような最新の機能も含めて)十分に利用可能である、ということ、そしてオープンソースであるということです。


ツールを利用する場合は、単に任意のWebLogic Serverにデプロイし、
http://(Host):(port)/wlnav
からアクセスしてください。

WLNAVここからダウンロードできます。チュートリアルもあります。


WLNAV (WebLogic Navigator)
http://wlnav.open.collab.net/


原文はこちら。
http://blogs.oracle.com/weblogic_soa_and_more/entry/wlnav_a_forgotten_tool

[misc] Combining SOA and WCM

私の友人が今週クライアント訪問で近所にきたので、食事をともにした(ええ、もちろん呑みましたとも)のですが、そのときの話題が必然的にアーキテクチャになりました。後に、彼は非常に大きな国際的な企業の公開Webサイトのアーキテクチャ再構成して、柔軟にローカライズしたコンテンツを提供できるようにする仕事をすることになりました。そのときのソリューションは、SOAをWebコンテンツ管理を組み合わせたものでした。
手短に言うと、アーキテクチャにはポートレットから構成されるWebのフロントエンドを含みます。各ポートレットはWCMシステムからWSRPを使ってコンテンツを要求します。 フロントエンドはWCMとはサービスバスを介して疎結合になっており、サービスバスはコンテンツリクエストを適切なWCMシステムにルーティングします(ここでの「サービスバス」という言葉は一般的な意味で使っており、特定の製品を指し示しているわけではありません。私の友人は「サービスファブリック (Service Fabric)」という言葉を好んで使います)。
これはローカライズされたコンテンツにとって明らかなメリットです。 サービスバスが、選択した言語に従い、リクエストを正しいWCMシステムにルーティングします。これにより、各部門、国、地域で各々のコンテンツを管理でき、しかもそれでいて企業Web自体は統合されたまま、ということが可能になります。
友人が指摘したもう一つのメリットは、 このアーキテクチャを使うと新しいコンテンツもしくは修正したコンテンツのプレビューが簡単になるということです。サービスバスは、新しいコンテンツもしくは修正したコンテンツをレビューするユーザーのために、コンテンツのリクエストをステージングWCMシステムにルーティングすることができます。新しいコンテンツもしくは修正したコンテンツを「発行する」前に、本番環境から直接閲覧することができるのです。

ORA (Oracle Reference Architecture) User Interactionドキュメント(ITSO:IT Strategies from Oracleの一部)を書いた後に、この会話をするだろうと想像しています。それにもかかわらず、ORA User Interactionドキュメントはこのトピックをカバーしているのです。この特定のユースケースでないにもかかわらず。

このアーキテクチャは、一般的にフェデレーション(Federation)と呼ばれています。ORA User Interactionドキュメントのセクション4.2.3に記載されています。
 
ITSO: IT Strategies from Oracle
http://www.oracle.com/goto/itstrategies


原文はこちら。
http://blogs.oracle.com/enterprisearchitecture/entry/combining_soa_and_wcm

[Java] JRockit is Now Free (and Other Java License Updates)

以前お知らせした通り、Oracleの戦略はHotSpotとJRockit JVMを一つのbest-of-breed JVMにまとめることです。

Oracle's JVM Strategy
http://blogs.oracle.com/henrik/entry/oracles_jvm_strategy

Press Release/ Oracle Announces JDK Roadmap for Advancing Java SE
http://www.oracle.com/us/corporate/press/173782

JRockitの機能やアイデアをOpenJDKにポーティングするという作業の間に、ライセンスの考え方も収束させる方向で検討してきました。この作業が終了し、Oracle(Sun) JDKとJRockit配布に関するライセンスを変更することにしました。新しいライセンスは、Sunが長年にわたってJavaダウンロードに対して使用していたBCL(Binary Code License)をわずかに変更したものです。新しいライセンスの全文はこちらにあります。比較のため、古いBCLはこちらからご覧いただけます。

新しいBCL
http://www.oracle.com/technetwork/java/javase/terms/license/index.html
古いBCL
http://www.oracle.com/technetwork/java/javase/downloads/jdk-6u21-license-159167.txt

サマリは以下の通りです。
  • JRockitは 開発および一般的な目的のコンピュータでの商用ではない本番運用時の利用に際しては無償である。明確にしたいのは、ライセンスの文章からこの言葉を削除した。これらは、Sun JDKについて過去10年ほど使っていた言葉と同じだからだ。
  • 有償機能は継続してライセンス費用が必要。これは現在のJRockit Mission Control、JRockit Real Time、JRockit Virtual Editionのほとんどの機能が該当する。
    これらの機能(JRockit Mission Controlなど)を使う場合、これまではOracle製品(例えばWebLogic Server)の一部として商用ライセンスを購入することによってのみ可能であったが、今後は単独で購入できる。
  • これ以外に大きな変更はない。具体的には、JDKの再販は許可され、これはJRockitにも当てはまる。

No.QuestionsAnswers
1これはJRockitをJava Applicationとともに使うことができる、ということを意味していますか?はい、Oracle (Sun) JDKと同じです。我々に連絡する必要もありませんし、費用を払う必要もありません。
2JRockitに興味があるのですが、より詳しく知るのはどうすればよいでしょうか?JRockitの本をおすすめします。OpenJDKへどの機能がポーティングされる予定か、わかりやすく記載されています。
3JRockitはどこからダウンロードできますか?OTNからダウンロードできます。
4java.comのようなサイトでOracle (Sun) JDKと並べてJRockitをダウンロードできるようにする予定ですか?いいえ、現在のOTNダウンロードページを残す予定です。
5開発者なのですが、このライセンス変更により、JRockit Mission Controlを無償で利用できるという意味でしょうか?はい、開発用途であれば無料です。詳細はライセンスを確認してください。
6JRockit Mission Controlはどこにありますか?2方法あります。スタンドアプリケーションとして使う場合と、Eclipse Pluginとして使う場合です。前者の場合はOTNからJRockitをダウンロードしてください。後者の場合、JRockit Mission Control Eclipse Update Siteからダウンロードしてください。
7なぜJRockitを無償にしたのでしょうか?JVMを統合している中で、2個の異なる実装を一つの製品として取り扱うことが理にかなうと判断したためです。第2に、JRockitを無料にすることで、現在のJRockit JVMとの比較により、統合JVMへのregressionに対するより多くのフィードバックを得ることが期待できるためです。これは我々のコンバージェンスプロジェクトを助力してくれるでしょう。
8JRockitをオープンソースにする計画はありますか?統合JVMはOpenJDKを通じて利用可能になる予定です。我々は現在のJRockit実装をオープンソース化することは考えていません。
9アップデートされた有償機能の詳細を知る方法はどうすればいいでしょうか?後日詳細をご案内しますが、緊急を要するのであれば営業におたずねください。ライセンス文章を統合することが最優先です。
10どの機能がライセンス費用が必要で、どの機能が無償なのでしょうか?こちらを参照ください。
11以前無償だったもので有償になった機能はありますか?いいえ、Javaが誰からも容易にアクセスできることが重要と我々は考えています。そういうわけで、無料(Oracle JDK)で、かつオープン(OpenJDK)なのです。
12有償サポートはどのように購入すればよいでしょうか?Sun Java Businessプログラムの更新版を現在作成中です。これはOracle (Sun) JDKならびにJRockitを対象にする予定です。本件についてはまもなく詳細をご紹介できますが、急を要する場合には、Oracleの営業におたずねください。
13このライセンス変更によりOpenJDKが影響を受けるのでしょうか?全く影響を受けません。OpenJDKはオープンソースライセンスモデルに従ってリリースされます。
14現在Oracle (Sun) JDKを使用していますが、JRockitに移行できるでしょうか?今HotSpotからJRockitに移行するなら、JRockit移行後に統合JVMに移行する計画を考える必要があります。その移行に価値があるかどうかはお客様の要件・根拠に依存します。概して、たいていの場合はJDK 7を見てから判断されたほうがよいと思いますが、要件次第です。
15JVM間の違いに関する情報はありますか?こちらに記載がありますが、少々古く限定的な情報しかありません。
16JVMに関する技術的な質問はどこにすればよいでしょうか? Webのフォーラム(JRockitHotspot)か、OpenJDKのメーリングリストをご利用ください。
17次は何が起きるのでしょう?JDK 7が今夏にローンチします。パーティーになりますよ:-)

JRockitの本:
Oracle JRockit: The Definitive Guide
http://www.packtpub.com/oracle-jrockit-definitive-guide/book
http://www.amazon.com/Oracle-JRockit-Definitive-Marcus-Hirt/dp/1847198066

OTN: JRockitダウンロードページ
http://www.oracle.com/technetwork/middleware/jrockit/downloads/index.html

Oracle® JRockit Mission Control for Eclipse
http://www.oracle.com/technetwork/topics/Eclipse/downloads/index-155139.html

OpenJDK
http://openjdk.java.net/

Java SE Products
http://www.oracle.com/technetwork/java/javase/terms/products/index.html

Migrating Applications to the Oracle JRockit JDK
http://download.oracle.com/docs/cd/E13150_01/jrockit_jvm/jrockit/geninfo/diagnos/migrate.html

JRockitフォーラム
http://forums.oracle.com/forums/forum.jspa?forumID=561

HotSpotフォーラム
http://forums.oracle.com/forums/category.jspa?categoryID=292

OpenJDKメーリングリスト
http://mail.openjdk.java.net/mailman/listinfo


原文はこちら。
http://blogs.oracle.com/henrik/entry/jrockit_is_now_free_and