Création d'une JSP afin de crééer une connexion WebSPhere MQ Client 7.5 avec Tomcat 8 et un JRE 7

1. Avant-propos
1.1. Présentation
1.2. Introduction
2. Installation d'une application
2.1. Installation du war MQCentral_avecCLUSTERetSSL.war
2.2. Modification du fichier context.xml
2.3. Modification du fichier web.xml dans le war
2.4. Modification du fichier catalina.properties
3. Installation des librairies WebSphere MQ
3.1. Installation du client WebSphere MQ
3.2. Copie des librairies *.jar du client
4. Création d'une servlet
4.1. Exemple de servlet
4.2. Structure du war sous eclipse
5. Paramètrage JVM
5.1 - Option de lancement de la JVM
5.2 - Paramètrage du JRE 7.0.75
6. Tests
6.1 - Test avec l'url

1. Avant-propos


1.1 - Présentation.


+------------------------------+                                   +--------------------------------------+ 
| Serveur TOMCAT               |                                   | Serveur WebSphere MQ                 | 
| Hostname : saturn            |                                   | Version : MQ Central                 | 
| Os : Windows 2012            |                                   | Hostname : Jupiter                   | 
|                              |                                   | Os : Aix 6.1                         | 
|                              |                                   |                                      | 
| +--------------------------+ |                                   | +---------------------------------+  | 
| | CLIENT MQ                |-|-----------/ 50240 /---------------|-|--> Queue Manager : ARECIBOEVO   |  | 
| +--------------------------+ |                                   | |    Channel : ARECIBO.CX.SVA08   |  |
|                              |                                   | |    Port : 50240                 |  |
|                              |                                   | |    HostName : Jupiter           |  |
|                              |                                   | +---------------------------------+  | 
+------------------------------+                                   +--------------------------------------+ 
                                \                                           
                            / 50240 /     
                                  \
                                   \
                                    V
                  +--------------------------------------+ 
                  | Serveur WebSphere MQ                 | 
                  | Version : MQ Central                 | 
                  | Hostname : Mercure                   | 
                  | Os : Aix 6.1                         |     
                  |                                      | 
                  | +---------------------------------+  | 
                  | |    Queue Manager : ARECIBOEVO   |  | 
                  | |    Channel : ARECIBO.CX.SVA08   |  |
                  | |    Port : 50240                 |  |
                  | |    HostName : Mercure           |  |
                  | +---------------------------------+  | 
                  +--------------------------------------+ 








1.2 - Introduction


Nous allons réaliser l'installation d'une connexion d'un Tomcat 8.0 avec un JRE SUN 7.0.75 vers un WebSphere MQ 7.5 avec un JRE IBM 7.

2. Installation d'une application


Dans l'exemple suivant nous allons installer une application sur un serveur TOMCAT sur le serveur "saturn" .
Pour se faire nous allons déployer une application test fournie par "franky goes to Hollywood" :
La problèmatique réside que nous avons d'un côté un JRE IBM et de l'autre un JRE SUN.

2.1 - Installation du war MQCentral_avecCLUSTERetSSL.war


Dans le répertoire c:\Tomcat-7.0.54\webapps du serveur saturn copier le fichier MQCentral_avecCLUSTERetSSL.war

2.2 - Modification du fichier context.xml


Afin de connaitre la fonctionnalité de l'ensemble des balises, vous pouvez allez voir le site d'IBM.
Pour l'option "CROPT", une suptilitée existe voir tableau ci-dessous.
MQCNO_RECONNECT16777216
MQCNO_RECONNECT_AS_DEF0
MQCNO_RECONNECT_DISABLED33554432
MQCNO_RECONNECT_Q_MGR67108864


Puis modifié le fichier context.xml en ajoutant les balises "Resource" ci-dessous :
vi context.xml



<Resource 
     name="jms/MyQCFClusterSSL" 
     auth="Container"
     type="com.ibm.mq.jms.MQQueueConnectionFactory"
     factory="com.ibm.mq.jms.MQQueueConnectionFactoryFactory"
     description="JMS Queue Connection Factory for sending messages" 
     CRSHOSTS="Jupiter(50240), Mercure(50240)"  
     CHAN="ARECIBO.CX.SVA08"
     TRAN="1" 
     QMGR="ARECIBOEVO" 
     SCPHS="SSL_RSA_WITH_AES_256_CBC_SHA"
     SFIPS="true"
     SPEER=""
     CROPT="67108864" 
     CRT="500"/>


	  
	  
   <Resource
      name="jms/MyQ"
      auth="Container"
      type="com.ibm.mq.jms.MQQueue"
      factory="com.ibm.mq.jms.MQQueueFactory"
      description="JMS Queue for receiving messages from Dialog"
      QU="Q_MDB"/>



2.3 - Modification du fichier web.xml dans le war


Nous allons modifier le fichier web.xml de l'archive war (pas celui de tomcat).
Placé vous dans WEB-INF/web.xml.
Puis editer le fichier web.xml dans eclipse

<web-app xmlns="http://java.sun.com/xml/ns/j2ee" version="2.4"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http:/java.sun.com/dtd/web-app_2_3.dtd">
  <servlet>
    <servlet-name>hello</servlet-name>
    <servlet-class>fr.arecibo.mqcentral.HelloServlet</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>hello</servlet-name>
    <url-pattern>/hello</url-pattern>
  </servlet-mapping>
  
   <resource-env-ref>
    <resource-env-ref-name>jms/MyQCF</resource-env-ref-name>
    <resource-env-ref-type>javax.jms.QueueConnectionFactory</resource-env-ref-type>
  </resource-env-ref>

  <resource-env-ref>
    <resource-env-ref-name>jms/MyQ</resource-env-ref-name>
    <resource-env-ref-type>javax.jms.Queue</resource-env-ref-type>
  </resource-env-ref>
  
  
</web-app>


3.4 - Modification du fichier catalina.properties


Afin de charger les librairies au lancement de Tomcat, vous devez modifier le fichier catalina.properties
Vous trouverez ce fichier dans le répertoire c:\Tomcat-7.0.54\configuration
Puis rajouter sur la ligne suivantes l'endroit ou sont vos librairies.

common.loader=[chemin existant],c:\\Tomcat-7.0.54\\lib\\*.jar



3. Installation des librairies WebSphere MQ


Afin de pouvoir récupèrer les dernières librairies "*.jar" du client WebSphere MQ, nous allons devoir le télécharger chez IBM :
Vous pouvez télécharger les fichiers jars en téléchargeant le client à cette url :
client WebSphere MQ 7.5.0.4

3.1 - Installation du client WebSphere MQ


Après avoir télécharger le fichier mqc75_7.5.0.4_win.zip sur le serveur saturn comme ci-dessous
Décompressé le, et installé le sur c:\MQ

3.2 - Copie des librairies *.jar du client


Une fois le client installé copier les fichiers jars contenu dans c:\MQ\java\lib suivants :
c:\
 +--- MQ\
      +--- java\
            +--- lib\
                  +--- com.ibm.mq.jar
                  +--- com.ibm.mqjms.jar
                  +--- connector.jar
                  +--- dhbcore.jar

4. Création d'une servlet


Voici la servlet contenu dans le MQCentral_avecCLUSTERetSSL.war

4.1 - Exemple de JSP


Dans l'archive war, dans "WebContent/" créé la fichier java MQCentralClusterSSL.jsp suivant :
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Envoi d'un message MQ Central avec un client WebSPhere MQ 7.5 en mode cluster avec du SSL</title>
<link rel="stylesheet" href="<%=request.getContextPath()%>/css/pajee.css"/>
</head>
<body>

<center><h2 class="Espace">PAJEE - Test d'une connexion MQ Central en mode cluster avec du SSL</H2></center>
<br><br>
<center><img src="images/bdf-logo.png" ></center>
<br>


<%@ page import="javax.jms.Queue,javax.jms.QueueConnection,javax.jms.QueueConnectionFactory,javax.jms.QueueSender,javax.jms.QueueSession,javax.jms.Session,javax.jms.TextMessage,javax.naming.Context,javax.naming.InitialContext" %>

<% 
Context ctx = (Context) new InitialContext().lookup("java:comp/env");
QueueConnectionFactory qcf = (QueueConnectionFactory) ctx.lookup("jms/MyQCFClusterSSL");
QueueConnection qc = qcf.createQueueConnection();
Queue q = (Queue) ctx.lookup("jms/MQSSL");
QueueSession qs = qc.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
TextMessage tm = qs.createTextMessage();
tm.setText("PAJEE, test d'envoi d'un message en mode cluster MQ avec du SSL à partir d'une JSP!");
//QueueSender sender = qc.createSender();
QueueSender sender = qs.createSender(q);
//sender.send(qs.createMessage());
sender.send(tm);
sender.close();
qs.close();
qc.close();

%>
<br>
<h3 class="Espace2"><b>Message envoyé en mode cluster SSL.</b></h3>

</body>
</html>


4.2 - Structure du war




5. Paramètrage JVM


Nous allons maintenant paramètrer la JVM et le JRE.

5.1 - Option de lancement de la JVM


-Djavax.net.ssl.trustStore=c:\Home\tomcat_dev.jks 
-Djavax.net.ssl.keyStore=c:\Home\tomcat_dev.jks 
-Djavax.net.ssl.keyStorePassword=MOnSuperPassword 
-Dcatalina.base="c:\Home\eclipse_test_maven\.metadata\.plugins\org.eclipse.wst.server.core\tmp1" 
-Dcatalina.home="c:\Home\apache-tomcat-8.0.20-windows-x86\apache-tomcat-8.0.20" 
-Dwtp.deploy="c:\Home\eclipse_test_maven\.metadata\.plugins\org.eclipse.wst.server.core\tmp1\wtpwebapps" 
-Djava.endorsed.dirs="c:\Home\apache-tomcat-8.0.20-windows-x86\apache-tomcat-8.0.20\endorsed" 
-Dhttps.protocols=SSLv3 
-Djavax.net.debug=ssl,handshake

5.2 - Paramètrage du JRE 7.0.75


C:\>java -version
java version "1.7.0_75"
Java(TM) SE Runtime Environment (build 1.7.0_75-b13)
Java HotSpot(TM) Client VM (build 24.75-b04, mixed mode, sharing)

Allez dans le répertoire "C:\Program Files\Java\jre7\lib\security", puis rajouter les deux fichiers jars :
local_policy.jar
US_export_policy.jar


Puis modifier le fichier "java.security" comme ci-dessous à la bonne section :
security.provider.1=sun.security.provider.Sun
security.provider.2=sun.security.rsa.SunRsaSign
security.provider.3=sun.security.ec.SunEC
security.provider.4=com.sun.net.ssl.internal.ssl.Provider
security.provider.5=com.sun.crypto.provider.SunJCE
security.provider.6=sun.security.jgss.SunProvider
security.provider.7=com.sun.security.sasl.Provider
security.provider.8=org.jcp.xml.dsig.internal.dom.XMLDSigRI
security.provider.9=sun.security.smartcardio.SunPCSC
security.provider.10=sun.security.mscapi.SunMSCAPI
# ajouter les providers IBM pour avoir les bons CIPHER.
security.provider.11=com.ibm.jsse2.IBMJSSEProvider2
security.provider.12=com.ibm.securerandom.provider.IBMSecureRandom
security.provider.13=com.ibm.crypto.provider.IBMJCE

Puis allez dans lib/ext et rajouté les jars que vous n'avez pas.
LIB_IBM.zip

C:\Program Files\Java\jre7\lib\ext>dir
 Le volume dans le lecteur C s'appelle SYSTEME
 Le numéro de série du volume est 442D-6687

 Répertoire de C:\Program Files\Java\jre7\lib\ext

01/04/2015  12:56              .
01/04/2015  12:56              ..
19/03/2015  18:01           226 048 access-bridge.jar
24/03/2015  17:59         2 902 942 bcprov-jdk15on-152.jar
19/03/2015  18:01             8 934 dnsns.jar
26/10/2014  06:08           581 057 ibmcertpathprovider.jar
20/03/2015  11:23           211 945 ibmcmsprovider.jar
20/03/2015  11:23           372 479 ibmjcefips.jar
20/03/2015  11:23           114 128 ibmjcefw.jar
20/03/2015  11:23         1 469 957 ibmjceprovider.jar
20/03/2015  11:23           454 257 ibmjsseprovider2.jar
20/03/2015  11:23         1 195 128 ibmpkcs.jar
20/03/2015  11:23           388 688 ibmpkcs11impl.jar
24/04/2013  15:45            20 030 IBMSecureRandom.jar
19/03/2015  18:01            43 595 jaccess.jar
19/03/2015  18:01         1 015 157 localedata.jar
19/03/2015  18:01               829 meta-index
19/03/2015  18:01            15 930 sunec.jar
19/03/2015  18:01           198 406 sunjce_provider.jar
19/03/2015  18:01            31 111 sunmscapi.jar
19/03/2015  18:01           238 785 sunpkcs11.jar
19/03/2015  18:01            68 761 zipfs.jar
              20 fichier(s)        9 558 167 octets
               2 Rép(s)  165 785 116 672 octets libres

C:\Program Files\Java\jre7\lib\ext>


6. Test


Nous allons maintenant tester l'ensemble des chapitres.

6.1 - Test avec l'url


Taper l'url de votre application.
http://localhost:8080/MQCentralWeb/MQCentralClusterSSL.jsp