BEA Liquid Data for WebLogic为聚合自多个数据源的数据提供统一视图,这些数据源包括数据库、XML文件、Web services、EJB或Java 2 Connector Architecture(J2CA)适配器。在一个非常高的层次上,可以把Liquid Data看作一个企业范围内的JOIN工具,用于为来自任何源的数据提供XML视图。可以使用诸如XQuery这样不断发展的技术来访问这类数据。
Liquid Data提供几种不同的机制,通过这些机制,BEA Platform的其余部分就可以利用Liquid Data中的Data View。在本文中,我将介绍几种在用于WebLogic Data View Builder的Liquid Data本身之外访问Data View的方法。
Data View快速入门
Data View是使用XQuery技术构建的丰富数据源,用于使用单个查询聚合来自离散源的数据。BEA Liquid Data for WebLogic提供一个丰富的图形界面,称为Data View Builder,用户可以通过它建立需要访问的数据源,设置安全性和身份验证信息,然后定义需要执行的各种查询。Data View Builder允许用户为单独的数据源或从查询执行结果中获得的数据定义XML Schema。
Data View可以聚合来自各种源的数据,比如关系数据库(使用标准SQL或存储过程)、XML或存储在文件系统中的分隔文件、Web services和遗留EIS。使用Data View Builder可以聚合一个或多个这些源的架构来组成目标架构。用户可以定义JOIN条件,以及使用SQL访问关系数据库时您习惯使用的其他数据聚合或选择逻辑。用户还能够设计自定义函数,从而以不同的方式访问数据。
本文假定您已经创建了一些Data View。我将集中讲述可用于访问这些Data View的各种机制。
访问Data View
可以通过用于BEA Platform 余下部分的各种访问机制来使用Liquid Data 中的Data View。任何具有正确的安全性证书,或者可以访问Java命名与目录接口(Java Naming and Directory Interface ,JNDI)的Java程序都可以在Liquid Data服务器上发出查询。各种类型的Java程序包括:
- 单机 Java应用程序
- Java servlet
- JavaServer Page(JSP)
- JavaBean
- Enterprise JavaBean(EJB)
- Web services
- BEA WebLogic Integration中的业务流程管理(business process management ,BPM)组件或工作流
- BEA WebLogic Portal 中的Portlet
通过EJB客户端访问Data View
无状态会话EJB公开了查询API,这些API通过一个查询处理器把查询委托给底层的数据存储。任何可以访问EJB的Java程序都可以使用这个基于EJB的API。单机Java应用程序、Javabean和其他EJB均使用这个API,而且它们共同被称为EJB客户端。这些程序可以直接使用EJB远程或本地接口。
EJB客户端是使用Liquid Data EJB API在Liquid Data服务器上调用查询的任意应用程序。所有Java客户端都可以利用XQuery提供的灵活性和数据集成属性来满足它们的数据访问需要。所有这些客户端都可以直接访问EJB的远程接口,因此,它们被共同称为EJB客户端。Data View Builder是核心Liquid Data产品的组成部分,是一类特殊的EJB客户端。
通过这个机制访问Data View分为4个基本的步骤,它们分别是:
- 连接Liquid Data服务器并对其进行身份验证
JNDI用于查找EJB,而标准的EJB调用则用于连接到Liquid Data服务器。连接上之后,可以匿名地或者通过身份验证执行查询,具体方法是传递一个安全性上下文给相应的JNDI环境属性 SECURITY_PRINCIPAL和SECURITY_CREDENTIALS。
- 为搜索查询指定参数
在大多数情况下,用户会想要基于某些特定的条件执行查询。基于XQuery的参数用于将搜索条件传递给Liquid Data服务器。下面的代码片断表明了如何将搜索参数传递给数据视图。
import com.bea.ldi.server.common.QueryParameters;
...
QueryParameters qp = new QueryParameters();
qp.setString("title", "WebLogic Developers Journal");
- 在Liquid Data服务器上执行查询。有几种用于基于要执行的查询类型来执行查询的机制。如果要执行的是一个特殊查询,您将要使用
execute (queryString, [qp]) command
如果查询是一个已存储的命名查询,您将要使用
executeStored (queryName, [qp]) command
根据您是否传递查询参数,“qp”参数是可选的。
- 接收并处理查询结果
执行查询时,Liquid Data服务器返回一个未格式化的XML字符串。您可以使用toXML()或getDocument()方法来接收XML或DOM格式的查询结果。
通过JSP访问Data View
Liquid Data for WebLogic提供一组标签库,JSP可以使用这些标签库来访问Data View。所提供的基本标签是“query”标签和“param”标签。
“query”标签用于连接到Liquid Data服务器和执行查询。它带有的参数是查询名称、到服务器的连接和服务器进行身份验证所需的用户名和密码。
“param”标签用于为使用名称/值对的查询传递参数。清单1给出了一些说明如何使用“query”标签和“param”标签的示例代码。
清单1: “query”和“param”标签
<%@ taglib uri="LDS-taglib.jar" prefix="ldquery" %>
...
< ldquery:query server="t3://localhost:7001" username="wldj_user" password="wldj_password">
< ldquery:param name=" title "
value="<%=" WebLogic Developers Journal "%>"/>
</ ldquery:query>
您可以使用这些标签库来执行特殊查询和存储查询。可以使用XSLT转换在JSP上显示作为结果的XML。WebLogic服务器中包含一个XSLT JSP Tag Library,可以用于XSLT转换。另外,您可以使用第三方或者开放源代码的库来实现此功能。
通过Web Services访问Data View
通过Liquid Data管理控制台,可以把Liquid Data中的存储查询公开为Web service。生成后的Web service的WSDL的URL具有以下模式:
http://host:port/liquiddata/query_name/webservice?WSDL
把Liquid Data查询公开为Web service之后,您可以使用标准的Web service机制来查找WSLD和执行Web service。
BEA Liquid Data for WebLogic 8.1还在WebLogic Workshop中提供一个控件,用于调用这个查询。WebLogic Workshop还可以用于测试基于Liquid Data Web service的查询。
通过WebLogic Integration BPM组件访问Data View
WebLogic Integration 中的BPM组件通常使用无状态会话EJB API(前面已经讨论过)来访问Liquid Data查询。WebLogic Integration中的业务操作将定义要被调用的Query EJB的JNDI名称(com.bea.ldi.server.QueryHome),以及用于调用EJB的方法。
Liquid Data帮助BEA WebLogic Integration集成来自各种关系的、非关系的和Web数据源的数据。Liquid Data视图是只读的。WebLogic Integration 组件,比如工作流,用于从通过使用BEA Liquid Data for WebLogic中的Data View而提供的丰富数据集启动双向事务。
通过Portlet访问Data View
Portlet和BEA WebLogic Portal中的其他组件都可以使用上面讨论的各种机制来访问 Liquid Data 查询。Portlet可以使用Web services或JSP标签库。其他Portal组件可以使用EJB API。
因此,Liquid Data 成为了丰富的数据反馈,而WebLogic Portal 则成为了处理这类丰富数据表示的层。
结束语
本文简要地介绍了在Liquid Data自身之外利用BEA Liquid Data for WebLogic中的Data View的几种方式。基本上,任何可以访问EJB或Web services的Java代码都可以在Liquid Data服务器上执行查询。甚至基于JSP的应用程序也可以直接利用Liquid Data查询,而不必通过EJB层。
参考资料
|