曲靖网站建设网站建设辶金手指排名十三
曲靖网站建设,网站建设辶金手指排名十三,app制作网站收费吗,国外js特效网站我今天要讨论的功能是Java EE 6中的事件机制。一般的想法是触发一个事件#xff0c;并让事件监听器来接收它。 我创建了这个完全没有用的示例#xff0c;但是它的简单性帮助我专注于重要的内容。 我将从后备操作中触发LogEvent#xff0c;该事件将记录到java.util.Logger中。… 我今天要讨论的功能是Java EE 6中的事件机制。一般的想法是触发一个事件并让事件监听器来接收它。 我创建了这个完全没有用的示例但是它的简单性帮助我专注于重要的内容。 我将从后备操作中触发LogEvent该事件将记录到java.util.Logger中。 我需要做的第一件事是创建一个包含我的日志消息和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;}
} 现在有了数据包装器我需要一些东西来触发该事件并需要一些东西来拾取它。 我创建的第一件事是触发事件的方法。 由于CDI我可以注入事件。 Inject EventLogMessage event; 所以我们只需要解雇它。 event.fire(new LogMessage(Log it baby!, Level.INFO)); 现在触发了该事件如果没有人注册该事件该事件将消失从而创建一个侦听器。 侦听器需要一种具有一个参数的方法该参数是上一个事件的通用类型。 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侦听所有事件。 触发事件时将触发此方法。 这是创建松耦合应用程序的一种非常不错的方法您可以在这些事件侦听器中分离繁重的操作或封装不太重要的操作。 所有这些都是同步发生的。 当我们想用对记录表的慢速数据库调用来替换log语句时我们可以使我们的操作比应有的繁重。 我正在寻找的是创建一个异步调用。 只要我们支持EJB就可以通过在其之上添加Stateless批注将侦听器转换为EJB。 现在它是一个无状态的企业bean。 这对我们的同步/异步问题没有任何改变但是EJB 3.1支持异步操作。 因此如果我们还在其顶部添加Asynchronous批注。 它将异步执行我们的日志记录语句。 Stateless
Asynchronous
public class LogListener {private static final Logger LOGGER Logger.getAnonymousLogger();public void process(Observes LogMessage message){LOGGER.log(message.getLevel(), message.getMessage());}
} 如果我们想将数据库日志记录和控制台日志记录结合起来我们可以创建多个侦听同一事件的方法。 这是创建具有非常灵活的组件的轻量级应用程序的好方法。 解决此问题的另一种方法是使用JMS但您不希望为这种松散耦合配置重量级的配置。 参考 Java EE6 Events这是我们的JCG合作伙伴 Jelle Victoor在Styled Ideas Blog上 对JMS的轻量级替代 。 相关文章 Java EE6装饰器在注入时装饰类 基本的EJB参考注入和查找 Java EE过去现在和云7 JBoss AS 7.0.2“ Arc”发布–使用绑定选项 Java EE中的配置管理 Java教程和Android教程列表 翻译自: https://www.javacodegeeks.com/2011/10/java-ee6-events-lightweight-alternative.html
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/91815.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!