一个调用WebService的BPEL程序转载http://www.codeproject.com/KB/webservices/BPELInvokeWebService.aspx?fid=1536656&df=90&mpp=25&noise=3&sort

下面的展示了用BPEL调用一个外部的或者存在的web service的例子。使用Eclipse-BPEL和Apache ODE

      本文章总共分为两部分:一部分开发一个Web Service,一部分实现在BPEL中调用

第一部分:

      准备好一个web service

1、首先创建一个web service,名字叫“DoSomethingWebService”。它仅有一个类“DoSomething”,包名为“ws.example”,在这个类中定义一个方法“doSomething”。你可以使用自底向上建立这个类,具体参见:http://www.eclipse.org/webtools/jst/components/ws/1.5/tutorials/BottomUpWebService/BottomUpWebService.html
在做这个web service时一定要按照步骤一步一步来,看清楚图形表示。

 

DoSomething代码为:

package ws.example; public class DoSomething { public String doSomething(String myinput) { System.out.println("doSomething is called"); return "doSomething is called"; } }

 

2、检查所产生的WSDL文件,service名字为“DoSomethingService”,Port为“DoSomething”,绑定地址为“http://localhost:8080/DoSomethingWebService/services/DoSomething

如图所示:

wsdl文件

3、导出这个服务,以war的形式,并把它放到tomcat的webapps下面,客户端也可以导出,方便测试。

导出直接选中wsdl文件导出即可。

 

第二部分:

        1、准备好Apache ode和Eclipse BPEL创建BPEL工程“InvokeWebServiceProj”,然后创建同步 (synchronous )BPEL进程“Caller”,namespace为“http://MyTest.com/Test”。

        2、导入WSDL文件即"DoSomething.wsdl",这时候要将先前产生的wsdl文件复制到当前项目中。新建立一个partnerLink,名字叫做“DSLink”。类型(Type)为“DSLinkType”,Partner Role of为“DSProvider” 。如何不知道如何创建partner link参见“http://www.eclipse.org/bpel/users/howto/wsdl.php

注意:引入的WSDL文件一定要是从本文件中引入,即InvokeWebServiceProj。

 

 3、加入Assign,Assign1和invoke。如图所示:

截图

4、编辑Invoke模块,调用doSomething。如图所示:

invoke模块

5、编辑Assign模块。点击“new”,“From”选择“Fixed Value”然后填入“

<xsd:doSomething xmlns:xsd="http://example.ws"> <xsd:myinput/> </xsd:doSomething>

”。“to”选择“DSLinkRequestàparameters”。这是会弹出来一个窗口选择“yes”。

如图所示:

Assign

编辑新弹出来的那个在“From”中选择 “From->Variable->input->payload->input”,在“to”中选择“To->Variable->DSLinkRequest->parameters->myinput”后 ,保存。

Assign

6、编辑Assign1代码块。同样点击“new”按钮。在“From”中选择“Fixed Value”,填入<tns:CallerResponse xmlns:tns="http://MyTest.com/Test"> <tns:result/> </tns:CallerResponse>

在“To”中选择“To->outputàpayload”;

如图:Assign1

7、在这个Assign1中再点击“new”按钮,“From中”选择“From->Variable->DSLinkResponse->parameters->dosomethingReturn ”,并且To中选择“To->Variable->output->payload->result”如图所示:

Assign1

8、编辑“CallerArtifacts.wsdl”,添加服务“CallerService”,Port为“CallerPort”,Address为“http://localhost:8080/ode/processes/Caller”,绑定使用的方式为“SOAP”。如图所示:

CallerService

9、创建部署文件deploy.xml。在工程中用new->other->Apache ODE Delopyment Descriptior。然后选择如图所示:

deploy

 

 

 10、将项目放到tomcat的ode的WebINF-process中,启动tomcat。这时候会报错:

error

 

这时候需要将Caller.bpel中的引入伙伴连接的语句import中的location=“file:/E:/eclipse/worksapce/DoSomethingWebService/WebContent/wsdl/DoSomething.wsdl”改成

location="location="DoSomething.wsdl"。同样在CallerArtifacts.wsdl也要做相应的修改,最后启动tomcat。

访问:http://localhost:8080/ode/services/listServices。可以看见我们发布的服务

 

 

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(apache,tomcat,Web,webservice,String,service)