【第一章 Design】 4 事件和数据源支持

本文详细介绍了Cayenne的事件机制特点,包括事件的本地与远程分发、监听器管理等,并深入探讨了Cayenne的数据源实现方式,特别是其连接池功能及其在不同应用场景下的使用。

       Cayenne包含了全功能的事件机制。允许创建本地或者分布式的事件请求。它的事件机制有强大而通用的功能,没有绑定到Cayenne持久化特性上,可以用于任何的程序。重要特性如下:

 

 

  • 事件发出者不需要处理事件委派的详情,通过EventManager,监听器处理和派发。 
  • 可注册任何类型的监听器,监听器不许实现特定的接口。 
  • 不许显式地取消监听器注册。超出程序执行到范围或事件对象超出范围,监听器会注销。
  • 支持本地或远程派发。远程派发可以通过实现EventBridge,任意的转换。有两种预制的实现 - JMS 以及使用JavaGroups。
  • 分派可以同步完成也可以异步完成。同步时事件发出者等待所有监听器完成,异步将事件发送到队列,并且无需等待处理过程完成。
  • 相似行为的独立监听器可以注册为阻塞或者非阻塞的。

最常见的错误时使用EventSubject时候没有给它提供一个引用,将会引起自动过早解除注册所有的监听器。

一个有效的方法是:1 如果所有发送者的实例是作为通用的对象,把事件发送者的类设置为“public static final”;2 如果这个实例仅仅与某个项目有关,将发送者对象实例设置为 ivar。

 

 

DataNode obtains connections via a javax.sql.DataSource. If an application is deployed in a J2EE container, DataSource is normally provided by container via JNDI. For standalone applications (or if you don't want to use JNDI) Cayenne provides its own DataSource that includes connection pooling features. Whenever you select org.apache.cayenne.conf.DriverDataSourceFactory in the Modeler, you are choosing to use Cayenne DataSource.

Cayenne 数据源实现在org.apache.cayenne.conn 包,并且与框架其他部分完全独立。因为Cayenne数据源是被自动选择的, 一般情况下用户不需要关系实现细节。One notable exception are applications requiring users to interactively enter database login information. In this case you can write your own DataSource wrapper, and internally instantiate Cayenne DataSource (org.apache.cayenne.conn.PoolManager) after the user provides login and password.

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值