BSTEK Development Framework2(BDF2) : 8.2.2.配置XSD

       在编写完成XSD之后,下一步就是将它们配置到Spring环境当中。我们来看看如何配置一个XSD文件,以使其能动态产生我们所需要的用于描述Webservice的wsdl文档。

       打开我们的Spring配置文件,我们这里就采用WEB-INF/dorado-home目录下的datasources.xml文件进行配置,在这个datasources.xml文件当中添加如下配置信息:

XSD文件在Spring当中的配置

 

1
2
3
<sws:dynamic-wsdl id="UserService" portTypeName="DemoUserRequest" locationUri="/dorado/webservice/requestUserWebService">

 

       在上述配置当中,我们采用了一个名为sws的namespace,要使用这个namespace,我们需要在这个datasources.xml文件当中添加关于这个sws namespace的相关定义信息,不过默认我们提供的datasources.xml当中已经添加好这个namespace的定义,如下图所示:

      在对这个UserService.xsd的配置当中,我们采用的是sws这个namespace提供的dynamic-wsdl,首先它需要指定一个id属性,这个属性很重要,它是我们请求浏览这个XSD文件生成的WSDL重要的凭据,然后指定它的portTypeName属性为 DemoUserRequest,这里的portTypeName就是运行时动态生成的wsdl中的portType的name,代码这个服务的名称,接下来是定义locationUri属性,我们这里将其值定义为/dorado/webservice/requestUserWebService,之前我们介绍过,Webservice请求就是一个标准的Http的Post请求,这里将locaionUri属性值设置为/dorado/webservice/requestUserWebService,表示将动态生成的WSDL当中标明目标Webservice的调用地址格式为下面的样子:

http/https://servername:<port>/<contextpath>/dorado/webservice/requestUserWebService

      这里需要着重强调的是,对于采用BDF2-WEBSERVICE模块发布的Webservice,在设置这个locationUri属性值是必须要以“/dorado/webservice/”开头,至于后面的值是什么,对于我们这个UserServiceEndpoint来说其实一点也不重要,因为我们这里的UserServiceEndpoint中的getUsers方法是通过请求的SOAP消息的body部分的ROOT节点名及namespace来进行匹配的,与具体的请求地址无关,所以对“/dorado/webservice/”后面是什么就不重要了。

       配置好XSD之后,可以启动项目,请求如下格式地址:

http/https://servername:<port>/<contextpath>/dorado/webservice/UserService.wsdl

       可以在我们的流程器当中如下图所示的WSDL文档内容:

      可以看到在访问这个wsdl时,我们也是以“/dorado/webservice/”开头,后台跟一个UserService.wsdl值,这里需要注意的是要访问wsdl,请求的URL一定要以“.wsdl”结尾,至于前面的UserService,其实就是sws:dynamic-wsdl中的id属性值,所以一旦请求以“/dorado/webservice/”开头同时以“.wsdl”结尾,那么就会有一个由BDF2-WEBSERVICE模块当中提供的专门的Controller负责进行处理,它只会关注.wsdl前面,所以对于上例来说,请求“/dorado/webservice/UserService.wsdl“可以看到WSDL,同样请求"/dorado/webservice/dasfasfd/asfasdf/UserService.wsdl”一样可以看到这个WSDL。