[WLS] Get an Offline or Online WebLogic Domain Summary Using WLST!

Posted by Unknown Selasa, 07 Mei 2013 0 komentar
原文はこちら。
https://blogs.oracle.com/fmwinstallproactive/entry/wlst_offline_or_online_domain

Introduction

以前のエント「WLST Offline Script to Create Summary of WebLogic Domain」で、ドメインの管理サーバーへの接続を確立できた場合にオンラインのサマリーを収集する機能を拡張する方法を作成しました。
WLST Offline Script to Create Summary of WebLogic Domain
https://blogs.oracle.com/fmwinstallproactive/entry/wlst_offline_script_to_create
http://orablogs-jp.blogspot.jp/2013/05/wlst-offline-script-to-create-summary.html
Webを検索すると、多くのWLSTのサンプルがあり、そのサンプルには管理対象サーバーの状態やパフォーマンス、JMS、JDBCなどの情報を集約しているものがあります。この点では、目新しいものではありませんが、以下のオプション機能を持つスクリプトをご紹介します。

1. ドメインの管理サーバーに接続できない場合、ドメインのオフライン情報を自動的に収集します。

2. スクリプトが収集したデータをHTMLに描画し、javascriptを使って結果をインタラクティブな形式で読みやすく表示します。スクリーンショットの一部は以下をご覧下さい。
Screenshot showing WLST Summarizer HTML output

3. 管理対象サーバーの状態が"FAILED"の場合もしくはJVMスレッドプールで一つ以上のThread hog(thread を不必要に作るプログラム)があれば、15秒ごとに3個スレッドダンプを取得します。

Download Sample Script

サンプルスクリプトはこちらからダウンロードできます。

Instructions to Run:

1. ダウンロードしたら、ZipファイルをWebLogic Serverが動作するマシンjに展開します。readme.txtに沿って3個のディレクトリができるはずです。
  • output
  • Sample_Output
  • scripts
2. scriptsディレクトリで、開始ラッパースクリプトであるstartWLSTDomainSummarizer.sh (Unix) もしくは startWLSTDomainSummarizer.cmd (MS Windows)を見つけましょう。エディタで環境に応じたファイルを開き、環境変数を皆さんの環境に合わせて変更します。

例:startWLSTDomainSummarizer.cmdの場合
set WL_HOME=D:\product\FMW11g\wlserver_10.3
set DOMAIN_HOME=D:\product\FMW11g\user_projects\domains\MyDomain
set WLST_OUTPUT_PATH=D:\WLSTDomainSummarizer\output\
set WLST_OUTPUT_FILE=WLST_Domain_Summary_Via_MBeans.html

call "%WL_HOME%\common\bin\wlst.cmd" StartDomainSummarizer.py
(注意)WLST_OUTPUT_PATH ディレクトリの値はスラッシュ(/)(Windowsの場合は\)で終わる必要があります。スラッシュがないと、スクリプトはエラーになって動作しません。

3. シェル(Windowsの場合はコマンドライン)でラッパースクリプトを実行します。WLSTを起動し、StartDomainSummarizer.pyを呼び出すはずです。この最初のpythonスクリプトでいくつかの入力を待ち受けます。
Is your domain Admin Server up and running and do you have the connection details? (Y /N ):
Y

Enter connection URL to Admin Server e.g t3://mymachine.acme.com:7001 :
t3://localhost:7001

Enter weblogic username:
weblogic

Enter weblogic username password (function prompt 1):
welcome1
(注意:パスワードの値はコンソールに表示されません)

レスポンスに応じて、WLSDomainInfoOffline.pyもしくはWLSDomainInfoOnline.pyを呼び出します。

4. スクリプトが正常に動作したら、サマリーのHTMLファイルが指定した出力ディレクトリに生成されているはずです。

5. HTMLが正しく描画されるために、.jsファイル、.css ファイルがあり、アクセス可能であることを確認して下さい(Zipファイルの展開で作成されるアウトプットディレクトリを確認しましょう)。例えば、(Webサーバー使わずに)HTMLファイルをローカルで見るためには、HTML出力結果、jquery-ui.js、spry.js、wlstsummarizer.cssを同一ディレクトリに配置します。

Disclaimer

これはMS Windows、Linuxで動作するWebLogic Server 10.3.6のドメインに対しテストしたサンプルスクリプトです。皆様の環境でエラーが発生しないとか、期待した結果を出すことを保証できません。フィードバックはこのブログエントリのコメントにお願いいたします。WLSTコードの問題を修正するようにつとめます。

Credits

JQuery: http://jquery.com/
Spry (Adobe) : https://github.com/adobe/Spry

Baca Selengkapnya ....

[JavaFX] JavaFX 1.3.1 Runtime Redistribution

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

昨年のJavaFX 1.2、1.3のEnd of Lifeの発表後、OracleのJavaFX 1.xダウンロード環境の停止を数ヶ月延期して、いくつかの企業が自身のアプリケーションをJava FX 2.xへの移行を完了できるようにしました。
JavaFX 1.2 and JavaFX 1.3 EOL Announcement
https://blogs.oracle.com/javafx/entry/javafx_1_2_and_javafx
これは3月末にloadUIの新しいバージョンをリリースした、SmartBear Softwareのケースです。
What’s new LoadUI 2.5 – The Tuned Up Release
http://www.loadui.org/About-loadUI/whats-new-in-loadui-25.html
しかし、アプリケーションをJavaFX最新バージョンに移植するためのリソースを持っていなかった企業や個人開発者がまだ数多くいらっしゃることを認識しており、少なくともEOLまでに移植できないと考えています。そこで、第三者が自分のアプリケーションと共にJavaFX1.3.1ランタイムを再配布することを可能にする回避策をまとめることにしました。この策は本日から有効です。開発者に実装時間(=移行期間)を提供するため、EOLをあと数ヶ月延期することにしました。再配布の手順からわかるように、これは比較的実装が容易な回避策です。より複雑かつ時間がかかったのは、JavaFX 1.3.1の再配布を許諾するライセンスのアップデートでした。

参考資料


Baca Selengkapnya ....

[Database, Big Data] Oracle R Distribution for R 2.15.2 available on public-yum

Posted by Unknown Senin, 06 Mei 2013 0 komentar
原文はこちら。
https://blogs.oracle.com/R/entry/oracle_r_distribution_for_r

Oracle R Distribution for R 2.15.2 on LinuxがOracleのパブリックyumリポジトリからダウンロードできるようになっています。
Oracle Public Yum Repository for EL5 x86_64
http://public-yum.oracle.com/repo/EnterpriseLinux/EL5/addons/x86_64/
R 2.15.2はメンテナンスアップデートで、性能改善、よく使われる関数のメモリ使用量の削減、64bitシステム上のデータに対し利用可能なメモリの増加、ポーランド言語ユーザー向けのローカライゼーション強化、数多くの不具合修正などを含んでいます。アップデート内容の詳細はNEWSファイルの「CHANGES IN R VERSION 2.15.2」にありますので、こちらをご覧下さい。
R News
http://stat.ethz.ch/R-manual/R-devel/doc/html/NEWS.html
Oracle R Enterpriseの最新アップデート(ver. 1.3.1)はR 2.15.1とR 2.15.2の両方で動作保証しています。
Oracle R Enterprise Downloads
http://www.oracle.com/technetwork/database/options/advanced-analytics/r-enterprise/ore-downloads-1502823.html
public-yumからOracle R Distributionをインストールすると、最新のR 2.15.2をダウンロードしてきます。例えば、Oracle Linux 5では、rootでログインし、yum.repos.dへ移動してパブリックyumリポジトリ構成ファイルをダウンロードすると、必要なリポジトリが使えるようになります。
cd /etc/yum.repos.d
wget http://public-yum.oracle.com/public-yum-el5.repo
public-yum-el5.repoを編集します。
[el5_addons]
enabled=1
[el5_latest]
enabled=1
続いて、Oracle R Distributionをインストールします。



Rを始動します。 Oracle R Distribution for R 2.15.2をインストールします。


Oracle R Distributionの古いバージョン、例えばR 2.15.1をインストールする場合、単にRのバージョンをインストール時に指定すればOKです。
yum install R-2.15.1
Detailed instructions for installing Oracle R Distributionの詳細なインストール手順はOracle R Enterprise Installation and Administration Guideにありますので、そちらをご覧下さい。Oracle R Distribution for R 2.15.2 on AIX, Solaris X86およびSolaris SPARCは今後数週間のうちにOracleの Free and Open Source Softwareポータルからダウンロードできるようになる予定です。
Oracle R Distribution
https://oss.oracle.com/ORD/

Baca Selengkapnya ....

[Database] New: Best Practices For Database Consolidation On Exadata Database Machine

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

このホワイトペーパーでは、Exadataへ集約・統合するにあたり、システムやアプリケーションを安定性や可用性を最大化するよう、セットアップや管理におけるベストプラクティスをまとめています。ホワイトペーパーは以下のリンクからどうぞ。
Best Practices For Database Consolidation On Exadata Database Machine
http://www.oracle.com/technetwork/database/features/availability/exadata-consolidation-522500.pdf

Baca Selengkapnya ....

[ADF] Why should you move to 11.1.2.4?

Posted by Unknown Sabtu, 04 Mei 2013 0 komentar
原文はこちら。
https://blogs.oracle.com/mobile/entry/why_should_you_move_to

すばらしいことに、昨年10月下旬にADF Mobile 11.1.2.3のリリースしてからわずか数ヶ月のうちに、弊社のエンジニアリングチームが多くの新機能を提供することをやってのけました。Shay(Shay Shmeltzer)が新機能について前のエントリで記載している通り、新バージョンに移行する理由がたくさんあります。ADF Mobileコミュニティの多くの開発者は、ADF Mobileアプリケーションへのリアルタイム通知をプッシュする方法、適切にiOSとAndroidデバイスの両方でファイルの内容を表示する方法を探してきました。この11.1.2.4では、これらの機能を提供します。
この新しいプッシュ通知のサポートに関する一つの大きな事実は、ネイティブの機能が使用されているということです。これはつまり、Apple Push Notification ServiceやGoogle Cloud Mesaging Serviceを使ってADF Mobileアプリケーションに通知をプッシュする、ということです。プロプライエタリなメッセージングアプリケーションや特殊なメッセージングアプリケーションを実装する必要がないのです。これらのプッシュ通知サービスを使い、直接任意のバックエンドサーバと通信できます。
ファイル表示のサポートは、ファイルコンテンツを表示する必要がある任意のアプリケーションにとって重要なものです。ADF Mobile 11.1.2.3ではLocalHTML機能を使いiOSデバイスのファイルを表示しましたが、Android用のソリューションはありませんでした。アプリケーションでPDFやWordドキュメントといったファイルコンテンツを表示する必要がある場合、11.1.2.4に移行するべきです。
もう一つのすばらしい機能は、「アプリケーションアーカイブ」のサポートです。これはISVやSIパートナーにとって、再利用性のあるすばらしい機能です。パートナー様は全てのアプリケーション・アーティファクトを含むアプリケーションアーカイブを作成するだけで、様々なエンゲージメントでアプリケーションを再利用することができます。個々のお客様それぞれにとって、SIパートナーやお客様自身がアプリケーションアーカイブを拡張して新機能を追加し、個々の企業で展開することができます。お客様がアプリケーションに証明書とプロファイル、必要に応じてほとんどの3rdパーティーのモバイルアプリケーション管理パッケージを使って署名する必要がある場合、この機能もまた必要です。
最後に、数多くの性能改善が含まれています。例えば、ListViewの性能に関する機能向上です。
11.1.2.4へのアプリケーションの移行手順は以下のリリースノートをご覧下さい。
Oracle JDeveloper and Application Development Framework (ADF) 11g Release 2 (11.1.2.4.0)
Known Issues for JDeveloper and ADF 11g Release 2 (11.1.2.4.0)
Migration > ADF Mobile Migration
http://www.oracle.com/technetwork/developer-tools/jdev/documentation/11-124-rn-1942343.html#11.1.2.4.0ShermanUpdate4-ReleaseNotesREPOSITORY-Migration
しかし、今11.1.2.4へ移行する理由が他にもいくつかあります。これらを確認していただき、ご自身にあてはまるかどうかを確認して下さい。
  • Appleは2013年5月1日から「AppStoreにUpする全てのアプリケーションはiPhone 5のフォームファクターを適切にサポートしなければならない」と発表しています。
    Make Your Apps Look Great on the Retina Display and iPhone 5
    https://developer.apple.com/news/?id=3212013b
    iPhone 5の画面サイズは1136x680ピクセルで16:9の比率ですが、以前のiPhoneの画面サイズは960x680ピクセルで4:3の比率でした。iPhone 5がリリースされる前に開発された全てのアプリケーションと同様に、11.1.2.3を使って開発されたADF Mobileアプリケーションはレターボックス・フォーマットで表示されました。これはもyはや新しいAppleのUIガイドラインに適合しません。そのため、ADF MobileアプリケーションをApple AppStoreに投稿しようと考えている場合は、iPhone 5のフォームファクターを適切にサポートする11.1.2.4に移行する必要があります。
  • 11.1.2.4にはiPad miniのサポートも追加されていますので、iPad miniでアイコンおよびスプラッシュスクリーンを指定することができます。
  • Xcode 4.5以後のiOSシミュレータを使ってテストしたい場合、11.1.2.4に移行する必要があります。11.1.2.3ではデバイスを回してもアプリケーションが回転しない、という既知の問題があるためです。
  • JDeveloperおよびADF Mobile 11.1.2.4は最新のモバイルSDK(Xcode 4.5/iOS 6および最新のAndroid開発ツール/SDK)での動作が保証されています。そのため、これらの新しいSDKを使いたい場合には、11.1.2.4に移行する必要があります。
  • 11.1.2.4で多くのバグが修正されています。現在ADF Mobile 11.1.2.3でバグに当たっている場合、修正されたバグのリストをチェックして下さい。
    Bugs Fixed in 11.1.2.4.0
    http://www.oracle.com/technetwork/developer-tools/jdev/jdev-11gr2-nf-404365.html#11gR2%2811.1.2.4.0%29NewFeatures-BugFixList
ADF Mobile開発チーム全体を代表して、皆様のADF Mobileに対する継続的なサポートに感謝します。みなさまからのフィードバックを是非お寄せ下さい。

Baca Selengkapnya ....

[ADF] New Oracle ADF Mobile 11.1.2.4 is Available

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

Oracle ADF Mobileの新バージョン11.1.2.4の発表ができて嬉しく思っています。これは新しいOracle JDeveloper 11.1.2.4の拡張機能としてOTNからダウンロードできます。
Release Downloads for Oracle JDeveloper 11g (11.1.2.4.0)
http://www.oracle.com/technetwork/developer-tools/jdev/downloads/index.html
モバイル向けの開発者にとって、このリリースは主要な新機能だけでなく、アーキテクチャへのアップデートも含むものです。
新機能を紹介する動画は以下からどうぞ。
What's New: ADF Mobile 11gR2 Update 4 (11.1.2.4.0)
http://download.oracle.com/otn_hosted_doc/jdeveloper/11gdemos/ADFMobile11124/ADFMobile11Overview.html
以下にこのリリースのハイライトをまとめました。
  • Push Notification
    ADF MobileアプリケーションはAppleとGoogleの通知サービスを使い、通知を受信できるようになりました。
  • Badging
    iOSアプリケーション向け通知機能に関連して、アプリケーションが新しいメッセージを受信したことを示すよう、アプリケーション上に小さなオーバーレイアイコンを付けられるようにしました。
  • Display files
    新しいデバイス機能メソッドを使うと、ファイルをアプリケーションの一部として表示することができます。iOSデバイスでファイルをプレビューすることができます。
  • Application Archive Packaging
    アプリケーションをパッケージし、お客様に配布することができます。証明書を使ってアプリケーションに署名し、配信チャネルを通じて配布することができます。モバイル向け製品を開発されているISVの方々にとって非常に有用な機能です。
  • Apache Cordova 2.2. Support
    デバイス機能の統合のため、phonegapからオープンソースのCordova 2.2ソリューションにアップグレードしました。これはより新しいインタフェースを用いてデバイスを統合するための多くの選択肢を広げます。
    Apache Cordova 2.2
    http://cordova.apache.org/
  • Mobile SDKs update
    拡張機能をアップデートし、最新のAndroidおよびiOSのSDKをサポートしました。
新機能がモバイル向けアプリケーション開発プロジェクトにおいて役立つことを期待しています。是非フィードバックをお願いします。

Baca Selengkapnya ....

[Java] Integrating WebSockets and JMS with CDI Events in Java EE 7

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

Web開発について検討する場合、最近ではWebSocketも検討されているのではないでしょうか。そして、手に入れられるものであれば何でも統合してみたいと思われていることでしょう。これを超えたクールなもの、例えばJMS 2.0のようなクールなモノをひっさげてJava EE7がやってきます。そしてあなたは不思議に思うことでしょう。自身のWebサイトに接続されているすべてのWebSocketセッションに対してどうやって非同期メッセージを送ることができるのだろう、と。サーバーからのプッシュ型で、ポーリングなしで、本格的なやつです。
答えは非常にシンプルで、CDIを使うことです。またこれはJava EEの魔法の糊としても知られています。CDIを使うと、明らかにアプリケーションと異なる部分間での相互通信を開発者は構築することができます。WebSocketアプリケーションがJMSを使ってメッセージを送受信できるようにするためのすべての手順をたどっていきましょう。

1 - Creating the WebSocket Server Endpoint

まず、クライアントからメッセージを受信するWebSocketのサーバーエンドポイントを構築する必要があります。また、サーバープッシュを使いインバウンドのJMSメッセージペイロードを用いて非同期でクライアントに通知する必要もあります。
@Named
@ServerEndpoint("/websocket")
public class WebSocketEndpoint implements Serializable {
// this object will hold all WebSocket sessions connected to this WebSocket
// server endpoint (per JVM)
private static final Set<Session> sessions = Collections.synchronizedSet(new HashSet<Session>());
ここで、3個の主要なメソッドをこのWebSocketに追加する必要があります。
@OnOpen public void onOpen(final Session session) { sessions.add(session); } 
@OnMessage public void onMessage(final String message, final Session client) { ... }
@OnClose public void onClose(final Session session) { sessions.remove(session); }
onOpenonCloseで、このエンドポイントに接続しているすべてのユーザーセッションを管理することに注目して下さい。後でセッションをonMessageの中で使う方法をご覧頂きます。ここでは、JMS Queueにメッセージを送信するSessionBeanを作成しましょう。

2 - Creating the SessionBean to send JMS messages

WebSocketおよびJMSの仕様の両方で定義されている制限により、WebSocketのエンドポイントの内部で直接JMSオブジェクトを作成することはできません。そのため、SessionBeanを作成して、インバウンドWebSocketメッセージをJMS Queueに転送する必要があります。以下のようにQueueSenderSessionBeanというクラスを作成します。
@Named
@LocalBean
@Stateless public class QueueSenderSessionBean { ... }
このSessionBeanは@Statelessであり、CDIコンテキスト(@Named)の一部でもあります。そして、インタフェースを持たないので、@LocalBeanです。それでは、ビジネスメソッド(sendMessage)を追加しましょう。
public void sendMessage(String message) { ... } 
かなりわかりやすいですね。JMS 2.0のすごいことの一つは、宛先へのメッセージ送信がシンプルである、ということです。そのために、2個のオブジェクトを注入する必要があります。
@Resource(mappedName = "jms/myQueue")
private Queue myQueue;
@Inject private JMSContext jmsContext;
JMSContextはJMS APIに追加された、新しいクラスの一つです。ドキュメントは以下からどうぞ。
Interface JMSContext
http://jms-spec.java.net/2.0/apidocs/javax/jms/JMSContext.html
これはConnectionとSessionをカプセル化し、デフォルトのConnectionFactoryを使いますが、これらはすべてのJava EE 7認定アプリケーションサーバーが提供するリソースです。
Interface Connection
https://jms-spec.java.net/2.0/apidocs/javax/jms/Connection.html
Interface Session
https://jms-spec.java.net/2.0/apidocs/javax/jms/Session.html
Interface ConnectionFactory
https://jms-spec.java.net/2.0/apidocs/javax/jms/ConnectionFactory.html
次は、ロジックを以前追加したメソッドに追加する必要があります。
jmsContext.createProducer().send(myQueue, message);
そして、SessionBeanに手をつけましょう。次は、SessionBeanとWebSocket間に糊を追加して、JMS宛先にメッセージを送信します。

3 - Forwarding an incoming WebSocket message to a JMS destination

これはまったく簡単です。やるべきことは、SessionBeanをWebSocketに注入し、エンドポイントのonMessage内でsendMessageメソッドを呼び出すことです。まず注入から始めますが、不具合のためにコンストラクタinjectionを実行する必要があります。WebSocketサーバーエンドポイントクラスのWebSocketEndpointを開き、以下のフィールドを追加します。
private QueueSenderSessionBean senderBean;
以下のコンストラクタを追加します。
@Inject
public WebSocketEndpoint(QueueSenderSessionBean sb) {
this.senderBean = sb;
}
次はシンプルにonMessage内からメソッドを呼び出します。
senderBean.sendMessage(message);
このアプリケーションの最初の部分はこれで完了です。このコードを使ってWebSocketクライアントからJMS宛先にメッセージを送信することができます。では次にこの逆をやってみましょう。JMS QueueからWebSocketクライアントにデータを送信してみましょう。

4 - Listening to a JMS Destination with a MessageDriven Bean

(面白い事実)まだご存知ない開発者もいらっしゃいますが、JMS APIはMessageDrivenアノテーションを指定しません。その代わりに、EJB仕様の一部であるため、JMSのみならず他の多くのもので利用できます。素晴らしいApache TomEEからDavid Blevinsが気付き、EJBの仕様に小さな変更を提案しました。その提案とは、リソースアダプタがmessagelistener-typeを提供するために、コネクタを必要とするというものです。しかし彼の提案では、MDBを使って様々なものをリスニングできるはずで、リスナーインタフェースはオプションであるべきだ、と言っています。一つの例は、Telnetコマンドのリスニングです。実にすばらしい!しかし、ここではJMS固有のユースケースに着目しましょう。
Annotation Type MessageDriven
http://docs.oracle.com/javaee/6/api/javax/ejb/MessageDriven.html
David Blevins (Twitter)
https://twitter.com/dblevins
Apache TomEE
http://tomee.apache.org/
Modernize Connector/MDB
https://java.net/jira/browse/EJB_SPEC-60
dblevins / mdb-improvements (GitHub)
https://github.com/dblevins/mdb-improvements
WebSocketクライアントからQueue宛先にメッセージを発行することができるようになっているので、処理のあと、どこかに転送する必要があります。JMS MDBを作り始めましょう(覚えておいて欲しいのは、すべてのMDBが暗黙のうちにJMSと関係があるわけではありません)。JMS ResourceAdapterコネクタが必要とするMessageListenerインタフェースを実装しましょう。
Interface MessageListener
http://docs.oracle.com/javaee/6/api/javax/jms/MessageListener.html
@Named
@MessageDriven(mappedName = "jms/myQueue")
public class WebSocketMDB implements MessageListener {
@Override
public void onMessage(Message msg) { ... }
}
これはすべてのJMS MDBの基本的なコードです。これから魔法をかけていきましょう。

5 - Firing CDI events with the JMS Message payload

仕様の制限のために、WebSocketサーバーのエンドポイントから直接JMS宛先をリスニングできないことをお話したことを覚えてますでしょうか。まぁ、実際には違うテクニックを使えばできるのですがね。CDI Eventについて聞いたことがないのであれば、このチュートリアルを進める前に以下をお読み下さい。
Using Events in CDI Applications (The Java EE 6 Tutorial)
http://docs.oracle.com/javaee/6/tutorial/doc/gkhic.html
Working with Events in CDI
https://netbeans.org/kb/docs/javaee/cdi-events.html
Decoupling event producers and event consumers in Java EE 6 using CDI and JMS (Juliano Viana)
https://weblogs.java.net/blog/jjviana/archive/2010/04/14/decoupling-event-producers-and-event-consumers-java-ee-6-using-cdi-a
読み終えましたか?それでは進めましょう。まず、Event修飾子です。WSJMSMessageアノテーションをプロジェクト内に作成します。
@Qualifier
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD, ElementType.FIELD, ElementType.PARAMETER, ElementType.TYPE})
public @interface WSJMSMessage {}
定義した修飾子を使い、CDIは出力されたイベントをオブザーバーオブジェクトに接続することができます。WebSocketMDBに戻って、先ほど作成した修飾子を使って、Eventディスパッチャーを追加します。
Interface Event<T>
http://docs.oracle.com/javaee/6/api/javax/enterprise/event/Event.html
@Inject
@WSJMSMessage
Event<Message> jmsEvent;
ロジックをonMessageメソッドに追加しましょう。
jmsEvent.fire(msg);

6 - Listening to CDI events within the WebSocket server endpoint

これがこの記事のサーバー側の最後のパートです。次はクライアント側でJavascriptのコード記述方法をご覧頂きます。Messageペイロードを使って、MDBが出力したCDIイベントをリスニングしましょう。再度WebSocketEndpointクラスを開き、以下のメソッドを追加しましょう。
public void onJMSMessage(@Observes @WSJMSMessage Message msg) {
try {
for (Session s : sessions) {
s.getBasicRemote().sendText("message from JMS: " + msg.getBody(String.class));
}
} catch (IOException | JMSException ex) {
Logger.getLogger(WebSocketEndpoint.class.getName()).log(Level.SEVERE, null, ex);
}
}
@Observesと以前定義した@WSJMSMessage修飾子に着目しましょう。これでCDIにMDBが発したイベントをリスニングするように指示するのです。
Annotation Type Observes
http://docs.oracle.com/javaee/6/api/javax/enterprise/event/Observes.html

7 - Client-side Javascript to connect with the WebSocket server endpoint

これがしばらくの間Internet界隈に出てきましたが、Java固有でもJava EE固有でもありません。とはいえ、とにかく基本的にこれです。
// note the final path is the same defined inside WebSocketEndpoint class at @ServerEndpoint
websocketSession = new WebSocket('ws://' + document.location.host + '/your-app-context-root/websocket');
このサンプルで使っているJavascriptとHTMLインタフェースは以下のリンクからどうぞ。
brunoborges / javaee7-jms-websocket-example (GitHub)
Javascript
https://github.com/brunoborges/javaee7-jms-websocket-example/blob/master/src/main/webapp/myapp.js
HTMLインタフェース
https://github.com/brunoborges/javaee7-jms-websocket-example/blob/master/src/main/webapp/index.html

Conclusion

この記事がJava EE 7での開発を始めるにあたって役立つことを期待しています。そして。CDIやWebSocket、JMS、EJBとの統合の可能性を理解する上で役立つことを願っています。これらはこのエントリの主要なポイントです。
  • WebSocketクライアントと非同期通信できること(session.getAsyncRemote()を使って非同期でメッセージを送信できるわけですけれども)
  • アプリケーションの任意の場所でWebSocketクライアントに対しサーバープッシュすることができる、ということ
  • JMS Topicを使って、クラスタ全体でWebSocketクライアントセッションへのサーバーからプッシュされた通信をスケールすることができる、ということ
    これはおそらくこの設定における最も興味深いところの一つでしょう。QueueのかわりにTopicを使うと、クラスタ全体でアプリケーションに接続している全てのWebSocketセッションに対し、データをプッシュすることができます。Webサーバーあたり、およそ6万4000個のクライアントセッションという限界があり、この例では静的なsynchronized Setを使ってこれらの参照を保持しています。クラスタの場合を想像してみましょう。これをクラスタ化されたTopicのサブスクライバに変えると、サーバーからプッシュされたデータをスケールアップすることができます。
このプロジェクトのソースコードはGitHubのjavaee7-jms-websocket-exampleにUpしてあります。
Bruno Borgesのリポジトリ(GitHub)
https://github.com/brunoborges/
brunoborges / javaee7-jms-websocket-example (Java EE 7 Example for JMS and WebSockets integration)
https://github.com/brunoborges/javaee7-jms-websocket-example/

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