java – 从jms返回字符串
我正在写一个独立的main方法,它调用一个生产者(将数据推入一个队列),然后调用一个不断聆听主题的消费者.
我已经覆盖了onMessage,我可以从队列中获取消息,但是我无法将消息返回给调用方法. 其实我想把这个信息传递给浏览器,所以想测试一下我是否可以把它直到main. 请帮忙; class TextMessageListener implements MessageListener { String msgData; public String getMsgData() { return msgData; } public void setMsgData(String msgData) { this.msgData = msgData; } public void onMessage(Message message) { try { if (message instanceof TextMessage) { TextMessage textMessage = (TextMessage) message; System.out.println("Received message in ::" + textMessage.getText() + " '"); setMsgData(textMessage.getText()); } } catch (JMSException e) { System.out.println("Caught:" + e); e.printStackTrace(); } } } 解决方法
终于得到了答案,
retrieving a value from message listener and print in Main 在这个类中,用户给了一个例子: @Stateful public class AManagerBean implements ejb.AManagerRemote { @Resource(mappedName = "jms/QueueConnectionFactory") private ConnectionFactory queueConnectionFactory; @Resource(mappedName = "jms/Queue") private Queue queue; private static int fineAmt; ...... static class AListener implements MessageListener{ public void onMessage(Message message){ ..... fineAmt = msg.getInt("fineAmt"); // I NEED FINEAMT TO SHOW IN MAIN CLASS ..... } } public int returnFine(){ return fineAmt; } 在主班上 public class Main { @EJB public static AManagerRemote amr; public static void main(String[] args) { ...... System.out.println(amr.returnFine()); // ALWAYS RETURN 0 首先,不允许EJB中的非最终静态变量.在EJB Restrictionc FAQ中有一个条目 EJB中不允许使用非正式静态类字段,因为这样的字段使得企业bean难以分发或不可能分发.静态类字段在特定类的所有实例之间共享,但仅在单个Java虚拟机(JVM)中.更新静态类字段意味着在类的所有实例之间共享字段值的意图.但是,如果一个类同时在多个JVM中运行,则只有与更新实例相同的JVM中运行的那些实例才能访问新值.换句话说,如果在单个JVM中运行,非虚拟静态类字段的行为将会不同于在多个JVM中运行. EJB容器保留在多个JVM(在同一服务器上或任何一个服务器上运行)上分发企业Bean的选项.非最终静态类的字段是不允许的,因为企业bean实例的行为会有所不同,这取决于它们是否被分发. 所以我建议你做的第一件事是做一个重新设计,并试图让一个更真实的生活例子上升和运行. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- java – 在二维ArrayList中添加元素
- java 在Jetty9中使用HttpSessionListener和Filter
- java – IllegalArgumentException:可执行文件的名称有嵌入
- Java MD5加密工具类
- java-ee – 在maven-embedded-glassfish-plugin上的CDI注入
- java – InAppBilling活动和完成()
- java – 从新闻文章中提取主要内容(最高文本密度)Web页面
- Java最大的优势真的在于跨平台吗?
- java – 私有Map,V> multiMap = new HashMap,V>();
- 在JAVA EE 6中发送电子邮件