對於J2EE bean,我重複使用爲java swing應用程序開發的代碼。 JOptionPane.showMessageDialog()不幸被廣泛使用。幸運的是,在J2EE應用程序中沒有重用的代碼段中,大多數情況都是幸運的,但在某些情況下,代碼的較低級別具有JOptionPane.showMessageDialog()的實例。很顯然,這會導致服務器上彈出對話框,這是我想避免的。檢測代碼是否在應用程序服務器中運行的最佳方法java
作爲第一步,我想以某種方式確保服務器上不會出現任何對話框。
有人建議在某些事件或油漆隊列偷看(我不記得是哪一個): 這將是:
// 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!
我從來沒有真正了該工作。你會怎麼做?
我會盡力做到這一點正確的方式。有一個與`logToUser`方法的接口,並且在你的代碼中傳遞它的一個實例,或者將它放到一個靜態字段(如果另一個是不可行的)。在你登錄的地方,只需調用該方法即可。服務器上的代碼的用戶將不得不提供一個實現,並且Swing應用程序提供另一個(並且Android或SWT或另一個應用程序將不得不提供另一個)。請確保提前檢查實施是否已設置,如果不是,則拋出異常... – mihi 2013-12-30 15:21:25