Skip to end of metadata
Go to start of metadata

概述

BDF中WebService模块采用Spring WS2实现,采用Contract First开发模式,基于WebService的Username token profile v1.0标准认证方式对客户端调用进行合法性认证,同时提供基于标准Spring Security的WebService权限管理机制,可以与BDF安全模块无缝接合,实现以角色为核心的WebService权限控制。同时在BDF的WebService实现当中还提供WebService调用日志数据库记录功能,可以记录每次WebService的调用人、调用的目标WebService的Endpoint名称(完整的类名以及方法名)、调用客户端IP地址、调用开始时间、调用结束时间、有没有调用成功以及调用失败时的错误信息,通过日志记录可以方便管理人员对WebService进行维护与统计。

对于WebService的编写我们引入JAXB2,实现XML与Java对象之前相互转换,这样在编写WebService的Endpoint时不再解析复杂的XML,而直接操作Java对象即可,让JAXB2负责将XML转换成Java对象,或将响应的Java对象转换成XML传输到客户端。

客户端部分我们提供一个名为WebServiceClient类,可以快速实现目标WebService调用。客户端当中,你可以方便的为当前SOAP消息添加Username Token(可以选择密码加密或不加密),快速将XML的DOM对象或XML字符串快速转换成SOAP消息发送到WebService服务端。同时在WebServiceClient类我们也提供了JAXB2的支持,这样无论是发送SOAP消息或接收WebService的响应消息,都可以使用JAXB2将XML转成Java对象,或将Java对象转成XML发送的WebService服务端。

配置

与使用BDF其它模块一样,首先我们需要下载BDF的发行包,解压后找到其中的com.bstek.bdf.webservice-[version]目录,将该目录下bin目录中的com.bstek.bdf.webservice-[version].jar文件复制到目标工程的lib目录下,同时还需要将BDF WebService模块所依赖的第三方jar复制到目标工程的lib下。之前说过,BDF所有模块都依赖Core模块,所以还需要配置好Core模块功能,详情查看公共模块说明。

BDF的WebService模块也需要有数据库支持,目录主要是一张用于记录WebService调用日志的数据库表。打开BDF发行包下com.bstek.bdf.webservice-[version]/dbschema目录,找到与当前工程吻合的SQL文件,创建BDF模块所需要的数据库表。同时如果我们需要覆盖ws模块当中的默认属性,您可在dorado7项目的dorado-home目录下bdf.properties文件中,添加需要覆盖的属性条目即可。目前可用的属性如下表所示。

属性名称

描述

bdf.webservice.useSecurity

客户端在调用当前BDF的WebService模块中的webservice时是否需要验证,该属性默认值为true,表示需要验证,这样后面的两个属性才会起作用,如果设置为false,则不需要验证。

bdf.webservice.userService

WebService在验证客户端用户名、密码合法性时采用的UserService实现类,默认使用的是BDF公共模块里的UserService对象,同样也是一个定义在Spring当中名为bdf.userService的Spring的Bean,如果您要自定义这个userService,那么需要实现Spring Security当中的org.springframework.security.core.userdetails.UserDetailsService接口,并将其配置到Spring当中,这里设置为这个Bean的ID即可。该属性仅在bdf.webservice.useSecurity属性值为true是起作用。

bdf.webservice.webServiceSecurityMetadataSource

在对WebService进行权限验证时采用的验证资源,默认这个比较简单,没有任何资源可供验证,也就是说不对WebService资源进行权限方面控制,只要认证通过都可以访问。

bdf.webservice.accessDecisionManager

在对WebService进行权限验证时采用的AccessDecisionManager类,默认所以WebService都不进行权限控制,只要认证通过都可以访问。

最后一步就是在目标工程的web.xml当中添加一些配置信息,具体配置信息如下:

可以看到,我们配置了一个Servlet,这个servlet是由Spring WS提供处理所有路径以webservice开头的请求,在BDF的webservice模块当中,我们提供了一个示例webservice,该示例WebService的WSDL地址就是http://localhost:8080/webservice/demo.wsdl,通过查看wsdl我们知道,这个webservice可以接收一个请求,根据请求中要获得的用户数量,返回对应数量的用户信息。

这个名为bdf-ws的servlet会拦截所有根URL为webservice的请求,这也就提醒我们在业务开发的过程当中不要使用这个名为webservice的URL。
配置完成之后,接下来就可以重启应用,在浏览器中打开http://localhost:8080/webservice/demo.wsdl查看这个演示用的WebService的WSDL信息,当然也可以使用SOAPUI之类的WebService客户端测试工具对这个示例WebService进行测试。

首选项配置

在BDF默认实现当中,提供了对Webservice调用的日志记录功能,如果您采用BDF发布了若干个webservice,那么默认情况下,对于客户端调用都会记录到bdf_webservice_logs表当中,记录的内容包括调用人、调用时间、请求的xml文件内容等。

在某些情况下,出于性能角度考虑,您可能不需要对webservice调用进行日志记录,那么我们唯一需要做的就是修改首选项目配置表,将其中名为“persistence_webservice_logs”的首选值改为N即可(默认为Y,表示对webservice调用进行日志记录。)

Labels
  • No labels