Java 使用Spring配置tibcojms

Java 使用Spring配置tibcojms,java,spring,jms,tibco,Java,Spring,Jms,Tibco,现在我有了java代码,它通过几个步骤启动tibco jms订阅: Properties props = new Properties(); props.put("java.naming.provider.url", namingProvider); props.put("java.naming.factory.initial", namingFactory); props.put("java.naming.referral", namingRef

现在我有了java代码,它通过几个步骤启动tibco jms订阅:

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步:

从今天起,您必须注册才能使用

您可以在以下网址下载EMS试用版: . 安装试用版后,JAR将位于ems/8.0/lib目录中

第二步:

Tibco jar文件在Maven Repository不可用。

从tibco ems可安装文件中收集所有tibco jar文件

  • jms.jar-可在Maven回购中使用
  • tibjms.jar
  • tibcrypt.jar(用于SSL)
  • 蒂贝姆斯德(tibemsd_sec.jar)
  • tibjms.jar
  • tibjmsadmin.jar
  • tibjmsapps.jar
  • tibjmsufo.jar
  • tibrvjms.jar
  • spring-jms.jar-在Maven repo可用
  • 在命令提示符下执行以下命令,将tibco JAR包含到本地maven存储库中

    第三步:

    命令:

    mvn安装:安装文件-DgroupId=javax.jms-DartifactId=jms-Dversion=1.1-dpackage=jar-Dfile=jms.jar mvn安装:安装文件-DgroupId=com.tibco-DartifactId=tibcrypt-Dversion=5.1.0-dpacking=jar-Dfile=tibcrypt.jar mvn安装:安装文件-DgroupId=com.tibco-DartifactId=tibemsd_sec-Dversion=5.1.0-dpackage=jar-Dfile=tibemsd_sec.jar mvn安装:安装文件-DgroupId=com.tibco-DartifactId=tibjms-Dversion=5.1.0-dpacking=jar-Dfile=tibjms.jar mvn安装:安装文件-DgroupId=com.tibco-DartifactId=tibjmsadmin-Dversion=5.1.0-dpacking=jar-Dfile=tibjmsadmin.jar mvn安装:安装文件-DgroupId=com.tibco-DartifactId=tibjmsapps-Dversion=5.1.0-dpackage=jar-Dfile=tibjmsapps.jar mvn安装:安装文件-DgroupId=com.tibco-DartifactId=tibjmsufo-Dversion=5.1.0-dpackage=jar-Dfile=tibjmsufo.jar mvn安装:安装文件-DgroupId=com.tibco-DartifactId=tibrvjms-Dversion=5.1.0-dpacking=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 -->
    
    
    javax.jms
    jms
    1.1
    com.tibco
    藏穴
    5.1.0
    com.tibco
    提比穆斯第
    5.1.0
    com.tibco
    提比姆
    5.1.0
    com.tibco
    蒂布姆萨明
    5.1.0
    com.tibco
    蒂布姆萨普斯
    5.1.0
    com.tibco
    提布姆苏福
    5.1.0
    com.tibco
    tibrvjms
    5.1.0
    org.springframework
    SpringJMS
    3.2.4.1发布
    公地郎
    公地郎
    2.6
    
    显示的是tibco配置的Spring文件。


    
    com.tibco.tibjms.naming.TibjmsInitialContextFactory
    tcp://xx.xx.xx.xx:xxxx 
    

    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;
        }
    
    }
    
    package com.mycompany.ems;
    导入javax.jms.jmsception;
    导入javax.jms.Message;
    导入javax.jms.Session;
    导入javax.jms.TextMessage;
    导入org.apache.log4j.Logger;
    导入org.springframework.beans.factory.annotation.Autowired;
    导入org.springframework.jms.core.JmsTemplate;
    导入org.springframework.jms.core.MessageCreator;
    导入org.springframework.stereotype.Component;
    /**
    *@作者Parthasarathy Balakrishnan
    *@description从此类发送tibco队列消息
    *
    */
    @组成部分
    公共类记录器{
    专用最终静态记录器=记录器
    .getLogger(Logger.class);
    私有静态JmsTemplate JmsTemplate;
    /**
    * 
    */
    公共记录器(){
    }
    /**
    *@param
    *@param args
    *@作者Parthasarathy Balakrishnan
    * 
    */
    公共静态无效日志(类clazz、对象消息、可丢弃的t){
    试一试{
    JMSSend(“项目队列名称”,clazz,message,t);
    调试(“消息已发送…”);
    }捕获(例外e){
    e、 printStackTrace();
    }
    }
    /**
    *@param队列
    *@param-clazz
    *@param消息
    *@param t
    *@Description它使用org.springframework.jms.core.JmsTemplate向tibco队列发送jms消息。
    *@作者Parthasarathy Balakrishnan
    */
    静态void JMSSend(字符串队列、最终类clazz、最终对象消息、,
    最终可丢弃量(t){
    发送(队列,newmessagecreator()){
    公共消息createMessage(会话)引发JMSExException{
    TextMessage sendMessage=会话
    .createTextMessage(“发送消息”);
    返回发送消息;
    }
    });
    }
    /**
    *@返回
    */
    公共JmsTemplate getJmsTemplate(){
    返回jmsTemplate;
    }
    /**
    *@param jmsTemplate
    */
    @自动连线
    public void setJmsTemplate(JmsTemplate JmsTemplate){
    BsfLogger.jmsTemplate=jmsTemplate;
    }
    }
    

    它对我有效,如果有任何异常,请给我打电话。

    您看过文档了吗?如何调用ems消息sender请查看Logger.javaWorks类中的JMSSend方法。。。但是因为我们是在上下文文件中配置队列,所以没有必要将其作为参数值发送,对吗?!
    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;
        }
    
    }