2011-11-03 18 views
0

JSF Webアプリケーションを使用しています。 JavaはWebアプリケーションでメッセージボックスを表示する直接的な方法をサポートしていないため、何か新しいことを試してみることにしました。従来のデスクトップアプリケーションでメッセージボックスを表示する方法を試してみる必要がありました。簡単にするために、私はJavaサーブレットで以下のメソッドを試しました。メッセージボックスを表示しようとするとNetBeans IDE 6.9.1のGlassfishサーバーが動作を停止しました

JOptionPane.showMessageDialog(null, "A message from Java Servlet."); 

それがうまくいくことを期待せず、それは確かに働いたとのメッセージがWebブラウザに登場!私は何か新しいものを見つけただけでなく、NetBeans 6.9.1のGlassfishサーバーが2〜3回の試行で動作を停止したことに気づきました。警告なし、エラーなし、例外なしで消灯しました!


スクリーンショットを以下に示します。 A message displayed by Servlet


さて、Javaのウェブでのこの方法の使用は違法であるならば、JavaのWebにまったくこの方法を使用することが許されるべきではないとにしようとした場合、いくつかのエラーまたは例外が発生しなければなりませんそうする。それはコンパイル時のエラーでなければならず、そうであれば、Webブラウザ上でJava Servletを通してメッセージがどのように表示されましたか?またGlassfishサーバーがなぜ機能しなくなったのですか?

+0

ロガー設定が「最高」に設定されていますか?そうでない場合は、設定してアプリを再実行します。次に、サーバーログに表示された内容を投稿します。 – Preston

+0

@Preston :)次の答えから、私は自分の質問に投稿したそのような概念の使用は、Java Webアプリケーションで使用する意味がないと感じました。したがって、私はこのコンセプトを永遠に残し、それを忘れてしまった。ありがとう。 – Bhavesh

答えて

3

Glassfishがなぜ停止したのかわかりません。バックグラウンドでSwing/AWTスレッドが絡まっていることが原因であるとは思いません。永続的に動作するJava EE Webアプリケーションで、(管理されていない)スレッドを手動で起動することは、常に非常に悪い考えです。リクエストが終了すると、コントロールは失われます。セッションまたはアプリケーションのスコープ内のスレッドへの参照を収集する必要があります。セッション内またはアプリケーションの破棄/シャットダウン時に適切にクリーンアップされるプール内にあることが望ましいです。

しかし、そのメッセージはです。実際にははウェブサーバーによって表示されず、Webサーバーによって表示されます。これは、ウェブサーバとウェブブラウザの両方がで物理的に同じマシンで実行されている場合にのみ、あなたの意図が働くことを意味します。これは明らかに、あなたのウェブサイトを、物理的に異なるマシンを使用しているクライアントが訪問するワールドワイドウェブ上の実稼働環境に公開するときには起こりません。

webbrowserはすべてHTML/CSS/JavaScriptの取得と実行のみです。 JSFでは、JavaScriptのalert(),confirm()などが必要です。あるいは、マークアップとlook'n'feelの管理やマネージドBeanアクションの実行をより細かく制御したい場合は、オーバーレイ内に絶対に<div>という位置付けが必要です。後者は、PrimeFaces<p:dialog>および<p:confirmDialog>RichFaces<rich:popupPanel>のような多くのサードパーティのコンポーネントライブラリによって、単一のJSFコンポーネントのフレーバーで利用できます。あなたが実際にいくつかの理由のためのWebアプリケーションでのSwing/AWTを実行する必要がある場合は

、その後はむしろ代わりにappletを作成する必要があり、最終的にHTML <applet><object>タグであなたのウェブページに埋め込みます。これはサーバーからクライアントにダウンロードされ、クライアントの環境で実行されます。

関連する問題