12

J2EE Bean の場合、Java Swing アプリケーション用に開発されたコードを再利用しています。JOptionPane.showMessageDialog()残念ながらよく使われます。ほとんどの場合、J2EE アプリケーションによって再利用されないコード セクションで発生しますが、場合によっては、コードの下位レベルにJOptionPane.showMessageDialog(). 明らかに、これによりサーバー上にダイアログボックスがポップアップすることになりますが、これは避けたいことです。

最初のステップとして、サーバー上でダイアログ ボックスが表示されないようにしたいと思います。

誰かが、いくつかのイベントまたはペイント キューを覗くことを提案しました (どれを覚えていないか): それは次のようになります。

// old code: JOptionPane.showMessageDialog(msg);
if ( someEventQueue.size() == 0 ) // <== consider this pseudo-code
  Log.log(msg); // I am running on a server. Tell the log.
else
  JOptionPane.showMessageDialog(msg); // I have a user made of meat. Tell him!

私は本当にそれが機能したことはありません。あなたならどうしますか?

4

2 に答える 2

25

サーバーが起動していることを確認してください

java -Djava.awt.headless=true

ほとんどのサーバーは、デフォルトでそのように起動する必要があります。次に、次を確認できます。

boolean headless_check = GraphicsEnvironment.isHeadless();

ここで利用可能なヘッドレスの詳細:

于 2009-06-18T19:19:52.240 に答える
0

これを Linux 上の OpenJDK ランタイム環境 (IcedTea 2.4.3) (Gentoo ビルド 1.7.0_45-b31) でテストしたところ、 (および) returnunset DISPLAYを作成するのに十分であることがわかりました。 isHeadless()isHeadlessInstance()true

したがって、このメソッドは、AWT がシステムのグラフィックス機能を無視するように強制されたかどうかを示すだけでなく、プロセスがグラフィックス機能にアクセスできるかどうかを示します。

例:
ディスプレイ カードのないボックスでコードが実行されているため (これはおそらく知りたいことです)、何らかの理由でヘッドレス モードが強制されたかどうかを知りたい場合は、いつでもシステム プロパティを確認できます。

于 2013-12-30T14:49:06.613 に答える