7.3. 接口 interface
7.3.1. 解释
Interface定义一个或多个业务功能。这些业务功能通过service来对外提供,通过reference来使用。一个service提供确切唯一的interface的业务功能给其他component使用。每个接口都定义了一个或多个操作(operation),每个operation都有0个或1个请求(输入)消息和0个或1个响应(输出)消息。请求和响应消息可以是简单类型,如string 值,也可以是复杂类型。
Tuscany中service的interface支持 JavaInterface和WSDLInterface。
查看Restaurant2.composite,RestaurantService定义,
<sca:service name="RestaurantService">
<sca:interface.java interface="restaurant2.api.RestaurantService"/>
</sca:service>
这里使用的是java interface。Interface的值是service类的全限定名。
7.3.2. 替换service的interface为WSDL interface
Ø 生成wsdl文件
首先使用interface restaurant2.api.RestaurantService生成WSDL文件restaurant2.wsdl
Ø 删除RestaurantService的interface,然后添加WSDLPortType
图7_3_1
Ø 并设置peroperties
Interface: http://api.restaurant2/#wsdl.interface(RestaurantService)
图7_3_2
Ø 给RestaurantService添加binding
图7_3_3
Ø 然后设置properties
Uri:http://localhost:8085/RestaurantService
图7_3_4
现在的RestaurantServiceComponent的定义为
<sca:component name="RestaurantServiceComponent">
<sca:implementation.java class="restaurant2.lib.RestaurantServiceImpl"/>
<sca:reference name="menuService"/>
<sca:reference name="billService"/>
<sca:service name="RestaurantService">
<sca:interface.wsdl interface="http://api.restaurant2/#wsdl.interface(RestaurantService)"/>
<sca:binding.ws uri="http://localhost:8085/RestaurantService"/>
<sawsdl:semantic.sawsdl/>
</sca:service>
<sawsdl:semantic.sawsdl/>
</sca:component>
interface – portType/interface
URI地址的格式 <WSDL-namespace-URI>#wsdl.interface(<portTypeOrInterface-name>)
Ø 测试webservice
添加新类RestaurantServiceServer