CXF webservice

说实话,一切知识只要你细心,都能在官网找到,但有些朋友浪费很长时间,就是搞不懂。戒骄戒躁,静下心来。
最近有个同事,凡事都和犟嘴,我躲都躲不了,言必称百度,网易,facebook,google,多小的问题都能上升到哥德巴赫猜想的理论高度,而实际上工作效率极其低下。
我这里想说的是, 少些理论多些实际,你看的见的理论都是从你看不见的地方总结出来的。一步一个脚印吧。

cxf简单不能在简单的webservice发布,难点只有一个,那就是与jdk6冲突问题。网上许多解决方案,但是忽略了一个,jar包版本问题。

${JAVA_HOME}\jdk6\jre\lib\endorsed
在次检查CXF中的jar包,是否是2.2.1.1以上版本,若不然还是报错。删除其他的jax-api 开头的jar必须删除要不还是冲突。

2:服务端代码

package com.cxf.service.server;


import  java.util.List;

import  javax.jws.WebParam;
import  javax.jws.WebService;


/**
   *   This   class   was   generated   by   Apache   CXF   2.3.3
   *   2012 -  05 -  18T15:26:41.003+08:00
   *   Generated   source   version:   2.3.3
   *
   */
 
@WebService  ( name =  "orderService"  )
public   interface  OrderService {

     String sayHi(  @WebParam (name=  "text" )String text);
    String sayHiToUser(User user);
    String[] SayHiToUserList(List<User> userList);
}



实现类:

package  com.cxf.service.server;

import  java.util.LinkedHashMap;
import  java.util.List;
import  java.util.Map;

import  javax.jws.WebService;

@WebService  (endpointInterface =  "com.cxf.service.server.OrderService"  , serviceName =  "orderService"  )
public   class  OrderProcessImpl  implements  OrderService {

     Map<Integer, User>  users  =  new  LinkedHashMap<Integer, User>();

       public  String sayHi(String text) {
            return   "Hello "  + text;
     }

       public  String sayHiToUser(User user) {
            users .put(  users .size() + 1, user);
            return   "Hello "  + user.getName();
     }

       public  String[] SayHiToUserList(List<User> userList) {
          String[] result =  new  String[userList.size()];
            int  i = 0;
            for  (User u : userList) {
              result[i] =  "Hello "  + u.getName();
              i++;
          }
            return  result;
     }
}
2:web.xml
<? xml version ="1.0" encoding= "UTF-8" ?>
<!  DOCTYPE  web-app
     PUBLIC  "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
     "http://java.sun.com/dtd/web-app_2_3.dtd"  >
<  web-app >
       < context-param  >
            < param-name  > contextConfigLocation  </  param-name >
            < param-value  > WEB-INF/beans.xml  </  param-value >
       </ context-param  >


       < listener  >
            < listener-class  >
               org.springframework.web.context.ContextLoaderListener
            </  listener-class >
       </ listener  >
       < servlet  >
            < servlet-name  > CXFServlet  </  servlet-name >
            < display-name  > CXF Servlet  </  display-name >
            < servlet-class  >
              org.apache.cxf.transport.servlet.CXFServlet
            </  servlet-class >
            < init-param  >
                < param-name  > config-location  </  param-name >
                 < param-value  > /WEB-INF/beans.xml  </  param-value >
            </  init-param >
            < load-on-startup  > 1  </  load-on-startup >
       </ servlet  >

       < servlet-mapping  >
            < servlet-name  > CXFServlet  </  servlet-name >
            < url-pattern  > /services/*  </  url-pattern >
       </ servlet-mapping  >

</  web-app >
源码就不上传了,太简单了。
3:客户端代码,为了避免兼容性,也是本人太懒我采用的是自动代码生成。请看ant文件内容:

<?xml version="1.0"?>
<project name= "cxf wsdl2java" basedir= "." default= "cxfWSDLToJava">   
    <property   name= "cxf.home"  location  =  "${basedir}/WebRoot/WEB-INF/" />


    <path   id= "cxf.classpath"  >
       <fileset   dir= "${cxf.home}/lib"  >
          <include   name=  "**/*.jar" />
       </fileset>
    </path>      
    <target   name= "cxfWSDLToJava"  >
       <java   classname=  "org.apache.cxf.tools.wsdlto.WSDLToJava"   fork=  "true" >
          <arg   value=  "-client" />
          <arg   value=  "-d" />
          <arg   value=  "client" />
          <arg   value=  "http://localhost:8080/webserviceCXF/services/OrderService?wsdl"  />
          <classpath>
             <path   refid=  "cxf.classpath" />
          </classpath>
       </java>
    </target>
</project>

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值