el tema aquí es el requisito de que "Mi jefe me pidió usar JMS Java puro (no ibm.mq lib) para hacer eso." JMS es una especificación y cada implementación debe cumplir con la API y la semántica, pero es libre de hacer lo que quiera en un nivel bajo. Siempre es necesario utilizar las clases de implementación proporcionadas por el proveedor de transporte. Por lo tanto, si usa WebSphere MQ como transporte, deberá usar las clases JMS de IBM MQ para escribir una aplicación JMS.
Dicho esto, si se atiene a las llamadas JMS API puras, podrá conectar las clases de cualquier proveedor de transporte.Esto es lo que generalmente se pretende cuando se le dan requisitos como el mencionado en la publicación original.
Hay un artículo que describe exactamente lo que está buscando hacer llamada Running a standalone Java application on WebSphere MQ V6.0 Sólo utiliza la API de JMS y JNDI utiliza en un sistema de archivos local (un archivo de .bindings). Al intercambiar las clases de IBM JMS por otro proveedor y utilizar sus herramientas JNDI, podrá conectar cualquier transporte JMS sin cambiar su código con este enfoque.
Si desea hacer lo mismo sin JNDI, mire los programas de muestra provistos con la instalación del cliente de MQ donde obtuvo sus clases de Java. En un sistema UNIX/Linux estos están en /opt/mqm/samp
y en Windows están en install_dir/tools/jms/samples
. La muestra SimpleRequestor.java
tiene el siguiente código para inicializar su fábrica de conexiones sin JNDI:
try {
// Create a connection factory
JmsFactoryFactory ff = JmsFactoryFactory.getInstance(WMQConstants.WMQ_PROVIDER);
JmsConnectionFactory cf = ff.createConnectionFactory();
// Set the properties
cf.setStringProperty(WMQConstants.WMQ_HOST_NAME, "localhost");
cf.setIntProperty(WMQConstants.WMQ_PORT, 1414);
cf.setStringProperty(WMQConstants.WMQ_CHANNEL, "SYSTEM.DEF.SVRCONN");
cf.setIntProperty(WMQConstants.WMQ_CONNECTION_MODE, WMQConstants.WMQ_CM_CLIENT);
cf.setStringProperty(WMQConstants.WMQ_QUEUE_MANAGER, "QM1");
Dado que este enfoque no utiliza JNDI, se le requiere para escribir código que no es transportable a través de los proveedores de transporte. Es específico de IBM WebSphere MQ.
Si agarrado los frascos MQ desde algún lugar y no tiene la instalación completa (y por lo tanto no tienen las muestras) se puede descargar como SupportPac MQC7. La descarga es gratis. En general, debe usar el último cliente, incluso con un administrador de cola de nivel posterior. Obviamente, usted no obtiene la funcionalidad V7 de un V6 QMgr, pero la implementación de JMS en el cliente V7 ha mejorado mucho, incluso para la funcionalidad V6. Si por alguna razón realmente debe usar el cliente V6, puede descargarlo como SupportPacMQC6. Cualquiera que sea la versión del cliente que use, asegúrese de usar el Infocenter correspondiente.
V6 Infocenter
V7 Infocenter
Por último, la página de destino con un índice de todos los SupportPacs es here.
Haga su código se ejecute dentro de WebSphere Application Server y luego se conecta a WebSphere MQ para la mensajería, o es su aplicación está sola y quiere conectarse a WebSphere MQ para ¿mensajería? –