WebLogic Server 8.1的发行包中带有大量参考示例,其中有专门供jCOM使用的示例,但遗憾的是这些全部的jCOM示例,演示的都是用基于COM的前端访问WebLogic Server上基于EJB的后端。故本文中仅提供从Java前端访问基于COM的后端的示例。
在本例中,我们构建一个简单的银行帐户接口应用程序。在这个程序中,我们用JSP程序从前端访问服务器上COM组件里包含的业务逻辑。我们假定在用户计算机上已经安装了WebLogic Server服务器。
一、建立JSP前端
首先,要为银行帐户应用程序建立JSP前端。为简单起见,我们把表示层和业务逻辑层都一起包含到了BankAccount.jsp应用中(在使用本文源代码时,只需把解压后得到的BankAccount.jsp源文件复制到%WEBLOGIC_HOME%\samples\server\examples\build\examplesWebApp目录下)。第一件需要注意的是,从Java的角度来看,引入要调用的COM组件时,没有用任何Java认识的方法,使用的就是一个正常的Java类。访问COM组件的所有底层代理机制,从表面来看都被隐藏了。实际开发中,我们一般把业务逻辑从BankAccount.jsp分离出来,以Servlet的形式放在中间层;但是在此为了演示的方便性,我们把表示层和业务层都放在jsp文件里了。请参考列表1中的代码片断。
列表1.BankAccount.jsp(在此仅列出主要代码片断)
|
二、建立后端帐户COM组件
接下来,要建立后端的银行账户COM组件。为了简化,本示例假定和COM组件在同一台计算机上运行并且选用Visual Basic 6.0来创建这里的银行账户COM组件。
1.启动Visual Basic,新建一个ActiveX Dll项目。
2.把项目名称修改为Account,类名设置为clsAccount。
3.在clsAccount类中建立如下代码:
'定义全局变量 |
三、在服务器上安装COM组件
在服务器上安装COM需要好几项操作。上面创建的COM组件要通过jCOM公开给Java客户机,然后,Java对象即可以象调用其它Java类一样调用这个COM组件。
1.注册组件
我这里试验用的服务器为Windows 2000 Server。在Windows上注册COM组件是非常简单的事情,只需使用下列命令:
Regsvr32 Account.dll /s
2.设置组件服务
在这个示例中,我们所用的操作系统是简体中文Windows 2000 Server(以下步骤可能因OS的不同而有所不同),可以按如下步骤在计算机上设置组件服务:
1.在“控制面板”上“管理工具”下,打开“组件服务”。
2.在“组件服务”控制台里,依次展开“组件服务”->“计算机”-“我的电脑”,选择“COM+应用程序”,在菜单里选择“操作”->“新建->应用程序”,建立一个空的服务器应用程序,应用程序名称为jCOM。
3.在“组件服务”里,右键单击刚建立的应用程序上,在菜单中选择属性,在“安全设置”选项卡里选择“仅在进程级执行访问检查”,然后把“调用的身份验证级”设置为“连接”。
4.下一步,打开“jCOM”目录下的“组件”目录。把刚刚建立的Account.dll组件文件拖动到这个“组件”目录下。
3.用com2java生成代理文件
在设置服务器之前要做的最后一步就是生成jCOM中间件,用它把前后端各层连接起来。请遵循如下步骤生成中间件:
1.进入%WEBLOGIC_HOME%\server\bin目录下,运行com2java.exe。
2.选择刚才创建的Account.dll作为要扫描的类型库。
3.用com.jCOMSample.account作为包名称。
4.单击“Generate Proxies”,选择一个临时目录,保存程序生成的代理文件。
最后,com2java生成4个代理文件,用于在API一级访问银行账户COM组件之用。这4个代理文件分别是_clsAccount.java、_clsAccountProxy.java、clsAccount.java和JintegraInit.java。编译这4个类,把它们放到WebLogic Server上示例应用程序能够访问到的目录中。
所有与jCOM相关的、编译时要使用的类,都保存在\bea\weblogic81\server\lib\weblogic.jar这个文件里。要确保在编译时,在类路径里引用这个JAR文件。
在WebLogic Server上,建立目录结构\beaweblogic81\samples\server\examples\build\examplesWebApp\WEBINF\classes\com\jCOMSample\account,把4个编译好的类都放在这里,以便示例应用程序能够找到它们。
四、WebLogic Server设置
jCOM随WebLogic Server 8.1一起安装,但是必须通过管理控制台激活。现在要做的是让应用程序能够调用COM:
1.打开管理控制台。
2.在左边窗格里,单击Server,然后打开examples Server。
3.在右边窗格里,单击Protocols选项卡,然后jCOM选项卡。
4.选中“Enable COM”复选框。
5.单击Apply按钮。
6.重新启动服务器。所做的设置在服务器重新启动后生效。
五、运行银行帐户客户端应用程序
打开浏览器,在地址栏中输入http://localhost:7001/examplesWebApp/BankAccount.jsp。观察实验结果,如果一切正常,你将会得到一个银行帐户接口数据操作表单。
在这个程序中,客户的请求由JSP页面处理,JSP页面通过clsAccount对象调用银行帐户COM组件。为了简单起见,在整个会话期间,所有数据都持久保存在COM对象中(在实际开发中,后端组件应该把信息缓存到数据库里)。
注意 如果你想修改前面用VB创建的COM组件,而且没有设置二进制兼容,那么必须重新运行com2java实用工具,以确保正确的代码同步。
总结
本文在较全面地分析了Weblogic Server的jCOM实现技术之后,通过一个具体实例来说明了jCOM的具体使用过程。
其实,Java/COM互操作是个相当复杂的主题,对市场上提供的各种方案的选用应视具体的环境而定。总之,如果想寻找一个稳定可靠的,而且无缝地在Java对象和微软COM对象之间通信的机制的话,我建议优先考虑jCOM。
|
|||
| · CISSP认证成长之路 · 51CTO主编推荐经典专题 · 51CTO国庆充电专题之好.. · 网络技术经典基础教程 · AMD Phenom三核处理器.. · 国际文档格式标准开战 · 2007年互联网大会 · 我是黑客我怕谁——讲.. |
· ARP攻击防范与解决方案 · Solaris 10 配置管理 · Solaris基础知识入门 · RIP路由协议专栏 · MPLS路由协议专栏 · OSPF路由协议专栏 · 思科路由器产品 · 华为路由器产品 |
||
|
|||
| · Java基础教程 · VPN技术 · ARP攻击防范与解决方案 · SQL Server 2005全解 · SOA 面向服务架构 · SQL Server 2005全解 · Java编程开发手册 · 三层交换技术专题 |
· SQL Server入门到精通 · Windows Server 2003企.. · Windows远程桌面应用 · C#技术开发指南 · VPN技术 · Solaris 10 配置管理 · C#技术开发指南 · Windows操作系统安装 |
||
|
|||
| · ARP攻击防范与解决方案 · VPN技术 · SQL Server 2005全解 · Java基础教程 · SQL Server入门到精通 · SQL Server 2005全解 · SOA 面向服务架构 · Java编程开发手册 |
· C#技术开发指南 · 三层交换技术专题 · C#技术开发指南 · Windows远程桌面应用 · Windows Server 2003企.. · 邮件服务器专题 · wimax技术与趋势 · Windows操作系统安装 |
||
| ·DB2 Viper快速入门 ·DB2 9数据库的镜像分割与.. |
·将XML应用程序从DB2 8.x.. ·DB2 9中的pureXML:如何.. |
| ·服务器中的“傻瓜机”在.. ·盖茨也喜欢登录Youtube看.. |
· · |
| ·拯救系统管理员 ·美国选民:我为什么选布什 |
·VMware公司中文命名挑战赛 ·我们真缺乏创新吗? |
| ·J0ker的CISSP之路:复习-.. ·J0ker的CISSP之路:复习-I.. |
·9月第3周安全回顾 内网安.. ·教你几招识别和防御Web网.. |
| · NGN:下一代网络 · 网络访问中断大排查 · FTTx光纤接入 |
· 教你使用Anti ARP Sniff.. · 网络嗅探教程:使用Snif.. · 常见病毒手工清除方法大.. |
| · C++是垃圾语言?! · 2007年IT界七大抄袭事件 · Java实用开发全集 |
· 解析Ajax开发框架 走进A.. · 基于Google Maps与Ajax.. · 基于Google Maps与Ajax.. |
| · 热门 IT 培训认证官方资.. · Ubuntu 中文开源频道 · Solaris基础知识入门 |
· 费力不讨好 数据中心主.. · AMD Phenom三核处理器解.. · 51CTO主编推荐经典专题 |
| · 甲骨文Oracle 11g正式发.. · Oracle数据库开发之PL/S.. · Oracle数据库开发基础教.. |
· 存储2006,一个并购的大.. · IDC宣布浪潮蝉联存储市.. · 双机热备技术 |