e-works数字化企业网  »  文章频道  »  管理信息化  »  企业门户

企业门户中待办事宜集成方案及技术实现

2010/11/20    来源:万方数据    作者:彭代文  邓杰  谭鹤      
关键字:企业门户  待办事宜  Web Service  
本文着重探讨了方案中的技术实现,以及可能碰到的问题和解决办法。分别对企业门户中待办事宜集成,企业门户和业务系统建设的2个方面,提出企业门户待办事宜的集成方案,并简要进行对比分析;论述了技术实现过程及可能磁到的问题和解决办法。

    2.1 整体架构

    如图5所示,Database是Oracle数据库,Task是数据库中的待办任务表,Trigger是建立在Task表上的触发器,Java Procedure是Java存储过程,Java Code是Web Service接口调用程序,.class是Java程序用到的类库,Web Service是企业门户提供的Web Service接口,Task是企业门户的统一待办库。图中箭头方向说明了整个程序的调用过程。首先在数据库待办任务Task表上建立触发器,监控Task表中的新增记录和变化字段,当触发器被触发时,调用JavaProcedure,在Java Procedure中调用Java Code,尽PWeb Service接口调用程序;.最后将待办任务信息传送至Task(企业门户统一待办任务库)。

技术实现框架结构

图5 技术实现框架结构

    在Oracle数据库的存储过程中调用Java Code(Web Service接口调用程序),不同于普通的Java程序调用。普通的Java应用程序必须在某个类中包含main()方法,通过命令java执行该类调用,main()方法是整个程序的入口。在Oracle的存储过程中调用Java Code贝U不同,程序的入口点是类的静态方法。

    2.2 实现过程

    (1)测试Web Service接口调用程序。在Oracle数据库中可以编写和调试Java源程序,但不如其他开发工具方便,所以Web Service的接口程序可以先在Eclipse工具中编写和调试,然后将程序中的main()方法改为一个静态的方法,再导人为Oracle中的存储过程调用。

    开发Web Service接口调用程序可以使用第三方的辅助工具,如Axis(Apache eXtensible InteractionSystem)开源项目,因此会用到开源项目中的类库,在使用时这些类库需要被导入Oracle中。

    (2)将源程序和使用的类库导入Oracle。Oracle提供了loadjava和dropjava工具,用于导入和删除Java程序。可以导入Java源程序、Java类和Jar包,格式分别为.java、.classjar。导入之后Oracle会对类进行解析。用Valid和Invalid2种状态来标识,如果为Invalid,在程序中不能被引用。需要注意的是,在导入的类之问存在相互引用,如果导入类引用了其他Invalid或不存在的类,该也会被标识为Invalid。在导入类时会有许多类被标识为Invalid,比如A类引用了B类,B类引用了C类,如果C类不存在,则A、B、C 3类都会标识为Invalid,这样就会导致A类不能被用。这里与普通的Java程序不同,如果C类不存在,只要A类不调用B类中使用了C类的方法,A类仍然可以被用。对此,Oracle提供了解决方法,在解析时可以指定相关参数。如-resolver和genmissing。

    (3)编写触发器和Java存储过程。Oracle支持用Java编写的存储过程,Java存储过程示例如下:

Create or replace procedure
P—TASK
(appid varchar2,apptaskid
varchar2,handletime varchar2)
as language java
name。Task.run(java。lang.
String,java.1ang.String,java.
1ang.String)。

    该存储过程调用了Task类的run()静态方法。

    在触发器中调用Java存储过程,触发器的示例如下:
create or replace trigge
after update of readmark on
TASK
for each row
when(new.readmark=1)
call P_TASK(:new.appid,:
new.aPPtaskid,:new.
handletime)
T—TASK触发器中调用了
P—TAsK存储过程。

    2.3 问题及解决办法

    (1)JDK版本问题。不同的Oracle版本用的JDK也不同,Oracte9用的是JDKl.3,Oraclel0用的是JDKl.4。在使用开源项目Axis时,如果Axis使用的JDK版本高于Oracle内嵌的JDK版本,在导入类时就出现很多类不能被解析。标识为Invalid。因此,导入的类时要确认使用的JDK版本与Oracle使用的JDK版本相同或更低。
 
    (2)无法解析Java类。在导人类时,经常会出现很多类被标识Invalid。Java类不能被解析一般是由于类之间的相互引用导致的,除此之外,还有可能是由于Oracle数据库中的SHARED—P00L—SIZE和JAVA—POOL—SIZE这2个初始化参数设置不合理。在加载和解析Java类时,会占用一定的内存,上面2个参数就是设置该内存大小。每个Java类会使用4~8kB的内存,如果内存参数设置得过小,也会导致Java类不能被解析,因此在导人Java类之前要估算好相应的内存大小。

责任编辑:袁琴桃
本文为授权转载文章,任何人未经原授权方同意,不得复制、转载、摘编等任何方式进行使用,e-works不承担由此而产生的任何法律责任! 如有异议请及时告之,以便进行及时处理。联系方式:editor@e-works.net.cn tel:027-87592219/20/21。
e-works
官方微信
掌上
信息化
编辑推荐
新闻推荐
博客推荐
视频推荐