

6. 指定客户端代理所属的项目类型和名称. 在向导中选择Web服务客户端项目类型和名称,如下所示:


客户端类型在此处选择Web类型. 对于客户端项目,选择先前创建的WebServiceClient以及它所属的WebServiceClientEAR企业应用程序项目. 创建Web服务客户端后,向导将自动将WebServiceClientEAR应用程序发布到WID测试服务器并启动测试服务器.
7. 创建一个调用Web服务的index.jsp页面. 我们已经为Web服务创建了一个客户端代理,现在我们需要在我们的JSP页面中使用该代理. 首先,您需要在WebServiceClient的WebContent下生成index.jsp页面,如下所示:


8. JSP代码分析. 在此JSP中,主要通过HelloWorldInterfaceProxy类调用Web服务,并调用进程的hello方法. HelloWorldInterfaceProxy是由Web服务客户端向导生成的代理,可以直接调用Web服务方法. 通过它调用Web服务非常方便. 主要代码段如下:
HelloWorldInterface proxy = new HelloWorldInterfaceProxy();
//这个proxy是实现HelloWorldInterface这个Web服务SEI的。
String msg = request.getParameter("message");
String resp = proxy.hello(msg);
因为使用了Web客户端的代理,所以我们可以直接调用流程服务的业务方法.
9. 到目前为止,通过Web服务调用流程的工作已经完成. 现在,您可以在WID测试环境中发布HelloWorldApp和WebServiceClientEAR应用程序,然后通过上面的index.jsp页面调用HelloWorld进程. 有关本节中使用的所有代码,请参阅本文所附的项目交换文件WebServiceClient.zip.

业务流程引擎(BPC)为应用程序访问流程提供无状态会话BEAN,以便流程客户端可以通过外观使用EJB访问流程. 根据客户端访问过程,BPC提供两个不同的无状态会话BEAN. 如果客户端程序在与业务流程相同的JVM中运行,则客户端可以使用本地无状态会话BEAN访问com.ibm.bpe.api.LocalBusinessFlowManager. 如果客户端程序和业务流程在不同的JVM中运行,则客户端可以使用远程无状态会话BEAN访问com.ibm.bpe.api.BusinessFlowManager.
在上一个流程调用方法中,您需要为HelloWorldProcess组件提供一个“独立引用”或“导出”端点. 以上述无状态会话BEAN的方式,不需要这些. 下面介绍如何基于BPC应用程序编程接口创建流程客户端.
1. 在HelloWorld模块中删除Export端点. 打开HelloWorld模块编辑器,然后删除HelloWorldProcessExport端点.
2. 生成一个客户端Web项目. 将WID切换到J2EE透视图,并创建一个动态Web项目BPCClient和企业应用程序项目BPCClientEAR. (此步骤可以参考创建Web服务客户端项目的过程. )
3. 在Web项目中配置EJB引用. 打开BPCClient的web.xml文件,并切换到Web部署描述符编辑器中的“引用”页面,然后添加本地EJB引用并输入相应的配置. 在此示例中,由于BPCClient应用程序和HelloWorld进程在同一JVM中运行,因此我们选择LocalStateFlowManager作为无状态会话BEAN. 参考名称: ejb / LocalBusinessFlowManagerHome. 选择不在工作空间中的EJB选项. 这是因为EJB LocalBusinessFlowManager不在我们的工作空间中,而是在bpe.jar包中. 选择com.ibm.bpe.api.LocalBusinessFlowManagerHome作为本地Home接口. 选择com.ibm.bpe.api.LocalBusinessFlowManager作为本地接口. 详细信息如下图所示:


4. 在Web项目中配置EJB绑定. 同样,在Web部署描述符编辑器的参考页面中,指定WebSphere EJB的绑定信息,其中JNDI名称为com / ibm / bpe / api / BusinessFlowManangerHome. 如下图所示:


5. 创建一个index.jsp页面来调用该过程. 在这一部分中,我们还通过JSP页面调用上述BusinessFlowManager无状态会话BEAN,因此我们需要在BPCClient的WebContent下创建一个index.jsp页面,如下图所示:


6. JSP代码分析. 通过BPC应用程序编程接口,此JSP是调用过程的核心. 在此JSP中,我们首先需要通过JNDI查找LocalBusinessFlowManagerHome,然后生成相应的LocalBusinessFlowManager. 此部分的代码段如下:
InitialContext ctx = new InitialContext();
LocalBusinessFlowManagerHome mgrHome =
(LocalBusinessFlowManagerHome)ctx.lookup("java:comp/env/ejb
/LocalBusinessFlowManagerHome");
LocalBusinessFlowManager mgr = mgrHome.create();
用于调用流程的代码是通过LocalBusinessFlowManager的调用方法进行的. 该方法的简要说明如下:
public ClientObjectWrapper call(java.lang.String processTemplateName, ClientObjectWrapper inputMessage);
因此,我们需要构建一个代表输入参数的ClientOjbectWrapper. 有几种方法可以生成表示输入参数的ClientObjectWrapper. 在这里,我们首先构建一个DataObject,然后调用ClientObjectWrapper构造函数. 具体代码实现如下:
ServiceManager serviceMgr = new ServiceManager();
BOFactory bofactory = (BOFactory)serviceMgr
.locateService("com/ibm/websphere/bo/BOFactory");
DataObject input = bofactory.createByElement
("http://HelloWorld/HelloWorldInterface", "hello");
input.setString("helloInput", msg);
ClientObjectWrapper inputWrapper = new ClientObjectWrapper(input);
BOFactory的createByElement基于流程的WSDL接口生成一个表示参数的DataObject. 生成表示输入的ClientObjectWrapper之后,调用过程变得相对简单. 具体的代码段如下:
ClientObjectWrapper outputWrapper = mgr.call("HelloWorldProcess", inputWrapper);
DataObject output = (DataObject) outputWrapper.getObject();
resp = output.getString("helloOutput");
7. 至此,通过BPC应用程序编程接口调用流程的工作已经完成. 现在,您可以在WID测试环境中发布HelloWorldApp和BPCClientEAR应用程序,然后通过上面的index.jsp页面调用HelloWorld进程. 有关本节中使用的所有代码,请参阅本文所附的项目交换文件BPCClient.zip.
本文首先构建HelloWorld的“流程版本”,然后介绍WebSphere Process Server中的三种不同的客户端调用方法. 尽管这三种方法是常用的调用流程,但是它们使用不同的环境. 第一种方式主要用于服务组件编程模式的环境. 基于Web服务的方法是相对标准化的,是一种具有良好的跨平台和分布式计算功能的调用方式. 基于BPC编程接口的方法是集成最紧密,相对耦合最高的方法. 因此,具体选择取决于实际需求.
1. SCA编程模型简介-本文介绍SCA的一些基本概念.
2. WebSphere Process Server和WebSphere Integration Developer的信息中心-该信息中心提供有关这两种新产品的更完整的信息,并且可以查询示例程序中使用的特定API详细信息.
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/shouji/article-154626-2.html
选择新的
谋求战略均衡点
武官不怕死