Frage

Für ein J2EE-Bean I-Code bin Wiederverwendung, die für eine Java-Swing-Anwendung entwickelt wurde. JOptionPane.showMessageDialog () ist leider häufig verwendet. Die meisten Vorkommen glücklicherweise in Codeabschnitten, die von der J2EE-Anwendung nicht wiederverwendet werden, aber in einigen Fällen der unteren Ebene des Codes haben Instanzen JOptionPane.showMessageDialog (). Offensichtlich es Ergebnisse in Dialogfeldern auf dem Server Aufspringen, das ist, was ich vermeiden will.

Als erster Schritt würde Ich mag irgendwie versichern, dass keine Dialogfelder immer auf dem Server auftreten.

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!

I nie wirklich bekam, dass die Arbeit. Was würdest du tun?

War es hilfreich?

Lösung

Stellen Sie sicher, dass der Server gestartet wird mit

java -Djava.awt.headless=true

Die meisten Server sollten auf diese Weise standardmäßig gestartet werden. Dann können Sie überprüfen:

boolean headless_check = GraphicsEnvironment.isHeadless();

Weitere Informationen zu kopflos verfügbar hier :

Andere Tipps

ich dies nur mit OpenJDK Runtime Environment getestet (IcedTea 2.4.3) (Gentoo bauen 1.7.0_45-b31) auf Linux, und ich finde, dass unset DISPLAY war auch ausreichend ist, um isHeadless() (und isHeadlessInstance()) return true zu machen.

So funktioniert diese Methode nicht nur Ihnen sagen, ob AWT gezwungen wurde, das Grafiksystem zu ignorieren, sondern vielmehr, ob Ihr Prozess hat Zugriff auf Grafikfunktionen auf alle.

Beispiel:
Der Code wird auf einige Box ausgeführt werden, die keine Grafikkarte hat ( das ist wahrscheinlich das, was Sie wissen wollen), so können Sie immer die Systemeigenschaft überprüfen, ob Sie aus irgendeinem Grund, ob Headless Modus wollen wissen, war gezwungen .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top