BSTEK Development Framework2(BDF2) : 8.BDF2-WEBSERVICE

      BDF2-WEBSERVICE模块是利用Spring-WS实现,Spring-WS是一款轻量级的Webservice框架实现,具有简单、灵活、与Spring框架无缝集成等特点。基于Spring-WS,BDF2-WEBSERVICE模块中提供了一个快速的构建Webservice服务的环境,对于构建的Webservice服务,可以灵活决定是否添加基于WS-Security的加密认证。

      要使用BDF2-WEBSERVICE模块,可以到nexus.bsdn.org上下载BDF2-WEBSERVICE模块相关jar,或到我们提供的在线项目创建向导中选择BDF2-WEBSERVICE模块并下载。同样如果您采用的是Maven来管理您的项目,那么只需要在您项目的pom.xml文件当中添加下面的依赖信息即可:

BDF2-WEBSERVICE模块的依赖配置
<dependency>
  <groupId>com.bstek.bdf2</groupId>
  <artifactId>bdf2-webservice</artifactId>
  <version>2.0.0</version>
</dependency>

      添加好BDF2-WEBSERVICE模块后,就可以启动项目对BDF2-WEBSERVICE模块进行测试了,这里需要特别指出的是,BDF2-WEBSERVICE模块虽然是基于Spring-WS项目构建,但却不用在web.xml当中配置标准Spring-WS使用时需要配置的MessageDispatcherServlet。在BDF2-WEBSERVICE模块当中,我们已经将这个MessageDispatcherServlet要担负的作用集成到Dorado7提供的Controller当中,所以原MessageDispatcherServlet的工作完全由Dorado7中提供的Controller来完成。

      BDF2-WEBSERVICE模块当中允许用户覆盖的属性如下表所示:

属性名类型默认值描述
bdf2.webservice.useSecuritybooleanfalse是否为所有的Webservice服务添加WS-Security的加密认证,一旦设置成true,那么所有BDF2-WEBSERVICE模块暴露的Webservice服务客户端在进行访问时,都必须提供基于WS-Security的加密认证规范的用户名及密码信息,否则将不能调用目标Webservice服务;默认为false,表示不用WS-Security的加密认证就可以访问Webservice服务(具体项目当中可以通过实现BDF2-WEBSERVICE模块当中提供的IWebserivce来对单个Webservice服务添加WS-Security的加密认证,这样更为灵活,所以一般该属性设置为false即可)。
bdf2.webservice.userServiceBeanStringbdf2.userService一旦我们的Webservice服务添加WS-Security的加密认证后,用户在访问这个服务时就需要提供用户名及密码,这个属性的值对应的bean,就是负责验证用户提交的用户名及密码是否正确。这个属性的值应该是一个Spring的bean的id,一个实现了UserDetailsService接口且配置到Spring当中的bean的id,它的默认值为bdf2.userService,表示采用BDF2-CORE模块当中提供的IUserService接口实现类(该接口扩展自UserDetailsService接口),当然,如果您的项目当中没有使用BDF2-CORE模块,那么需要重新编写一个UserDetailsService接口实现类,并配置到Spring当中,将该属性值改为配置的bean的id,否则会报找不到bdf2.userService这个bean的异常。
bdf2.webservice.userCacheBeanString如果我们对外暴露的Webservice服务,添加了WS-Security认证要求,且外部访问比较频繁,这样频繁的访问服务端每次都需要进行用户名及密码的认证,可能会对系统造成一定的压力,为解决这个问题,这个属性允许用户设置一个实现了org.springframework.security.core.userdetails.UserCache接口的bean的id,利用这个接口,将可以用于访问Webservice服务用户账号信息缓存起来,当用户调用Webservice服务时,就用这个接口当中缓存的账号信息对用户名密码进行验证,这样可大大减轻服务端验证用户名密码的压力。默认为空,表示不用缓存的用户账号信息进行认证,而采用bdf2.webservice.userServiceBean属性定义的bean来进行认证。