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(); } } } |