`
6246850
  • 浏览: 7428 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
最近访客 更多访客>>
社区版块
存档分类
最新评论

JMS接收消息实例

    博客分类:
  • Ejb
阅读更多
package com.eway.jms;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import javax.jms.JMSException;
import javax.jms.ObjectMessage;
import javax.jms.Queue;
import javax.jms.QueueConnection;
import javax.jms.QueueConnectionFactory;
import javax.jms.QueueSender;
import javax.jms.QueueSession;
import javax.jms.Session;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;

import com.eway.pojo.Inhospitaldata;
import com.eway.util.Propertie;

/**
*
* @author yanghui
* @2009-07-03
* @消息发送
*
*/
public class QMProducer {
/**
* 定义JNDI上下文构造器
*/
public final static String JNDI_FACTORY = "weblogic.jndi.WLInitialContextFactory";
/**
* 定义JMS上下文构造器
*/
public final static String JMS_FACTORY = "jms/QueueConnectionFactory";
/***************************************************************************
* 定义消息列队
*/
public final static String QUEUE = "jms/fileQueue";
// 声明队列连接构造器
private QueueConnectionFactory queueConnectionFactory = null;
// 声明队列连接
private QueueConnection queueConnection = null;
// 声明队列会话
private QueueSession queueSession = null;
// 声明队列发送
private QueueSender queueSender = null;
// 声明队列
private Queue queue = null;
// 声明发送对象方式
private ObjectMessage msg = null;

public void init(Context ctx, String queueName) {
   try {
    queueConnectionFactory = (QueueConnectionFactory) ctx
      .lookup(JMS_FACTORY);
    queueConnection = queueConnectionFactory.createQueueConnection();
    queueSession = queueConnection.createQueueSession(false,
      Session.AUTO_ACKNOWLEDGE);
    queue = (Queue) ctx.lookup(queueName);
    queueSender = queueSession.createSender(queue);
    msg = queueSession.createObjectMessage();
    queueConnection.start();
   } catch (NamingException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   } catch (JMSException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
}

public void send(List<Inhospitaldata> message) throws JMSException {

   msg.setObject((Serializable) message);
   queueSender.send(msg);

}

public void close() throws JMSException {
   queueSender.close();
   queueSession.close();
   queueConnection.close();
}

public void sendInfo(List<Inhospitaldata> inhospitaldataList) {
   try {

    System.setProperty(Context.INITIAL_CONTEXT_FACTORY, JNDI_FACTORY);
    System.setProperty(Context.PROVIDER_URL, Propertie.getPropertie()
      .getProperty("provider"));
    Context context = new InitialContext();
    init(context, QUEUE);
    send(inhospitaldataList);

   } catch (NamingException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   } catch (JMSException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   } finally {
    try {
     close();
    } catch (JMSException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
    }
   }
}

public static void main(String[] args) {
   QMProducer producer = new QMProducer();
   Inhospitaldata inhospitaldata = new Inhospitaldata();
   inhospitaldata.setXm("yanghui131");
   List<Inhospitaldata> list = new ArrayList<Inhospitaldata>();
   list.add(inhospitaldata);
   producer.sendInfo(list);
   System.out.println("发送成功");
}
}
分享到:
评论
47 楼 曾经地迷茫 2009-01-07  
第2题参考:
String test = "Wo  jiao cong yang yang";
Map<Character, Integer> map = new TreeMap<Character, Integer>();
for(Character ch : test.toCharArray())
map.put(ch, map.get(ch)==null? 1 :map.get(ch)+1);
System.out.println(map);
46 楼 hurricane1026 2008-10-26  
taupo 写道
第一题可以用快速排序嘛,O(nlogn)。如果字母少的话,其实那种算法都一样

nlogn很牛?
45 楼 taupo 2008-10-25  
第一题可以用快速排序嘛,O(nlogn)。如果字母少的话,其实那种算法都一样
44 楼 javaboy2006 2008-10-25  
malk 写道
javaboy2006 写道



下面的方法应该更快。
supercrsky 写道
第2题:
public static void count(String str)
	{
		// 用于存储a-z出现的次数
		int[] nums = new int[26];
		for (char i : str.toCharArray())
		{
			// 在字母的范围内
			if (i >= 97 && i <= 123)
			{
				nums[i - 97]++;
			}

		}

		for (int i = 0; i < nums.length; i++)
		{
			// 只显示出现的
			if (nums[i] != 0)
			{
				System.out.println((char) (97 + i) + ":" + nums[i]);
			}
		}
	}


我到是觉得这个只看第二题来说效率最高,只不过是有大写字母和其他字符就不好办了,如果排序的话也就顺便把第一题也做了

数组的访问应该是最快的。第二题的题目只给出了:wo jiao shenzhen,没有出现大写字符,按照题目的要求来就行。
43 楼 malk 2008-10-24  
这种分段排序倒是不错
42 楼 hurricane1026 2008-10-24  
malk 写道
楼上赐教一个效率高的算法吧,正好学习学习。

第一题,counting sort,不懂去introduction to algorithms,或者google。
第二题,还是counting sort的一部分,就是你上面comment的那段就差不多了
41 楼 malk 2008-10-24  
楼上赐教一个效率高的算法吧,正好学习学习。
40 楼 hurricane1026 2008-10-24  
世界上只有一种排序叫冒泡么?
第一题的复杂度是O(n),第二题也是,你顺手一起做了,结果是O(nlogn),恭喜你啊。效率真高。
39 楼 malk 2008-10-24  
javaboy2006 写道



下面的方法应该更快。
supercrsky 写道
第2题:
public static void count(String str)
	{
		// 用于存储a-z出现的次数
		int[] nums = new int[26];
		for (char i : str.toCharArray())
		{
			// 在字母的范围内
			if (i >= 97 && i <= 123)
			{
				nums[i - 97]++;
			}

		}

		for (int i = 0; i < nums.length; i++)
		{
			// 只显示出现的
			if (nums[i] != 0)
			{
				System.out.println((char) (97 + i) + ":" + nums[i]);
			}
		}
	}


我到是觉得这个只看第二题来说效率最高,只不过是有大写字母和其他字符就不好办了,如果排序的话也就顺便把第一题也做了
38 楼 hurricane1026 2008-10-24  
恭喜你,你成功的吧O(nlogn)的时间复杂度提高到O(n^2)
把quicksort变成了bubblesort,你再想想,这个东西需要排序么?
37 楼 malk 2008-10-24  
楼上是意思是不是这样?
   public static void main(String[] args) {
		String s = "wo jiao shenzhen ";
		char[] chars = s.toCharArray();
		char[] chars1 = null;
		//排序
		for (int i = 0; i < chars.length; ++i) {
			char temp;
			for (int j = 0; j < chars.length - i - 1; ++j) {
				if (chars[j] > chars[j + 1]) {
					temp = chars[j];
					chars[j] = chars[j + 1];
					chars[j + 1] = temp;
				}
			}
		}
		//去除空格
		for (int i = 0; i < chars.length; i++) {
			if (chars[i] != ' ') {
				chars1 = new char[chars.length - i];
				System.arraycopy(chars, i, chars1, 0, chars1.length);
				break;
			}
		}
        //计数
		for (int i = 0, j = 1; i < chars1.length; i++) {
			char a = chars1[i];
			if (i != chars1.length - 1 && chars1[i + 1] != a) {
				System.out.println(a + "(" + j + ")");
				j = 1;
			} else {
				j++;
			}
		}
	}
36 楼 hurricane1026 2008-10-24  
malk 写道
看看这个,第二题
   public static void main(String[] args) {
		String s = "wo jiao shenzhen ";
		char[] chars = s.toCharArray();
		char[] chars1 = null;
		Arrays.sort(chars);
		for (int i = 0; i < chars.length; i++) {
			if (chars[i] != ' ') {
				chars1 = new char[chars.length - i];
				System.arraycopy(chars, i, chars1, 0, chars1.length);
				break;
			}
		}

		for (int i = 0, j = 1; i < chars1.length; i++) {
			char a = chars1[i];
			if (i != chars1.length - 1 && chars1[i + 1] != a) {
				System.out.println(a + "(" + j + ")");
				j = 1;
			} else {
				j++;
			}
		}
	}


看了顿时了解为啥下岗了。
想过你的array.sort的时间复杂度么?
35 楼 malk 2008-10-24  
看看这个,第二题
   public static void main(String[] args) {
		String s = "wo jiao shenzhen ";
		char[] chars = s.toCharArray();
		char[] chars1 = null;
		Arrays.sort(chars);
		for (int i = 0; i < chars.length; i++) {
			if (chars[i] != ' ') {
				chars1 = new char[chars.length - i];
				System.arraycopy(chars, i, chars1, 0, chars1.length);
				break;
			}
		}

		for (int i = 0, j = 1; i < chars1.length; i++) {
			char a = chars1[i];
			if (i != chars1.length - 1 && chars1[i + 1] != a) {
				System.out.println(a + "(" + j + ")");
				j = 1;
			} else {
				j++;
			}
		}
	}
34 楼 wh8766 2008-10-24  
dongivan 的方法不错,有创意
之前没想到这点
33 楼 javaboy2006 2008-10-23  
        //        1.字符串数组排序 
        //        达到效果:'A','B','C'
        String[] array = new String[26];
        java.util.Random rand = new java.util.Random();
        java.util.Set<String> set = new java.util.HashSet<String>();
        while (true) {
            set.add((char) (rand.nextInt(26) + 65) + "");
            if (set.size() == 26) {
                break;
            }
        }
        set.toArray(array);
        for (int i = 0; i < array.length; i++) {
            System.out.print(array[i] + " ");
        }
        String t = null;
        for (int i = 0; i < array.length - 1; i++) {
            for (int j = 0; j < array.length - i - 1; j++) {
                if (array[j].compareTo(array[j + 1]) > 0) {
                    t = array[j];
                    array[j] = array[j + 1];
                    array[j + 1] = t;
                }
            }
        }
        System.out.println("\n--------------------");
        for (int i = 0; i < array.length; i++) {
            System.out.print(array[i] + " ");
        }

        //        2.wo jiao shenzhen 
        //        字母出现的次数。 
        //        如:a(2)j(1)
        String str = "wo jiao shenzhen";
        java.util.Map<String, Integer> map = new java.util.LinkedHashMap<String, Integer>();
        for (int i = 0; i < str.length(); i++) {
            if (map.containsKey(str.charAt(i) + "")) {
                map.put(str.charAt(i) + "", Integer.parseInt(map.get(str.charAt(i) + "") + "") + 1);
            } else {
                map.put(str.charAt(i) + "", 1);
            }
        }
        System.out.println("\n--------------------");
        java.util.Iterator<String> iterator2 = map.keySet().iterator();
        while (iterator2.hasNext()) {
            String key = iterator2.next();
            String value = map.get(key) + "";
            System.out.print(key + "(" + value + ")");
        }


下面的方法应该更快。
supercrsky 写道
第2题:
public static void count(String str)
	{
		// 用于存储a-z出现的次数
		int[] nums = new int[26];
		for (char i : str.toCharArray())
		{
			// 在字母的范围内
			if (i >= 97 && i <= 123)
			{
				nums[i - 97]++;
			}

		}

		for (int i = 0; i < nums.length; i++)
		{
			// 只显示出现的
			if (nums[i] != 0)
			{
				System.out.println((char) (97 + i) + ":" + nums[i]);
			}
		}
	}

32 楼 taupo 2008-10-23  
supercrsky 写道
第1题:

	@Test
	public void test2()
	{
		String s = "DBCA";
		sort(s);
	}

	public static void sort(String str)
	{
		char [] chars = str.toCharArray();
		Arrays.sort(chars);
		for(int i = 0; i < chars.length; i ++)
		{
			System.out.println(chars[i]);
		}
	}


匆忙之作,见丑!



我觉得应该是考基础的算法,而不是用JAVA API去排序。。。。。。。。

用Arrays.sort(chars);
出这个题还有意义吗?
31 楼 taupo 2008-10-23  
6246850 写道
pure 写道
第一个题用集合并实现排序接口不可以么?


应该可以的,用冒炮排序应该更好点!



冒泡效率太低了吧,特别是大数据的时候,还是快速排序或者堆排序比较好
30 楼 supercrsky 2008-10-23  
第1题:

	@Test
	public void test2()
	{
		String s = "DBCA";
		sort(s);
	}

	public static void sort(String str)
	{
		char [] chars = str.toCharArray();
		Arrays.sort(chars);
		for(int i = 0; i < chars.length; i ++)
		{
			System.out.println(chars[i]);
		}
	}


匆忙之作,见丑!
29 楼 supercrsky 2008-10-23  
第2题:
public static void count(String str)
	{
		// 用于存储a-z出现的次数
		int[] nums = new int[26];
		for (char i : str.toCharArray())
		{
			// 在字母的范围内
			if (i >= 97 && i <= 123)
			{
				nums[i - 97]++;
			}

		}

		for (int i = 0; i < nums.length; i++)
		{
			// 只显示出现的
			if (nums[i] != 0)
			{
				System.out.println((char) (97 + i) + ":" + nums[i]);
			}
		}
	}

28 楼 6246850 2008-05-16  
小白·菜 写道
前面好像都很简单。后面那些原理可难可易,看你怎么忽悠了

恩```
现在已经搞清楚了

相关推荐

    JMS完全实例(八个实例)

    实例中可能会展示如何创建消息监听器,并在接收到消息时执行特定的业务逻辑。 5. **POJO消息监听** 在一些实例中,我们可能会看到使用Plain Old Java Object(POJO)作为消息监听器的例子。这意味着消息监听器并不...

    activeMQ-JMS实例

    总结来说,"activeMQ-JMS实例"是一个基于Spring MVC的示例,它演示了如何使用Spring的JMS支持与ActiveMQ结合,实现消息的发送和接收。这个实例对于学习和理解JMS以及如何在实际项目中应用它是很有帮助的。通过这个...

    activemq与spring整合发送jms消息入门实例

    3. **创建消息模板**:Spring的`JmsTemplate`是发送和接收JMS消息的核心工具。在配置文件中创建一个`JmsTemplate`的bean,并注入连接工厂。 ```xml &lt;bean id="jmsTemplate" class="org.springframework.jms.core....

    JMS信息传输实例代码

    在发布/订阅模型中,消息生产者产生一个消息后,把这个消息发送到一个 Topic 中,这个 Topic 可以同时有多个接收者在监听,当一个消息到达这个 Topic 之后,所有消息接收者都会收到这个消息。 JMS 中的概念包括 ...

    JMS经典实例 基于weblogic

    JMS允许应用程序创建、发送、接收和读取消息,以此来解耦生产者和消费者,使得两者不必同时在线也能进行通信。在基于WebLogic的环境中,JMS被广泛应用于构建可扩展、高可用性的应用程序。 WebLogic Server是Oracle...

    JMS整合Spring实例

    **JMS整合Spring实例** Java消息服务(Java Message Service,简称JMS)是Java平台中用于企业级应用间异步通信的一种标准接口。它允许应用程序创建、发送、接收和读取消息,以此来解耦生产者和消费者。而Spring框架...

    JBOSS建立JMS应用实例

    1. 概念理解:JMS是Java平台中用于企业级消息传递的API,它定义了生产、发送、接收和消费消息的标准接口。 2. 消息模型:JMS支持两种消息模型——点对点(Point-to-Point)和发布/订阅(Publish/Subscribe)。前者...

    tomcat spring jms 异步消息传递入门实例

    本教程将带你逐步了解如何利用Tomcat、Spring和JMS(Java Message Service)构建一个简单的异步消息传递入门实例。 首先,让我们来理解一下核心组件: 1. **Tomcat**:这是一个流行的开源Java Servlet容器,用于...

    JMS详细实例学习教程

    Destinations:Destinations 是指消息发送客户端的消息目标和消息接收客户端的消息来源,它也是预先在 jms.xml 定义好的。对于 PTP 类型,Destinations 对应的类型为 Queue,对于 Pub/Sub 类型,Destinations 对应的...

    spring jms tomcat 异步消息传递入门实例

    在这个"spring jms tomcat 异步消息传递入门实例"中,我们将探讨如何在Spring框架下利用JMS和Tomcat实现异步消息传递,以提高系统性能和可扩展性。 首先,理解异步消息传递的概念至关重要。在同步通信中,发送方...

    javax.jms.jar包与JMS实例代码

    总结起来,`javax.jms.jar` 包提供了Java开发人员与JMS兼容的消息中间件进行通信的工具,而`demo` 文件中的实例代码展示了如何在实际应用中使用这些工具。通过学习和实践这些示例,你可以更好地理解和掌握Java消息...

    JAVA消息服务实例

    在JMS中,消息被发送到一个消息代理(message broker),然后由消费者从该代理接收消息。这种方式允许应用程序之间进行解耦,使得它们可以在无需直接交互的情况下交换数据。 JMS主要包含两种模型: 1. 点对点...

    JMS消息发送及订阅

    同样,我们可以从JMS队列接收消息并处理: ```java from("activemq:queue:MyQueue") .process(new Processor() { public void process(Exchange exchange) throws Exception { Message message = exchange.getIn...

    ActiveMq-JMS简单实例

    例如,使用`javax.jms.ConnectionFactory`创建连接,`javax.jms.Queue`或`javax.jms.Topic`定义目的地,`javax.jms.MessageProducer`发送消息,`javax.jms.MessageConsumer`接收消息。消息可以是TextMessage、...

    Java-JMS实例

    JMS允许开发者在不关心接收方是否在线或能够立即处理消息的情况下发送数据,从而提高系统的可伸缩性和容错性。 **JMS基本概念** 1. **JMS API**:JMS 提供了一组接口和类,使得开发者能够创建、发送、接收和消费...

    JMS-ActiveMQ入门实例

    Java消息服务(Java Message Service,简称JMS)是Java平台中用于创建、发送、接收和阅读消息的应用程序接口。它为应用程序提供了标准的接口,可以跨越多种消息中间件产品进行通信。JMS允许在分布式环境中交换异步...

    spring中集成JMS使用工程实例..eclipse项目例子,带注解.导入即可运行.

    - **`MessageListener`**:实现了JMS接口的监听器,用于处理接收到的消息。 - **`DefaultMessageListenerContainer`**:Spring提供的监听容器,可以自动启动和停止消息监听。 4. **配置JMS** 在Spring配置文件中...

    JMS-activemq 实例(分ppt,eclipse工程,说明三部分)

    **JMS(Java Message Service)** 是Java平台中用于企业级消息传递的一种API,它提供了一种标准的方式来创建、发送、接收和读取消息。JMS允许应用程序在不关心它们是否同时运行的情况下交换数据,这使得它成为分布式...

    jboss服务器下的jms实例

    【JBoss 服务器下的 JMS 实例】 Java 消息服务 (JMS) 是 Java 平台中用于处理异步消息传递的标准API,它在面向服务架构 (SOA) 中扮演着关键角色,特别是在需要与外部系统进行异步通信的企业环境中。JBoss 服务器...

Global site tag (gtag.js) - Google Analytics