JMS

 

Websphere MQ :

 

Basandosi sul tutorial del IBM, chiamato :

Writing Java Message Service programs using WebSphere MQ V5.3 and WebSphere Studio Application Developer V5, Part 1: Installing the software and running your first programs”

e

“Writing Java Message Service programs using WebSphere MQ V5.3 and WebSphere Studio Application Developer V5, Part 2: Configure WebSphere MQ and use JMS within Web applications”

 

Ho riscontrato i seguenti punti da segnalare :

1)       c’e’ da stare attenti alla directory di runtimes che stiamo usando in WSAD per esempio nel tutorial c’e’ runtimes\base_v5 invece puo’ essere che ne usiamo un’altra ad esempio la v51.

2)      Quando si crea il Queue manager in MQ al termine c’e’ da scrivere la porta o disattivare il flag altrimenti non va avanti.

3)      Stare attenti al fatto di lanciare proprio il setenv.bat copiato e non qualche altro setenv in path.

4)      Nel edit del setenv per le variabili WAS_HOME e MQ_JAVA_INSTALL_PATH stare attenti e provare i percorsi che si mette altrimenti si potrebbe verificare il seguente errore :
JNDI initialisation failed, please check your JNDI settings and service

5)      La porta trovata per collegarsi a JNDI e’ quella configurata in RMI/ORB ed e’ visibile nel log di partenza dell’application server (es: 2809).
Per vedere se i vari oggetti sono correttamente inseriti  in JNDI e’ possibile sfruttare il Programma 1.
Per far funzionare questo programma occorrono una serie di librerie in Classpath :
WebSphere Studio/Application Developer/v5.1.2/runtimes/base_v51/lib/j2ee.jar
WebSphere Studio/Application Developer/v5.1.2/runtimes/base_v51/lib/naming.jar
WebSphere Studio/Application Developer/v5.1.2/runtimes/base_v51/lib/namingclient.jar
WebSphere Studio/Application Developer/v5.1.2/wstools/eclipse/plugins/com.ibm.websphere.v51_5.1.0.3/implfactory.jar
Ovviamente il percorso e’ indicativo per sapere dove andare a cercare tali librerie.

6)      Per usare il WSAD Test Environment e un Websphere MQ esterno per configurare JMS dell’application server occorre attivare l’administration console via Web e creare i Connection Factory e le destination che puntano a MQ, quindi restartare il server, attenzione ! per evitare un  java.lang.ClassCastException: javax.naming.Reference occorre aggiungere al classpath della applicazione client anche messagingClient.jar in runtimes\base_v5\lib.

 

Programma 1

import javax.naming.*;

import com.ibm.websphere.naming.*;

public class TestDumpNameSpace

{

public static void main(String[] args) {

try {

String jndiURL = "iiop://localhost:2809/";

String jndiFactory = "com.ibm.websphere.naming.WsnInitialContextFactory";

java.util.Hashtable properties = new java.util.Hashtable(2);

properties.put(Context.PROVIDER_URL, jndiURL);

properties.put(Context.INITIAL_CONTEXT_FACTORY, jndiFactory);

InitialContext lIC = new InitialContext(properties);

DumpNameSpace lDNS = new DumpNameSpace();

lDNS.generateDump(lIC);

} catch (Throwable t) {

t.printStackTrace();

}

}

}