快速上手系列:webservice

不同公司的系统交互,用webservice可以起到安全的作用。
Webservice使用方法如下:
 
客户端:
这个是要打成jar包,给别人的用的,里面只是接口,没有实现。
 
用Webservice,举例两个包,
一个是Axis2,Axis是apache下一个开源的webservice开发组件,出现的算是比较早了,也比较成熟。
一个是Apche CXF,CXF开发webservice也是比较方便和简单的,它和spring的集成可以说是非常地好。
建项目,导包(下面例子项目用的CXF),写要暴露给外部的service接口,再写webservicesClient.xml,如:xxxService.java
 @WebService
public interface xxxService{

  //写接口名和接收的vo类
  public xxxResDTO getXXX(xxxReqDTO xxxreqdto);
}
 
webservicesClient.xml里,每个service接口对应一个jaxws,里面是方法名,动态的地址,和一个类似aop的拦截(打印日志的吧)
<jaxws:client id = "xxxclient"
    serviceClass ="com.xxx.xxxService" --上面xxxService.java的路径
    address= "发布的ip/xxx/xxxSe对外rvice?wsdl"  --暴露给大家的访问地址  >
    <jaxws:outInterceptors>
         <ref bean = "xxxInterceptor" />
    </jaxws:outInterceptors>
</jaxws:client>    
其实这个jar里就三个内容,出参入参DTO,service接口,xml文件。三个都写好后,把项目打成jar包,给别人用,别人怎么用呢?如下
 
别人拿到jar包,只要根据jar包里webservicesClient.xml的jaxws:client id的内容,注入实例,然后用实例去点方法就能调到方法了。如下
@Resource
private xxxService xxxClient; //上面那个xxxService的实现

 

public xxx  xxxbiz {

  //自己的业务
  public xxx bizXXX(){
          xxxDTO  xxxdto = new xxxDTO();
         xxxdto = xxxClient.getXXX(.....); //这里就调用实例的那个方法了
    }

}        

 

 
服务端:
这是那个jar包所有service接口的具体实现方法。
 
这个项目也引上面那个client的包,然后直接实现,如下
@WebService 
public class xxxServiceImpl implentments xxxService{
    @Override
     public xxxResDTO getxxx(){
             //写这个webservice接口的实现  
}    
     
}

 

然后在项目的resources->config->里加个配置文件webservicesContext.xml即可。
 
webservicesContext.xml里面四个东西,比客户端多了个实现类
<jaxws:endpoint id="xxxService"
    implementor="xxxServiceImpl"
    implementorClass = "com.xxx.xxxService" //类路径
    address="/xxxService" > //对外路径

  <jaxws:inTerceptors>
    <ref bean="xxxInterceptor">
  </jaxws:inTerceptors>

</jaxws:endpoint>

 

下面还有个aop
<aop:config>
<aop:aspect ef ="xxxadvice">
   <aop:around method="serviceInvoke"
       pointcut="execution(*.*(..))" />  //所有路径的所有方法都拦截
<aop:aspect>

 

步骤如上。
但是,别人用客户端client的jar包时,它是如何触发服务端的实现方法呢?
答:client的xml文件里,配有address,通过那个地址,找到了服务端项目,
对了,服务端项目的web.xml也要配置一下,如下:
 
<servlet>
  <servlet-name>CXFServlet</servlet-name>
 ...
    <servlet-mapping>...
</servlet>

 

 
这样,只要七步,
Client端写DTO、service、xml,然后打包,
服务端写实现、xml、配web.xml。
就完成了一个webservice项目。
 
posted @ 2020-10-25 17:21  zhaot1993  阅读(56)  评论(0编辑  收藏  举报