2014年4月19日

[Java] CDI 1.2 Released

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

ご存知のように、CDI 1.1はJava EE 7のなかで重要な部分ですが、そのCDI仕様がマイナーアップデートされ、CDI 1.2としてリリースされました。想像できると思いますが、このリリースには1.1の記述の修正と説明が含まれています。Java EEプラットフォームの一部のテクノロジーが個別にリリースされることを知って驚かれているならば、そんなに驚くことではありません。通常、様々な実際の理由で、JavaテクノロジーはプラットフォームJSRと同期するのですが、個々のJSRのリリーススケジュールは完全にその制約を受けないからです。過去の例では、JSFやJAX-RS(そしておそらくJCacheも)そのようになっています。

詳細の変更リストはCDI仕様のWebページにありますので、そちらをご覧下さい。
Contexts and Dependency Injection :: CDI 1.2 released
http://www.cdi-spec.org/news/2014/04/14/CDI-1_2-released/

2014年4月18日

[Database] Compression Advisor estimates compression ratio possible with Oracle Advanced Compression

原文はこちら。
https://blogs.oracle.com/databaseinsider/entry/tool_estimates_your_compression_ratio

ストレージを追加することを検討する前に、もしデータベース環境の圧縮率を見積もることができ、Oracle Advanced Compressionがどれふらいストレージの使用量を削減することができるかがわかるとどうでしょうか。
貴社の直面している最大の課題がデータの増大コストを効率的に管理することだとすれば、より多くのストレージハードウェアやストレージ管理製品をこの問題に投入することを避ける、データベースストレージ環境の管理上のよりよい方針が必要でしょう。
Compression AdvisorはOracleから無償で提供されているデータベースのツールですが、これを使うと、実際のデータを用いて、Oracle Advanced Compressoinオプションをデータベース環境に展開した場合の圧縮結果を見積もることができます。
Compression Advisor
http://www.oracle.com/technetwork/database/options/compression/index.html
Oracle Advanced Compression Option
http://www.oracle.com/us/products/database/options/advanced-compression/overview/index.html
Compression Advisorの使い方は、以下のOracle Advanced Compressionの概要をご覧頂くと理解いただけるでしょう。
Storage Savings with Oracle Advanced Compression
http://medianetwork.oracle.com/video/player/3476493507001
Compression Advisorパッケージ(DBMS_COMPRESSION)はOracle Database 12cに含まれています。

2014年4月17日

[Solaris] You're WEBvited: April 29, Oracle Solaris 11.2 Launch

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

New Yorkで開催されるOracle Solaris 11.2のお披露目イベントに参加できない方向けに、ライブWebcastの登録が始まりました。
イベントは13時(EDT)、10時(PDT)からMark Hurdのスピーチで幕を開けます(申し訳ありません、Webベースのランチサービスはありません :-p )。その後John FowlerMarkus Flierlが続き、企業のクラウドサービスに最適なプラットフォームをお探しの方にとって、このリリースが重要な理由を説明していきます。
是非イベントの間にTwitterでもTweetしてください。ハッシュタグは、 #solaris です。

Webcast: Announcing Oracle Solaris 11.2
  • 開催日時
    • 2014年4月29日(火)10時(PDT)
    • 2014年4月29日(火)13時(EDT)
    • 2014年4月30日(水)2時(JST)
  • 時間:90分
登録は以下のリンクからどうぞ。
http://oracle.com/goto/solaris-11-2

2014年4月16日

[Java] Asynchronous CDI Events?

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

CDIイベントは非常に強力な機能で、非常にシンプルで型安全な方法で疎結合にすることができます。CDIイベントは、非同期というよりはむしろ同期型である、という側面があり、このことに驚かれる方が結構いらっしゃいます。イベントシステムが通常は非同期である、ということを考えれば、その驚きは当然と言えるでしょう。Piotr Nowickiが、EJBの@AsynchronousアノテーションやSingletonロック、JMSなどのプレーンなJava EEの機能を使用して、CDIイベントを非同期にするための様々なオプションを調査し、ブログエントリにまとめ、その中で問題を調べています。
Asynchronous CDI Events
http://www.javacodegeeks.com/2013/05/asynchronous-cdi-events.html
node.jsやリアクティブ・プログラミングが徐々に発展しているため、この問題をさらに深掘りすることはきっと時宜に適っていると思います。
非常に心強いことに、CDI 2.0のスペックリードであるAntoine Sabot-Durand自身が、自身のCDI 2ウィッシュリストで、非同期CDIイベントについて述べており、@Observes アノテーションへの非同期フラグを追加することを提案しています。
Forward CDI 2.0 (Next Presso)
http://www.next-presso.com/2014/03/forward-cdi-2-0/
この提案における、考えられる不都合な点は、イベントプロデューサではなく、イベントコンシューマが非同期を使うことを決定する、という点です。もう一つの可能性は、Java SE 8で導入されたアノテーション機能を使って、プロデューサに非同期マーカーを付けることです。
public class EventProducer {

  @Inject Event event;

  public void doSomething() {
      MyEvent e = new @Async MyEvent();
      e.data = "This is a test event";
      e.eventTime = new Date();
      event.fire(e);       
  }   
}

public class EventConsumer {

    public void afterMyEvent(@Observes MyEvent event) {
        // .. Insert event logic here
    }
}
この問題と可能性についてどう思いますか?そろそろ、CDI 2の将来がはっきりしてきたと、合図を出す時期ですね。

[Java] Java EE 7 Tutorial Updated!

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

Java EE 7 Tutorialの最新版がリリースされました。Update 7.0.4には、サンプルやドキュメントの両方の不具合修正を含まれています。これらの修正のほとんどは軽微なものですが、このおかげでチュートリアルの品質が劇的に向上しました。
Kin-man Chungが徹底したレビューを行い、9章の式言語(Expression Language)の内容改善にあたって有用ないくつかの修正や良い提案をしてくれました。
Chapter 9 Expression Language
http://docs.oracle.com/javaee/7/tutorial/doc/jsf-el.htm#GJDDD
Duke Tutoringケーススタディでは、ユーザーインターフェースや管理用インターフェースを使った追加インストラクションを追加しました。
すべてのサンプルをチェックして、コードをきれいにし、サンプルを実行時や、IDEのコードエディタを使ってサンプルを構成するファイルの調査時に、警告をできる限り発生しないようにしました。
全てのサンプルは、JDK 7、JDK 8、NetBeans 8.0の最新バージョンで適切に動作することを確認ずみです。
出版社から戻ってきた内容を取り込み、オンラインでご覧頂いているものが、来月には2分冊の書籍として皆様のお気に入りの書店でお求めいただけるようになります。
「Section 2.1 Required Software」に従い、アップデートを入手し、インストールしてください。
2.1 Required Software
http://docs.oracle.com/javaee/7/tutorial/doc/usingexamples001.htm#GEXAJ

[Java] JDK 8u5 and JDK 7u55 Documentation Updates

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

Java Development Kit 8 Update 5 (JDK 8u5) と JDK 7u55 がリリースされ、Java SE Downloadページからダウンロードできるようになっています。
Java SE Downloads
http://www.oracle.com/technetwork/java/javase/downloads/index.html
このリリースの情報は、以下のリリースノートをご覧下さい。
JDK 8u5 Release Notes
http://www.oracle.com/technetwork/java/javase/8train-relnotes-latest-2153846.html
JDK 7u55 Release Notes
http://www.oracle.com/technetwork/java/javase/7u55-relnotes-2177812.html
JDK 8u5 と 7u55 での機能強化ポイントをご紹介しましょう。
  • 何度も同じRich Internet Application(RIA)を実行するシステムで、セキュリティダイアログの出現頻度を減らしました。
  • スタンドアロンのアスタリスク(*)をCaller-Allowable-Codebase属性の値として指定した場合、JavaScriptコードからRIAの呼び出しでセキュリティ警告を表示します。ユーザーは呼び出しを許可するか、ブロックするかの選択が可能です。詳しくは、以下のリンクをご覧ください。
JAR File Manifest Attributes for Security
Caller-Allowable-Codebase Attribute
Java SE 8
http://docs.oracle.com/javase/8/docs/technotes/guides/jweb/security/manifest.html#caller_allowable
Java SE 7
http://docs.oracle.com/javase/7/docs/technotes/guides/jweb/security/manifest.html#caller_allowable

2014年4月15日

[Database] How to configure EM Express for a single PDB ?

原文はこちら。
https://blogs.oracle.com/dba/entry/how_to_configure_em_express

EM Expressとは?

EM Expressは新しく追加された監視ツールで、Oracle Database 11gまで付属していたEM Database Controlを置き換えるものです。EM Expressはすぐに使えるWebベースの管理ツールで、XDBサーブレットとしてデータベースに組み込まれており、データベースのインストールプロセス(例えばdbcaの使用時)に自動的に構成されるため、別途インストールする必要はありません。EM Expressは使用していないときは非常にデータベースへの負荷が低く、システムリソースを消費せず、シングルインスタンスでも、RAC環境でもお使いいただけます。EM ExpressはEM 12c Cloud Controlに近いルック&フィールです。CDBインストール時に、EM Expressはルートコンテナ用にデフォルトで有効になっていますが、個々のPDB用には、個別のEM Expressポートを構成する必要があります。

個々のPDB用にEM Expressが必要な理由

EM Expressはアプリケーションのデータベース管理者(DBA、PDBAとも)にとって、割り当てられたPDB内のパフォーマンスを監視・管理する上で役にたちます。機密データを使わないテスト環境や開発環境での利用はさておき、Oracle Multitenantを使うと、開発者はPDB内のデータディクショナリへの完全なアクセスが可能で、これにより、開発者はPDBの範囲内で完全な制御が可能になりました。これまでは、長年にわたりDBAチームが管理していたためにわかりにくいところがありましたが、Oracle Multitenantの中では、開発者が多くの自律性を得ることができ、パフォーマンス・データカタログへのアクセスやクエリのチューニング、EM Expressを使ってPDBを変更するにあたって、DBAの手を煩わせる必要はありません。DBAは今後はよりシステムレベルのパフォーマンスや運用タスクに注力することができるようになります。

XDBポートの構成方法

XDBユーザーが所有するxdb$cdbports表が標準であります。この表を使って各PDBに割り当てたポート番号のリストを決定します。CDBにSYSDBA(SYSユーザー)としてログインし、以下のクエリを実行しましょう。ところで、ルートコンテナに割り当てられているデフォルトポート番号は5500です。

PDBに割り当てられたポートのリスト

SQL> l
  1  select c.name,c.open_mode,e.port
  2  from v$pdbs c, xdb.xdb$cdbports e
  3* where c.con_id = e.pdb (+)
SQL> /

NAME                           OPEN_MODE    PORT
------------------------------ ---------- ----------
ORDERS                        READ WRITE    5501
SPARK                         MOUNTED       5505
JPM                           READ WRITE    
NONCDB                        READ WRITE
PDB_000                       READ WRITE
PDB$SEED                      READ ONLY
上記リストより、このCDB中の6個のPDBのうち、2個だけがポートを割り当てられていることがわかります。それでは、JPMというプラガブルデータベースにポート番号を割り当てましょう。まず、コンテナをJPMに変更し、値を返さないXDBポートを見つけましょう。
SQL> alter session set container = JPM;

セッションが変更されました。
では、XDBポートを調べます。
SQL> select dbms_xdb_config.gethttpsport() from dual;

DBMS_XDB_CONFIG.GETHTTPSPORT()
------------------------------
新しいポート番号5504を以下のプロシージャを使ってXDBポートに設定します。
SQL> exec dbms_xdb_config.sethttpsport(5504);  

PL/SQLプロシージャが正常に完了しました。
ルートコンテナに戻り、先ほど実行したリストを取得してみましょう。
SQL> alter session set container = cdb$root;

セッションが変更されました。

SQL> select c.name,c.open_mode,e.port
  2   from v$pdbs c, xdb.xdb$cdbports e
  3  where c.con_id = e.pdb (+);

NAME                           OPEN_MODE    PORT
------------------------------ ---------- ----------
ORDERS                         READ WRITE    5501
SPARK                          MOUNTED       5505
JPM                            READ WRITE    5504
NONCDB                         READ WRITE
PDB_000                        READ WRITE
PDB$SEED                       READ ONLY
ご覧いただけるように、プラガブルデータベース JPM にXDBポート5504が設定されました。またこのポートがリスナーに登録されているかを確認する必要があります。
$ lsnrctl status | grep -i 5504
    (DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=localhost)(PORT=5504))(Security=(my_wallet_directory=/scratch/dechatt/app/product/12.1.0/dbhome_1/admin/db12c/xdb_wallet))(Presentation=HTTP)(Session=RAW))
リスナーに登録されていることを確認したら、あとはEM Expressロール(EM_EXPRESS_ALL もしくは EM_EXPRESS_BASIC)を持つ共通ユーザーやローカルユーザーでEM Expressにログインするだけです。今回の場合、URLはhttps://localhost:5504/em を使います。

EM Expressにログインすれば、このプラガブルデータベース用のホームページを確認できます。