Para un bean J2EE estoy reutilizando el código que fue desarrollado para una aplicación java swing. JOptionPane.showMessageDialog() desafortunadamente se usa comúnmente. La mayoría de las veces ocurren afortunadamente en secciones de código que no son reutilizadas por la aplicación J2EE, pero en algunos casos los niveles más bajos del código tienen instancias de JOptionPane.showMessageDialog(). Obviamente, esto da como resultado que aparezcan cuadros de diálogo en el servidor, que es lo que quiero evitar.La mejor manera de detectar si el código se está ejecutando en un servidor de aplicaciones java
Como primer paso, me gustaría de alguna manera asegurar que nunca se producirán cuadros de diálogo en el servidor.
Alguien sugirió que mira a escondidas en alguna cola de eventos o pintura (no recuerdo cuál): Eso sería:
// 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!
Nunca realmente tiene que trabajar. ¿Qué harías?
Intentaré hacerlo de la manera correcta. Tener una interfaz con un método 'logToUser', y pasar una instancia de ello en su código o meterlo en algún campo estático (si el otro es inviable). Donde se registra, simplemente llame a ese método. Los usuarios del código en el servidor deberán proporcionar una implementación, y la aplicación Swing proporcionará otra (y una aplicación Android u SWT u otra tendrá que proporcionar otra más). Asegúrese de verificar anticipadamente si la implementación está configurada y lanzar una excepción si no ... – mihi