检测代码是否在应用程序服务器java中运行的最佳方法 [英] Best way to detect whether code is running in an application server java

查看:105
本文介绍了检测代码是否在应用程序服务器java中运行的最佳方法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

对于J2EE bean,我正在重用为java swing应用程序开发的代码。不幸的是,常常使用JOptionPane.showMessageDialog()。幸运的是,在J2EE应用程序未重用的代码部分中,大多数情况都会出现,但在某些情况下,较低级别的代码具有JOptionPane.showMessageDialog()的实例。显然这会导致服务器上弹出对话框,这是我想要避免的。

For a J2EE bean I am reusing code that was developed for a java swing application. JOptionPane.showMessageDialog() is unfortunately commonly used. Most occurences luckily in code sections that are not reused by the J2EE application, but in some cases lower levels of the code has instances of JOptionPane.showMessageDialog(). Obviously this it results in dialog boxes popping up on the server, which is what I want to avoid.

作为第一步,我想以某种方式确保没有对话框盒子将在服务器上出现。

As a first step I'd like to somehow assure that no dialog boxes will ever occur on the server.

有人建议在某些事件或油漆队列中偷看(我不记得是哪一个):
那将是:

Someone suggested peeking in some event or paint queue (I do not recall which one): That would be:

// 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!

我从来没有真的有效。你会怎么做?

I never really got that working. What would you do?

推荐答案

确保服务器启动

java -Djava.awt.headless=true

大多数服务器应该启动默认方式。然后你可以检查:

Most servers should be started that way by default. Then you can check:

boolean headless_check = GraphicsEnvironment.isHeadless();

关于无头可用的更多细节这里

More details on headless available here:

这篇关于检测代码是否在应用程序服务器java中运行的最佳方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆