java ee jms_Java EE6事件:JMS的轻量级替代品
java ee jms
我今天要討論的功能是Java EE 6中的事件機(jī)制。一般的想法是觸發(fā)一個(gè)事件,并讓事件監(jiān)聽(tīng)器來(lái)接收它。我創(chuàng)建了這個(gè)完全沒(méi)有用的示例,但是它的簡(jiǎn)單性幫助我專注于重要的內(nèi)容。 我將從后備操作中觸發(fā)LogEvent,該事件將記錄到j(luò)ava.util.Logger中。
我需要做的第一件事是創(chuàng)建一個(gè)包含我的日志消息和LogLevel的POJO。
public class LogMessage implements Serializable {private final String message;private final Level level;LogMessage(String message, Level level) {this.message = message;this.level = level;}public String getMessage() {return message;}public Level getLevel() {return level;} }現(xiàn)在我有了數(shù)據(jù)包裝器,我需要一些東西來(lái)觸發(fā)該事件并進(jìn)行拾取。 我創(chuàng)建的第一件事是觸發(fā)事件的方法。
由于CDI,我可以注入一個(gè)事件。
@Inject Event<LogMessage> event;所以我們只需要解雇它。
event.fire(new LogMessage("Log it baby!", Level.INFO));現(xiàn)在觸發(fā)了該事件,如果沒(méi)有人注冊(cè)該事件,該事件將消失,從而創(chuàng)建一個(gè)偵聽(tīng)器。 偵聽(tīng)器需要一種具有一個(gè)參數(shù)的方法,該參數(shù)是上一個(gè)事件的通用類型。 LogMessage。
public class LogListener {private static final Logger LOGGER = Logger.getAnonymousLogger();public void process(@Observes LogMessage message){LOGGER.log(message.getLevel(), message.getMessage());} }@Observes批注使用LogMessage偵聽(tīng)所有事件。 觸發(fā)事件時(shí),將觸發(fā)此方法。
這是創(chuàng)建松耦合應(yīng)用程序的一種非常不錯(cuò)的方法,您可以在這些事件偵聽(tīng)器中分離繁重的操作或封裝不太重要的操作。
所有這些都是同步發(fā)生的。 當(dāng)我們希望通過(guò)對(duì)日志記錄表的慢速數(shù)據(jù)庫(kù)調(diào)用來(lái)替換log語(yǔ)句時(shí),可以使我們的操作比應(yīng)有的繁重。
我正在尋找的是創(chuàng)建一個(gè)異步調(diào)用。 只要支持EJB,就可以通過(guò)在其之上添加@Stateless批注將偵聽(tīng)器轉(zhuǎn)換為EJB。 現(xiàn)在,它是一個(gè)無(wú)狀態(tài)的企業(yè)bean。 這對(duì)我們的同步/異步問(wèn)題沒(méi)有任何改變,但是EJB 3.1支持異步操作。 因此,如果我們還在其頂部添加@Asynchronous批注。 它將異步執(zhí)行我們的日志記錄語(yǔ)句。
@Stateless @Asynchronous public class LogListener {private static final Logger LOGGER = Logger.getAnonymousLogger();public void process(@Observes LogMessage message){LOGGER.log(message.getLevel(), message.getMessage());} }如果我們想將數(shù)據(jù)庫(kù)日志記錄和控制臺(tái)日志記錄結(jié)合起來(lái),我們可以創(chuàng)建多個(gè)偵聽(tīng)同一事件的方法。
這是創(chuàng)建具有非常靈活的組件的輕量級(jí)應(yīng)用程序的好方法。 解決此問(wèn)題的替代方法是使用JMS,但您不希望為這種松散耦合提供重量級(jí)的配置。
參考: Java EE6 Events,這是我們的JCG合作伙伴 Jelle Victoor在Styled Ideas Blog上 對(duì)JMS的輕量級(jí)替代 。
相關(guān)文章 :- Java EE6裝飾器:在注入時(shí)裝飾類
- 基本的EJB參考,注入和查找
- Java EE過(guò)去,現(xiàn)在和云7
- JBoss AS 7.0.2“ Arc”發(fā)布–使用綁定選項(xiàng)
- Java EE中的配置管理
- Java教程和Android教程列表
翻譯自: https://www.javacodegeeks.com/2011/10/java-ee6-events-lightweight-alternative.html
java ee jms
總結(jié)
以上是生活随笔為你收集整理的java ee jms_Java EE6事件:JMS的轻量级替代品的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 字读什么 字的意思
- 下一篇: java 布局管理器_有时在Java中,