ibm developer(如何使用 EJB 3.0 调用规则集麻烦告诉我)
本文目录
- 如何使用 EJB 3.0 调用规则集麻烦告诉我
- 访问IBM developerworks社区跳转为白页
- IBM应届生待遇 Application Developer 大连IBM 月薪多少大约 实习工资 试用工资什么的 最好详细点
如何使用 EJB 3.0 调用规则集麻烦告诉我
RES 可作为集中式服务部署,从而响应多个客户机的请求并同时执行多个规则集。它提供的多种规则执行组件,让用户可以选择合适的执行模式,将业务规则管理系统集成到企业应用中。RES 基于模块化的体系结构,使它即可以作为一组 Java SE POJO 对象来部署和运行,又可以在完全兼容 Java EE 的应用程序服务器上部署和运行,它将规则引擎封装为一个 JCA 资源适配器——执行单元 (XU) 资源适配器,在应用程序服务器与规则引擎之间实施 JCA 交互,由 XU 资源适配器来管理规则引擎,加载规则集,并在业务应用和规则引擎间传递业务规则的调用参数和执行结果。图1. RES 组件结构RES 支持如下执行模式:非Jave EE 容器的本地调用:业务应用需要调用 Jave SE 规则执行组件 (《ODM 产品安装目录 》/executionserver/lib/jrules-res-execution.jar),建立 Java SE 规则会话,来完成业务规则集的调用,并需要将规则执行组件 jrules-res-execution.jar 和业务应用打包在一起部署运行。Jave EE 容器内的非事务处理本地调用:业务应用需要调用 POJO 规则执行组件 (《ODM 产品安装目录 》/executionserver/applicationservers/《appserver》/jrules-res-session-《appserver》.jar),建立 POJO 规则会话,来完成业务规则集的调用,并需要将规则执行组件 jrules-res-session-《appserver》.jar 和业务应用打包在一起部署运行,并在部署时指定规则执行组件到 XU 的 JNDI 映射。Jave EE 容器内在规则会话上支持事务控制的本地调用:业务应用需要调用 EJB 规则执行组件 (《ODM 产品安装目录 》/executionserver/applicationservers/《appserver》/jrules-res-session-ejb3-《appserver》.jar) 的本地接口,来完成业务规则集的调用,并需要将规则执行组件 jrules-res-session-《appserver》.jar 和业务应用打包在一起部署运行,并在部署时指定规则执行组件到 XU 的 JNDI 映射。在下一节中,本文将为您详细介绍。Jave EE 容器内在规则会话上支持事务控制的远程调用:业务应用需要调用 EJB 规则执行组件 (《ODM 产品安装目录 》/executionserver/applicationservers/《appserver》/jrules-res-session-ejb3-《appserver》.jar) 的远程接口,来完成业务规则集的调用。在下一节中,本文将为您详细介绍。Jave EE 容器内远程或本地的异步调用:业务应用需要调用基于消息驱动的 MDB 规则执行组件 (《ODM 产品安装目录 》/executionserver/applicationservers/《appserver》/jrules-res-session-mdb-《appserver》.jar),用户需要在运行 RES 的 Jave EE 服务器上安装并配置 MDB 规则执行组件 jrules-res-session-mdb-《appserver》.jar,并在安装时指定规则执行组件到 XU 的 JNDI 映射。基于Web 服务的远程调用:RES 还支持为规则集生成基于 Web 服务的规则调用服务,通过在 RES 服务器端为规则集生成决策服务,用户可以直接使用 HTTP Request 对规则集进行调用。而通过规则执行组件调用规则集时建立的规则会话状态的不同,业务规则的执行还可以分为有会话状态的规则调用和无会话状态的规则调用:无状态的规则会话:是指在连续两次的规则执行中,规则会话并不保存任何的执行数据和规则引擎状态。在无状态的规则会话中,业务应用通过规则集输入参数将业务对象传递给规则引擎,并将执行结果以规则集输出参数的方式返回给业务应用。无状态的规则会话通常不会直接修改规则引擎的工作内存区。有状态的规则会话:是指为当前规则会话中的规则执行保存规则引擎状态,并提供规则引擎工作内存区的直接访问。在有状态的规则会话中,业务应用既可以通过规则集参数与规则引擎进行业务对象的传递,也可以直接访问规则引擎的工作内存区,向工作内存区插入或提取业务对象。回页首RES session EJB 在 WAS 上的安装和配置如上节所述,在 Java EE 环境中使用 EJB 规则执行组件去调用业务规则集时,您具有以下选项: 使用EJB 规则执行组件的本地接口,用有状态的规则会话或无状态的规则会话,去调用和业务应用运行在同一个 JVM 上的 XU 去执行业务规则集。 使用EJB 规则执行组件的远程接口,用有状态的规则会话或无状态的规则会话,调用运行于远程主机 JVM 上的 XU 去执行业务规则集。而针对这两种不同的调用结构,RES Session EJB 规则执行组件 jrules-res-session-ejb3 的打包和安装配置也有所不同。接下来本文将以 Websphere Application Server (WAS) 为例,向您介绍 jrules-res-session-ejb3 组件的安装和配置。业务规则集 EJB 本地调用的安装配置对于规则集的 EJB 本地调用,需要将业务应用模块和 EJB 规则执行组件 (rules-res-session-ejb3-WAS.jar) 一起打成一个 EAR 包,并在这个 EAR 包的 application.xml 中加入如下 XML 标签 《application》 《module》 《web》 《web-uri》your_web_module.war《/web-uri》 《context-root》your_webroot《/context-root》 《/web》 《/module》 《module》 《ejb》jrules-res-session-ejb3-《appserver》.jar《/ejb》 《/module》 《/application》 将打包好的 EAR 安装到运行 RES 的 WAS 服务器上,在安装时选择"详细 - 显示所有安装选项和参数",在安装的第 6 步,可以看到 rules-res-session-ejb3 规则执行组件所包含的两个 EJB: IlrStatelessSessionEJB3 和 IlrStatefulSessionEJB,在这里我们使用默认 JNDI 邦定,直接点击下一步。图2. EJB Bean 邦定在安装的第 7 步我们可以看到 rules-res-session-ejb3 所定义的四个业务接口,在这里我们同样使用业务接口默认的 JNDI 邦定,即直接使用业务接口的名称作为 JNDI 名字,直接点击下一步。图3. EJB 业务接口邦定在安装的第 8 步我们可以看到 rules-res-session-ejb3 所需要映射的资源,即 XU 资源适配器的连接工厂,只有正确定义对 XU 的资源映射,rules-res-session-ejb3 执行组件才在可以在执行时为规则调用建立 EJB 会话。图4. EJB 资源邦定业务规则集 EJB 远程调用的安装配置对于规则集的 EJB 远程调用,需要为业务应用模块生成一个 EJB 规则执行组件 rules-res-session-ejb3 的 Stub,来实现业务对象的序列化和反序列化并与远程 JVM 进行通讯。大多数应用服务器都会提供为 Session EJB 生成 Stub 的功能,以 WAS 为列,可以如下生成 EJB 规则执行组件 jrules-res-session-ejb3 的 stub: 《WAS 安装目录 》/bin/createEJBStubs.bat jrules-res-session-ejb3-WAS7.jar -newfile jrules-res-session-ejb3-WAS7_stub.jar将生成好的 stub 和远程业务应用一起打包,作为规则执行的客户端。在远程的 RES 服务器端,将业务应用所使用的 Java Execution Object Model(XOM) class 和 EJB 规则执行组件 jrules-res-session-ejb3.jar 打包到一起,安装到 RES 运行的 WAS 应用服务器上,安装过程与 EJB 本地调用的安装类似。回页首使用EJB 3 远程和本地调用业务规则集有状态的 EJB 远程调用在调用代码中,首先需要获得一个工厂对象 IlrEJB3SessionFactory 来获取调用所需要的 EJB,如: IlrEJB3SessionFactory factory = new IlrEJB3SessionFactory();然后需要为工厂对象指明执行模式为远程调用,及要使用的业务接口类型为有状态的规则会话,之后就可以使用工厂对象去从远程获取一个有状态的 SessionBean 了,需要注意的是,在创建有状态的 SessionBean 时,一定要将规则集路径 ilrPath 作为第一个参数传递给创建方法,如下: factory.setRemote(true); factory.setStatefulRemoteJndiName( "ilog.rules.res.session.impl.ejb3.IlrStatefulSessionRemote"); IlrStatefulSession statefulsession = factory.createStatefulSession(ilrPath, null, null, false);在获取有状态的 SessionBean statefulsession 对象后,有两种方式向规则集传递参数,调用规则集,一种方式是之间通过 statefulsession 对象直接向规则引擎的工作内存区插入业务对象,如: List《Object》 objectList = new ArrayList《Object》(); objectList.add(obj1); objectList.add(obj2); statefulsession.insertJavaObjects(objectList); 一种方式是在执行时,将规则集参数以参数的方式,传递给 statefulsession 对象的 execute 方法,如: HashMap《String, Object》 rulesetParameters = new HashMap《String, Object》(); rulesetParameters.put("param1", obj1); rulesetParameters.put("param2", obj2); IlrSessionResponse response = statefulsession.execute(rulesetParameters); 无状态的 EJB 远程调用和有状态的 EJB 远程调用一样,首先需要创建一个工厂对象来获取 EJB,然后为工厂对象指明执行模式为远程调用,并指定业务接口的类型为无状态的规则会话,之后就可以从工厂对象获取一个无状态的 SessionBean 了,与获取有状态的 SessionBean 不同,SessionBean 的创建方法不接受任何参数。如: IlrEJB3SessionFactory factory = new IlrEJB3SessionFactory(); factory.setRemote(true); factory.setStatelessRemoteJndiName(" ilog.rules.res.session.impl.ejb3.IlrStatelessSessionRemote"); IlrStatelessSession statelessSession = factory.createStatelessSession(); 对于上面获取的无状态的 SessionBean 对象 statelessSession,其执行方式只有一种,即通过工厂对象创建一个会话请求对象,在会话请求对象中设置规则集执行参数,规则集路径,及执行轨迹等相关信息,并把这个会话请求对象作为参数,传递给 SessionBean 的 execute() 方法,如: IlrSessionRequest request = factory.createRequest(); request.setRulesetPath(IlrPath.parsePath(rulesetPath)); request.setInputParameters(ruleset_params); request.setTraceEnabled(true); IlrSessionResponse response = statelessSession.execute(request); EJB 本地调用和远程调用一样,EJB 规则执行组件的本地调用也分为有状态的本地调用和无状态的本地调用两种方式。除了通过工厂对象创建 SessionBean 的方法略有不同外,本地执行和远程执行的 API 是一样的。对于本地有状态的 EJB 调用,可通过如下方式获取一个有状态的 SessionBean,在获取 SessionBean 对象后,其执行方式与远程的有状态执行一致。 factory = new IlrEJB3SessionFactory(); factory. setStatefulLocalJndiName (" ejblocal:ilog.rules.res.session.impl.ejb3.IlrStatefulSessionLocal"); IlrStatefulSession statefulsession = factory.createStatefulSession(ilrPath, null, null, false); 对于本地无状态的 EJB 调用,可通过如下方式获取一个无状态的 SessionBean,在获取 SessionBean 对象后,其执行方式与远程的无状态执行一致。 factory = new IlrEJB3SessionFactory(); factory.setStatelessLocalJndiName( "ejblocal:ilog.rules.res.session.impl.ejb3.IlrStatelessSessionLocal"); IlrStatelessSession statelessSession = factory.createStatelessSession(); 回页首结束语EJB 规则执行组件作为 RES 的一个重要组成部分,不仅很好的支持了有状态的规则会话和无状态的规则会话执行方式,还可以在传统的规则会话上引入由应用服务器容器提供的事务处理和远程访问功能,更加方便用户将业务规则系统集成到业务应用当中。参考资料 参考WebSphere Operational Decision Management 首页, 查看有关 WebSphere Operational Decision Management 产品的更多信息。参考WebSphere Operational Decision Management 文档,查看关于 RES 使用的更多信息。IBM developerWorks 中国,WebSphere 专区:为使用 WebSphere 产品的开发人员准备的技术信息和资料。这里提供产品下载、how-to 信息、支持资源以及免费技术库,包含 2000 多份技术文章、教程、最佳实践、IBM Redbook 和在线产品手册。IBM developerWorks 软件下载资源中心:IBM developerWorks 最新的软件下载。加入developerWorks 中文社区:developerWorks 社区是一个面向全球 IT 专业人员,提供博客、书签、wiki、群组、联系、共享和协作等社区功能的专业社交网络社区。加入IBM 软件下载与技术交流群组,参与在线交流。IBM developerWorks 工具包:下载关键 WebSphere 最新的产品工具包。关于作者赵学良 ,IBM 中国软件开发中心软件工程师。自 2008 年起,任职于 IBM Operational Decision Management 团队。关闭请选择您的昵称:当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。昵称:(长度在 3 至 31 个字符之间)单击提交则表示您同意developerWorks 的条款和条件。 使用条款. 所有提交的信息确保安全。为本文评分评论回页首
访问IBM developerworks社区跳转为白页
应该是你的机房的管理系统,或者是你所在单位/学校的机房的网络服务器上,把developerworks设为黑名单中了。developerworks上面有特别的文档内容,有一部分已经无法访问了,不过这种页面会提示 404 page not found的错误的,developerworks上面,还会写大大的:Our apologies...The page you requested cannot be displayed
IBM应届生待遇 Application Developer 大连IBM 月薪多少大约 实习工资 试用工资什么的 最好详细点
是蓝快的HC还是IBM的HC啊,应届进去都是trainee,band90的工资,大连的话6k-8k左右吧。看部门。
更多文章:
![微软office软件下载(如何在电脑上下载免费的office)](/static/images/nopic/15.jpg)
微软office软件下载(如何在电脑上下载免费的office)
2024年6月25日 10:24
![玩端游吃鸡一定要用加速器吗有什么好的加速器推荐吗?求一个绝地求生好用的加速器排名](/static/images/nopic/6.jpg)
玩端游吃鸡一定要用加速器吗有什么好的加速器推荐吗?求一个绝地求生好用的加速器排名
2024年6月13日 00:37
![我儿子被中山大学图书情报与档案管理专业录取,这个专业前景怎么样?如何编写程序实现图书管理系统的费用查询功能](/static/images/nopic/25.jpg)
我儿子被中山大学图书情报与档案管理专业录取,这个专业前景怎么样?如何编写程序实现图书管理系统的费用查询功能
2023年11月19日 08:25
![有人推广跨境电商在淘宝上买货,然后铺在亚马逊卖往欧洲,利润可观,大家觉得靠谱吗?淘宝的海外代购靠谱吗,为什么价格还那么高](/static/images/nopic/27.jpg)
有人推广跨境电商在淘宝上买货,然后铺在亚马逊卖往欧洲,利润可观,大家觉得靠谱吗?淘宝的海外代购靠谱吗,为什么价格还那么高
2024年1月29日 21:10
![tencentdl exe是什么(tencentdl.exe是什么病毒)](/static/images/nopic/22.jpg)
tencentdl exe是什么(tencentdl.exe是什么病毒)
2023年11月3日 19:41
![expert choice(福建TV8 荔城夜话中插播NFL或者NBA集锦时的一首男女合唱的英文歌背景乐叫什么 跪求中~~~)](/static/images/nopic/2.jpg)
expert choice(福建TV8 荔城夜话中插播NFL或者NBA集锦时的一首男女合唱的英文歌背景乐叫什么 跪求中~~~)
2024年5月22日 12:15
![尔雅通识课题库(求2014年尔雅通识课大学生职业生涯规划的答案)](/static/images/nopic/24.jpg)
尔雅通识课题库(求2014年尔雅通识课大学生职业生涯规划的答案)
2024年2月26日 11:10
![免费塔罗牌测试(塔罗牌测试占卜,怎么用塔罗牌占卜是与否的问题)](/static/images/nopic/15.jpg)
免费塔罗牌测试(塔罗牌测试占卜,怎么用塔罗牌占卜是与否的问题)
2023年12月13日 11:15
![中高端收入人群找家政服务用什么软件?比较适合家政行业的软件 那个比较好 求推荐](/static/images/nopic/17.jpg)
中高端收入人群找家政服务用什么软件?比较适合家政行业的软件 那个比较好 求推荐
2023年11月24日 20:10