`

使用weblogic jms定时发送的功能列子(转)

    博客分类:
  • ejb
阅读更多
package com.sourceware.sms.platform.jms;

import javax.jms.*;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import com.sourceware.sms.SMS;
import org.apache.log4j.Logger;

/**
* <p>标题: 短信平台</p>
* <p>描述: 短信平台以及相关业务。</p>
* <p>版权: 宁波友科软件有限公司 Copyright (c) 2004</p>
* <p>公司: 宁波友科软件有限公司</p>
* @author 吴锋彬(woowind@sina.com)
* @version 1.0
*/

public class JMSQueueSend {

  Logger logger = Logger.getLogger(JMSQueueSend.class);
  public JMSQueueSend() {
  }

  public final static String JNDI_FACTORY = "weblogic.jndi.WLInitialContextFactory";
  private static String JMS_FACTORY = "JNDI_JMS_Connection_Factory";
  private static String QUEUE = null;

  private QueueConnectionFactory qconFactory;
  private QueueConnection qcon;
  private weblogic.jms.extensions.WLQueueSession qsession;
  private weblogic.jms.client.JMSProducer qsender;
  private Queue queue;
  private ObjectMessage msg;

  /**
   * Creates all the necessary objects for sending
   * messages to a JMS queue.
   *
   * @param ctx JNDI initial context
   * @param queueName name of queue
   * @exception NamingException if operation cannot be performed
   * @exception JMSException if JMS fails to initialize due to internal error
   */
  void init(Context ctx, String queueName) throws NamingException, JMSException {
    qconFactory = (QueueConnectionFactory) ctx.lookup(JMS_FACTORY);

    qcon = qconFactory.createQueueConnection();

    qsession = (weblogic.jms.extensions.WLQueueSession) qcon.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);

    queue = (Queue) ctx.lookup(queueName);

    qsender = (weblogic.jms.client.JMSProducer) qsession.createSender(queue);

    msg = qsession.createObjectMessage();
    logger.debug(qconFactory + "["
                       + qcon.getClass().getName()
                       + "]"
                       + "["
                       + qsession.getClass().getName()
                       + "]"
                       + "["
                       + qsender.getClass().getName()
                       + "]"
                       + "["
                       + msg.getClass().getName()
                       + "]");

    qcon.start();
  }

  /**
   * Closes JMS objects.
   * @exception JMSException if JMS fails to close objects due to internal error
   */
  void close() throws JMSException {
    qsender.close();
    qsession.close();
    qcon.close();
  }

  /**
   *
   * @param SMS SMS
   * @throws Exception
   */
  public void sendMO(SMS sms) throws Exception {
    InitialContext ic = new InitialContext();
    init(ic, "JNDI_CMW_SMS_MO_QUEUE");
    msg.setJMSExpiration(sms.getExpiration());
    msg.setJMSMessageID(new Long(sms.getMessageID()).toString());
    long time2Deliver = sms.getSheduleTime().getTime() - System.currentTimeMillis();
    if (time2Deliver > 0) {
      qsender.setTimeToDeliver(time2Deliver);//定时
    }

    msg.setObject(sms);
    msg.setJMSPriority(sms.getPriority());
    qsender.send(msg);
    this.close();

  }

  /**
   *
   * @param SMS SMS
   * @throws Exception
   */
  public void sendMT(SMS sms) throws Exception {
   
    InitialContext ic = new InitialContext();
    init(ic, "JNDI_CMW_SMS_MT_QUEUE");
    msg.setJMSExpiration(sms.getExpiration());
    msg.setJMSMessageID(new Long(sms.getMessageID()).toString());
    long time2Deliver = sms.getSheduleTime().getTime() - System.currentTimeMillis();
    if (time2Deliver > 0) {
      qsender.setTimeToDeliver(time2Deliver);
    }
    msg.setObject(sms);
    msg.setJMSPriority(sms.getPriority());
    qsender.send(msg);
    this.close();

  }

  /**
   *
   * @param sms SMS
   * @param jndiName String
   * @throws Exception
   */
  public void send(SMS sms, String jndiName) throws Exception {
    InitialContext ic = new InitialContext();
    init(ic, jndiName);
    msg.setJMSExpiration(sms.getExpiration());
    msg.setJMSMessageID(new Long(sms.getMessageID()).toString());
    long time2Deliver = sms.getSheduleTime().getTime() - System.currentTimeMillis();
    if (time2Deliver > 0) {
      qsender.setTimeToDeliver(time2Deliver);
    }

    msg.setObject(sms);
    msg.setJMSPriority(sms.getPriority());
    qsender.send(msg);
    this.close();

  }
}


分享到:
评论

相关推荐

    weblogic中使用JMS发送和接受消息

    本文将详细介绍如何在WebLogic中使用JMS来创建Queue(队列)和TOPIC(主题)并进行消息的发送与接收。 ### 一、JMS基本概念 1. **Queue(队列)**:队列是一种点对点的消息传递模型,其中每个消息只会被一个消费者...

    Spring+Weblogic JMS

    在本项目中,Spring与WebLogic JMS(Java消息服务)的集成展示了如何在Spring环境中使用消息队列进行通信。 WebLogic JMS是Oracle WebLogic Server提供的消息中间件,它遵循JMS规范,用于在分布式环境中传递消息,...

    Weblogic JMS 依赖jar包下载

    Weblogic JMS 依赖jar包是Oracle公司的中间件产品Weblogic Server中用于实现Java Message Service (JMS) 功能的关键组件。JMS是一种标准API,它允许应用程序在分布式环境中发送和接收消息,提供了异步通信的能力。在...

    Programming WebLogic JMS

    ### 编程WebLogic JMS:深入理解与实践 #### 一、引言 随着企业级应用对消息处理的需求日益增长,Java消息服务(JMS)作为一种标准的消息中间件技术,已经成为开发分布式应用的重要组成部分。BEA WebLogic Server...

    weblogic_jms服务器配置

    总之,配置 WebLogic JMS 服务器需要理解 JMS 的基本概念,熟练使用 WebLogic 管理控制台,并且根据实际业务需求调整相关参数。正确配置后,JMS 服务器能为你的应用程序提供可靠的异步通信和消息传递能力。

    java weblogic jms temple

    自己写好的一个简单的weblogic jms的简单实现,包括点对点的实现,以及topic的实现,适合初学者参考

    springboot集成weblogic的jms源码.zip

    `JmsController.java`文件很可能是应用的控制器,它使用JMS模板(`JmsTemplate`)发送消息到预定义的目标,或者处理来自消息队列的请求。`@Autowired`注解会注入配置好的JMS模板,然后通过`convertAndSend`或`send`...

    Spring+weblogic9.2发送JMS消息

    本话题主要探讨如何在Spring框架下与WebLogic 9.2集成,实现JMS(Java Message Service)消息的发送。 首先,JMS是一种标准的API,用于在分布式环境中传递消息。通过JMS,应用可以在异步和解耦的方式下进行通信,...

    Weblogic创建JMS服务器

    JMS是一种在分布式环境中传递消息的标准API,它允许应用程序创建、发送、接收和读取消息。在WebLogic中配置JMS服务器是实现异步通信和解耦系统组件的关键步骤。 首先,我们要理解JMS服务器在WebLogic中的作用。JMS...

    WebLogic jms三个实例

    实现了jms的queue和topic,同时也实现了远程传送消息和本地传送消息,另外也分别实现了session的事务和非事务模式,有了这三个例子应该可以满足你的任何关于jms的需求了,由于上传限制,另外还需要下载有个WebLogic包...

    spring,weblogic配置jms

    WebLogic是Oracle公司的一款企业级应用服务器,它支持JMS规范,提供了强大的消息队列和发布/订阅功能。 **配置WebLogic JMS与Spring的步骤** 1. **安装和启动WebLogic Server**: 首先确保你已经安装并配置好...

    webLogic9.2配置JMS步骤

    WebLogic 9.2配置JMS(Java Message Service)涉及一系列步骤,主要目的是为了实现分布式消息传递,包括点对点的Queue模式和发布/订阅的Topic模式。在本例中,我们将专注于配置发布/订阅模式,即Topic。以下是详细的...

    weblogic jms

    ### WebLogic JMS:使用WebLogic JMS进行消息发送 #### 概述 在Java世界里,Java消息服务(Java Message Service,简称JMS)是一种与平台无关的API,用于在两个应用程序之间或分布式系统中的组件之间通过消息传递...

    JMS经典实例 基于weblogic

    在WebLogic中,这通常涉及到JMS API的`ConnectionFactory`、`QueueConnectionFactory`、`Queue`、`MessageProducer`和`MessageConsumer`等接口的使用。 在实际应用中,JMS可以用来实现异步处理、负载均衡、系统间...

    Weblogic_JMS+配置数据源配置

    - **概念**:WebLogic JMS服务允许应用程序创建、发送、接收和存储消息。它支持点对点(P2P)和发布/订阅(Pub/Sub)两种消息模型。 - **组件**:主要包括队列(Queue)、主题(Topic)、消息生产者(Message ...

    Spring整合Weblogic jms实例详解

    Spring 整合 Weblogic JMS 实例详解是指在 Spring 框架下整合 Weblogic JMS 服务器,以便在应用程序中使用 JMS messaging。这种整合方式可以提供高性能、可靠性和灵活性的消息传递机制。 JMS 服务器配置是 Spring ...

    Weblogic环境下JMS配置

    5. 部署JMS资源:将创建的JMS资源部署到WebLogic域中,以便应用程序能够使用它们。 6. 编写应用程序代码:在Java代码中,我们需要使用JMS API来发送和接收消息。例如,使用`ConnectionFactory`创建连接,然后创建...

Global site tag (gtag.js) - Google Analytics