Windows应用调用Apusic J2EE服务的解决方案 - APUSIC应用服务器 - 付毅

(这条文章已经被阅读了 109 次) 时间:2001-08-06 11:57:10 来源:付毅 (mytuotuo) 原创-IT

目录

修订记录

1. 简介
2. COM Bridge
3. 使用COM Bridge调用普通Java类
3.1 方法一
3.2 方法二
4. 对Java虚拟机的管理
4.1 在ASP中必须自己创建JVM
4.2 在COM程序中对JVM进行配置
5. 访问运行于Apusic中的EJB
5.1 通过辅助的Java类
5.2 通过Apusic公共辅助类
5.3 通过ApusicServices组件
6. 其他

1.简介
Gartner集团的分析家们表示,从长远的角度来看,互联网应用程序开发市场上将只会剩下两个竞争对手,其中Sun微系统公司的Java,另外一个则是一个是微软即将推出的.Net平台。

分析家们在Gartner集团公司主办的”应用程序开发2000″大会上指出,虽然有一些行业观察家对微软的开发技术在互联网时代的前景并不看好,但是,由于Windows拥有大量的用户和开发人员,到了2005年,有90%以上的大中型企业将采用由Java技术和微软.Net共同组成的开发平台。因此,能把两种平台有机的结合起来,进行集成开发的解决方案是必需的。

例如:很多用户习惯了Windows的界面,那么设计人员可以采用VB/VC来开发客户端,而使用Java来完成跨平台的网络服务,并把两者连接起来。

就目前来说,普通的Windows程序员如果能够直接使用已有的各种Java类或组件,将会给他们的编程带来很多方便:
1、他们可以使用Java提供的各种类库,在网络编程等方面提高质量和缩短时间。
2、可以通过Java程序获得跨平台访问的能力。
3、随着越来越多的网络服务被建立在J2EE平台上,Windows程序员更能因此访问各种基于Java技术的网络服务,比如EJB等,不论是对VB/VC还是ASP的编程,都可以提高效率和可扩展性。例如:在把IIS和Apusic连接起来使用的情况下,程序员可以通过ASP直接访问到EJB,使得程序即简单,功能又强大。

本文主要介绍Windows应用程序如何通过COM编程来达到上述的目标。使用的核心技术是COM-Bridge。它是SUN公司开发的一个软件包,提供了一套COM组件,使开发者通过调用这些组件的方法来使用Java类。

在本文中,只对COM Bridge的主要使用方法进行描述,更详细的内容可以参考COM Bridge的文档。

2.COM Bridge

COM Bridge的全称是:J2EE Client Access Services COM Bridge Early Access,本文例子中用到的是J2EE CAS COM Bridge Early Access 3。

下载网址:http://developer.java.sun.com/developer/earlyAccess/j2eecas/

COM Bridge中包含了一些COM组件,在Windows程序或ASP中经常用到的有:JvmControl、ScriptingServices和JavaServices。JvmControl用来创建和启动Java虚拟机。ScriptingServices组件为Asp的VB Scripts提供了一些常用的工具函数。JavaServices组件主要实现对各种Java类的创建和调用。关于它们以及其他组件的使用说明请参考COM Bridge的文档。

在下面章节的例子中,我们主要以VB程序使用COM Bridge为例,来说明它的使用方法。

3. 使用COM Bridge调用普通Java类

方法一
在VB工程中,需要先引用JavaServices的TypeLib。程序中写法如下:

Dim CurTime as Object
Set CurTime = JavaNew(“java.util.Date”)
MsgBox CurTime.toString

在ASP中,写法与上面相同。

方法二
当程序只需要使用某个类的static方法时,使用如下写法:

Dim SystemStatics as Object
Set SystemStatics = GetJavaStaticsFor(“java.lang.System”)
CurTimeMillis = SystemStatics.currentTimeMillis

在ASP中,写法相同。

实际上,象java.lang.System这样的类是不允许在COM Bridge中使用JavaNew来创建的。

4. 对Java虚拟机的管理

在ASP中必须自己创建JVM
ASP代码中,在使用Java类之前,必须创建Java虚拟机。写法如下:

Dim JvmCtl
Set JvmCtl = Server.CreateObject(“J2EECAS.JvmControl”)
JvmCtl.Classpath =”%J2EE_HOME%\lib\j2ee.jar;%classpath%
JvmCtl.StartJvm
在COM程序中对JVM进行配置
在VB程序中,如果需要自定义Java 虚拟机的Classpath等配置信息,也可以使用上面的代码来进行,但是需要在工程设置中添加对J2EECAS.JvmControl组件的引用。例如:

JvmCtl.Classpath = “C:\j2ee-cas-com-bridge\doc\guide\examples\classes”
JvmCtl.AddProperty “format.time”, “true”
JvmCtl.StartJvm

5. 访问运行于Apusic中的EJB

1、 通过辅助的Java类
这种方法对程序员的要求较高,需要会使用Java语言编程并访问Apusic J2EE Server。
具体方法是:
先写一个Java类,实现对指定EJB的各种操作。
使用3.1节的方法,通过COM Bridge来访问此类,调用它的方法以获得对EJB的访问。
此种方法的缺陷是,只能调用某一个或某几个已知的EJB完成一定的操作,如果需要使用更多的EJB,还必须再写更多的此种Java类以完成调用。
2、 通过Apusic公共辅助类
Apusic已经提供了一个通用的公共辅助类,用户可以免去上一种方法的复杂过程。这个类的名称是:com.apusic.tools.ApusicBridge。这个类有一个方法lookupEJB(String JNDIname),可以完成对EJB的查找。
3、 通过ApusicServices组件
Apusic为用户提供了一个用于访问EJB的COM 组件:ApusicServices。使用方法如下:

首先,在VB工程中添加对ApusicServices组件的引用。然后程序中写法为:

Dim apusic As Object
set apusic = New ApusicServices
apusic.ProviderURL = “rmi://localhost:6888”
‘// 如果EJB需要安全角色认证
apusic.SecurityPrincipal = “peter”
apusic.SecurityCredentials = “peter”
‘//查找EJB
Dim AcctHome As Object
Set AcctHome = apusic.LookupEjbHome(“MyAccount”, “account.AccountHome”)

6.其他

使用COM Bridge的程序在部署时,必须在客户机上安装COM Bridge。如果它还使用了ApusicServices组件来访问EJB,那么也必须将ApusicServices组件部署并注册到客户机上。

另外,如果程序中使用了一些Java类,如:ejb.hello.HelloHome、ApusicBridge等,还需要将这些Java类部署到客户机并添加到ClassPath中。