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]
ADF Application Module
[/img]


你可能感兴趣的:(application)