检测代码是否在应用程序服务器java中运行的最佳方法

fre*_*rin 12 java joptionpane

对于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!
Run Code Online (Sandbox Code Playgroud)

我从来没有真正做到这一点.你会怎么做?

Bri*_*ian 24

确保服务器已启动

java -Djava.awt.headless=true
Run Code Online (Sandbox Code Playgroud)

默认情况下,大多数服务器应以这种方式启动 然后你可以检查:

boolean headless_check = GraphicsEnvironment.isHeadless();
Run Code Online (Sandbox Code Playgroud)

有关无头的详细信息,请点击此处:

  • BTW:`GraphicsEnvironment.isHeadless()`...因为`isHeadless()`是一个静态类方法.或者使用`ge.isHeadlessInstance()`否则.... 6年没有人注意到?O_O (4认同)