Für eine J2EE-Bean verwende ich Code, der für eine Java-Swing-Anwendung entwickelt wurde. JOptionPane.showMessageDialog() wird leider häufig verwendet. Die meisten Vorkommen sind glücklicherweise in Code-Abschnitten, die nicht von der J2EE-Anwendung wiederverwendet werden, aber in einigen Fällen haben niedrigere Code-Ebenen Instanzen von JOptionPane.showMessageDialog(). Offensichtlich führt dies dazu, dass Dialogfelder auf dem Server erscheinen, was ich vermeiden möchte.Die beste Methode, um zu erkennen, ob Code in einem Anwendungsserver ausgeführt wird. Java
Als ersten Schritt möchte ich irgendwie sicherstellen, dass keine Dialogfelder auf dem Server jemals auftreten werden.
Jemand schlug vor, in einem Ereignis oder Farbe Warteschlange späht (Ich erinnere mich nicht, welche): das wäre:
// 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!
ich nie wirklich bekam, dass die Arbeit. Was würden Sie tun?
Ich würde versuchen, es richtig zu machen. Haben Sie eine Schnittstelle mit einer Methode 'logToUser', und übergeben Sie entweder eine Instanz davon in Ihrem Code oder stecken Sie sie in ein statisches Feld (wenn das andere nicht durchführbar ist). Wenn Sie sich anmelden, rufen Sie einfach diese Methode auf. Die Benutzer des Codes auf dem Server müssen eine Implementierung bereitstellen, und die Swing-Anwendung muss eine andere bereitstellen (und eine Android- oder SWT-Anwendung oder eine andere Anwendung muss noch eine andere bereitstellen). Stellen Sie sicher, dass Sie früh überprüfen, ob die Implementierung aktiviert ist, und eine Ausnahme auslösen, wenn nicht ... – mihi