質問
今、私はいくつかのステップでTIBCO JMSサブスクリプションを開始するJavaコードを持っています:
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();
初期化にはSpringを使用したいのですが、初期コンテキストを使用してSpringでJMSを構成する方法が見つかりません。あなたはそれを手伝ってくれませんか?ありがとう!
解決
このようなことを試して、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>
他のヒント
良い日の友達、
ステップ1:
今日の時点で使用するには登録する必要があります https://download.tibco.com/tibco.
EMSのトライアルをダウンロードできますhttp://tap.tibco.com/storefront/trialware/tibco-enterprise-message-service/prod15032.html. 。トライアルをインストールすると、ジャーは EMS/8.0/lib ディレクトリ。
ステップ2:
TIBCO JARファイルは @ Mavenリポジトリで利用できません。
Tibco ems installablesからすべてのTIBCO JARファイルを収集します。
- Jms.jar- @ Maven Repoを利用可能
- tibjms.jar
- tibcrypt.jar(SSL用)
- tibemsd_sec.jar
- tibjms.jar
- tibjmsadmin.jar
- tibjmsapps.jar
- tibjmsufo.jar
- tibrvjms.jar
- spring -jms.jar- @ Maven Repoを利用可能
コマンドプロンプトから以下のコマンドを実行して、TIBCOジャーをローカルMavenリポジトリに含める。
ステップ3:
コマンド:
MVNインストール:install -file -dgroupid = javax.jms -dartifactid = jms -dversion = 1.1 -dpackaging = jar -dfile = jms.jar mvnインストール:install -file -dgroupid = com.tibco -dartifactid = tibcrypt -dversion = 5.1 .0 -dpackaging = jar -dfile = tibcrypt.jar mvn install:install -file -dgroupid = com.tibco -dartifactid = tibemsd_sec -dversion = 5.1.0 -dpackaging = jar -dfile = tibemsd_sec.jar mvn:インストールインストール-dgroupid = com.tibco -dartifactid = tibjms -dversion = 5.1.0 -dpackaging = jar -dfile = tibjms.jar mvnインストール:install -file -dgroupid = com.tibco -dartifactid = tibjmsadmin -dversion = 5.1.0 -dpackaging = jar -dfile = tibjmsadmin.jar mvnインストール:install -file -dgroupid = com.tibco -dartifactid = tibjmsapps -dversion = 5.1.0 -dpackaging = jar -dfile = tibjmsapps.jar mvnインストール:インストール-file -dgroupid = com .tibco -dartifactid = tibjmsufo -dversion = 5.1.0 -dpackaging = jar -dfile = tibjmsufo.jar mvn install:install -file -dgroupid = com.tibco -dartifactid = tibrvjms -dversion = 5.1.0 -dpackaging = jar -dfile = tibrvjms.jar
Tibco EMSのMaven依存関係。 .pomファイル依存関係に追加します
<!-- 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 -->
示されているのは、TIBCO Configのスプリングファイルです。
<?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ファイルの実装
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;
}
}
それは私のために働いています、例外がある場合に私をpingしてください。