La configuración de JMS TIBCO con la primavera
Pregunta
Ahora tengo java código que comienza TIBCO JMS suscripción con varios pasos:
Properties props = new Properties();
props.put("java.naming.provider.url", namingProvider);
props.put("java.naming.factory.initial", namingFactory);
props.put("java.naming.referral", namingReferral);
props.put("java.naming.security.credentials", securityCredentials);
props.put("java.naming.security.principal", securityPrincipal);
context = new InitialContext(props);
TopicConnectionFactory tfactory = (TopicConnectionFactory) context
.lookup(url + topic + ":tcf");
topicConnection = tfactory.createTopicConnection(user, password);
topicConnection.setExceptionListener(exceptionListener);
topicSession = topicConnection.createTopicSession(false,
Session.AUTO_ACKNOWLEDGE);
subscriber = topicSession.createSubscriber(
(Topic) context.lookup(url + topic + ":topic"),
SELECTOR, true);
subscriber.setMessageListener(messageListener);
topicConnection.start();
Quiero usar un muelle para la inicialización, pero no puedo encontrar la manera de configurar JMS en primavera utilizando contexto inicial. ¿Me pueden ayudar con esto? Gracias!
Solución
Se puede intentar algo como esto para conseguir TopicConnectionFactory:
<bean id="tfactory" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="url/topic:tcf"/>
<property name="jndiEnvironment">
<props>
<prop key="java.naming.provider.url">...</prop>
<prop key="java.naming.factory.initial">...</prop>
<prop key="java.naming.referral">...</prop>
<prop key="java.naming.security.credentials">...</prop>
<prop key="java.naming.security.principal">...</prop>
</props>
</property>
</bean>
Otros consejos
Amigos buen día,
Paso 1:
Al día de hoy tienes que estar registrado para utilizar https://download.tibco.com/tibco .
Se puede descargar una prueba del SEM en http://tap.tibco.com/storefront/trialware/tibco-enterprise- mensaje de servicio / prod15032.html . Una vez que instale el juicio, los frascos estarán en el ems directorio / 8,0 / lib.
Paso 2:
archivos jar Tibco no están disponibles @ Maven repositorio.
Reunir todos los archivos JAR de TIBCO TIBCO EMS instalables.
- jms.jar - Disponibles @ Maven repo
- tibjms.jar
- tibcrypt.jar (Para SSL)
- tibemsd_sec.jar
- tibjms.jar
- tibjmsadmin.jar
- tibjmsapps.jar
- tibjmsufo.jar
- tibrvjms.jar
- primavera-jms.jar - Disponibles @ Maven repo
Ejecutar a continuación comando desde el símbolo del sistema para incluir frascos TIBCO en el repositorio Maven local.
Paso 3:
Comandos:
mvn instalar: instalar archivos -DgroupId = javax.jms -DartifactId = JMS -Dversion = 1,1 -Dpackaging = frasco -dfile = jms.jar MVN instalar: instalar archivos -DgroupId = com.tibco -DartifactId = tibcrypt -Dversion = 5.1.0 -Dpackaging = frasco -dfile = tibcrypt.jar MVN instalar: instalar archivos -DgroupId = com.tibco -DartifactId = tibemsd_sec -Dversion = 5.1.0 -Dpackaging = frasco -dfile = tibemsd_sec.jar MVN instalar: instalar archivos -DgroupId = com.tibco -DartifactId = tibjms -Dversion = 5.1.0 -Dpackaging = frasco -dfile = tibjms.jar MVN instalar: instalar archivos -DgroupId = com.tibco -DartifactId = tibjmsadmin -Dversion = 5.1.0 -Dpackaging = frasco -dfile = tibjmsadmin.jar MVN instalar: instalar archivos -DgroupId = com.tibco -DartifactId = tibjmsapps -Dversion = 5.1.0 -Dpackaging = frasco -dfile = tibjmsapps.jar MVN instalar: instalar archivos -DgroupId = com.tibco -DartifactId = tibjmsufo -Dversion = 5.1.0 -Dpackaging = frasco -dfile = tibjmsufo.jar MVN instalar: instalar archivos -DgroupId = com.tibco -DartifactId = tibrvjms -Dversion = 5.1.0 -Dpackaging = frasco -dfile = tibrvjms.jar
Maven Dependencias para TIBCO EMS. Agregarlo en que .pom dependencias de los archivos
<!-- Tibco EMS Start -->
<dependency>
<groupId>javax.jms</groupId>
<artifactId>jms</artifactId>
<version>1.1</version>
</dependency>
<dependency>
<groupId>com.tibco</groupId>
<artifactId>tibcrypt</artifactId>
<version>5.1.0</version>
</dependency>
<dependency>
<groupId>com.tibco</groupId>
<artifactId>tibemsd_sec</artifactId>
<version>5.1.0</version>
</dependency>
<dependency>
<groupId>com.tibco</groupId>
<artifactId>tibjms</artifactId>
<version>5.1.0</version>
</dependency>
<dependency>
<groupId>com.tibco</groupId>
<artifactId>tibjmsadmin</artifactId>
<version>5.1.0</version>
</dependency>
<dependency>
<groupId>com.tibco</groupId>
<artifactId>tibjmsapps</artifactId>
<version>5.1.0</version>
</dependency>
<dependency>
<groupId>com.tibco</groupId>
<artifactId>tibjmsufo</artifactId>
<version>5.1.0</version>
</dependency>
<dependency>
<groupId>com.tibco</groupId>
<artifactId>tibrvjms</artifactId>
<version>5.1.0</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jms</artifactId>
<version>3.2.4.RELEASE</version>
</dependency>
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>2.6</version>
</dependency>
<!-- Tibco EMS End -->
Se muestra el archivo de configuración de la primavera de TIBCO.
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context"
xmlns:jee="http://www.springframework.org/schema/jee" xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:task="http://www.springframework.org/schema/task"
xsi:schemaLocation="
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd
http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.1.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd
http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.1.xsd">
<context:annotation-config />
<context:property-placeholder
location="file:${user.home}/config.properties"
ignore-resource-not-found="true" system-properties-mode="OVERRIDE" />
<context:component-scan base-package="com.mycompany.ems" />
<bean id="jndiTemplate" class="org.springframework.jndi.JndiTemplate">
<property name="environment">
<props>
<prop key="java.naming.factory.initial">com.tibco.tibjms.naming.TibjmsInitialContextFactory</prop>
<prop key="java.naming.provider.url">tcp://xx.xx.xx.xx:xxxx</prop> <!--dynamic depending on your project-->
</props>
</property>
</bean>
<bean id="jmsConnectionFactory" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiTemplate" ref="jndiTemplate" />
<property name="jndiName" value="QueueConnectionFactory" />
</bean>
<bean id="jmsDestinationResolver"
class="org.springframework.jms.support.destination.JndiDestinationResolver">
<property name="jndiTemplate" ref="jndiTemplate" />
<property name="cache" value="true" />
</bean>
<bean id="destination" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiTemplate" ref="jndiTemplate" />
<property name="jndiName" value="xxxxxx" /> <!--dynamic depending on your project-->
</bean>
<bean id="authenticationConnectionFactory"
class="org.springframework.jms.connection.UserCredentialsConnectionFactoryAdapter">
<property name="targetConnectionFactory" ref="jmsConnectionFactory" />
<property name="username" value="xxxxxx" /> <!--dynamic depending on your project-->
<property name="password" value="xxxxxx" /> <!--dynamic depending on your project-->
</bean>
<bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
<property name="connectionFactory" ref="authenticationConnectionFactory" />
<property name="destinationResolver" ref="jmsDestinationResolver" />
<property name="defaultDestination" ref="destination" />
</bean>
<bean id="logger" class="com.mycompany.ems.Logger" />
Java Implementación del archivo
package com.mycompany.ems;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.Session;
import javax.jms.TextMessage;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jms.core.JmsTemplate;
import org.springframework.jms.core.MessageCreator;
import org.springframework.stereotype.Component;
/**
* @author Parthasarathy Balakrishnan
* @description sends tibco queue message from this class
*
*/
@Component
public class Logger{
private final static Logger logger = Logger
.getLogger(Logger .class);
private static JmsTemplate jmsTemplate;
/**
*
*/
public Logger() {
}
/**
* @param <T>
* @param args
* @author Parthasarathy Balakrishnan
*
*/
public static <T> void log(Class<T> clazz, Object message, Throwable t) {
try {
JMSSend("PROJECT_QUEUE_NAME", clazz, message, t);
logger.debug("Message Sent...");
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* @param Queue
* @param clazz
* @param message
* @param t
* @Description It uses org.springframework.jms.core.JmsTemplate to send JMS message to tibco Queue.
* @author Parthasarathy Balakrishnan
*/
static <T> void JMSSend(String Queue, final Class<T> clazz, final Object message,
final Throwable t) {
jmsTemplate.send(Queue, new MessageCreator() {
public Message createMessage(Session session) throws JMSException {
TextMessage sendMessage = session
.createTextMessage("<xml>send message</xml>");
return sendMessage;
}
});
}
/**
* @return
*/
public JmsTemplate getJmsTemplate() {
return jmsTemplate;
}
/**
* @param jmsTemplate
*/
@Autowired
public void setJmsTemplate(JmsTemplate jmsTemplate) {
BsfLogger.jmsTemplate = jmsTemplate;
}
}
Se está trabajando para mí, por favor de ping mí en caso de cualquier excepción.