本文章总共分为两部分:一部分开发一个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”
如图所示:
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。如图所示:
5、编辑Assign模块。点击“new”,“From”选择“Fixed Value”然后填入“
<xsd:doSomething xmlns:xsd="http://example.ws"> <xsd:myinput/> </xsd:doSomething>
”。“to”选择“DSLinkRequestàparameters”。这是会弹出来一个窗口选择“yes”。
如图所示:
编辑新弹出来的那个在“From”中选择 “From->Variable->input->payload->input”,在“to”中选择“To->Variable->DSLinkRequest->parameters->myinput”后 ,保存。
6、编辑Assign1代码块。同样点击“new”按钮。在“From”中选择“Fixed Value”,填入<tns:CallerResponse xmlns:tns="http://MyTest.com/Test"> <tns:result/> </tns:CallerResponse>
在“To”中选择“To->outputàpayload”;
如图:
7、在这个Assign1中再点击“new”按钮,“From中”选择“From->Variable->DSLinkResponse->parameters->dosomethingReturn ”,并且To中选择“To->Variable->output->payload->result”如图所示:
8、编辑“CallerArtifacts.wsdl”,添加服务“CallerService”,Port为“CallerPort”,Address为“http://localhost:8080/ode/processes/Caller”,绑定使用的方式为“SOAP”。如图所示:
9、创建部署文件deploy.xml。在工程中用new->other->Apache ODE Delopyment Descriptior。然后选择如图所示:
10、将项目放到tomcat的ode的WebINF-process中,启动tomcat。这时候会报错:
这时候需要将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。可以看见我们发布的服务