ADF Application Module

Application Module,以下简称AM ,AM作为一个管理容器而存在,为相关(这些对象共同完成一个相同的任务)的BC4J对象提供容器服务。AM为事务处理提供上下文环境。AM创建数据库连接。AM间可以进行上下级嵌套(一对多)
总结:可以看出AM偏向于事务控制。
1.可以共享的AM实例
使用JDeveloper的项目属性对话框.可以可视化地配置共享数据缓存(在JDeveloper上选择你的工程,双击就会打开项目属性对话框,选择Business Component-->Application Module instance,即可配置共享AM)。
可以选择在Application之间还是Session间共享AM实例。在Application之间共享意味着允许多个session的请求去共享同一个由AM 池管理生命周期的AM实例。Session间的共享是指一个用户在session内是同一个AM实例。
共享的AM的AppModuleNameShared 配置的下面两个属性将会被设置。
jbo.ampool.isuseexclusive=false
jbo.ampool.maxpoolsize=1
如果手动地改变了这两个值,那么在运行时将不会得到共享的AM实例。
2.AM与数据库连接
对于所有的AM而言,默认允许所有的根AM有它自己的数据库连接。如果你的应用定义了多个可分享的AM,你可以定义一个命名的事务给每个根AM来定制数据库连接。命名的事务是一个任意的字符,被定义为jbo.shared.txn值。在运行时拥有相同jbo.shared.txn值的AM将会共享相同的数据库连接实体缓存。
3.一个简单的测试用例测试AM的方法

 
public static void main(String[] args) {
String amDef = "com.dana.services.am.common.EMailAM";
String config = "EmailAMLocal";
EMailAMImpl am = (EMailAMImpl)Configuration.createRootApplicationModule(amDef,config);
am.sendEmailByRule();
Configuration.releaseRootApplicationModule(am, true);
}

4.如何在AM中执行SQL语句


public Number getMaxAlarmId() {
java.sql.Statement statement =
this.getTransactionInternal().createStatement(ResultSet.TYPE_FORWARD_ONLY);
String max = "";
try {
statement.execute("select max(alarm_id)as max from mss_raw_alarm");
ResultSet resultSet = statement.getResultSet();

if (resultSet.next()) {
max = resultSet.getString("max");
}
resultSet.close();
statement.close();
} catch (SQLException e) {
e.printStackTrace();
}
if(max!=null&&!"".equals(max))
try {
return new Number(max);
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}



5.用AM生成异步的Web Service
默认情况下,AM将创建同步的web service方法,如果需要异步的web service需要在Service Interface 界面选择生成异步web service方法。
参见下图[img]
[img]http://dl.iteye.com/upload/attachment/0076/7174/b516a223-dcec-3e85-989f-fb8cc6cdabfe.png[/img]
[/img]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值