1. 在Weblogic服务器上配置PTP消息目的

配置持久化:

Services-->Persistence Stores-->New(Create FileStore, Create JDBCStore) (Name: crazyit)

配置JMS服务器:

Services-->Messaging-->JMS Servers-->New(Name: crazyitServer; Directory: D:\domains\base_domain\crazyit)

配置JMS模块:

Services-->Messaging-->JMS Modules-->New(Name: CrazyitModule)

为JMS模块配置子部署:

Services-->Messaging-->JMS Modules--><Module Name>-->Subdeployments-->New(Name: my-sub)

向JMS模块添加资源:

Services-->Messaging-->JMS Modules--><Module Name>-->Configuration-->New-->Queue(Name: MessageQueue)

2. 编写PTP消息的生产者

NetBeans创建java project(JmsPTP) (MessageSender.java)

需要wlclient.jar, webservices.jar, wljmsclient.jar

package lee;

import java.util.Properties;
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.DeliveryMode;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.jms.TextMessage;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException; public class MessageSender {
public void sendMessage() throws NamingException, JMSException
{
//定义WebLogic默认连接工厂的JNDI
final String CONNECTION_FACTORY_JNDI = "weblogic.jms.ConnectionFactory"; //获取JNDI服务所需的Context
Context ctx = getInitialContext(); ConnectionFactory connFactory = (ConnectionFactory)ctx.lookup(CONNECTION_FACTORY_JNDI);
Destination dest = (Destination)ctx.lookup("MessageQueue");
Connection conn = connFactory.createConnection();
Session session = conn.createSession(false, Session.AUTO_ACKNOWLEDGE); MessageProducer sender = session.createProducer(dest);
sender.setDeliveryMode(DeliveryMode.PERSISTENT);
sender.setTimeToLive(20000); TextMessage msg = session.createTextMessage(); msg.setText("Hello");
sender.send(msg); msg.setText("Welcome to JMS");
sender.send(msg); session.close();
conn.close();
} private Context getInitialContext() {
final String INIT_FACTORY = "weblogic.jndi.WLInitialContextFactory";
final String SERVER_URL = "t3://localhost:7001";
Context ctx = null;
try
{
Properties props = new Properties();
props.put(Context.INITIAL_CONTEXT_FACTORY, INIT_FACTORY);
props.put(Context.PROVIDER_URL , SERVER_URL); ctx = new InitialContext(props);
}
catch(NamingException e)
{
System.err.println("不能连接WebLogic Server在:" + SERVER_URL);
e.printStackTrace();
}
return ctx;
} public static void main(String[] args) throws Exception
{
MessageSender sender = new MessageSender();
sender.sendMessage();
}
}

3. 编写PTP消息的同步接收者(SyncConsumer.java)

package lee;

import javax.jms.*;
import javax.naming.*;
import java.util.Properties; public class SyncConsumer {
public void receiveMessage() throws JMSException, NamingException {
//定义WebLogic默认连接工厂的JNDI
final String CONNECTION_FACTORY_JNDI = "weblogic.jms.ConnectionFactory"; //获取JNDI服务所需的Context
Context ctx = getInitialContext(); ConnectionFactory connFactory = (ConnectionFactory) ctx.lookup(CONNECTION_FACTORY_JNDI);
Destination dest = (Destination) ctx.lookup("MessageQueue"); Connection conn = connFactory.createConnection();
conn.start(); Session session = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
MessageConsumer receiver = session.createConsumer(dest); TextMessage msg = (TextMessage) receiver.receive();
System.out.println(msg);
System.out.println("同步接收到的消息:" + msg.getText()); session.close();
conn.close();
} //工具方法,用来获取命名服务的Context对象
private Context getInitialContext() {
// 参看(4)
} public static void main(String[] args) throws Exception {
SyncConsumer consumer = new SyncConsumer();
consumer.receiveMessage();
}
}

4. 编写PTP消息的异步接收者(AsyncConsumer.java)

package lee;

import javax.jms.*;
import javax.naming.*;
import java.util.Properties; //JMS异步消费者就是一个监听器,故实现MessageListener接口
public class AsyncConsumer implements MessageListener {
public AsyncConsumer() throws NamingException, JMSException, InterruptedException {
final String CONNECTION_FACTORY_JNDI = "weblogic.jms.ConnectionFactory"; Context ctx = getInitialContext(); ConnectionFactory connFactory = (ConnectionFactory) ctx.lookup(CONNECTION_FACTORY_JNDI);
Destination dest = (Destination) ctx.lookup("MessageQueue");
Connection conn = connFactory.createConnection(); conn.start(); Session session = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
MessageConsumer receiver = session.createConsumer(dest); receiver.setMessageListener(this);
Thread.sleep(20000); session.close();
conn.close();
} //实现消息监听器必须实现的方法。
public void onMessage(Message m) {
TextMessage msg = (TextMessage) m;
System.out.println(msg);
try {
System.out.println("异步接收的消息:" + msg.getText());
}
catch (JMSException ex) {
ex.printStackTrace();
}
} //工具方法,用来获取命名服务的Context对象
private Context getInitialContext() {
// 参看(4)
} public static void main(String[] args) throws Exception {
AsyncConsumer consumer = new AsyncConsumer();
}
}

JavaEE(4) - JMS实现企业PTP消息处理的更多相关文章

  1. JavaEE(5) - JMS实现企业Pub-Sub消息处理

    1. 在Weblogic服务器上配置Pub-Sub消息目的 向已有的JMS模块中添加消息主题: Services-->Messaging-->JMS Modules--><Mo ...

  2. JavaEE(7) - JMS消息事务和异常

    1. 使用事务性Session为消息增加事务(NetBeans创建java project: TxSession) MessageSender.java package lee; import jav ...

  3. JavaEE(6) - JMS消息选择和查看

    1. JMS消息的类型.消息头和消息属性 消息类型: StreamMessage MapMessage TextMessage ObjectMessage BytesMessage JMS消息中的消息 ...

  4. JavaEE Tutorials (5) - 运行企业bean示例

    5.1cart示例56 5.1.1业务接口57 5.1.2会话bean类57 5.1.3@Remove方法61 5.1.4辅助类61 5.1.5运行cart示例615.2一个单例会话bean示例:co ...

  5. JMS与MQ详解(有项目)

    <一>m2mGW项目 1.ActiveMQ概述     企业消息软件从80年代起就存在,它不只是一种应用间消息传递风格,也是一种集成风格.因此,消息传递可以满足应用间的通知和互相操作.但是 ...

  6. Welogic中的JMS

    WebLogic JMS 概述 企业消息传递系统使得应用程序能够通过消息的交换与其他系统之间进行通信.消息是包含协调不同应用程序之间通信所需信息的请求.报告和/或事 件.消息提供了提取级别,使您能够从 ...

  7. JMS介绍【转载】

    什么是JMS JMS(Java Message Service) 即Java消息服务.它提供标准的产生.发送.接收消息的接口简化企业 应用的开发.它是J2EE规范的一部分,定义的接口标准,针对不同的厂 ...

  8. JMS相关概念

    1.相关概念 1)JMS jms即Java消息服务(Java Message Service) 是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送消息 ...

  9. JMS异步消息机制

    企业消息系统 Java Message Service 是由 Sun Microsystems 开发的,它为 Java 程序提供一种访问 企业消息系统 的方法.在讨论 JMS 之前,我们分来析一下企业 ...

随机推荐

  1. mediator pattern

    20.4 中介者模式总结 中介者模式将一个网状的系统结构变成一个以中介者对象为中心的星形结构,在这个星型结构中,使用中介者对象与其他对象的一对多关系来取代原有对象之间的多对多关系.中介者模式在事件驱动 ...

  2. JavaScript获取路径

    JavaScript获取路径 1.设计源代码 <%@ page language="java" import="java.util.*" pageEnco ...

  3. eclipse-jee 配置tomcat7,解决404错误

    在eclipse的Servers窗口新建一个tomcat7,配置tomcat的安装路径,然后启动tomcat,访问http://localhost:8080/,但是报404错误,恼火!没有找到要访问的 ...

  4. js缓冲运动

    缓冲运动 现象:逐渐变慢,最后停止 原理:距离越远,速度越大 速度的计算方式: 1,速度由距离决定 2,速度=(目标值-当前值)/缩放系数 说明:速度为正负数时,也决定了物体移动的方向 示例:div缓 ...

  5. ubuntu下一个jboss-seam-2.2.2.Final/examples/build.xml:754: warning: &#39;includeantruntime&#39; was not set

    [javac] /home/huihui/app/jboss-seam-2.2.2.Final/examples/build.xml:754: warning: 'includeantruntime' ...

  6. MongoDB最新版本3.2.9下载地址

    https://downloads.mongodb.com/win32/mongodb-win32-x86_64-enterprise-windows-64-3.2.9.zip?_ga=1.22538 ...

  7. java提高篇(四)-----抽象类与接口

    接口和内部类为我们提供了一种将接口与实现分离的更加结构化的方法. 抽象类与接口是java语言中对抽象概念进行定义的两种机制,正是由于他们的存在才赋予java强大的面向对象的能力.他们两者之间对抽象概念 ...

  8. Java知多少(87)选择框和单选按钮(转)

    选择框.单选框和单选按钮都是选择组件,选择组件有两种状态,一种是选中(on),另一种是未选中(off),它们提供一种简单的 “on/off”选择功能,让用户在一组选择项目中作选择. 选择框 选择框(J ...

  9. RedHat Linux乱码解决方案(转)

    RedHat Linux中出现中文乱码主要是由于没有安装中文字体,因此解决方案主要是安装中文字体,所以 第一步,挂载安装的光盘 在虚拟机的菜单栏里,选择:VM->Settings,点击Setti ...

  10. 【剑指offer学习】求和为定值的两个数(拓展)

    接着上面一篇文章: http://blog.csdn.net/u013476464/article/details/40651451 接下来我们拓展一下题目,如果数组是乱序的,并且规定数组中的元素所有 ...