Ciao Andrea
Ti volevo dare un feedback visto il tempo che mi hai dedicato.
Entrambe le soluzioni (compresa la mia pensata iniziale dei profili) presupponevano una soluzione 'custom' del war generato. In altre parole mi hanno contestato che ad ogni release sarebbe stato necessario creare due war per versione, una con kafka e l'altra senza.
Quindi era necessario creare la (invento) 1.20.3-kafka e 1.20.3-atmopshere.
Sono riuscito ad aggirare il problema modificando a runtime in fase di avvio del tomcat estendendo la servlet , e sovrascrivendo gli init-param tramite un parametro (JVM/context/properties devo stabilirlo).
Ecco la classe
public class AtmosphereServletImpl extends AtmosphereServlet {
private String final KAFKA_PROPERTIES_PARAMETER_NAME= "org.atmosphere.kafka.propertiesFile";
private String final KAFKA_PROPERTIES_NAME= "WEB-INF/classes/kafka.properties";
private String final BROADCASTER_PARAMETER_NAME= "org.atmosphere.cpr.broadcasterClass";
private String final BROADCASTER_CLASS_KAFKA= "eu.dedalus.sop.o4c.servlets.atmosphere.clinicalevent.KafkaBroadcasterImpl";
private String final BROADCASTER_CLASS_ATMOSPHERE= "org.atmosphere.cpr.DefaultBroadcaster";
@Override
public void init(ServletConfig sc) throws ServletException {
boolean isKafka = true;
if (isKafka) {
sc.getServletContext().getServletRegistrations().get("AtmosphereServlet").setInitParameter(KAFKA_PROPERTIES_PARAMETER_NAME, KAFKA_PROPERTIES_NAME);
sc.getServletContext().getServletRegistrations().get("AtmosphereServlet").setInitParameter(BROADCASTER_PARAMETER_NAME, BROADCASTER_CLASS_KAFKA);
}
else
sc.getServletContext().getServletRegistrations().get("AtmosphereServlet").setInitParameter(BROADCASTER_PARAMETER_NAME, BROADCASTER_CLASS_ATMOSPHERE);
super.init(sc);
}
}
ora ho impostato isKafka = true, e in quel punto devo parametrizzarlo, però in questo modo funziona.
Naturalmente ho cambiato la definizione della servlet nel web.xml con questa nuova classe
Grazie ancora per il tuo aiuto prezioso comunque
ciao
Marco