已阅读5页,还剩91页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PRIMETONPRIMETON TECHNOLOGIES TECHNOLOGIES LTD LTD 上海普元信息技术有限责任公司上海普元信息技术有限责任公司 PrimetonPrimeton EOS5 0EOS5 0 高级开发培训教程高级开发培训教程 No part of this document may be reproduced stored in any electronic retrieval system or transmitted in any form or by any means mechanical photocopying recording otherwise without the written permission of the copyright owner COPYRIGHT 2005 by Primeton Technologies Ltd ALL RIGHTS RESERVED Primeton EOS5 0 初级开发培训教程 第 2 页共 96 页 本出版物包含 PrimetonPrimeton 的专利信息 它在许可协议下提供 并受版权法保护 本出版物包 含的信息不包括任何产品保证 通过您当地的 PrimetonPrimeton 代表或分部可订购出版物 或致电 021 50805188 订购出版物 当您发送信息给 PrimetonPrimeton 后 即授予 PrimetonPrimeton 非专有权 PrimetonPrimeton 对于您所提供的任何 信息 有权利以任何它认为适当的方式使用或散发 而不必对您负任何责任 CopyrightCopyright PrimetonPrimeton TechnologiesTechnologies CorporationCorporation 2005 2005 AllAll rightsrights reserved reserved 本书的相关文档本书的相关文档 您可能会发现下列资料对您有用 格式使用约定格式使用约定 本书对文本格式的使用有如下约定 粗体粗体 表示突出显示 或可视化操作中的文字 可视化操作中的选项 XML 文件内容 Primeton EOS5 0 初级开发培训教程 第 3 页共 96 页 导读导读 Primeton EOS 是上海普元信息技术有限责任公司自主研发的面向构件的中间件 是基 于 J2EE 之上的面向构件的完整的互联网应用体系 Primeton EOS 产品提供了对构件在定义 组装 发布 运行 管理 访问等多方面的 全方位支持和完善服务 形成了一套完整的构件体系 目前 Primeton EOS 的最高版本为 5 0 读者可以从普元公司购得安装光盘或者登陆 普元网站 下载安装程序 本文档的阅读对象是已经通过了 EOS5 0 初级开发培训的工程师 主要是 EOS 开发的 进阶 解决已经能够使用 EOS 进行初步开发的工程师进行更复杂的应用开发中需要掌握的 技能 本书中主要是在 EOS 的构件扩展开发 EOS 的 handle 扩展 EOS 的系统集成 基于 EOS 应用的 WEB 框架扩展 EOS 团队开发 EOS 的配置 EOS 的系统优化等方面来详细 介绍 EOS 的解决方案和完成结果 随本文档发布的压缩包中包含了案例的代码资源 可帮助读者掌握 Primeton EOS 的 开发方法和技巧 为了配合本教程的学习 大家可以参考下面的相关文档 EOS 概览 EOS 开发指南 EOS 工作流开发指南 EOS 构件库参考手册 EOS 应用框架使用手册 EOS 管理员指南 EOS 扩展指南 EOS 初级开发培训教程 推荐本案例的运行环境为 windowsXP ORACLE91 Primeton EOS5 0 初级开发培训教程 第 4 页共 96 页 导读导读 3 1EOS 构件扩展开发构件扩展开发 8 1 1BIZLET运算逻辑扩展开发 8 1 1 1概览 8 1 1 2运算逻辑开发案例介绍 8 1 1 3源代码及详解 9 1 1 4运算逻辑开发小结 12 1 2TAG 构件扩展开发 12 1 2 1概览 12 1 2 2TAG开发案例介绍 12 1 2 3源代码及详解 12 1 2 4TAG开发小结 16 2HANDLE 扩展开发扩展开发 16 2 1 1概览 16 2 1 2TAG开发案例介绍 16 2 1 3源代码及详解 16 2 1 4TAG开发小结 16 3系统集成系统集成 17 3 1JAVA API 集成 17 3 1 1概览 17 3 1 2案例介绍 17 3 1 3源代码及详解 17 3 1 4小结 19 3 2WEBSERVICE集成 19 3 2 1概览 19 3 2 2webservice小案例介绍 19 3 2 3将业务逻辑调用发布为WEB服务 19 3 2 3 1调用发布的 web 服务 20 3 2 4调用外部WEB服务 23 4WEB 应用框架扩展应用框架扩展 24 4 1替换 WEB 应用框架的菜单 24 4 1 1原理解析 24 4 1 2开发指南 24 4 1 2 1样例图 24 4 1 2 2相关文件 25 4 1 2 3实现步骤 26 4 1 3案例参考 26 4 2替换 WEB 应用框架的权限管理 26 4 2 1实体关系与基本概念 26 Primeton EOS5 0 初级开发培训教程 第 5 页共 96 页 4 2 2功能结构 27 4 2 3相关表结构 28 4 2 3 1EOSOperator 说明 28 4 2 3 2EOSRole 说明 29 4 2 3 3EOSOperatorRole 说明 29 4 2 3 4EOSMenu 说明 29 4 2 3 5EOSRoleMenu 说明 29 4 2 3 6EOSBizCatalog 说明 29 4 2 3 7EOSRoleCatalog 说明 30 4 2 3 8EOSBizCatalogDef 说明 30 4 2 3 9EOSFunction 说明 30 4 2 3 10EOSFunctionUnit 说明 30 4 2 3 11OSDataPrivilegeModel 说明 30 4 2 3 12OSRoleDataPrivilege 说明 31 4 2 4权限管理ROLE包主要构件介绍 31 4 2 5解决方案 32 4 2 5 1将外部权限管理信息导入 EOS 表 32 4 2 5 2改变 ROLE 包中对应实体 32 4 2 5 3重写 ROLE 包 32 4 2 6案例参考 32 4 3扩展 WEB 应用框架中的登录 32 4 3 1原理解析 32 4 3 2开发指南 33 4 3 2 1登录取页面的扩展开发 33 4 3 2 2密码校验的扩展开发 34 4 3 2 3EOS 密码处理过程介绍 34 一个用于加密的 BL 方法扩展开发示例 34 4 3 2 4设置用户菜单的扩展开发 35 4 3 2 5设置用户功能权限的扩展开发 36 4 3 2 6在新的构件包中进行登陆信息的扩展开发 36 4 3 3案例参考 37 4 4在 JSP 页面中如何直接调用 DOM 数据 38 4 4 1原理解析 38 4 4 2开发指南 38 4 4 3案例参考 39 4 5用 JAVA访问 XML 软总线 39 4 5 1原理解析 39 4 5 2开发指南 40 4 5 3案例参考 40 4 6我们的应用与外部应用如何进行 SESSION 交互 42 4 6 1原理解析 42 4 6 2开发指南 43 4 6 3案例参考 45 4 7与PORTAL的扩展支持 47 Primeton EOS5 0 初级开发培训教程 第 6 页共 96 页 4 7 1原理解析 47 4 7 2开发指南 47 4 7 3案例参考 47 4 8认证的扩展开发 47 4 8 1LDAP的集成 47 4 8 2原理解析 47 4 8 2 1开发指南 47 4 8 2 2案例参考 51 4 8 3CA认证 52 4 8 3 1原理解析 52 4 8 3 2开发指南 52 4 8 3 3案例参考 55 5EOS 的团队开发的团队开发 56 5 1EOS 的团队开发 56 5 1 1团队开发的基本流程 56 5 1 2配置版本控制库 57 5 1 3项目共享 58 5 2基于 CVS 的版本控制 61 5 2 1从CVS更新项目 61 5 2 2从CVS更新构件资源 61 5 2 3向CVS提交构件资源 61 5 2 4资源树内容比较 62 5 2 5查看构件历史版本 62 6EOS 应用部署和配置应用部署和配置 62 6 1EOS MANAGER配置 62 6 1 1应用配置 63 6 1 1 1数据库配置 64 6 1 1 1 1概述 64 6 1 1 1 2数据库基本信息 65 6 1 1 1 3性能参数信息 67 6 1 1 1 4数据字典设置 69 6 1 1 2应用路径配置 69 6 1 1 2 1概述 69 6 1 1 2 2应用路径参数配置信息说明 70 6 1 1 3触发器配置 70 6 1 1 3 1概述 70 6 1 1 3 2展现层触发器信息 71 6 1 1 3 3业务层触发器信息 74 6 1 1 4定时器配置 75 6 1 1 5构件包信息配置 75 6 1 1 5 1概述 75 6 1 1 5 2新建一个构件包 76 6 1 1 5 3修改指定构件包 77 Primeton EOS5 0 初级开发培训教程 第 7 页共 96 页 6 1 1 5 4删除指定构件包 79 6 1 1 5 5构件包参数信息说明 79 6 1 1 6日志配置 80 6 1 1 6 1概述 80 6 1 1 6 2日志配置 80 6 2EOS SERVER配置 81 6 2 1通用配置和优化措施 81 6 2 1 1配置文件列表 81 6 2 1 2JVM 参数列表 82 6 2 1 3通用优化措施 82 6 2 2EOSServer 手工配置 82 6 2 2 1eosconfig xml 82 6 2 2 2prconfig xml 84 6 3附录 84 6 3 1附录1 普元EOS 所附带的JDBC驱动对应的URL写法 84 6 3 2附录2 普元EOS自带JDBC驱动的文件名称 85 6 3 3附录3 普元EOS自带JDBC驱动的存放路径 86 7EOS 系统调优系统调优 86 7 1EOS 应用系统性能 86 7 2网络速度 87 7 3应用服务器主机性能 87 7 4数据库服务器主机性能 88 7 5J2EE SERVER 调优 88 7 6EOS 系统优化 89 7 7应用系统功能优化 90 7 8应用数据表优化 90 8支持支持 90 Primeton EOS5 0 初级开发培训教程 第 8 页共 96 页 1 EOS 构件扩展开发构件扩展开发 1 1 Bizlet 运算逻辑扩展开发运算逻辑扩展开发 1 1 1概览概览 运算逻辑是用于完成特定的业务计算和程序集成的有特定参数的 java 方法 运算逻辑 实现就是通过从业务引擎运行时的 context 中获取 EOS XML 数据总线上的数据 通过一定 的业务处理和算法后处理后的数据写入到 XML 数据中 EOS 系统中提供了大量的基础的运算逻辑 可以参考 EOS 构件库参考手册 但是 在实际项目中仍然有不能完成一些特定的运算 所以通过扩展运算逻辑的方式可以解决目 前通过绘制业务逻辑的方式不能完成的功能 1 1 2运算逻辑开发案例介绍运算逻辑开发案例介绍 下面介绍一个关于产品定购的案例 具体的数据模型如下 FK PRODUCT REFERENCE PRODUCT FK 产品定购表 REFERENCE PRODUCT FK 产品定购表 REFERENCE ORDER FK ORDER PR REFERENCE 产品定购表 FK ORDER PR REFERENCE PRODUCT 产品规格 产品规格编号 产品编号 产品规格名称 是否必须 规格类型 规格类型说明 NUMBER 16 NUMBER 16 VARCHAR2 64 CHAR VARCHAR2 16 VARCHAR2 64 产品表 产品编号 产品名称 产品说明 NUMBER 16 VARCHAR2 64 VARCHAR2 256 订单 订单编号 NUMBER 16 产品定购表 定购产品编号 产品编号 订单编号 产品购买数量 NUMBER 16 NUMBER 16 NUMBER 16 NUMBER 16 产品定购规格 定购产品编号 产品规格编号 定购规格 NUMBER 16 NUMBER 16 VARCHAR2 256 每个产品都有一定的规格信息 而规格信息是采用可维护的方式保存 产品规格 表中 Primeton EOS5 0 初级开发培训教程 第 9 页共 96 页 如果系统增加了新的规格的话 可以直接通过维护这张配置表就可以实现 1 1 3源代码及源代码及详解详解 package com primeton bizlet import org w3c dom import java util ArrayList import java sql import com primeton tp core api BizContext import mon xml import com primeton tp core api PersistenceBroker import com primeton tp core api Unique author ericpeng version 1 0 date 2005 2 24 class displayName CustomSaveOrder public class CustomSaveOrder 保存订单运行逻辑 param doc type Document DOM param param type BizContext return int 运算逻辑返回值 如果失败返回 0 成功返回 1 throws Exception bizlet 的显示名称 bizlet displayName BL saveOrder bizlet param passing in out type field value name productList desc bizlet param passing in out type field value name specList desc public static int BL saveOrder Document doc BizContext param throws Exception Connection con null Statement st null ArrayList sqlArray new ArrayList 存储所有的 SQL 语句 int rtnValue 1 Node node Node param getParaObjectAt 0 定购的产品列表 Node nodeOrderSpec Node param getParaObjectAt 1 定购规格 Primeton EOS5 0 初级开发培训教程 第 10 页共 96 页 NodeList productList node getChildNodes PersistenceBroker db param getDBBroker int order id Unique nextInt db getAppID PORDER ORDER ID 获取订 单主键 String sqlStr insert into PORDER ORDER ID values order id 生 成订单 sqlArray add sqlStr for int idx 0 productList item idx null idx Element e Element productList item idx String prod id e getAttribute prod id 获得定购产品的 ID String amount XmlUtil getNodeValue e ORDER PRODUCT amount 获得定购数量 NodeList specList e getChildNodes int order prod id Unique nextInt db getAppID ORDER PRODUCT ORDER PROD ID 获取定购产品表主键 sqlStr insert into ORDER PRODUCT ORDER PROD ID PROD ID ORDER ID AMOUNT values order prod id prod id order id amount sqlArray add sqlStr for int idxspec 0 specList item idxspec null idxspec Element eSpec Element specList item idxspec if PROD SPEC ID equals eSpec getNodeName String prod spec id XmlUtil getNodeValue eSpec PROD SPEC ID String order spec XmlUtil getNodeValue nodeOrderSpec PROD SPEC ORDER PROD SPEC id prod spec id if equals order spec order spec NULL sqlStr insert into ORDER PROD SPEC ORDER PROD ID PROD SPEC ID ORDER SPEC values order prod id prod spec id order spec Primeton EOS5 0 初级开发培训教程 第 11 页共 96 页 sqlArray add sqlStr try if sqlArray size 1 con db getConnection con setAutoCommit false st con createStatement for int idx 0 idx sqlArray size idx st addBatch String sqlArray get idx st executeBatch mit con setAutoCommit true rtnValue 1 成功保存 catch SQLException sqlE con rollback sqlE printStackTrace throw sqlE finally if st null st close if con null con close return rtnValue 在生成产品订单的时候 XML 数据总线中的数据格式如下 1 1 1 2 Primeton EOS5 0 初级开发培训教程 第 12 页共 96 页 123 456 1 1 4运算逻辑开发小结运算逻辑开发小结 由此可以看出 EOS bizlet 的开发其实就是一个标准的 Java 静态方法 这个方法传入 两个参数 第一个包含 XML 数据总线中的数据 第二个是与 EOS 运行环境有关的一些 比如获取数据库连接等 在 bizlet 中 最基本的操作就是获取 XML 数据总线中的有用信息 然后对这些信息进行处理 最后将这些处理结果返回到 XML 数据总线中 最后 Jsp 通过 Tag 等将这些处理后的信息在页面上展现给客户 1 2 TAG 构件扩展开发构件扩展开发 1 2 1概览概览 TAG 构件是用于完成从业务逻辑中获取的数据通过一定的算法和模式以 html 形式展 示到页面的 java 类 TAG 构件都是从 javax servlet jsp tagext TagSupport 继承而来 需要实 现 doStart doEnd release 等等接口 在 EOS 中扩展的 TAG 构件是嵌入在 jsp 页面中 通 过 jsp 编译器编译成相应的 JAVA 代码后在 j2ee 服务器解释运行 TAG 中的 java 代码是从 当前展现逻辑运行时的 requestContext 中获取 EOS XML 数据总线上的数据通过一定的数据 处理后输出为 HTML 代码 然后返回到浏览器中 1 2 2TAG 开发案例介绍开发案例介绍 TAG 构件开发案例选用的是和 bizlet 扩展开发相同的案例 在 bizlet 扩展开发案例中 我们介绍了如何将复杂业务数据保存到数据库的方法 但是为了得到良好的输入界面和需 要在页面中动态产生输入界面 1 2 3源代码及源代码及详解详解 创建日期 2005 2 23 TODO 要更改此生成的文件的模板 请转至 窗口 首选项 Java 代码样式 代码模板 package com primeton webtag Primeton EOS5 0 初级开发培训教程 第 13 页共 96 页 import javax servlet jsp JspException import javax servlet jsp JspWriter import javax servlet jsp tagext TagSupport import org w3c dom import com primeton tp core prservice context RequestContext import com primeton tp web driver webdriver WebDriver import com primeton tp web taglib util ResponseUtils import mon logger TPLogger import mon xml author ericpeng TODO 要更改此生成的类型注释的模板 请转至 窗口 首选项 Java 代码样 式 代码模板 public class TabContent extends TagSupport private String property null private boolean ignore public void setProperty String property this property property public String getProperty return this property public void setIgnore boolean ignore this ignore ignore public boolean getIgnore return this ignore public int doStartTag throws JspException RequestContext context RequestContext pageContext getAttribute id 获得当前循 环 Tag 生成的变量 RequestContext dom 获得整个 request 的 Dom if context null context RequestContext pageContext getRequest getAttribute id if context null context RequestContext pageContext getSession getAttribute id Primeton EOS5 0 初级开发培训教程 第 14 页共 96 页 if context null if ignore throw new JspException can not find dom else return 0 if id WebDriver REQUEST REQUEST CONTEXT dom RequestContext pageContext getAttribute WebDriver REQUEST REQUEST CONTEXT if dom null dom RequestContext pageContext getRequest getAttribute WebDriver REQUEST REQUEST CO NTEXT if dom null dom RequestContext pageContext getSession getAttribute WebDriver REQUEST REQUEST CO NTEXT if dom null throw new JspException can not find dom else dom context String product id null try product id String context getProperty property Element spec Element XPathAPI selectSingleNode dom getDocument getDocumentElement root data list type PRODUCT SPEC StringBuffer buf new StringBuffer buf append 定购本产品定购数量 n buf append 选择规格名称规格描述定购 规格 n NodeList nl spec getChildNodes for int idx 0 nl item idx null idx Element e Element nl item idx Primeton EOS5 0 初级开发培训教程 第 15 页共 96 页 if product id equals XmlUtil getNodeValue e PRODUCT SPEC PROD ID String prod spec id XmlUtil getNodeValue e PRODUCT SPEC PROD SPEC ID 产品规格 ID String prod spec name XmlUtil getNodeValue e PRODUCT SPEC PROD SPEC NAME 产品规格名称 String prod spec desc XmlUtil getNodeValue e PRODUCT SPEC SPEC TYPE DESC 产品规格描述 StringBuffer strBuf new StringBuffer strBuf append strBuf append prod spec name strBuf append strBuf append prod spec desc strBuf append n buf append strBuf buf append n ResponseUtils write pageContext buf toString catch Exception e TPLogger log this 10000 null WriteTag getProperty property error null product id null release return SKIP BODY public void release super release Primeton EOS5 0 初级开发培训教程 第 16 页共 96 页 ignore false id WebDriver REQUEST REQUEST CONTEXT property null 1 2 4TAG 开发小结开发小结 由上面的源代码可以看出 Tag 的开发和标准的 Jsp Tag 开发一样 也是继承 TagSupport 类 然后 override 相应方法 所不同的是 Tag 处理的数据来自 EOS 的 XML 数 据总线 然后利用 EOS 提供的 XML 工具 解析这些 XML 最后形成标准的 HTML 格式 在浏览器中输出即可 2 EOS WEB container 机制机制 2 1 EOS SESSION 基本原理基本原理 EOS 的 session 机制是基于 J2EE 的 HTTP SESSION 机制 它的生命周期和 HTTP SESSION 生命周期一样 如果 HTTP SESSION 失效后 EOS 的 session 也同时失效 EOS 的 session 数据保存在 com primeton tp core prservice context SessionContext 对象中 对象在 HTTPSESSION 中的属性名 sessionContext SessionContext 对象中包含了一个 DOM 2 2 EOS 登录过程登录过程 1 进入登录页面 登录页面的缺省配置在 web xml 中 internet login jsp 2 输入用户 ID 和口令后 系统缺省调用 ROLE biz automata login do 展现逻辑 展 现逻辑向 session 输出了两个节点 permlist 和 EOSOperator userID 并且把 userID 和 operatorID 设置在 EOS SESSIOIN 的 DOM 中的 SessionEntity 节点下 permlist 的结构 BNOM pr automata BNOM P ShowEmpMain WFCOMMON pr WFCOMMON P OpenOrg Primeton EOS5 0 初级开发培训教程 第 17 页共 96 页 3 运行登录展现逻辑后 系统配置了三个触发器 请登录 eosmgr 可以查看这三个触 发器 并调用展现逻辑的三个触发器 initPermission 对应 handler 对象是 com primeton tp core prservice handle InitPermissionHandle 完成功能是将当前 用户可以执行的展现逻辑的名称放入到一个 List 对象中 并且设置到 EOS SessionContext 对象中 regUserHandle 对应 handler 对象是 com primeton tp core prservice handle RegisterUserHandle 完成功能是将当前登录用户注册到 EOS 在用户监控系统中 menuHandle 对应 handler 对象是 com primeton tp core prservice handle MenuHandle 完成的 功能是通过调用 ROLE biz automata getMenu 业务逻辑 获得当前用户的所 有菜单并且产生菜单对象保存在 EOS SESSION 中 总结 根据上面的 EOS 登录过程 在其他应用中你可以完全定制自己的登录程序 只 要参照上面的方案重新编写登录逻辑 并且给登录逻辑配置相关的触发器就可以替换了 EOS 的系统登录 2 3 EOS 展现逻辑运行规则展现逻辑运行规则 在 EOS 环境中 展现逻辑在 WEB 容器中运行 EOS 提供了下面几方面的规则 1 当通过浏览器访问 EOS server 时候 如果没有登录到 EOS server 时候 访问任何 一个展现逻辑 系统会缺省创建用户 userID 为 guest 的 EOS SESSION 来执行 展现逻辑 2 如果 EOS session 中的用户 userID 为 guest 的时候 而当前的展现逻辑的名称 不是 login 和 index 即 pkg pr login do 和 pkg pr index do 的时候 系统会跳转 到超时页面 超时页面配置在 web xml 中 timeoutPage internet login jsp 3 在 EOS SERVER 中缺省给 login 设置了一个触发器 CleanSessionContextHandler 对应 handler 对象是 com primeton tp core prservice handle CleanSessionContextHandler 调用 login 展现 逻辑时候 如果已经登录了 EOS 并产生了 EOS SESSION 时候 这个 handler 会 将当前的 EOS SESSION 数据清空 产生一个用户 userID 为 guest 的 SessionContext 4 EOS WEB 层提供了特殊的 portal 模式 可以不用登录也可以访问展现逻辑 如果 没有登录的情况下 就会参照第一条规则创建用户 userID 为 guest 的 EOS SESSION portal 模式的配置参数在 web xml 缺省情况下为非 portal 模式 Primeton EOS5 0 初级开发培训教程 第 18 页共 96 页 portalMode false 5 如果调用展现逻辑名为 logout 即 pkg pr logout do 时候 这个展现逻辑运行完 成后系统会自动将当前 HTTP SESSION 失效 6 运行任何一个展现逻辑前系统会把 EOS SESSION 中的 DOM 中的 SessionEntity 设 置到 requestContext 中 然后执行展现逻辑 展现逻辑运行完成后会自动把 requestContext 中的 SessionEntity 节点写回 EOS SESSION 中 2 4 EOS 展现逻辑权限控制展现逻辑权限控制 EOS 展现逻辑权限控制是结合 handler EOS 展现逻辑部署配置和角色权限来共同决 定的 1 EOS 展现逻辑部署配置修改是在缺省的角色管理界面中的 工具 设置展现 校验 功能中 可以把当前环境中的展现逻辑部署为 需要校验权限 2 系统部署了针对所有展现的触发器 accessHandle 对应的 handler 对象是 com primeton tp core prservice handle AccessControlHandle EOS server 部署的这个 handler 缺省会根据当前请求的展现逻辑调用 EOS 底层 API 确认系统是否需要验 证权限 如果需要再通过查找 SessionContext 中的权限 List 来确认当前用户是否 有权限 此 List 对象是在登录过程中的业务逻辑从 EOSVOperatorFunction 视图中 获得当前用户能够访问的展现逻辑 默认规则 编写的 handler 中如果设置 retCode 7002 的时候 系统自动会抛出没有权限访问展现逻辑的页面 这个页 面是 internet noPermission jsp 3 EOSVOperatorFunction 中的用户能够访问的展现逻辑是通过角色权限中设置来完 成的 通过上面就可以了解到展现逻辑权限控制的机制 可以根据这些规则重新定义一套新 的权限管理 替换 EOS 的权限系统 3 系统集成系统集成 在复杂的大型企业应用中 任何一个应用不可能是孤立的 EOS 目前提供了多种解决 方案可以解决与外部进行互联的方案 java api 方案 直接透过 java 接口的方式和外部系统进行交互 webservice 方案 可以通过与外部系统进行 web 服务调用进行交互 Primeton EOS5 0 初级开发培训教程 第 19 页共 96 页 3 1 java API 集成集成 3 1 1概览概览 EOS 对外公开了 JAVA 接口 并提供相应的 API 有 XML XPATH 的简化操作 EOS 数据服务操作 EOS 数据总线操作 业务逻辑调用 定时器和事件管理 基于这些 API 可 以在 EOS 上扩展开发更复杂的应用 在与外部应用互联时候 最直接方案就是通过调用对方的 JAVA api 就能够访问对方提 供的业务接口 如果是需要访问外部应用 且外部应用提供了 JAVA API 情况下 可以将 其他应用系统的 API 包装在一个 bizlet 运算逻辑 中 这样外部的应用可以像一个基本 运算逻辑一样在 EOS 系统中被调用 针对 bizlet 的扩展开发在上面章节中已经介绍了 而基于 EOS 的应用系统需要对外提供业务接口时候 建议以将系统中的业务逻辑作为外部 的可以访问的接口 因此在介绍 java API 集成时重点介绍一下外部如何调用应用中的业务 逻辑 3 1 2案例介绍案例介绍 EOS 系统中有一套角色定义 如何通过 java API 获得系统中定义的所有角色 3 1 3源代码及详解源代码及详解 1 System setProperty EOS HOME E primeton5 eosserver 2 System setProperty BOUND IP emtpy 3 Document dom XmlUtil parseString 4 BizServiceCaller bizCaller BizServiceCallerFactory newInstance ROLE 1 5 Document result bizCaller implement biz automata ROLE B QueryRoleAll dom 6 Node listRole XmlUtil findNode result root data list type EOSRole System out println XmlUtil node2String listRole 1 设置 EOS HOME 2 设置当前 JVM 绑定 IP 3 产生业务逻辑输入的数据 XML 4 产生业务逻辑调用对象 在这个过程中 会检查 EOS HOME eosconfig xml 文件 从中获取 EOSEJBREGISTER 表中关于构件包部署的信息 获得需要调用的构件包 和标识对应的部署的 IP 地址和 J2EE 服务器的协议 5 调用执行业务逻辑 根据 J2EE 服务器协议确认使用何种 EJB 调用 Primeton EOS5 0 初级开发培训教程 第 20 页共 96 页 6 获得结果 使用 java API 调用业务自动机的代码比较简单 关于相关对象的接口的可以参考 EOS 扩展开发指南 中的 JAVA 程序直接调用业务逻辑构件 章节 关于使用 java api 调用业务逻辑的接口需要注意下面方面的问题 如果使用 api 调用 EOS 应用系统时候 如果调用 api 所在的 jvm 即运行当前 java 应用 和 EOS 应用系统所在的 JVM 即 EOS 服务器所运行的 J2EE 服务器 不是同一个 JVM 时候 就一定需要给 JVM 设置系统环境变量 变量名为 EOS HOME 可以在 java exe 的命令行中添加 DEOS HOME E primeton5 eosserver 或者像上面代码一样使用 System setProperty 来设置 使用 BizServiceCallerFactory newInstance 产生 BizServiceCaller 对象时候需要两个 参数分别对应是 构件包名称 和 构件包标识 这些信息是通过 eosmgr 中的 应用配置 中 的 构件包信息配置 来进行修改 信息保存在 EOSEJBREGISTER 表中 大家 可以参考 EOS 系统表结构说明 对于 构件包标识 缺省情况下为 0 并且构 件包的部署的 IP 所在地址最好为 127 0 0 1 通过这个配置表可以将相应的业 务逻辑构件包部署到不同的 J2EE 应用服务器中 特别注意的是 如果使用 java API 调用业务逻辑的应用和 EOS 应用不在同一个 JVM 中的时候 一定需要在 EOS 应用中配置一个 构件包标识 不为 0 的 IP 地址为当前 EOS 应用所在 的实际 IP 地址 不要用 127 0 0 1 的 构件包信息配置 外部系统就用这个 构件包标识 进行业务调用 所附的 java 源程序在当前 project 中 如果运行 需要把数据库的 jdbc driver 的库 和你要调用的 EOS 应用所在的 J2EE 系统的 jar 作为这个程序的 classpath 例如 如果 EOS 应用运行在 WEBLOGIC 环境中 而单独运行这个例子程序时候 需要将 WEBLOGIC 的 weblogic jar 作为 classpath 一部分进行运行 如果 EOS 应用运行在 JBOSS 环境中 单独运行这个例子程序时候需要 JBOSS HOME client jbossall client jar 作为 classpath 来运行 3 1 4小结小结 通过上面例子的运行 我们可以看出如果外部系统访问 EOS 系统时候 实际上是通过 远程的 EJB 调用来进行的 除非外部应用和 EOS 应用同在一个 JVM 中 所以采用这种方 Primeton EOS5 0 初级开发培训教程 第 21 页共 96 页 式和外部系统进行接口的时候需要将 EJB 的端口对外进行开放 3 2 webservice 集成集成 3 2 1概览概览 webservice 是系统通过 web 提供服务的方式和外部进行交互 通常 webserivce 集成需 要提供 web 服务和调用外部 web 服务 在 EOS 系统中 各个构件之间都是采用 XML 方式进行数据交互 所以很容易将 EOS 的业务逻辑构件发布为 web 服务 提供给外部进行调用和访问 同时 EOS 又提供了一个 基础运算逻辑 WEBSERVICE 方法调用 BL callWebServicesOperation 通过这个运算 逻辑可以直接调用外部 关于 WEBSERVICE 集成方面的原理的介绍 请参考 EOS 扩展 开发指南 中的 WEB SERVICE 集成 章节 3 2 2webservice 小案例介绍小案例介绍 在介绍如何使用 webservice 进行集成中 我们在下面章节中介绍如何将业务逻辑的调 用发布为一个 WEB 服务 再介绍一个简单的案例使用 APACHE AXIS 的 webservice 的客 户端调用来访问 EOS 自带的角色管理中 ROLE 包中的查询所有角色列表的逻辑 3 2 3将业务将业务逻辑调用发布为辑调用发布为 WEB 服务服务 业务逻辑的调用在上一章节 java API 集成已经介绍了 大家可以自己写一个简单的 java 类 有业务逻辑调用的方法实现 放在 EOS 服务器中 这样就可以将自己写的 java 方 法直接发布成 web 服务 实际上在 EOS 系统中系统已经缺省提供了这样一个 java 对象 com primeton tp core bizservice ws ProcessCallerWS 对象已经有两个提供了访问业务逻 辑的方法 public String runBiz String packageName String unitId S
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年平面构成与立体构成基础教程
- 临湘四年级数学几何专项训练卷
- 肝硬化患者的感染控制
- 26年妊娠母婴安全评估要点
- 2026年黑龙江省哈尔滨市道里区二模语文试题
- 26年随访疗效评估要点解读
- 2026年科三语文说课稿粉笔
- 26年出血风险评估指南
- 上海工程技术大学《ARM 嵌入式系统》2025-2026学年第一学期期末试卷(A卷)
- 上海工商职业技术学院《安装工程技术》2025-2026学年第一学期期末试卷(A卷)
- (2026年)GINA全球哮喘处理和预防策略(更新版)解读课件
- 2026重庆德润环境有限公司招聘2人考试备考试题及答案解析
- 2025年中级会计职称中级会计实务考试真题及答案
- 2026年乡村全科执业助理医师资格考试试卷及答案(共九套)
- 2026年宝鸡市辛家山马头滩林业局招聘(12人)考试备考试题及答案解析
- 2026年天津市部分区中考一模历史试卷和答案
- 2025年湖南能源集团招聘笔试真题
- 水利水电工程单元工程施工质量检验表与验收表(SLT631.7-2025)
- 大学生创业校园便利店
- 第十四课 拓展兴趣爱好教学设计小学心理健康五年级下册大百科版
- 2024年同等学力申硕《临床医学》试题及答案
评论
0/150
提交评论