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来创建Queue(队列)和TOPIC(主题)并进行消息的发送与接收。 ### 一、JMS基本概念 1. **Queue(队列)**:队列是一种点对点的消息传递模型,其中每个消息只会被一个消费者...
在本项目中,Spring与WebLogic JMS(Java消息服务)的集成展示了如何在Spring环境中使用消息队列进行通信。 WebLogic JMS是Oracle WebLogic Server提供的消息中间件,它遵循JMS规范,用于在分布式环境中传递消息,...
Weblogic JMS 依赖jar包是Oracle公司的中间件产品Weblogic Server中用于实现Java Message Service (JMS) 功能的关键组件。JMS是一种标准API,它允许应用程序在分布式环境中发送和接收消息,提供了异步通信的能力。在...
### 编程WebLogic JMS:深入理解与实践 #### 一、引言 随着企业级应用对消息处理的需求日益增长,Java消息服务(JMS)作为一种标准的消息中间件技术,已经成为开发分布式应用的重要组成部分。BEA WebLogic Server...
总之,配置 WebLogic JMS 服务器需要理解 JMS 的基本概念,熟练使用 WebLogic 管理控制台,并且根据实际业务需求调整相关参数。正确配置后,JMS 服务器能为你的应用程序提供可靠的异步通信和消息传递能力。
自己写好的一个简单的weblogic jms的简单实现,包括点对点的实现,以及topic的实现,适合初学者参考
`JmsController.java`文件很可能是应用的控制器,它使用JMS模板(`JmsTemplate`)发送消息到预定义的目标,或者处理来自消息队列的请求。`@Autowired`注解会注入配置好的JMS模板,然后通过`convertAndSend`或`send`...
本话题主要探讨如何在Spring框架下与WebLogic 9.2集成,实现JMS(Java Message Service)消息的发送。 首先,JMS是一种标准的API,用于在分布式环境中传递消息。通过JMS,应用可以在异步和解耦的方式下进行通信,...
JMS是一种在分布式环境中传递消息的标准API,它允许应用程序创建、发送、接收和读取消息。在WebLogic中配置JMS服务器是实现异步通信和解耦系统组件的关键步骤。 首先,我们要理解JMS服务器在WebLogic中的作用。JMS...
实现了jms的queue和topic,同时也实现了远程传送消息和本地传送消息,另外也分别实现了session的事务和非事务模式,有了这三个例子应该可以满足你的任何关于jms的需求了,由于上传限制,另外还需要下载有个WebLogic包...
WebLogic是Oracle公司的一款企业级应用服务器,它支持JMS规范,提供了强大的消息队列和发布/订阅功能。 **配置WebLogic JMS与Spring的步骤** 1. **安装和启动WebLogic Server**: 首先确保你已经安装并配置好...
WebLogic 9.2配置JMS(Java Message Service)涉及一系列步骤,主要目的是为了实现分布式消息传递,包括点对点的Queue模式和发布/订阅的Topic模式。在本例中,我们将专注于配置发布/订阅模式,即Topic。以下是详细的...
发送方使用JMS模板发送消息到队列,接收方通过消息监听容器实时监听队列,接收到消息后进行处理。这可以验证WebLogic、JMS和Spring的整合是否成功。 **总结:** WebLogic与JMS+Spring的整合利用了WebLogic的稳定性...
### WebLogic JMS:使用WebLogic JMS进行消息发送 #### 概述 在Java世界里,Java消息服务(Java Message Service,简称JMS)是一种与平台无关的API,用于在两个应用程序之间或分布式系统中的组件之间通过消息传递...
在WebLogic中,这通常涉及到JMS API的`ConnectionFactory`、`QueueConnectionFactory`、`Queue`、`MessageProducer`和`MessageConsumer`等接口的使用。 在实际应用中,JMS可以用来实现异步处理、负载均衡、系统间...
- **概念**:WebLogic JMS服务允许应用程序创建、发送、接收和存储消息。它支持点对点(P2P)和发布/订阅(Pub/Sub)两种消息模型。 - **组件**:主要包括队列(Queue)、主题(Topic)、消息生产者(Message ...
Spring 整合 Weblogic JMS 实例详解是指在 Spring 框架下整合 Weblogic JMS 服务器,以便在应用程序中使用 JMS messaging。这种整合方式可以提供高性能、可靠性和灵活性的消息传递机制。 JMS 服务器配置是 Spring ...
WebLogic的JMS服务提供可靠的、可扩展的消息传递功能,包括点对点(Point-to-Point)和发布/订阅(Publish/Subscribe)两种模型。 在WebLogic中配置JMS服务通常包括以下步骤: 1. **创建JMS模块**:在WebLogic管理...