龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > JAVA开发 >

基于jCOM搭建Java-微软信息桥梁(下)

时间:2009-12-23 15:42来源:未知 作者:admin 点击:
分享到:
WebLogic Server 8.1的发行包中带有大量参考示例,其中有专门供jCOM使用的示例,但遗憾的是这些全部的jCOM示例,演示的都是用基于COM的前端访问WebLogic Server上基于EJB的后端。故本文中仅提

  WebLogic Server 8.1的发行包中带有大量参考示例,其中有专门供jCOM使用的示例,但遗憾的是这些全部的jCOM示例,演示的都是用基于COM的前端访问WebLogic Server上基于EJB的后端。故本文中仅提供从Java前端访问基于COM的后端的示例。

  在本例中,我们构建一个简单的银行帐户接口应用程序。在这个程序中,我们用jsp程序从前端访问服务器上COM组件里包含的业务逻辑。我们假定在用户计算机上已经安装了WebLogic Server服务器。

  一、建立JSP前端

  首先,要为银行帐户应用程序建立JSP前端。为简单起见,我们把表示层和业务逻辑层都一起包含到了BankAccount.jsp应用中(在使用本文源代码时,只需把解压后得到的BankAccount.jsp源文件复制到%WEBLOGIC_HOME%samplesserverexamplesuildexamplesWebApp目录下)。第一件需要注重的是,从Java的角度来看,引入要调用的COM组件时,没有用任何Java熟悉的方法,使用的就是一个正常的Java类。访问COM组件的所有底层代理机制,从表面来看都被隐藏了。实际开发中,我们一般把业务逻辑从BankAccount.jsp分离出来,以Servlet的形式放在中间层;但是在此为了演示的方便性,我们把表示层和业务层都放在jsp文件里了。请参考列表1中的代码片断。

  列表1.BankAccount.jsp(在此仅列出主要代码片断)

  <%! Private clsAccount account; %>
  
  <% //创建一个Account COM组件并把一个指向它的句柄放入session中
  
  Account=(clsAccount)session.getAttribute(“objAccount”);
  
  if(account==null)
  
  account=new clsAccount();
  
  //会话期间跟踪所有的用户信息
  
  Vector messages=(Vector)session.getAttribute(“messages”);
  
  if(messages=null)
  
  messages=new Vector();
  
  //取得表单变量
  
  String accountName=request.getparameter(“accountName”);
  
  Boolean NEW_ACCOUNT=true;
  
  if(accountName==null)
  
  accountName=””;
  
  else
  
  NEW_ACCOUNT=accountExists(accountName);

  二、建立后端帐户COM组件

  接下来,要建立后端的银行账户COM组件。为了简化,本示例假定和COM组件在同一台计算机上运行并且选用Visual Basic 6.0来创建这里的银行账户COM组件。

  1.启动Visual Basic,新建一个ActiveX Dll项目。
  
  2.把项目名称修改为Account,类名设置为clsAccount。
  
  3.在clsAccount类中建立如下代码:
  
  

'定义全局变量
  
  Private mstrAccountNames(1 To 100) As String
  
  Private mdblAccountBalances(1 To 100) As Double
  
  Public Property Get AccountNames()
  
  AccountNames = mstrAccountNames
  
  End Property
  
  Public Property Get AccountBalances()
  
  AccountBalances = mdblAccountBalances
  
  End Property
  
  '创建一个新帐户
  
  Public Function Create(accountName As String, amount As Double) As Integer
  
  Dim i As Integer
  
  Dim flag As Boolean
  
  i = 1
  
  Do While (True)
  
  If mstrAccountNames(i) = "" Then
  
  Create = i
  
  mstrAccountNames(i) = accountName
  
  mdblAccountBalances(i) = amount
  
  Exit Do
  
  End If
  
  i = i + 1
  
  If i > 100 Then
  
  Exit Do
  
  End If
  
  Loop
  
  End Function
  
  ‘…………(篇幅所限,在此省略,详见所附VB源文件)

  
  4.单击菜单“文件-项目另存为”,把项目保存在D:myexjCOMBankSamp目录下。
  
  5.在文件菜单中,单击“Make Account.dll”,建立组件的动态链接库。

  三、在服务器上安装COM组件

  在服务器上安装COM需要好几项操作。上面创建的COM组件要通过jCOM公开给Java客户机,然后,Java对象即可以象调用其它Java类一样调用这个COM组件。
  
  1.注册组件
  
  

精彩图集

赞助商链接