[BPM] How to Enable Web Forms Manually

Posted by Unknown Selasa, 30 April 2013 0 komentar
原文はこちら。
https://blogs.oracle.com/middleware/entry/bpm_web_forms_not_enabled

BPMの環境を11.1.1.6から11.1.1.7 (PS6) にアップグレードしました。BPM Composerにたくさんの機能が追加されているため、色々話題に事欠かないわけですが、Web Formのような新機能で何か作りたかったので、Web Formを利用する簡単なBPMプロセスを実装してみました。ヒューマンタスクの作成までは完了したのですが、Web Formを追加しようとしたところ、緑のプラスボタンが使えませんでした。

これがアップグレードの一環での問題なのか、何か手順を間違えたのかわかりませんでしたが、別の正常に動作しているインスタンスとちょっと見比べたところ、WebLogic管理コンソールで見る限り、frevvoアプリケーションがデプロイされていないことがわかりました。frevvoアプリケーションを手作業でインストールすると、Web Formが使えるようになりました。なお、frevvoアプリケーションの存在場所は以下の通りです。
$MW_HOME/Oracle_SOA1/soa/applications/frevvo.ear

Baca Selengkapnya ....

[misc.] OTN Forum software is going to be upgraded in May 2013

Posted by Unknown 0 komentar
原文はこちら。
https://blogs.oracle.com/opal/entry/otn_forum_software_is_going

ご存知ない方のためにお知らせです。Oracle Technology Network Forumのソフトウェアを今週末アップグレードする予定です。
OTN Discussion Forums
https://forums.oracle.com/forums/main.jspa?categoryID=84
古いソフトウェアは老朽化しており便利な機能を使えないため、このアップグレードはすばらしいことです。現行のフォーラムは週末にかけてRead Onlyになる予定です。
新バージョン立ち上げにおいて、最小限の機能がサポートされる予定です。アップグレード版が安定した時点で、追加の機能が有効化される予定になっています。
移行プロジェクトの一環として、あまり使われていないフォーラムや廃止されたフォーラムは削除される予定です。いくつかのカテゴリが作り直される予定です。

移行に関する詳細情報は以下のリンクをご覧下さい。
Thread: We are upgrading OTN Forums! This is the place for questions and comments.
https://forums.oracle.com/forums/thread.jspa?threadID=2519003
ご承知頂きたいのは、このフォーラムのソフトウェアはJiveを使っている、ということです。つまり、パッケージアプリケーションであって、リクエストがあった機能全てが魔法のように実現するわけではありません。しかも、良くも悪くも、Jiveが "forums" を "spaces" と名前を変えていて、どうもこれを変更できないようです。

[訳注]
具体的には以下の予定でサービス停止するようです。
  • フォーラム停止期間:5月4日13時(JST)/5月3日21時(PDT)から数時間
  • 新インフラでのサービス再開:5月6日(PDT)、時間は未定。
  • 新インフラでのサービス再開までは、Read Onlyでのサービス提供(書き込み不可)

Baca Selengkapnya ....

[Java] JSR 356, Java API for WebSocket

Posted by Unknown 0 komentar
原文はこちら。
https://blogs.oracle.com/java/entry/jsr_356_java_api_for

Java ChampionのJohan Vosが寄稿した「JSR 356, Java API for WebSocket」がOTNのJavaページにUpされています。この記事では、WebSocketをアプリケーションに統合する方法を紹介しています。Java EE 7プラットフォームの構成要素であるJSR 356では、Java開発者がJavaサーバーサイド、クライアントサイド両方のアプリケーションにWebSocketを統合したい場合に利用可能なAPIを取り決めています。APIは非常に柔軟で自由に開発者がWebSocketベースのアプリケーションを作成でき、しかも基礎となるWebSocketの実装に依存しませんので、ベンダーロックインを避けることができます。また、ライブラリやアプリケーションサーバーの選択肢が増える、ということもあります。WebSocket実装を使うWebクライアントやネイティブクライアントであればJavaで構築したバックエンドシステムと簡単に通信することができます。

Java EE 7標準の一端として、全てのJava EE 7準拠アプリケーションサーバーはJSR 356に従うWebSocketプロトコルの実装を有することでしょう。Vosは以下のように説明しています。
「WebSocketクライアントとサーバーが接続を確立すると、両者は対称の関係になるため、クライアントAPIとサーバーAPIの違いは微少なものです。JSR 356はJavaクライアントAPIも定義していますが、これはJava EE 7で必要な完全なAPIのサブセットです。
WebSocketメッセージとしてJavaオブジェクトを送受信できるため、Java API for WebSocketは非常に強力です、
基本的に、異なる3種類のメッセージがあります。
  • テキストベースのメッセージ
  • バイナリメッセージ
  • WebSocket接続のためのPongメッセージ(訳注:pingに対する応答メッセージ)
インターフェース駆動のモデルを使う場合、各セッションは3種類のメッセージのそれぞれに対して多くとも1個のMessageHandlerを登録することができます。
アノテーション駆動モデルを使う場合、各種類のメッセージに対し、1個の@onMessageアノテーションを付けたメソッドが許可されています。アノテーションを付けられたメソッドにおいて特定のメッセージコンテキストに対して許可されているパラメータはメッセージの種類によって変わります。」
記事は以下のリンクからどうぞ。是非WebSocketをアプリケーションに統合する方法を知って頂ければと思います。
JSR 356, Java API for WebSocket (by Johan Vos)
http://www.oracle.com/technetwork/articles/java/jsr356-1937161.html

Baca Selengkapnya ....

[Java] Java EE 7 Platform Completes the JCP Final Approval Ballot

Posted by Unknown 0 komentar
原文はこちら。
https://blogs.oracle.com/theaquarium/entry/java_ee_7_platform_completes

Java EE 7 PlatformおよびWeb ProfileのJSRがJCP Executive CommitteeのFinal Approval Ballot(最終承認投票)を圧倒的な賛成多数で通過したことをお伝えできることを嬉しく思っています。これで全てのJava 7のJSRのJCPの承認プロセスを終了しました。
このJava EE 7 PlatformのリリースはOracleの管理下での最初のリリースですが、パートナーのRed Hat(CDIとBean Validation)とIBM(Batch)がリードしてくださったJSRを含む、次の14個のJSRと9個のメンテナンスリリース(MR)からなっています。これらのJSRのうち、WebSocket、JSON、Concurrency、BatchのJSRは、このリリースで初めてJava EEプラットフォームに登場しました。

JSR

  • Java Platform, Enterprise Edition 7 (JSR 342)
  • Concurrency Utilities for Java EE 1.0 (JSR 236)
  • Java Persistence 2.1 (JSR 338)
  • JAX-RS: The Java API for RESTful Web Services 2.0 (JSR 339)
  • Java Servlet 3.1 (JSR 340)
  • Expression Language 3.0 (JSR 341)
  • Java Message Service 2.0 (JSR 343)
  • JavaServer Faces 2.2 (JSR 344)
  • Enterprise JavaBeans 3.2 (JSR 345)
  • Contexts and Dependency Injection for Java EE 1.1 (JSR 346)
  • Bean Validation 1.1 (JSR 349)
  • Batch Applications for the Java Platform 1.0 (JSR 352)
  • Java API for JSON Processing 1.0 (JSR 353)
  • Java API for WebSocket 1.0 (JSR 356)

MR

  • Web Services for Java EE 1.4 (JSR 109)
  • Java Authorization Service Provider Contract for Containers 1.5 (JACC 1.5) (JSR 115)
  • Java Authentication Service Provider Interface for Containers 1.1 (JASPIC 1.1) (JSR 196)
  • JavaServer Pages 2.3 (JSR 245)
  • Common Annotations for the Java Platform 1.2 (JSR 250)
  • Interceptors 1.2 (JSR 318)
  • Java EE Connector Architecture 1.7 (JSR 322)
  • Java Transaction API 1.2 (JSR 907)
  • JavaMail 1.5 (JSR 919)
このプロセスに貢献してくださったコミュニティメンバーの皆様に感謝申し上げます。特にExpert Groupの皆様、java.netのJSRプロジェクトのメンバーの皆様(JCP transparencyプログラムの下でのオープンなオペレーション)、Adopt-a-JSRプログラムに参加頂いたJava User Groupのメンバーの皆様、そして私たちのアウトリーチ調査に参加頂いた皆様に感謝申し上げます。
Java EE Platform Specification > Other Java EE Specifications
https://java.net/projects/javaee-spec/pages/Home#Other_Java_EE_Specifications
Transparency and Community Participation in Java EE 7 (Arun Gupta, Miles to go ...)
https://blogs.oracle.com/arungupta/entry/transparency_and_community_participation_in
Adopt a JSR Program
https://java.net/projects/adoptajsr/pages/Home
Java EE 7 Survey Results! (Reza Rahman's Blog)
https://blogs.oracle.com/reza/entry/java_ee_7_survey_results
数週間以内にJava EE 7のGlassFishリファレンス実装のリリースがありますので、お楽しみに。

Baca Selengkapnya ....

[Java] Java 8: Hold the train

Posted by Unknown Jumat, 26 April 2013 0 komentar
原文はこちら。
http://mreinhold.org/blog/hold-the-train

先週Java 8のリリースを遅らせて、Project Lambdaを完成させることを提案しました。これは、Javaプラットフォームのセキュリティに対してOracleが新たに注力していることに伴い遅れていたものです。
Java 8: Secure the train
http://mreinhold.org/blog/secure-the-train
http://orablogs-jp.blogspot.com/2013/04/java-8-secure-train.html
Project Lambda
http://openjdk.java.net/projects/lambda/
この提案に対し、このブログエントリのコメント欄やTwitterなど様々なところで反応してくれたみなさんに感謝します。フィードバックは概して好意的でした。当然ながら失望を帯びていたわけですが。本日現在、新たなプランでは、Java 8のリリース予定日は2014年3月18日です。

スケジュールのさらなる詳細情報はJDK 8 Projectページにあります。
JDK 8
http://openjdk.java.net/projects/jdk8/

Baca Selengkapnya ....

[Database, Hardware] Oracle Exadata Recipes for Success – A Problem Solution Approach

Posted by Unknown Kamis, 25 April 2013 0 komentar
原文はこちら。
https://blogs.oracle.com/databaseinsider/entry/oracle_exadata_recipes_for_success

Oracle Exadataに投資を考えている組織であれば、Oracle Exadata上のOracle Databaseをサポートすることで、性能や整理統合、ITインフラストラクチャのゴールに加え、日々の業務に与える変化にどのように対応するか、を理解する必要があります。
Oracle Exadata Recipes - A problem Solution Approachは、Oracle DatabaseのエキスパートであるJohn Clarkの新著です。Oracle Exadata環境のメンテナンスならびに最適化の方法を説明するだけでなく、記者にぴったり合うものをどうやって確認するかを説明しています。
Oracle Exadata Recipes: A Problem-Solution Approach [ペーパーバック]
(Amazon.jp)http://www.amazon.co.jp/Oracle-Exadata-Recipes-Problem-Solution-Approach/dp/1430249145
(Amazon.com)http://www.amazon.com/Oracle-Exadata-Recipes-Problem-Solution-Approach/dp/1430249145

Oracle Exadata Recipes: A Problem-Solution Approach [Kindle版]
(Amazon.jp)http://www.amazon.co.jp/Oracle-Exadata-Recipes-Problem-Solution-ebook/dp/B00AHD75KI
(Amazon.com)http://www.amazon.com/Oracle-Exadata-Recipes-Problem-Solution-ebook/dp/B00AHD75KI
分厚いマニュアルを読まずに、効果的な実証済みのソリューションを開発したい人向けにOracle Exadataレシピが書かれています。著者へのインタビューでこの本について語っていますので、聞いてみたい方は以下のリンクからどうぞ。

http://streaming.oracle.com/ebn/podcasts/media/20121117_Oracle_Exadata_042413.mp3

Baca Selengkapnya ....

[Security, Identity Management, Cloud] Addressing the Top 5 Cloud Security Challenges

Posted by Unknown Selasa, 23 April 2013 0 komentar
原文はこちら。
https://blogs.oracle.com/OracleIDM/entry/addressing_the_top_5_cloud
https://blogs.oracle.com/fusionmiddleware/entry/addressing_the_top_5_cloud

世界中の組織と会話していると、明らかなのは、ほとんどの組織がクラウドをコスト削減の最大の機会と考えている、ということです。すべての組織にとって、ビジネスの俊敏性、運用コストの削減、スケーラビリティ、パフォーマンスの向上、などなどの数多くのメリットをクラウドはもたらします。プライベート、パブリック、ハイブリッドといったクラウドの導入に伴い、利益も変わりますが、それと同じくリスクも変わってきます。
その後、オンプレミスからプライベートクラウド、ハイブリッドクラウド、そしてパブリッククラウドへと移行するにつれ、セキュリティポリシーに対するITのコントロールと可視性が低下するのです。

プライベートクラウドでは、パブリッククラウドで許可されていないネットワーク帯域幅の管理や最適化を実装することができるため、組織は高いセキュリティやデータのプライバシー、コンプライアンス、QoSをコントロールできるようになっています。しかし、多くの企業でそうであるように、特権アクセスとインサイダーの脅威からリスクが生じています。パブリッククラウドでは、クラウド·サービス·プロバイダーである外部の第三者によってポリシーが管理されます。パブリッククラウドの共有環境では、セキュリティとコンプライアンスの問題を引き起こす可能性があります。ハイブリッドクラウドは、その定義の通り、プライベートクラウドとパブリッククラウドの両方のリスクとメリットの両方をカプセル化しています。
この範囲を動いていくと、複数の場所でポリシーデータを複製するにつれ、セキュリティポリシーはますます断片化していきます。その結果、レイテンシも増加し、リスクが指数関数的に増大します。コンプライアンスやガバナンスの問題に加えて、セキュリティがクラウドの採用において最も大きな障壁であり続けているのは不思議ではありません。実際、2012年のInformationWeek Reportによる“Private Cloud Vision vs. Reality”(プライベートクラウドのビジョン vs 現実)は、組織の82%がパブリッククラウドを段階的に廃止もしくは利用しないことを決めた主要な理由の一つとして、セキュリティとデータプライバシーの問題がある、と伝えています。
では、セキュリティを危険にさらすことなく、クラウドを利用するには、どの領域に労力を集中するのが一番よいのでしょうか。最近のCSO Onlineによるチーフ·セキュリティ·オフィサーに対する調査の結果、クラウドへのセキュリティの懸念の上位5つは、モバイルデータアクセス、規制遵守とデータやアプリケーションへのアクセス管理、すなわち全てアイデンティティ管理に関連していることがわかりました。
クラウドにアプリケーションを移動する組織は、データセキュリティとアプリケーションのアクセスの領域に標準的なセキュリティフレームワークを提供して、オンプレミス環境とクラウド環境の間のギャップを埋める必要があります。しばしこの短いスクリーンキャストをご覧頂いて、クラウドの可能性に制限をかけずに、セキュリティリスクを管理し、ガバナンスの問題に対処する方法を知って頂ければと思います。

Baca Selengkapnya ....

[Java] New documentation: Using Scene Builder with Java IDEs

Posted by Unknown Senin, 22 April 2013 0 komentar
原文はこちら。
https://blogs.oracle.com/thejavatutorials/entry/new_documentation_using_scene_builder

JavaFX Scene Builder 1.1の開発者プレビュー版ドキュメントである「Using JavaFX Scene Builder with Java IDEs」が新たにリリースされました。JavaFX2 Documentationのページからご利用いただけます。
Using JavaFX Scene Builder with Java IDEs
http://docs.oracle.com/javafx/scenebuilder/1/use_java_ides/jsbpub-use_java_ides.htm
JavaFX Documentation Home > JavaFX 2 Tutorials and Documentation
http://docs.oracle.com/javafx
It describes how you can use NetBeans IDEやEclipse、IntelliJ IDEAを使って簡単にJavaFXプロジェクトを作成したり、FXMLファイルをScene Builderで編集しアプリケーションのUIを構築する方法を説明しています。

最新のScene Builder 1.1開発者プレビュー版は以下のページからダウンロードできます。
JavaFX Scene Builder Developer Preview Download
http://www.oracle.com/technetwork/java/javafx/downloads/devpreview-1429449.html
システム要件やインストールの情報、新機能や修正された機能に関する情報はリリースノートをご覧下さい。
Scene Builder 1.1 Developer Preview Release Notes
http://docs.oracle.com/javafx/scenebuilder/1/release_notes_1-1/jsbpub-release_notes_1-1.htm

Baca Selengkapnya ....

[Solaris] Ooops, incorrect Recommended patchset uploaded April 21/22

Posted by Unknown 0 komentar
原文はこちら。
https://blogs.oracle.com/patch/entry/ooops_incorrect_recommended_patchset_uploaded

やっちまいました…。

ヒューマンエラーで、正しくないSolaris 10 SPARC用推奨パッチセットをMOS(My Oracle Support)に昨日、2013年4月21日18時54分(PDT)にアップロードしてしまいました。2013年4月20日のパッチセットではなく、2012年4月20日のパッチセットをUpしてしまいました…。
数時間のうちに正しいパッチセットがUpされるはずです。
この24時間以内にダウンロードしたSolaris 10 SPARC推奨パッチセットであれば、日付がパッチセットのREADMEにありますので、2012年でないことを確認して下さい。もし2012年のパッチセットをダウンロードしている場合は、MOSにアップロードが完了した本日以後に正しいバージョンをダウンロードして下さい。
ご不便をおかけしていることを深くお詫びいたします。

Baca Selengkapnya ....

[Java] Hacking GlassFish 4 Builds

Posted by Unknown Minggu, 21 April 2013 0 komentar
原文はこちら。
https://blogs.oracle.com/theaquarium/entry/hacking_glassfish_4_builds

GlassFishにコードを寄与したいとか、楽しみのために(もしかすると利益のために)ハックしたいと思ったことはありませんか?特にGlassFishの4とJava EE7で。そんな場合の最初のステップは、GlassFishの4ソースコードをチェックアウトし、ローカルビルドを作ってみることです。 Java ChampionのPeter Pilgrimが手順を紹介しています。

最近のブログエントリで、PeterはGlassFish 4のソースコードをチェックアウトしてビルドしたアーティファクトを微調整し、ローカルビルドを実行して利用する方法を詳説しています。是非楽しんで下さい。
Build GlassFish 4.0 Snapshots Yourself (Peter Pilgrim :: Java Champion :: Enterprise Blog)
http://www.xenonique.co.uk/blog/?p=1088

Baca Selengkapnya ....

[Java] Real-Time Topic Modeling of Microblogs

Posted by Unknown 0 komentar
原文はこちら。
https://blogs.oracle.com/java/entry/real_time_topic_modeling_of

新しい記事がOTNのJavaページにUpされています。この記事のタイトルは“Real-Time Topic Modeling of Microblogs”で、インドのバンガロールにあるInfosys Limited Labs在籍のYogesh TewariとRajesh Kawadによるものです。この記事の中で、彼らが作った「アプリケーションに特有のマイクロブログやTweetの継続的なストリームからリアルタイムでトピックの抽出への挑戦」を探索しています。シンプルなTweetのテキストから、アプリケーションはTweetで説明された関連トピックを正確に提示し、Tweetのストリームから生成されたトピックに関するリアルタイム・タイムラインを提供するように設計されています。

彼らは、これがシンプルなタスクではないと説明しています。その理由はTweetが「言語資料と見なされており、最大140文字しかなく、第2にその簡潔さを考慮すれば、Tweetは有用な情報を提供しない可能性があったり、『スマイリー』や短縮URLのような様々なテキスト形式を含んだりする可能性があること、最後に、Tweetはリアルタイムに生成されるため」です。

YogeshとRajeshはLDA(latent Dirichlet allocation)をトピックモデルTweetに適用し、LDAの実装としてMachine Learning for Language Toolkit (MALLET) APIを使っています。これらは全てJava環境で動作します。LDAの実装はMALLET APIにカプセル化されており、ここでコマンドラインベースのJavaツールとして機能します。

彼らは以下のように言っています。
「我々の目標は、リアルタイムで必要な入力で呼び出すメソッドを持つ、LDAのロジックを実行する実際のJavaクラスです。Stormは、Javaで実装されたフリーでオープンソースの分散リアルタイム計算エンジンで、今回はこれを利用しました。これを分散モードで実行しています。Stormは非常にスケーラブルで、着信Tweetストリームを簡単に処理できます。Twitter4Jを使ってTweetを流しています。Tweetには有効なTwitterの認証が必要です。それゆえ、我々のタスクは、Tweetのストリームを取り込み、トピックのタイムラインを出力するトポロジーを設計することです。」
是非OTNの記事をご覧下さい。
Real-Time Topic Modeling of Microblogs (by Yogesh Tewari and Rajesh Kawad)
http://www.oracle.com/technetwork/articles/java/micro-1925135.html


Baca Selengkapnya ....

[SOA/BPM] NEW - Oracle Human Workflow (HWF) Self-Study Course

Posted by Unknown 0 komentar
原文はこちら。
https://blogs.oracle.com/SOA/entry/new_oracle_human_workflow_hwf

新しい自己学習コース、"Introduction to Human Workflow"がOracle Learning LibraryがUpされました。この自己学習コースの所要時間はおよそ20分です。以下のリンクから無料でアクセスできます。
Introduction to Human Workflow - Oracle Learning Library
http://apex.oracle.com/pls/apex/f?p=44785:24:0::::P24_CONTENT_ID,P24_PREV_PAGE:7279,1
Human Workflowを触ったことがない、中心となるボキャブラリーとコンセプトを理解したい方向けのコンテンツです。Human Workflowのできること、一番いい使い方の基礎をご理解頂けます。

この自己学習コースはHuman Workflowのシリーズの第一弾で、今後もコンテンツを追加していく予定です。

フィードバックをお待ちしております。

Baca Selengkapnya ....

[WLS, Database] Migrating from Multi Data Source to Active GridLink

Posted by Unknown Sabtu, 20 April 2013 0 komentar
原文はこちら。
https://blogs.oracle.com/WebLogicServer/entry/migrating_from_multi_data_source

Oracle DatabaseのRAC(Real Application Clusters)構成に接続するためのマルチデータソース(Multi data source, MDS)をWebLogic Serverでは2005年からサポートしています。Oracle RACの人気が上がるにつれ、MDSの利用も増えてきましたが、Active GridLink(Active GridLink, AGL)を2011年はじめに導入したことに伴い、MDSをお使いのお客様でAGLへ移行したいと考える方がいらっしゃいます。移行を自動化する機構はありませんが、移行そのものはそれほど難しいものではありません。

まず、アプリケーションの変更は不要です。標準的なアプリケーションはJNDIのMDSを調べ、MDSを使って接続を取得します。AGLにMDSと同じJNDI名を付けることで、JNDIからデータソース名を利用するアプリケーションではプロセスは全く同じです。

ただ一つ変更が必要なのは、構成の部分です。AGLはMDSとメンバーの汎用データソースからの情報を組み合わせ、一つのAGL記述子にまとめますが、RACクラスターのOracle Notification Service(ONS)の構成を追記する必要があります。多くの場合、ONSの情報はMDSで利用するのと同じホスト名で構成されており、追記が必要なのはポート番号だけです。ただ、SCANアドレスを使うと簡単にすることができます。

MDS記述子には多くの情報はありません。この記述子には汎用データソースのメンバーリストがあり、これを使って必要な残りの情報を取得する場所を見つけ出すことができます。MDS記述子にはJNDI名名がありますが、これは新しいAGL名にしてアプリケーションから透過的にする必要があります。MDSをAGLと一緒に利用したい場合、AGLに新しい名前を付ける必要がありますが、アプリケーションに対しても新しいJNDI名を利用するように変更する必要があります。アルゴリズムタイプについては心配する必要はありません。

メンバーの汎用データソースの各々が個々のURLを持っています。「Appendix B Oracle RACでのマルチ・データ・ソースの使用」に説明があるように、以下のような形式で記述します。
Oracle® Fusion Middleware Oracle WebLogic Server JDBCデータ・ソースの構成と管理 11gリリース1 (10.3.6)
B Oracle RACでのマルチ・データ・ソースの使用
http://docs.oracle.com/cd/E28389_01/web.1111/b60997/generic_oracle_rac.htm
Oracle® Fusion Middleware Oracle WebLogic Server JDBCデータ・ソースの構成と管理 12cリリース1 (12.1.1)
B Oracle RACでのマルチ・データ・ソースの使用
http://docs.oracle.com/cd/E28613_01/web.1211/b65892/generic_oracle_rac.htm
Oracle® Fusion Middleware Configuring and Managing JDBC Data Sources for Oracle WebLogic Server 11g Release 1 (10.3.6)
B Using Multi Data Sources with Oracle RAC
http://docs.oracle.com/cd/E28280_01/web.1111/e13737/generic_oracle_rac.htm
Oracle® Fusion Middleware Configuring and Managing JDBC Data Sources for Oracle WebLogic Server
12c Release 1 (12.1.1)
B Using Multi Data Sources with Oracle RAC
http://docs.oracle.com/cd/E24329_01/web.1211/e24367/generic_oracle_rac.htm
jdbc:oracle:thin:@(DESCRIPTION=
(ADDRESS=(PROTOCOL=TCP)(HOST=host1-vip)(PORT=1521))
(CONNECT_DATA=(SERVICE_NAME=dbservice)(INSTANCE_NAME=inst1)))
各メンバーにはホストとポート番号のペアがあるはずです。同じサービスで異なるホストで同じポート番号を持つことが多いはずです。AGLのURLにはホストとポート番号のペアがあります。
jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=TCP)(HOST=host1-vip)(PORT=1521))
(ADDRESS=(PROTOCOL=TCP)(HOST=host2-vip)(PORT=1521)))
(CONNECT_DATA=(SERVICE_NAME=dbservice)) 
複数のホストや仮想IP(VIP)アドレスを使うよりも、Oracle Single Client Access Name(SCAN)アドレスを使ったほうがよいでしょう。この場合、URLは以下のようになります。
jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=TCP)(HOST=scanaddress)(PORT=1521)))
(CONNECT_DATA=(SERVICE_NAME=dbservice))
かなりシンプルで、クラスター内のノードに変更に対し透過的です。このセクションではOracleのURLを書く完全な説明をするつもりはないので、Oracle RAC管理ガイドをご覧下さい。
[訳注]
ドキュメントへのリンクを追記しておきました。
Oracle® Real Application Clusters管理およびデプロイメント・ガイド 11g リリース2 (11.2)
http://docs.oracle.com/cd/E16338_01/rac.112/b56290/toc.htm
Oracle® Real Application Clusters Administration and Deployment Guide 11g Release 2 (11.2)
http://docs.oracle.com/cd/E11882_01/rac.112/e16795/toc.htm
MDSからAGLに置き換える場合、設定からMDSおよび汎用データソースを管理コンソールを使って削除し、単一のAGLデータソースを追加する必要があります。このプロセスはこの章のはじめに記載がありますが、MDSと同じJNDI名にし、汎用データソースがXAドライバー、もしくは非XAドライバーを使っていたか選択します。上述のように完全なURLを入力することができます。ユーザー名やパスワードはMDSメンバーのうちの一つ(できれば全て)のユーザー名・パスワードと同じであるべきです。[GridLinkデータベース接続のテスト]ページへ移動し、「すべてのリスナーをテスト」をクリックして、指定した新しいURLが正しく動作していることを確認しましょう。次のページでONS接続の情報を指定する必要があります。
“host1-vip:6200”とか、“scanaddress:6200”といった具合に、一つ以上のホスト名とポート番号のペアを指定しましょう。可能であれば、単一のSCANアドレスとポート番号を使いましょう。[FANの有効化]をチェックすることをお忘れなく。次のページで、ONS接続をテストします。これでデータソースのデプロイの準備が整いました。
Oracle® Fusion Middleware Oracle WebLogic Server JDBCデータ・ソースの構成と管理 11gリリース1 (10.3.6)
4 GridLinkデータ・ソースの使用
http://docs.oracle.com/cd/E28389_01/web.1111/b60997/gridlink_datasources.htm
Oracle® Fusion Middleware Oracle WebLogic Server JDBCデータ・ソースの構成と管理 12cリリース1 (12.1.1)
4 GridLinkデータ・ソースの使用
http://docs.oracle.com/cd/E28613_01/web.1211/b65892/gridlink_datasources.htm
Oracle® Fusion Middleware Configuring and Managing JDBC Data Sources for Oracle WebLogic Server 11g Release 1 (10.3.6)
4 Using GridLink Data Sources
http://docs.oracle.com/cd/E28280_01/web.1111/e13737/gridlink_datasources.htm
Oracle® Fusion Middleware Configuring and Managing JDBC Data Sources for Oracle WebLogic Server 12c Release 1 (12.1.1)
4 Using GridLink Data Sources
http://docs.oracle.com/cd/E24329_01/web.1211/e24367/gridlink_datasources.htm
作成フローで構成できないデータソースのパラメータがたくさんありますので、戻ってAGLデータソース構成を編集する必要があります。設定するパラメータは、一般にMDSメンバーのデータソースで使用していたパラメータに基づくべきです。できれば全て同じであることが望ましいのですが、そうでない場合には、正しい値を決定する必要があります。

[訳注]
Active GridLink for RACについては、以下のホワイトペーパーも参考にしてください。
Oracle WebLogic Server Active GridLink for Oracle Real Application Clusters(Oracle RAC)
http://www.oracle.com/technetwork/jp/middleware/weblogic/gridlink-rac-wp-1394921-ja.pdf

Baca Selengkapnya ....

[Hardware, Database, WLS] WebLogic Server on Oracle Database Appliance - sizing and storage

Posted by Unknown 0 komentar
原文はこちら。
https://blogs.oracle.com/WebLogicServer/entry/weblogic_server_on_oracle_database1

Oracle Database Appliance上でWebLogic Serverを実行できるようになったことを発表して以来、たくさんの方から関心を寄せて頂き、また色々と質問を頂いています。この一連のトピックで、よく頂く質問や議論をご紹介する予定です。今日はWebLogic on ODAのサイジングならびにストレージに関する詳細を見ていきましょう。
Oracle Database Applianceでは、各VMがOracle Enterprise LinuxをOSとして動作しており、そこにアプリケーション、例えばWebLogic Serverをインストールしていきます。
下表は各VMでWebLogic ServerならびにOracle Traffic Directorに割り当てられているリソースをまとめたものです。
VM vCPU MEM JVM Heap
OTD管理サーバー 2 1 GB n/a
OTDサーバーインスタンス 2 4 GB n/a
WebLogic管理サーバー 2 2 GB 512 MB
WebLogic管理対象サーバー 2 6 GB 3 GB

ストレージについては、下表でDatabase Applianceの最新版(X3-2)の詳細をまとめています。
メモリ 512GB
CPUコア数 32
ハイパフォーマンスドライブ 18 TB Raw
SSDドライブ 800 GB
拡張ストレージシェルフ ハイパフォーマンス: 18TB Raw, SSD: 800 GB
IOPS 7K
IO帯域幅 5GB/s

WebLogic ServerとOracle Traffic Directorがデプロイされるユーザードメインのために、各ノードで250GBのローカルストレージをご利用頂けます。

Baca Selengkapnya ....

[Security, FMW, SOA] .NET interoperability, Kerberos, SPNEGO, Id Propagation - All things Microsoft! - OWSM 11g - Revisited

Posted by Unknown Jumat, 19 April 2013 0 komentar
原文はこちら。
https://blogs.oracle.com/owsm/entry/net_interoperability_kerberos_spnego_id1

以前のエントリで、Microsoft製品との相互運用性やKerberos、SPNEGO、NTLMなどのOWSMでのサポートについてお伝えしましたが、いくつか追記しておきます。
.NET interoperability, Kerberos, SPNEGO, Id Propagation - All things Microsoft! - OWSM 11g
https://blogs.oracle.com/owsm/entry/net_interoperability_kerberos_spnego_id
http://orablogs-jp.blogspot.jp/2012/08/net-interoperability-kerberos-spnego-id.html
SPNEGO support
以前のエントリでは、SPNEGOはOWSMでサポートされていないと説明していました。
PS6では、RESTセキュリティのサポートを導入したことに伴い、SPNEGOのサポートも追加されました。キードライバーはRESTサービスであり、RESTサービスの保護でしたが、HTTP/SOAPサービスのSPNEGOポリシーもまたサポートしています。
実は、お客様がご存知のことの一つに、RESTサービスを保護するために導入された多くのポリシーもまた、HTTP/SOAP Webサービスをサポートしています。
SPNEGOのサポートに関するドキュメントは以下にあります。
Oracle® Fusion Middleware Security and Administrator's Guide for Web Services 11g Release 1 (11.1.1.7)
B Predefined Policies
Authentication Only Policies
http://docs.oracle.com/cd/E28280_01/web.1111/b32511/policies.htm#CHDEJIIF
oracle/multi_token_rest_service_policy
http://docs.oracle.com/cd/E28280_01/web.1111/b32511/policies.htm#CJAIEDEG

Oracle® Fusion Middleware Security and Administrator's Guide for Web Services 11g Release 1 (11.1.1.7)
C Predefined Assertion Templates - oracle/http_spnego_token_client_template
http://docs.oracle.com/cd/E28280_01/web.1111/b32511/assertions.htm#CHDBICJC
[注意]
OWSMはNTLMをサポートしていません。

Interoperability with Microsoft environments

お客様から頂く質問の中で最も多いものの一つに、SAMLを使いMicrosoft製品とOracle製品の環境間でIDの伝播が可能かどうか、STS(secure token service)としてADFSを使いSAMLベースのID伝播が可能か、というものです。
PS6では、(Oracle STS、OpenSSO STSの動作保証に加えて)ADFSとの組み合わせでの動作検証をし、動作を保証しています。

Client side Kerberos support

多くの人が以前のエントリの図をご覧になって、OSBはクライアント側でKerberosをサポートしていないと考えてらっしゃるようですが、明確にしておきたいのは、実際には、以下のような構成では、これまでもKerberosポリシーをクライアント側でもサポートしている、ということです。

主要な制限として、以前のエントリでご紹介したように、Kerberosを複数のホップ間で利用できない、ということです。しかしながら、Webサービスクライアントを保護するためにKerberosポリシーを使うこと自体は可能です。

Baca Selengkapnya ....

[Java] Oracle JDK 7u21 released with new security features

Posted by Unknown Kamis, 18 April 2013 0 komentar
原文はこちら。
https://blogs.oracle.com/henrik/entry/oracle_jdk_7u21_released_with

OracleはJavaのCritical Patch Updateをリリースしました。これにはJDK6とJDK7のアップデートが含まれています。CPUの詳細は以下のエントリに記載がありますし、またリリースノートにも記載されています。
Oracle Java SE Critical Patch Update Advisory - April 2013
http://www.oracle.com/technetwork/topics/security/javacpuapr2013-1928497.htmlApril 2013 Critical Patch Update for Java SE Released
https://blogs.oracle.com/security/entry/april_2013_critical_patch_update1
Update Release Notes - Java™ SE Development Kit 7, Update 21 (JDK 7u21)
http://www.oracle.com/technetwork/java/javase/7u21-relnotes-1932873.htmlUpdate Release Notes - Java™ SE Development Kit 6, Update 45 (JDK 6u45)
http://www.oracle.com/technetwork/java/javase/6u45-relnotes-1932876.html
JDK 7 Updateではセキュリティの改善を意図した数多くの機能強化が盛り込まれています。機能詳細はリリースノートをご覧下さい。このリリースは以下のサイトからダウンロードできます。
質問回答
JDK 6のアップデートもあるのですか?ええ、製品の商用ライフサイクルの期間は、Oracle Supportをご契約いただいているお客様であれば、My Oracle Supportを通じてJDK 6のアップデートをご利用いただけます(現時点では2016年12月を予定しています)。
Oracle Java SE Support Roadmap
http://www.oracle.com/technetwork/java/eol-135779.html
また、今回はパブリックアップデート終了日を過ぎたのに、JDK 6に対するアップデートを追加しましたが、これはこのCPUに含まれるセキュリティ修正を広くご利用頂くためです。
Java 6 End of Public Updates extended to February 2013
https://blogs.oracle.com/henrik/entry/java_6_eol_h_h
JDK 6のアップデートは今後も出るのですか?いいえ、JDK 6に対するパブリックアップデートは今後予定していません。6月に予定されている次のリリースでは、JDK 6u45はOracle Java Archiveに移動する予定になっています。
Critical Patch Updates, Security Alerts and Third Party Bulletin
http://www.oracle.com/technetwork/topics/security/alerts-086861.html
Oracle Java Archive
http://www.oracle.com/technetwork/java/archive-139210.html
Oracle JDKを無料で使いたいのですが、JDK 7に移行する方法を教えて下さい。この件は過去のエントリをご覧下さい。
Migrating from Java SE 6 to Java SE 7
https://blogs.oracle.com/henrik/entry/migrating_from_java_se_6
企業ITで今後もJDK 6を使う必要があります。Oracle JDK 6のサポートを継続する方法はありますか?Oracleのミドルウェアもしくはアプリケーションをお使いのお客様であれば、それらの製品で利用しているJDKのサポートはサポート契約に含まれています。その他の3rdパーティーアプリケーションで使う場合、Java SE Supportをご契約頂くと、JDKのサポート期間を延長することができます。
Oracle Java SE Support
http://www.oracle.com/us/technologies/java/standard-edition/support/overview/index.html
Java SE Supportの価格表は公開されていますか?はい、shop.oracle.comをご覧下さい。
2013年4月17日現在、デスクトップ1台あたり5USドル、サーバーの1プロセッサあたり250USドルです(いずれも1年間の金額)。大規模に必要な場合は弊社の営業におたずね下さい。

Baca Selengkapnya ....

[Java] Java 8: Secure the train

Posted by Unknown 0 komentar
原文はこちら。
http://mreinhold.org/blog/secure-the-train

Webブラウザ内で実行するJavaに関連するセキュリティの脆弱性が最近世間の注目を集めており、Oracleでは一連のCritical Patch Update(最新のCritical Patch Updateは今週はじめにリリース)でこうした問題に対応するためリソースを投入してきました。また、開発プロセスを見直し、新しいコードに対する精査のレベルを上げ、新しい脆弱性が入らないように改善しています。
Java SE 7 Update 21 Release and more
https://blogs.oracle.com/java/entry/java_se_7_update_21
http://orablogs-jp.blogspot.jp/2013/04/java-se-7-update-21-release-and-more.html
Javaプラットフォームのセキュリティを維持することは新機能開発よりも優先されるもので、こうした労力のために必然的にエンジニアはJava 8の開発のための時間が少なくなってきました。もともと1月をFeature-Completeターゲット(機能の完成目標)としていたのに、ある機能がMilestone 6(M6)に間に合わなかった理由の一つがこれです。
JDK 8 M6 status, and extending M7
http://mail.openjdk.java.net/pipermail/jdk8-dev/2013-February/002066.html
今後、Oracleは、ペースを速めてセキュリティ問題を修正し続け、Javaのセキュリティモデルを強化し、新しいセキュリティ機能を導入することに尽力します。この作業には、多くのエンジニアの作業が必要で、Java 8から機能を落としたり、この段階でリリースの範囲を削減したりしても賄いきれません。

セキュリティにフォーカスするため、Java 8のスケジュール(9月上旬にGA版をリリース)はもはや達成できません。
JDK8
http://openjdk.java.net/projects/jdk8/

Status

以前書いたように、M6に間に合わなかった最も重要な作業はProject Lambdaという、このリリースの唯一の前に進める機能に関係しています。昨年末にLambdaのために言語とVMの変更を統合しましたが、すべての関係する可動部品とセキュリティの仕事の間にはstream APIと関連するコアライブラリの機能強化を仕上げるのに予想よりもちょっと時間がかかりました(JEP107と109)。現状では最善でも5月上旬までにこの作業が終了できる、つまり予定よりも3ヶ月遅れとみています。
JEP 107: Bulk Data Operations for Collections
http://openjdk.java.net/jeps/107
JEP 109: Enhance Core Libraries with Lambda
http://openjdk.java.net/jeps/109
M6に間に合わなかった別の機能はリリースのドライバではありませんので、理論的にはリリースからこうした機能を落とすことも可能ですが、Lambdaにもっと時間が必要な場合、それをしても意味がありません。

Alternatives

では、どうしたらいいでしょう?多くのオプションがありますが、それらのいくつかを見てみましょう。
9月上旬のGAリリースという、現在のスケジュールを維持するために、リリースからLambdaを落とす
Lambdaを削除すると、残りの機能は面白いけれども全体として、あまり魅力的ではありません。そんなわけで、今年Lambdaを落としてリリースしても、幅広く支持されないでしょう。これまでに提案した2年というサイクルを維持する場合、Lambda自体は2016年までご利用いただけないませんし、誰もそんなに長く待てないと思っています。
Lambdaは残すが、フィードバックやテストの時間を減らしてスケジュールを守る
品質を犠牲にしてスケジュールを守るならば、確実に過去の月並みな間違いを繰り返すことになるでしょう。これらの機能もしくはプラットフォーム全体が別の新しいものに置き換わるまで、数百万もの開発者が何年も自分たちの欠陥を回避しなければならない、と不完全な言語への変更とAPIの設計を仮想の石碑に刻むことになるでしょう。
1年以上遅らせて、以前リリースから落としたProject Jigsawを取り込む
Lambdaほぼ完成しているので、リリースを遅らせることは理にかなっていないと思っています。まして、Jigsawを仕上げるとおそらく1年以上の遅延になるでしょう。それは、OracleのJigsawチームの主要メンバーがセキュリティの問題に多くの時間を費やしているという、以前お伝えしたような理由のためです。

Hold the train

これが一番ましなオプションかな、と思っています。
Lambdaが完成するようにスケジュールを遅らせ、徹底的にレビューおよびテストした後にリリースする
我々は5月上旬までに残りの設計や開発の仕事を終えることができるならば、夏にビルドのテストおよび安定化が可能で、しっかりしたDeveloper Previewリリースを9月上旬にリリースできるはずです。

Java 8の新しいGAの日を決めるためにはもう少し計画策定が必要ですが、2014年の第1四半期にリリースできるんじゃないかな、と思っています。

これはつまり、現在のGA日である9月初旬から3ヶ月以上遅れるということです。この時点で、11月にGAリリースを準備できていることを確信していませんし、経験上、12月に主要なソフトウェアリリースを出荷しようとするのはほとんどの場合あまりよろしくないので、GAの日付を第一四半期としています。

このオプションは、Java 8のたくさんの新機能のための門戸を開かないでしょうし、既存の機能の範囲を際限なく拡大することもできないでしょう。選ばれた少数の追加機能(特にセキュリティに関連する分野)を追加する可能性がありますが、一般的には、この時間を使って、すでにできあがっている機能を安定化し磨き上げ、チューニングするので、新しい機能を追加しないでしょう。以前後者の道を選択してきましたが、長くひどいものです。
J2SE 1.2 (December 8, 1998)
http://en.wikipedia.org/wiki/Java_version_history#J2SE_1.2_.28December_8.2C_1998.29
これが最善のコースなのでしょうか。代替案よりはましだと思っていますが、提案を待っています。その間に、Java SE 8 Expert GroupおよびJDK8プロジェクトでの参照実装のコントリビュータ-に同じ質問をするつもりです。
Java SE 8 Platform Umbrella JSR (337)
http://openjdk.java.net/projects/jdk8/spec/

Features vs. schedule

以前このように主張しました。
「定期的かつリズミカルなリリースプロセスと緩く結合されているだけの、イノベーションの連続パイプラインとしてJava開発プロセスを構築することが最善だ」
主要な機能が当初予定していた列車に間に合わない場合、残念ではあるにせよ、それが世界の終わりではないですし、次の列車が到来するわけで、しかもその列車(リリース日)は予想された時間に出発するわけです。
Project Jigsaw: Late for the train: The Q&A
http://mreinhold.org/blog/late-for-the-train
これはよいポリシーだと今も思っていますが、このケースでこのポリシーを厳守すると、上記の最初のオプション、つまりLambdaをリリースから落としてスケジュールを守るというオプションを取ることを意味しますが、これを誰もが実際に望んでいることかというと非常に疑わしいと思っています。したがって、この一般的なポリシーに対する例外はありだと思っています。

上記の提案を採用いただけるならば、我々がコミットしたブラウザ関連のセキュリティ対策を完了した後、通常の2年間のリリースサイクルを再開して、2014年はじめにJava8、2016年はじめにJava9をリリースすることができるはずです。

Baca Selengkapnya ....

[Data Integration] ODI - Integrating social data from Facebook Graph API in 0 to 60

Posted by Unknown Rabu, 17 April 2013 0 komentar
原文はこちら。
https://blogs.oracle.com/dataintegration/entry/odi_integrating_social_data_from

データをプッシュするための技術に常に目を光らせていますが、今回はデータフローにFacebookのデータを統合する方法をご紹介するViewletです。一般的にはJSONでの連係のためのプリプロセッサを使用してデータを統合しています。

ジグソーパズルのピースがいくつかあるのですが、ODIはXMLドライバーを提供しております。これを使ってXMLデータをファイルやHTTP、FTPなどから読み出して処理します。ODI 11.1.1.7ではOracleの標準XMLスキーマ/パースコンポーネントを使っているので、この機能が改善されました。JSONからXMLへの変換は既にXMLベースのツールやユーティリティをお持ちなら便利な方法の一つでしょう。このユーティリティを使い、JSONデータをデータ統合フローに取り込み、プロセス内でデータの詳細を理解します(JSONをリバース・エンジニアリングしてスキーマを取得します)。これを利用し、TwitterやFacebook、GoogleやDatasiftといったアグリゲーターからのデータフィードのような、任意のJSONデータを統合することができます。

ぜひViewletをご覧になって下さい。

Baca Selengkapnya ....

[Java] Maven projects with GlassFish 4.0 Embedded Plugin

Posted by Unknown Selasa, 16 April 2013 0 komentar
原文はこちら。
https://blogs.oracle.com/theaquarium/entry/maven_projects_with_glassfish_4

Java Server Faces 2.2 (JSR 344)のように、すでにFinalになっているJava EE 7関連の仕様がありますが、Java EE 7やGlassFish 4.0のファイナルバージョンを待つ必要はありません。GlassFishは新しい機能に挑戦するための参照実装(Reference Implementation)なのです。
Java Server Faces Specification
http://javaserverfaces-spec-public.java.net/
JSR 344: JavaServerTM Faces 2.2
http://jcp.org/en/jsr/detail?id=344
MavenとGlassFish Embeddedとの統合についてブログエントリを書きました。この中で、ちょっとした手順を踏めば、Java EE 7アプリケーションを作成し、GlassFishをインストールせずにGlassFish Embedded 4.0を実行することができます。
GlassFish Embedded
http://embedded-glassfish.java.net/
このセットアップのいい点は、Finalバージョンが出た時点ですぐに使える、ということです。やるべきことは、依存性とPOM.xmlファイルのプラグインのバージョンを更新することです。さぁ、書を捨ててコーディングを始めましょう!

以下のエントリを読んで、Java EE 7を今日から始めましょう!
GlassFish 4 beta and Maven Embedded Plugin
https://blogs.oracle.com/brunoborges/entry/glassfish_4_beta_and_maven
http://orablogs-jp.blogspot.com/2013/04/glassfish-4-beta-and-maven-embedded.html

Baca Selengkapnya ....

[Java] GlassFish 4 beta and Maven Embedded Plugin

Posted by Unknown 0 komentar
原文はこちら。
https://blogs.oracle.com/brunoborges/entry/glassfish_4_beta_and_maven

お披露目前にJava EE 7を試す簡単な方法を探してらっしゃるのではないでしょうか。現在JSRがFinalになっているもの(JMS、Batch、JSONなど)は特にそうでしょう。ArunがすでにJava EE 7プロジェクトをMavenとともに使う件についてご紹介していますが、Mojo projectがCodehausで提供しているarchetypeからは一つ重要なものが抜けています。そう、Maven Plugin for GlassFish Embeddedです。
JMS 2, Bean Validation 1.1, JBatch, JSON-P Go Final!
https://blogs.oracle.com/theaquarium/entry/jms_2_bean_validation_1
Java EE 7 Maven Archetype - Available in NetBeans (TOTD #201)
https://blogs.oracle.com/arungupta/entry/java_ee_7_maven_archetype
Maven Embedded GlassFish Plugin
http://embedded-glassfish.java.net/nonav/plugindocs/3.1/plugin-info.html
GlassFish Embedded
http://embedded-glassfish.java.net/
このプラグインはすばらしい理由は、開発者はGlassFishをローカルにダウンロード、インストール、構成しなくてよい、という点です。やるべきことは、JDKとMavenをインストールするだけです。それから、ちゃんと動くものならどんなIDEでも選択できます(今はNetBeansで動かしていますが、Sublime Text 2も大好きです)。簡単な3ステップのコマンドでOKです。
  1. $ git clone http://myrepo/myproject
  2. $ cd myproject
  3. $ mvn embedded-glassfish:run
    ... ローカルリポジトリにダウンロードが完了するまで待ちましょう...
終わりました!MavenとJDK(あ、この場合はGitもですね)以外のインストールに依存しない、シンプルなプロジェクトです。それではEmbeddedプラグインを使う場合のpom.xmlの設定方法をご紹介しましょう。
  1. Arunがブログで書いていたように、Codehaus archetypeベースのプロジェクトを作成します。ブラウザの履歴のため、ここにコマンドラインをコピーしています(訳注:表現上改行を入れていますが、実際には1行でお願いします)。
    mvn -DarchetypeGroupId=org.codehaus.mojo.archetypes 
    -DarchetypeArtifactId=webapp-javaee7
    -DarchetypeVersion=0.3-SNAPSHOT
    -DarchetypeRepository=https://nexus.codehaus.org/content/repositories/snapshots/
    -DgroupId=org.glassfish
    -DartifactId=javaee7-sample
    -Dversion=1.0-SNAPSHOT
    -Dpackage=org.glassfish.javaee7-sample
    -Darchetype.interactive=false
    --batch-mode --update-snapshots archetype:generate
  2. pom.xmlを開き、<plugins>セクションの最後に移動します。
  3. 以下のpluginを<build><plugins>セクションに追記します。

  4. org.glassfish.embedded
    maven-embedded-glassfish-plugin
    3.1.2.2

    target/${project.artifactId}-${project.version}
    8282
    ${project.artifactId}



    org.glassfish.main
    simple-glassfish-api
    4.0-b79


    org.glassfish.main.extras
    glassfish-embedded-all
    4.0-b83



  5. (2013年4月13日に更新)以下のpluginRepositoryの設定をPOMに記述するのを忘れないで下さい!


  6. maven.java.net
    Java.net Repository for Maven
    https://maven.java.net/content/groups/promoted/


    maven2-repository.dev.java.net
    Java.net Repository for Maven
    http://download.java.net/maven/glassfish/


  7. 以下のMavenのコマンドを実行し、ブラウザでhttp://localhost:8282/javaee7-sampleを開きます。
  8. $ mvn package embedded-glassfish:run
プラグインの依存性を修正しなければならない理由は、GlassFish 4 promoted buildに対応したEmbedded Pluginがまだリリースされていないからです。すでに一部のあーティファクトはあるのですがね(b79用のsimple-glassfish-apiとか。バージョンが違うのは、b83がまだリリースされていないからです)。公式リリースのタイミングでプラグインがアップデートされることでしょう。

ところで、このEmbedded Pluginの設定で、Java Server Facesページを編集することができます。ブラウザの更新ボタンを押してみてください。Mavenのターゲットディレクトリに展開されたWARを指すよう構成されています。デザイナー向けの素晴らしいセットアップの仕組みですね。

お披露目前にJava EE 7のコーディングを楽しみましょう!

Baca Selengkapnya ....

[Java] Java SE 7 Update 21 Release and more

Posted by Unknown 0 komentar
原文はこちら。
https://blogs.oracle.com/java/entry/java_se_7_update_21

Oracleは以下のJavaのアップデート3件をリリースしました。いくつかの重要なセキュリティ設定変更を含んでいますのでご注意下さい。
Java SE 7 Update 21
このリリースには新機能およびセキュリティ脆弱性に対する修正が含まれています(新しいServer JRE、WindowsプラットフォームのUninstall AppletとリンクしたJREインストーラ、セキュリティダイアログへの変更など)。全てのJava SE 7ユーザーがこのリリースにアップグレードすることをOracleは強く推奨します。
リリースノート
http://www.oracle.com/technetwork/java/javase/7u21-relnotes-1932873.html
ダウンロード
http://www.oracle.com/technetwork/java/javase/downloads/index.html
Java SE 6 Update 45
このリリースにはセキュリティ脆弱性に対する修正が含まれています。
リリースノート
http://www.oracle.com/technetwork/java/javase/6u45-relnotes-1932876.html
ダウンロード
http://www.oracle.com/technetwork/java/javase/downloads/index.html
Java SE Embedded 7 Update 21
このリリースはJava Development Kit 7 Update 21 (JDK 7u21)をベースとして特定の機能を提供しています。組み込みシステムをサポートしています。
リリースノート
http://www.oracle.com/technetwork/java/javase/emb7u21-relnotes-1932887.html
ダウンロード
http://www.oracle.com/technetwork/java/embedded/downloads/javase/index.html

セキュリティの変更

セキュリティの修正に加え、Oracleはこのリリースで新しいセキュリティ機能を追加しています。これらは非常に重要です。
  • Server JRE (Server Java Runtime Environment)
    サーバーにJavaアプリケーションをデプロイするためのJREをこのバージョンで初めて利用できるようにしています。このバージョンには、サーバーアプリケーションで必要になることが多いJVM監視ツールが含まれています。しかしJavaプラグインとしてブラウザとの統合はなされていません。JDKベースですが、デプロイメント機能を持たないので、Solaris、Windows、Linuxプラットフォームで動作します。この製品の詳細は以下のリンクをご覧下さい。
    JDK 7 and JRE 7 Installation Guide
    http://docs.oracle.com/javase/7/docs/webnotes/install/index.html
  • Javaコントロールパネルのセキュリティ設定の変更
    このリリースで、カスタム設定がJavaコントロールパネル(JCP)のセキュリティスライダーから取り除かれました。Javaコントロールパネルで設定されたセキュリティレベルとユーザーの利用するJREのバージョン次第では、自己署名アプリケーションや署名のないアプリケーションを実行できない場合があります。のデフォルト設定では、全てのローカルのAppletがセキュアなJREで動作することが許可されます。ユーザーがセキュアでないJRE上で実行している場合、認定された認証局が発行した証明書で署名されたアプリケーションのみが実行可能です。詳細情報はJavaコントロールパネルのドキュメントのセキュリティの項をご覧下さい。
    Java Control Panel - Security
    http://docs.oracle.com/javase/7/docs/technotes/guides/jweb/jcp.html#security
  • セキュリティダイアログの変更
    具体的に言えば、クライアントのブラウザ内で実行される全てのJavaコードはユーザーに対し操作を促すというものです。ダイアログメッセージはリスクの要素によって変わります。低リスクの場合はとても小さなダイアログを表示します。このダイアログには、同一ベンダーからの類似のダイアログを今後表示しないためのチェックボックスがあります。高リスクの場合、例えば署名のないjarを実行する場合、リスクが増大する可能性があるためユーザーの操作を必要とします。Java Source Blogの以下のエントリをご覧下さい。
    IMP: Your Java Applets and Web Start Applications Should Be Signed
    https://blogs.oracle.com/java/entry/imp_your_applets_and_web
    http://orablogs-jp.blogspot.com/2013/03/imp-your-java-applets-and-web-start.html
    開発者、ユーザーに役立つリソースをご紹介します。
  • RMIの変更
    このリリースから、RMIプロパティjava.rmi.server.useCodebaseOnlyがデフォルトでtrueになっています。以前のリリースではデフォルトでfalseでした。このデフォルト値の変更により、RMIベースのアプリケーションが予期せず終了する可能性があります。典型的な症状は、ネストしたjava.lang.ClassNotFoundExceptionを含むjava.rmi.UnmarshalExceptionが含まれるスタックトレースを出します。詳細はJava SE 7のRMI Enhancementsの項をご覧下さい。
    Java SE 7 Documents - Enhancements in JDK 7
    http://docs.oracle.com/javase/7/docs/technotes/guides/rmi/enhancements-7.html
  • JDK for Linux on ARM
    このリリースにはARM上でのLinux用JDKのサポートが含まれています。ARMv6およびARMv7へのサポートてんこ盛りで提供します。

Baca Selengkapnya ....

[Java] Java EE 7 and JAX-RS 2.0

Posted by Unknown 0 komentar
原文はこちら。
http://www.oracle.com/technetwork/articles/java/jaxrs20-1929352.html

この記事はJava EE 7の新機能を紹介するものです。詳細はJava.netのJava EE Platform Specificationから情報を入手して下さい。
Java EE Platform Specification
http://java.net/projects/javaee-spec/pages/Home
サンプルコード (Zip)
ほとんどのJava EE 6アプリケーションでリモートAPIと自由選択を要件とする場合、多かれ少なかれJAX-RS 1.0仕様のRESTfulな趣を使っています。Java EE 7とJAX-RS 2.0により、種々の有用な機能がもたらされ、さらに開発が簡単になり、もっと洗練された、しかも効率的なJava SE/EE RESTfulアプリケーションを作成することができます。

Roast House

Roast HouseとはJavaフレンドリーではあるもののシンプルなJAX-RS 2.0のサンプルで、コーヒー豆を管理し、煎るサンプルです。 このroast house自体はCoffeeBeansResourceとして表現されています。"coffeebeans"というURIは、CoffeeBeansResourceを一意に識別します(コード1を参照)。
コード1
//...
import javax.annotation.PostConstruct;
import javax.enterprise.context.ApplicationScoped;
import javax.ws.rs.DELETE;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.container.ResourceContext;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.Response;
@ApplicationScoped
@Path("coffeebeans")
public class CoffeeBeansResource {

@Context
ResourceContext rc;

Map<String, Bean> bc;

@PostConstruct
public void init() {
this.bc = new ConcurrentHashMap<>();
}

@GET
public Collection<Bean> allBeans() {
return bc.values();
}

@GET
@Path("{id}")
public Bean bean(@PathParam("id") String id) {
return bc.get(id);
}

@POST
public Response add(Bean bean) {
if (bean != null) {
bc.put(bean.getName(), bean);
}
final URI id = URI.create(bean.getName());
return Response.created(id).build();
}

@DELETE
@Path("{id}")
public void remove(@PathParam("id") String id) {
bc.remove(id);
}

@Path("/roaster/{id}")
public RoasterResource roaster(){
return this.rc.initResource(new RoasterResource());
}
}
以前のJAX-RS仕様では、リソースは@Singleton もしくは @Stateless EJBとすることができます。さらに、すべてのルートリソースやプロバイダー、Applicationのサブクラスをmanaged beanもしくはCDI-managed beanとしてデプロイすることができます。@Providerアノテーションをつけたすべての拡張でInjectionも利用できます。これを使うと既存のコードとの統合が簡単になります。JAX-RS固有のコンポーネントをResourceContextを使ってサブリソースに注入することも可能です。
コード2
@Context
ResourceContext rc;

@Path("/roaster/{id}")
public RoasterResource roaster(){
return this.rc.initResource(new RoasterResource());
}
興味深いことに、javax.ws.rs.container.ResourceContextを使うと、JAX-RSの情報を既存インスタンスに注入できるだけでなく、ResourceContext#getResource(Class<T> resourceClass)メソッドをもつリソースクラスにアクセスすることもできます。JAX-RSランタイムが現在のコンテキストからResourceContext#initResourceメソッドに渡されるインスタンスの注入ポイントを値で設定します。RoasterResourceクラス(コード3参照)のidというString型のフィールドは、親リソースのパスパラメータの値を受け取ります。
コード3
public class RoasterResource {

@PathParam("id")
private String id;

@POST
public void roast(@Suspended AsyncResponse ar, Bean bean) {
try {
Thread.sleep(2000);
} catch (InterruptedException ex) {
}
bean.setType(RoastType.DARK);
bean.setName(id);
bean.setBlend(bean.getBlend() + ": The dark side of the bean");
Response response = Response.ok(bean).header("x-roast-id", id).build();
ar.resume(response);
}
}
javax.ws.rs.container.AsyncResponseというパラメータは、Servlet 3.0のjavax.servlet.AsyncContextクラスと類似しており、非同期リクエストの実行が可能です。上の例では、リクエストを処理時間の間遅延させ、AsyncResponse#resumeメソッドの呼び出しによりクライアントへレスポンスを返しています。roastメソッド自体は同期実行されるため、非同期実行による挙動は全く現れませんが、EJBの@javax.ejb.Asynchronous アノテーションと@Suspended AsyncResponseアノテーションの組み合わせを使うと、関心のあるクライアントの最終的な通知をする、業務ロジックを非同期で実行することができます。任意のJAX-RSルートリソースを@Stateless or @Singleton アノテーションで修飾することができ、事実上、EJBとして機能することができます(コード4を参照)。
コード4
import javax.ejb.Asynchronous;
import javax.ejb.Singleton;

@Stateless
@Path("roaster")
public class RoasterResource {

@POST
@Asynchronous
public void roast(@Suspended AsyncResponse ar, Bean bean) {
//heavy lifting
Response response = Response.ok(bean).build();
ar.resume(response);
}
}
@Suspended AsyncResponse パラメータをもつ@Asynchronousリソースのメソッドをfire-and-forgetの一方向非同期型で実行します。リクエスト処理スレッドは即座に解放されますが、AsyncResponse によりは以前としてクライアントに対し便利なハンドルを提供します。時間のかかる作業が終わってから、結果をクライアントにタイミングよく返すことができます。通常の場合、JAX-RS固有の挙動を実際の業務ロジックから切り離したいと思うことでしょう。すべての業務ロジックは簡単に専用の境界のEJBに展開できますが、CDIのイベントを使うとこのfire-and-forgetの場合にずっとよく適合することができます。カスタムイベントクラスであるRoastRequestは処理対象の入力として(Beanクラスの)ペイロードをとり、結果の送信のためにAsyncResponseとります(コード5参照)。
コード5
public class RoastRequest {

private Bean bean;
private AsyncResponse ar;

public RoastRequest(Bean bean, AsyncResponse ar) {
this.bean = bean;
this.ar = ar;
}

public Bean getBean() {
return bean;
}

public void sendMessage(String result) {
Response response = Response.ok(result).build();
ar.resume(response);
}

public void errorHappened(Exception ex) {
ar.resume(ex);
}
}
CDIイベントは業務ロジックとJAX-RSのAPIを切り離すだけでなく、JAX-RSのコードを非常にシンプルにします(コード6参照)。
コード6
public class RoasterResource {

@Inject
Event<RoastRequest> roastListeners;

@POST
public void roast(@Suspended AsyncResponse ar, Bean bean) {
roastListeners.fire(new RoastRequest(bean, ar));
}
}
すべてのCDI managed beanやEJBはpublish-subscribe型のRoastRequestを受け取ることができ、同期・非同期とわず、簡単なvoid onRoastRequest(@Observes RoastRequest request){}というobserverメソッドを使ってペイロードを処理することができます。AsyncResponseクラスを使って、JAX-RS仕様はHTTPプロトコルでリアルタイムで情報をプッシュする簡単な方法を導入しています。クライアントの観点からすると、サーバーでの非同期リクエストは未だにブロックされているため同期型です。REST設計の立場からすれば、すべての長時間実行しているタスクは処理が完了した後に結果を入手する方法に関する追加情報とともに、HTTPステータスコード202で即座に返すべきでしょう。

The Return of Aspects

人気のあるREST APIは多くの場合、クライアントがメッセージのフィンガープリントを計算し、リクエストと一緒に送信する必要があります。サーバー側では、フィンガープリントを計算し、添付された情報と比較します。両方が一致しない場合、メッセージを拒否します。JAX-RSが出てきて、javax.ws.rs.ext.ReaderInterceptor javax.ws.rs.ext.WriterInterceptorの導入に伴い、トラフィックをクライアント側でもサーバ側でも傍受される可能性があります。サーバー上のReaderInterceptorインタフェースの実装はMessageBodyReader#readFromをラップしており、実際のシリアル化前に実行されます。
The PayloadVerifier はヘッダから署名を取り出し、ストリームからフィンガープリントを計算し、最終的にReaderInterceptorContext#proceedメソッドを呼び出します。このメソッドはチェーンの次のインターセプターもしくは MessageBodyReaderインスタンスを呼び出します(コード7参照)。
コード7
public class PayloadVerifier implements ReaderInterceptor{

public static final String SIGNATURE_HEADER = "x-signature";

@Override
public Object aroundReadFrom(ReaderInterceptorContext ric) throws IOException,
WebApplicationException {
MultivaluedMap<String, String> headers = ric.getHeaders();
String headerSignagure = headers.getFirst(SIGNATURE_HEADER);
InputStream inputStream = ric.getInputStream();
byte[] content = fetchBytes(inputStream);
String payload = computeFingerprint(content);
if (!payload.equals(headerSignagure)) {
Response response = Response.status(Response.Status.BAD_REQUEST).header(
SIGNATURE_HEADER, "Modified content").build();
throw new WebApplicationException(response);
}
ByteArrayInputStream buffer = new ByteArrayInputStream(content);
ric.setInputStream(buffer);
return ric.proceed();
}
//...
}
変更されたコンテンツは結果として異なるフィンガープリントになるため、BAD_REQUEST (400) というレスポンスコードとともにWebApplicationExceptionを例外として送出する原因になります。
すべてのフィンガープリントの計算や送出するリクエストの計算をWriterInterceptorの実装により簡単に自動化できます。WriterInterceptorの実装はMessageBodyWriter#writeToをラップしており、この実装はエンティティをシリアル化してストリームに投入する前に実行されます。フィンガープリントの計算については、送信中のエンティティの最終的な表現を必要とするので、バッファとしてのByteArrayOutputStreamに渡し、WriterInterceptorContext#proceed()メソッドを呼び出し、生のコンテンツを取り出してフィンガープリントを計算します(コード8参照)。
コード8
public class PayloadVerifier implements WriterInterceptor {
public static final String SIGNATURE_HEADER = "x-signature";

@Override
public void aroundWriteTo(WriterInterceptorContext wic) throws IOException,
WebApplicationException {
OutputStream oos = wic.getOutputStream();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
wic.setOutputStream(baos);
wic.proceed();
baos.flush();
byte[] content = baos.toByteArray();
MultivaluedMap<String, Object> headers = wic.getHeaders();
headers.add(SIGNATURE_HEADER, computeFingerprint(content));
oos.write(content);

}
//...
}
最終的に、計算された署名をリクエストにヘッダとして追加し、バッファを元のストリームに書き出します。その上で、リクエスト全体をクライアントに送信します。当然ながら、一つのクラスで同時に両方のインターフェースを実装することもできます。
コード9
import javax.ws.rs.ext.Provider;
@Provider
public class PayloadVerifier implements ReaderInterceptor, WriterInterceptor {
}
以前のJAX-RSリリースのように、カスタム拡張を自動的に発見し、@Providerアノテーションを使って登録します。MessageBodyWriterMessageBodyReaderインスタンスの傍受については、ReaderInterceptorWriterInterceptorの実装のみを@Providerアノテーションで修飾すればよく、追加の構成やAPIの呼び出しは不要です。

Request Interception

ContainerRequestFilterContainerResponseFilterの実装はエンティティの読み書き処理だけではなく、リクエスト全体を傍受します。両インターセプターの機能は、生のjavax.servlet.http.HttpServletRequestインスタンスに含まれている情報のロギングよりも、はるかに便利です。TrafficLoggerクラスはHttpServletRequestに含まれる情報をログに記録するだけでなく、特定のリクエストに一致するリソースに関する情報をトレースすることもできます(コード10参照)。
コード10
@Provider
public class TrafficLogger implements ContainerRequestFilter, ContainerResponseFilter {

//ContainerRequestFilter
public void filter(ContainerRequestContext requestContext) throws IOException {
log(requestContext);
}
//ContainerResponseFilter
public void filter(ContainerRequestContext requestContext, ContainerResponseContext
responseContext) throws IOException {
log(responseContext);
}

void log(ContainerRequestContext requestContext) {
SecurityContext securityContext = requestContext.getSecurityContext();
String authentication = securityContext.getAuthenticationScheme();
Principal userPrincipal = securityContext.getUserPrincipal();
UriInfo uriInfo = requestContext.getUriInfo();
String method = requestContext.getMethod();
List<Object> matchedResources = uriInfo.getMatchedResources();
//...
}

void log(ContainerResponseContext responseContext) {
MultivaluedMap<String, String> stringHeaders = responseContext.getStringHeaders();
Object entity = responseContext.getEntity();
//...
}
}
従って、登録されたContainerResponseFilterの実装はContainerResponseContextのインスタンスを取得して、サーバーが生成したデータにアクセスすることができます。ステータスコードとヘッダーの内容、例えばLocationヘッダーは簡単にアクセスできます。ContainerRequestContextContainerResponseContextはフィルターによって変更される可能性のある可変クラスです。
追加の構成をせずに、ContainerRequestFilterをHTTPーリソース照合フェーズの後で実行します。この時点ではもはや入ってくるリクエストを変更してリソースバインディングをカスタマイズすることはできません。リクエストとリソース間のバインディングに影響を与えたい場合には、ContainerRequestFilterを構成し、リソースバインディングフェーズの前に呼び出されるようにすればよいのです。javax.ws.rs.container.PreMatchingアノテーションで修飾されている任意のContainerRequestFilterをリソースバインディングの前に実行するので、HTTPリクエストコンテンツを所望のマッピングに微調整することができます。よくある@PreMatchingフィルターのユースケースではHTTP同士を調整し、ネットワーク基盤の制限を克服しています。PUTOPTIONSHEADDELETEのような、より「難解」なメソッドをファイアウォールでフィルタリングしたり、HTTPクライアントでサポートしなかったりする可能性があります。@PreMatching ContainerRequestFilter実装は所望のHTTP動詞が示しているヘッダーから情報を取り出し(例えば"X-HTTP-Method-Override")たり、POSTリクエストを実行中にPUTリクエストに変更したりすることが可能です(コード11参照)。
コード11
@Provider
@PreMatching
public class HttpMethodOverrideEnabler implements ContainerRequestFilter {

public void filter(ContainerRequestContext requestContext) throws IOException {
String override = requestContext.getHeaders()
.getFirst("X-HTTP-Method-Override");
if (override != null) {
requestContext.setMethod(override);
}
}
}

Configuration

@Providerアノテーションで登録されているすべてのインターセプターおよびフィルターはすべてのリソースで利用できます。デプロイ時にサーバーは@Providerアノテーションのデプロイメント単位をスキャンし、アプリケーションがアクティベートされる前に自動的にすべての拡張を登録します。すべての拡張を専用のJARにパッケージし、オンデマンドでWAR( WEB-INF/libフォルダの中に)でデプロイします。JAX-RSランタイムはJARをスキャンし、自動的に拡張を登録します。自己完結型のJARの一時的なデプロイメントはよいのですが、きめ細かい拡張のパッケージングを必要とします。JARに含まれるすべての拡張をすぐにアクティベートすることになるでしょう。
JAX-RSでは選択的なリソースの装飾のためのバインディングアノテーションを導入しています。機構はCDIのqualifierに類似しています。javax.ws.rs.NameBindingメタアノテーションがついた任意のカスタムアノテーションを使ってインターセプト・ポイントを宣言することができます。
コード12
@NameBinding
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE, ElementType.METHOD})
public @interface Tracked {
}
Trackedアノテーションがついたすべてのインターセプターやフィルターをアプリケーションのクラスやメソッド、サブクラスに同じTrackedアノテーションをつけることで選択的にアクティベートすることができます。
コード13
@Tracked
@Provider
public class TrafficLogger implements ContainerRequestFilter, ContainerResponseFilter {
}
アプリケーション開発者はカスタムのNameBindingアノテーションを対応するフィルターやインターセプターとともにパッケージングして、選択的にリソースへ適用することができます。アノテーション駆動アプローチによりすばらしく柔軟性が増し、より粗いプラグインパッケージを使用できますが、バインディングはまだ静的です。インターセプターまたはフィルタチェーンを変更するには、アプリケーションの再コンパイルし、効果的に再デプロイする必要があります。
分野横断的な機能のグローバルおよびアノテーション駆動型の構成に加えて、JAX-RS2.0では動的な拡張登録のための新しいAPIを導入しました。 @Providerアノテーションを付けたjavax.ws.rs.container.DynamicFeatureインタフェースの実装をインターセプターやフィルタの動的な登録のためのフックとしてコンテナが利用しますので、再コンパイルが不要になります。LoggerRegistrationの拡張は、条件付きで事前定義されたシステムプロパティの有無を照会することによってPayloadVerifierインターセプターとTrafficLoggerフィルタを登録します(コード14参照)。
コード14
@Provider
public class LoggerRegistration implements DynamicFeature {

@Override
public void configure(ResourceInfo resourceInfo, FeatureContext context) {
String debug = System.getProperty("jax-rs.traffic");
if (debug != null) {
context.register(new TrafficLogger());
}
String verification = System.getProperty("jax-rs.verification");
if (verification != null) {
context.register(new PayloadVerifier());
}
}
}

The Client Side

JAX-RS 1.1仕様ではクライアントを考慮していませんでした。クライアントREST APIのプロプライエタリな実装、例えばRESTEasyやJerseyなどは(Java EEで実装されていないものであっても)任意のHTTPリソースと通信できましたが、クライアントコードは特定の実装に直接依存していました。JAX-RS 2.0では新たに標準化されたClient APIが導入されています。標準化されたブート処理を使うと、Service Provider Interface (SPI) は置き換え可能です。APIはいろいろな機能を有しており、大部分のRESTクライアントの独自実装に類似しています (コード15参照)。
コード15
import java.util.Collection;
import javax.ws.rs.client.Client;
import javax.ws.rs.client.ClientBuilder;
import javax.ws.rs.client.Entity;
import javax.ws.rs.client.WebTarget;
import javax.ws.rs.core.GenericType;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;

public class CoffeeBeansResourceTest {

Client client;
WebTarget root;

@Before
public void initClient() {
this.client = ClientBuilder.newClient().register(PayloadVerifier.class);
this.root = this.client.target("http://localhost:8080/roast-house/api/coffeebeans");
}

@Test
public void crud() {
Bean origin = new Bean("arabica", RoastType.DARK, "mexico");
final String mediaType = MediaType.APPLICATION_XML;
final Entity<Bean> entity = Entity.entity(origin, mediaType);
Response response = this.root.request().post(entity, Response.class);
assertThat(response.getStatus(), is(201));

Bean result = this.root.path(origin.getName()).request(mediaType).get(Bean.class);
assertThat(result, is(origin));
Collection<Bean> allBeans = this.root.request().get(
new GenericType<Collection<Bean>>() {
});
assertThat(allBeans.size(), is(1));
assertThat(allBeans, hasItem(origin));

response = this.root.path(origin.getName()).request(mediaType).delete(Response.class);
assertThat(response.getStatus(), is(204));

response = this.root.path(origin.getName()).request(mediaType).get(Response.class);
assertThat(response.getStatus(), is(204));
}
//..
}
上記の統合テストでは、デフォルトのClientインスタンスを、パラメータなしのClientFactory.newClient()メソッドを使用して取得しています。ブートストラッププロセス自体はjavax.ws.rs.ext.RuntimeDelegateという内部抽象ファクトリで標準化されています。RuntimeDelegateの既存のインスタンスをClientFactoryに注入する(例えば、依存性注入フレームワークによって)か、ファイルMETA-INF/services/javax.ws.rs.ext.RuntimeDelegateファイルと${java.home}/lib/jaxrs.propertiesファイルのヒントを探し、最終的にはjavax.ws.rs.ext.RuntimeDelegateシステムプロパティを検索して取得します。発見できない場合にはデフォルト(Jersey)の実装では、初期化しようとします。
javax.ws.rs.client.Clientの主要な目的はjavax.ws.rs.client.WebTargetjavax.ws.rs.client.Invocationインスタンスにスムーズにアクセスできるようにすることです。WebTargetはJAX−RSリソースを表し、Invocationは発行を待つ、すぐ使えるリクエストです。WebTargetInvocationファクトリでもあります。
CoffeBeansResourceTest#crud()メソッドで、Beanオブジェクトはクライアントとサーバーの間で送受信されます。MediaType.APPLICATION_XMLを選択すると、XMLドキュメントでシリアル化されたDTOの送受信のためにほんの数個のJAXBアノテーションを必要とします。
コード16
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class Bean {

private String name;
private RoastType type;
private String blend;

}
サーバーの表記でマーシャリングがうまくいくためにクラスや属性の名前は一致する必要がありますが、DTOがバイナリ互換である必要はありません。上の例では、両Beanクラスを異なるパッケージに配置し、異なるメソッドを実装しています。所望のMediaTypeWebTarget#request()メソッドに渡します(このメソッドは同期Invocation.Builderクラスのインスタンスを返します)。HTTP動詞(GETPOSTPUTDELETEHEADOPTIONS, もしくはTRACE)にちなんで名付けられたメソッドの最後の呼び出しは同期リクエストを開始します。
この新しいクライアントAPIは非同期リソース呼び出しもサポートしています。先ほど述べたように、Invocationインスタンスはsubmissionからリクエストを分離します。非同期リクエストを連鎖した、(AsyncInvokerインスタンスを返す)async()メソッドの呼び出しにより開始することができます(コード17参照)。
コード17
@Test
public void roasterFuture() throws Exception {
//...
Future<Response> future = this.root.path("roaster").path("roast-id").request().async().post(entity);
Response response = future.get(5000, TimeUnit.SECONDS);
Object result = response.getEntity();
assertNotNull(result);
assertThat(roasted.getBlend(),containsString("The dark side of the bean"));
}
上の例での「疑似非同期」の通信スタイルにはそれほどメリットはありません。クライアントは依然としてブロックしレスポンス到着を待つ必要があるからです。しかしながら、Futureベースの呼び出しはバッチ処理において非常に有用です。クライアントは様々なリクエストを一度に発行、Futureインスタンスを収集し、後で処理することが可能です。

本当に非同期の実装はコールバックを登録することで可能です(コード18参照)。
コード18
@Test
public void roasterAsync() throws InterruptedException {
//...
final Entity<Bean> entity = Entity.entity(origin, mediaType);
this.root.path("roaster").path("roast-id").request().async().post(
entity, new InvocationCallback<Bean>() {
public void completed(Bean rspns) {
}

public void failed(Throwable thrwbl) {
}
});
}
Futureを返す各メソッドについて、対応するコールバックメソッドを利用することもできます。メソッド(上記の例ではpost())の最後のパラメータとしてInvocationCallbackインタフェースの実装を受け入れ、呼び出しに成功した場合にはペイロードを、失敗した場合には例外をそれぞれ非同期で通知します。

組み込みのテンプレート機構を使い、URIの構築を自動化・合理化できます。事前定義されたプレースホルダはリクエストの実行の直前に置き換えられ、WebTargetインスタンスを繰り返し生成して保存することができます。
コード19
@Test
public void templating() throws Exception {
String rootPath = this.root.getUri().getPath();
URI uri = this.root.path("{0}/{last}").
resolveTemplate("0", "hello").
resolveTemplate("last", "REST").
getUri();
assertThat(uri.getPath(), is(rootPath + "/hello/REST"));
}
小さいけれども重要なことですが、クライアント側では、拡張を初期化時に発見するのではなく、明示的にClientインスタンスのClientFactory.newClient().register(PayloadVerifier.class)を使って登録する必要があります。ただし、同じエンティティのインターセプターの実装をクライアントとサーバーで共有することができます。これにより、テストを簡単にし、潜在的なバグを削減し、生産性を向上します。すでに導入されているPayloadVerifierインターセプターも同様にクライアント側で変更せずに再利用できます。

まとめ: Java EE or Not?

興味深いことに、JAX-RSは本格的なアプリケーションサーバーを必要としません。特定のContext Typeを満たした後、JAX-RS2.0に準拠したAPIを使用すると、何でもすることができます。ただし、EJB3.2との組み合わせにより、非同期処理、プーリング(スロットル)、監視が可能になります。Servlet 3との緊密な統合により、AsyncContextのサポートを通じて@Suspendedのレスポンスの効率的な非同期処理が可能になり、CDIランタイムがイベント機能をもたらします。また、Bean Validationはよく統合されており、リソースパラメータの検証に使用することができます。他のJava EE7のAPIと一緒にJAX-RS2.0を使用すると、リモートシステムへオブジェクトを公開するための、最も便利(=構成不要)にして最も生産的(=再発明不要)な方法を入手することができます。

参考資料

著者について

Adam Bienはコンサルタントで、Java EE 6/7、EJB 3.x、JAX-RS、JPA 2.xのJSRのExpert Groupメンバーです。JDK 1.0のころからServlets/EJB 1.0を使ってJavaテクノロジーを扱う仕事をしており、今ではJava SEおよびJava EEプロジェクトのアーキテクト、開発者です。JavaFX、J2EE、Java EEに関する書籍を執筆しており、「Real World Java EE Pattrerns - Rethinking Best Practices」と「Real World Java EE Night Hacks」の著者でもあります。
Real World Java EE Patterns—Rethinking Best Practices
http://realworldpatterns.com/
Real World Java EE Night Hacks
http://press.adam-bien.com/real-world-java-ee-night-hacks-dissecting-the-business-tier.htm
AdamはJava Championにして、Top Java Ambassador 2012、JavaOne 2009、2011、2012のRock Starでもあります。Adamはミュンヘン空港で時々Java (EE)ワークショップを開催しています。
Java EE 6/7 Workshops @Airport Munich, Germany
http://airhacks.com/

Join the Conversation

Facebook、Twitter、Oracle Java BlogでのJavaコミュニティの会話に参加して下さい!
Facebook
https://www.facebook.com/ilovejava
Twitter
https://twitter.com/java
Oracle Java Blog
https://blogs.oracle.com/java/

Baca Selengkapnya ....

[WLS] Oracle is #1 in the Application Server Market Segment for 2012

Posted by Unknown Senin, 15 April 2013 0 komentar
原文はこちら。
https://blogs.oracle.com/WebLogicServer/entry/oracle_is_1_in_the

Gartnerが2013年3月に発表したレポート「Market Share: All Software Markets, Worldwide 2012」によると、Oracleは2012年のApplication Serverのマーケットセグメントのシェア第1位(ソフトウェア収入ベース)を獲得しました。

参考資料

(*) Source: Gartner, Inc. “Market Share, All Software Markets, Worldwide, 2012," March 29, 2013, By Colleen Graham, Joanne Correia, David Coyle, Christine Arcaris, Fabrizio Biscotti, Matthew Cheung, Ruggero Contu, Federico de Silva Leon, Yanna Dharmasthira, Tom Eid, Chad Eschinger, Bianca Granetto, Hai Hong Swinehart, Hideaki Horiuchi, Koji Motoyoshi, Yurika Nagashima, Chris Pang, Asheesh Raina, Dan Sommer, Bhavish Sood, Michael Warrilow, Laurie Wurster and Jie Zhang”

Baca Selengkapnya ....

[Database, Big Data] Accessing a Hive Table from Oracle Database

Posted by Unknown 0 komentar
原文はこちら。
https://blogs.oracle.com/bigdataconnectors/entry/accessing_a_hive_table_from

HiveはHDFSのデータを問い合わせるためのツールで、人気のあるツールです。Oracle SQL Connector for HDFSはversion 2.0でHive表から直接データを読み取ることができます。また、Oracle SQL Connector for HDFSのコマンドラインツールが非常に簡素化されました。Hive表とHiveデータベース名をHadoop構成プロパティとして指定しさえすれば、コネクターはHive表のデータにアクセスすることができます。
oracle.hadoop.exttab.sourceType=hive
oracle.hadoop.exttab.hive.tableName=<hive table name>
oracle.hadoop.exttab.hive.databaseName=<hive database name>
コマンドラインツールは外部表をOracle Databaseに作成します。Hive表のデータにアクセスするためにこの外部表に対し問い合わせます。データベースの他の表のように外部表に問い合わせることができるので、Oracle SQLの機能を使ってHive表に対して問い合わせることができます。

外部表の名前とデータベース接続情報もHadoop構成プロパティとして指定します。
hadoop jar $OSCH_HOME/jlib/orahdfs.jar \
oracle.hadoop.exttab.ExternalTable
-D oracle.hadoop.exttab.sourceType=hive \
-D oracle.hadoop.exttab.hive.tableName=<hive table name> \
-D oracle.hadoop.exttab.hive.databaseName=<hive database name> \
-D oracle.hadoop.connection.url=<database connection url> \
-D oracle.hadoop.exttab.tableName=<external table name> \
….
-createTable
外部表を作成している間にHive表のデータ型は外部表のOracleのデータ型に自動的にマッピングされます。以下はマッピングの例です。
Hive Tinyint, Smallint, Int Oracle NUMBER
Hive Float, Double Oracle NUMBER (default precision)
Hive Decimal Oracle NUMBER
Hive Boolean Oracle VARCHAR2(5)
Hive String Oracle VARCHAR2(4000)
Hive Timestamp Oracle TIMESTAMP

Baca Selengkapnya ....

[BPM] Do You Know the Risk of Shadow Processes?

Posted by Unknown 0 komentar
原文はこちら。
https://blogs.oracle.com/bpm/entry/do_you_know_the_risk

[訳注]
このエントリでBPMはBPMSの意味で使っていますが、原文にあわせてそのままBPMと訳しています。

業務を実施するにあたり、会社で多くのアプリケーションを購入する必要があります。こうしたアプリケーションの手助けで企業が機能を果たすことになりますが、たいていの場合、従業員は複数のアプリケーションにアクセスしてend-to-endの機能や、我々が業務プロセスと呼んでいるものを実行しています。

例えばOrder Managementを考えてみます。注文を取り、完了するには、CRMシステム、Inventory Management、Fulfillment、Shipping、そしてAccountingのシステムにアクセスする必要があります。ほとんどの場合こうしたアプリケーションはスタンドアロン、もしくはせいぜいP2Pでの連係にすぎません。注文を処理している間にやるべきアクティビティはたくさんあるのですが、こうしたアプリケーションでは取り扱われていないアクティビティがあります。こうしたアクティビティのことをプロセス・ホワイトスペースと呼んでいます。通常こうしたアクティビティをメールや電話、メモ、表計算のワークシートなどを使ってカバーしています。これらは貴社の組織のshadow process(影のプロセス)というもので、ドキュメント化されていない、監査もされず、トレースできないアクティビティです。それゆえ、問題がどこにあるかおたずねになるかもしれません。問題はこれらの手作業によって組織の効率化を阻んでいるのです。上記の例では、注文の状態が任意の時点で可視性を担保していないため、時代遅れのレポートを使って業務を回すことになりがちです。お客様が注文の状況を尋ねて電話してきたら、従業員は複数のシステムにアクセスしてお客様に情報を提供する必要があります。これは時間の無駄であるとともに、従業員が古い、完全でない情報を基にして判断しなければならなくなってしまいます。
あるケースでは、すべての必要なアクティビティに対するトレーサビリティがとれないという理由で、コンプライアンスリスクにさらされる可能性もあります。手作業による手続きの場合、純利益に影響し、貴社や従業員に対して罰金や違約金が課せられ、コンプライアンスや監査のコストが高くなります。

BPMの主要な価値の一つは、こうしたプロセス・ホワイトスペースを埋め、貴社の業務をもっと効率化することにあります。この考えは既存システムやアプリケーションの置き換えではなく、アプリケーション(CRM、ERP、SCM)を活用し、End-to-Endで効率的なプロセスを定義してホワイトスペースを埋めるというものです。アプリケーションには最良のことをさせましょう。不自然なカスタマイズをCOTSアプリケーションに施して貴社の業務プロセスに適合させるなんてことはやめましょう。BPMを使ってアプリケーションを協調させ、カスタムの業務プロセスを作成しましょう。アプリケーションベースのBPMで実施するアクティビティは監査可能で、効率的であり、業務全体にわたって可視性を向上します。BPMを使って効率的なプロセスを貴社のアプリケーション上に構築することについて説明しているデモを是非ご覧下さい。

Baca Selengkapnya ....

[BPM] Just in ‘Case’…

Posted by Unknown Minggu, 14 April 2013 0 komentar
原文はこちら。
https://blogs.oracle.com/bpm/entry/just_in_case

  • 設計時に容易に決めきれないプロセスがある場合…
  • アドホックなアクティビティや担当者をプロセスに追加する必要がある場合…
  • 個々のアクティビティではなく、プロセスのマイルストンを監視したい場合…
  • ナレッジワーカーに対し、ガイド付きの手順を提供したい場合…
こういったケースすべてのために、Oracle BPM Suiteはこの新しいリリースでCase Managementの機能を追加したのです。
Oracle Unveils Enhancements to Oracle Business Process Management Suite
http://www.oracle.com/us/corporate/press/1929322
「Case Managementって何それおいしいの?」と思ってらっしゃるなら、Mark Fosterが説明してくれている以下のリンクをご覧下さい。
Case Management Part 1: An Introduction (Oracle Blogs / A-Team - SOA)
https://blogs.oracle.com/ateamsoab2b/entry/case_management_part_1_an
新しいOracle BPM SuiteとCase Managementに関してどう言っているかについて知りたいのなら、以下のリンクをどうぞ。
BPM WebcastCase Managementを含むOracle BPM Suiteの新機能について詳細を知りたい場合には、以下のWebcastに是非ご参加下さい。
Webcast New Directions with Business-Driven BPM
http://event.on24.com/r.htm?e=571640&s=1&k=7D7F921E367353D8FCF017DACB2E27C9
[訳注]
日本時間では、4月18日午前2時からです。

Baca Selengkapnya ....

[Solaris] Solaris 11 SRU naming convention change

Posted by Unknown Jumat, 12 April 2013 0 komentar
原文はこちら。
https://blogs.oracle.com/Solaris11Life/entry/solaris_11_sru_naming_convention

現在、Oracle SolarisののSRU(Support Repository Updates)で使う命名規則を、5桁のバージョンで分類するように調整しています。
例えば、Oracle Solaris 11.1.6.4.0の場合を考えます。
Oracle Solaris 11.1.6.4.0 Automated Installer ISO Image(サポート契約が必要です)
https://updates.oracle.com/download/16583996.html
各数字はRelease.Update.SRU.Build.Respinを表しています。上の例の場合、Oracle Solaris 11.1 SRU 6.4という意味です。
Oracle Solaris 10以前の場合、全てのバグ修正が、Solaris 11のソースツリー、つまり現在のSolaris11.1.x.y.zにに戻されています。
したがって、これらの同じSRUはOracle Solaris 11 11/11をインストールしたシステムに対する修正を入手する方法でもあります。Solaris 10カーネルパッチが以前リリースされたSolaris 10 Updateからの全てのコードを含んでいたのとまったく同じ方法です。
Solaris 10 Kernel PatchID Sequence
https://blogs.oracle.com/patch/entry/solaris_10_kernel_patchid_progression
以前のエントリで説明したように、例えばOracle Solaris 11 11/11 SRU 13.4からOracle Solaris 11.1.6.4.0といった具合に、システムを最新のSRUにアップデートすべきです。
Solaris 11 SRU / Update relationship explained, and blackout period on delivery of new bug fixes eliminatedhttps://blogs.oracle.com/Solaris11Life/entry/solaris_11_process_enhancement_no
ファイアウォール内でローカルのSolarisリポジトリを構成・維持している場合、Solaris 11.1と関心のある後続のSRUをご自身のリポジトリに追加すべきです。この理由は、SRUだけが以前リリースされたSolaris Updateに対する相対的な変更差分を含んでいるからです。
Solarisの長期にわたるバイナリ互換保証(Binary Compatibility Guarantee)がImage Packaging System(IPS)と相まって、スムーズなアップデート・エクスペリエンスを確保してくれることでしょう。

Baca Selengkapnya ....

[Support] MOS Upgraded, Mobile search improved

Posted by Unknown Kamis, 11 April 2013 0 komentar
原文はこちら。
https://blogs.oracle.com/supportportal/entry/mos_upgraded_mobile_search_improved

2013年4月5日に、MOS(My Oracle Support)がアップデートされtました。個人的には特にOracle Configuration Managerのパフォーマンスが向上したように思いますが、それは別の機会にご紹介することにします。
今回、Mobile My Oracle Support Version 6.5をリリースしましたが、このリリースでは検索しやすくなっています。以下で2つほど改善点をご紹介しましょう。

1. より簡単になった検索バー

Knowledge、SR、変更リクエスト(RFC)、詳細検索の間を簡単に移動するための見やすいクイックリンクを使って検索バーが再設計されました。すべての検索画面で同じLook and Feelになっています。

2. Oracle On Demandのお客様は変更リクエスト(RFC)の検索が可能

• RFCの詳細検索が追加され、RFC検索を保存することができます。
• RFCの番号の部分指定もしくは全部指定、サマリの文章でRFCを検索できます。
• ステータス、RFCの種類、サポートID、スケジュールされた開始、ターゲット、重大度などで検索できます。
New Advanced Search bar
RFC search

Baca Selengkapnya ....

[Applications, Hardware] Oracle Applications running on Engineered Systems: whitepapers

Posted by Unknown 0 komentar
原文はこちら。
https://blogs.oracle.com/exadatapartnercommunity/entry/oracle_applications_running_on_engineered

[訳注]
本記事は、以下のプレスリリースに関連しています。
Oracle Announces New In-Memory Applications and Faster Performance for All Oracle Applications on Oracle Engineered Systems (COLLABORATE ’13 – Denver, Co. – April 9, 2013)
http://www.oracle.com/us/corporate/press/1931761
Oracle In-Memory Applications
http://www.oracle.com/us/corporate/features/in-memory-apps/index.html

E-Business Suite、Siebel、Peoplesoft、JDE、Fusion AppsなどのOracle ApplicationをEngineered System上で実行することに関する新しいホワイトペーパーが出ました。アプリケーションやモジュールでの性能の改善例や推奨される方式などを知っていただけます。
Oracle Application on Engineered Systemsに関するホワイトペーパーの完全なリストは以下にあります。
Collaborate Resource Library
http://www.oracle.com/us/products/applications/collaborate-resource-library-1931221.html
いくつかのホワイトペーパーを以下でご紹介しましょう(訳注:いずれも英語です)。

Siebel
    E-Business Suite

      Baca Selengkapnya ....
      Trik SEO Terbaru support Online Shop Baju Wanita - Original design by Bamz | Copyright of apk zipalign.