当前位置 : 主页 > 网页制作 > Nodejs >

cxf发布webservice 简单使用步骤备忘

来源:互联网 收集:自由互联 发布时间:2021-06-24
首先当然是下载cxf框架的jar包 我下的是3.0.3版本,将jar包拷贝到自己项目中的Lib 第一步:将cxf集成到我们的项目中去,配置web.xml,在xml文件中加入以下代码 servlet servlet-namecxf/servlet-nam

                首先当然是下载cxf框架的jar包 我下的是3.0.3版本,将jar包拷贝到自己项目中的Lib


第一步:将cxf集成到我们的项目中去,配置web.xml,在xml文件中加入以下代码

 

                                                <servlet>
 <servlet-name>cxf</servlet-name>
 <servlet-class>
  org.apache.cxf.transport.servlet.CXFServlet
 </servlet-class>
 <load-on-startup>1</load-on-startup>
</servlet>
 
<servlet-mapping>
 <servlet-name>cxf</servlet-name>
 <url-pattern>/services/*</url-pattern>
</servlet-mapping>


           第二步:编写webservice接口

 注意在interface 和实现类中都要加@WebService 注解否则会出现代码不全调用不到的问题


        第三步:接口书写完成就要配置发布配置文件了,将接口映射到url给第三方调用。在web-inf下面创建cxf-servlet.xml文件,例如下面的代码


             <?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xmlns:jaxws="http://cxf.apache.org/jaxws"
 xmlns:soap="http://cxf.apache.org/bindings/soap"
 xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://cxf.apache.org/bindings/soap http://cxf.apache.org/schemas/configuration/soap.xsd
http://cxf.apache.org/jaxws
http://cxf.apache.org/schemas/jaxws.xsd">


 <jaxws:server id="getZdxmlistService"                 //id随意起只要不跟其他的server重复就行
  serviceClass="com.tko.service.ZdService"           //serviceClass表示接口类 
  address="/getZdxmlist">                                           //address表示第三方访问的地址
   
  <jaxws:serviceBean>
  
   <bean class="com.tko.service.ZdServiceImpl" />  // 表示接口的实现类
   
  </jaxws:serviceBean>
  
 </jaxws:server>
 
</beans>


//如果要配置多个接口 可以继续添加jaxws:server


一切准备就绪,然后将项目部署到tomcat中去,访问http://localhost:8080/project/services/xxx?wsdl,出现xml页面

说明发布成功,在客户端就可以利用 cxf 工具 wsdl2java http://localhost:8080/project/services/xxx?wsdl 生成客户端代码进行调用。



           cxf我感觉比axis2好用,axis2还要单独部署一个axis2.war包到tomcat中去才能使用,还有axis2不能传递自定义的复杂对象和list等,貌似只能传一维数组,如果要传

复杂对象还要进行一系列的复杂转换挺麻烦的,cxf可以传自定义对象,list,数组 貌似不能传map要进行相应的转换(新手勿喷,可能大神有更简便的方法)


PS: 假如需要调用接口的某个方法 需要返回两个数据类型,可以用json 或者map 搞定

JSONObject jo = new JSONObject();

jo.put("student",new Student());

jo.put("teacher", new Teacher());

return jo.toString();           然后客户端再去解析json,通过get(key)把需要的对象拿出来使用

网友评论