访问远程Java对象

为了实现对远程Java对象的访问,在服务器端,需要完成如下几个 步骤:

1.      创建LiveCycle Data Service Web应用;

2.      实现POJO Java类;

3.      在LiveCycle Data Service Web应用中部署POJO Java类;

4.      配置remote-config.xml文件,声明desination节点,指向POJO Java类。

在客户端应用中,需要实现:

1.      实例化RemoteObject对象,并设定destination等属性;

2.      调用远程Java对象的方法,并传递参数;

3.      注册RemoteObject对象的result和fault事件侦听器,实现侦听器方法以处理返回响应或者调用异常。

我们已经在第17章的17.5.1节“创建服务器端 LiveCycle Data Service应用”(见第416页)中介绍过如何创建LiveCycle Data Service Web应用。因此,我们这里将从实现POJO Java类开始逐步实现访问远程Java对象。

19.2.1  服务器端:实现POJO Java类

使用POJO类作为远程Java对象

我们当然不会在一本Flex书籍中讲解如何编写POJO Java类。我们须要在这里解释一下可以作为远程Java对象的Java类。

只有所谓的POJO类能够作为远程Java对象。 POJO(Plain Old Java Object)简称为简单Java对象,通常包含了一系列get和set方法。通常所说的POJO Java类就是纯的Java对象,不实现任何Java对象模型、协议及框架,例如不能实现EJB标准。严格地说,POJO类不能继承其他父类,不能实现接 口。LiveCycle Data Service要求,作为LiveCycle Data Service远程服务的远程Java对象,其构造器不能接受任何参数,也就是说必须为零参数构造器。这样,LiveCycle Data Service才能够构造POJO类实例。

然而,POJO类仍然可以作为后端业务逻辑服务的窗口,例如使用 POJO类访问JNDI,获取EJB服务等,以便进一步集成后端业务逻辑。

POJO Java类的公共方法提供了远程服务。需要注意的是,LiveCycle Data Service保留了一些方法名,因此POJO Java类不能使用这些方法名,我们称这些方法为“保留方法”。保留方法是RemoteObject类或其父类定义的方法。

保留方法包括:

·       addHeader();

·       addProperty();

·       clearUsernamePassword();

·       deleteHeader();

·       hasOwnProperty();

·       isPropertyEnumerable();

·       isPrototypeOf();

·       registerClass();

·       setUsernamePassword();

·       toLocaleString();

·       toString();

·       unwatch();

·       valueOf();

·       watch()。

此外,作为远程对象的POJO Java类也不能使用“_”作为远程服务方法名的起始字母。

19.2.2  服务器端:部署POJO Java类

在我们使用HTTPService组件和WebService组 件,通过HTTPProxyService服务访问远程HTTP服务和Web服务时,远程服务并不一定要部署在LiveCycle Data Service服务器上。

而调用远程Java对象,则与这种情况大不相同。提供远程服务的 Java类必须与Flex应用部署在同一LiveCycle Data Service的Web应用中。

部署POJO Java类的唯一目的就是当客户端RemoteObject组件向LiveCycle Data Service发出访问请求时,LiveCylce Data Service能够找到对应的Java类。

因此,我们须要把POJO Java类部署到LiveCycle Data Service的类路径中。我们可以直接将POJO Java类文件(.class文件)按照类包结构部署到Web应用的WEB-INF\classes目录下,或者将POJO Java类打包为Jar包(.jar文件),部署在WEB-INF\lib目录中。

19.2.3  服务器端:配置remote-config.xml

原始remote-config.xml文件

lcds-root/webapps/ lcds目录中包含了空的remote-config.xml文件。我们先来看看原始的remote-config.xml文件。

请参考图19-2,该图展示了原始的remote- config.xml文件,并对主要节点做了注释。

Flex通过RemoteObject访问远程Java对象

图19-2  尚未配置目标的remote-config.xml

配置远程服务目标

在标 签<service></service>内,添加<destination>< /destination>标签来声明新的远程对象目标。

下面的代码显示了包含一个destination定义的 remote-config.xml文件:

<?xml version="1.0" encoding="UTF-8"?>

<service />

相关文章: