ecplise中Spring+cxf创建及发布webservice及axis调用远程webservice实例

 这几天在研究webservice的创建及调用,今天刚好完成了一个简单的Demo,将源码及心得分享出来希望对新手有帮助。

 java中开发webservice的方法有很多(利用jdk web服务api实现;xfire;axis1.4;axis2等),我这边使用的ApacheCXF+Spring,远程调用使用的是axis.其他方式也试过,个人觉得这样搭配比较方便的开发webservice

建立web工程,工程目录结构如下:


首先配置xml文件及spring.xml文件配置


      Spring.xml文件配置:这里需要注意的是引入cxf支持及webservice发布路径指定到接口名


webservice开发,这里仅需编写一个接口及实现类,在类头写上@WebService注解即可,贴上本工程中的接口及实现类:

package webService.service;

import javax.jws.WebService;
/**
 * 简单webservice Demo
 * @author xyl
 *
 */
@WebService
public interface DemoService {

    public int getcount();
    
    public String getUserName(String username);
}

实现类:

package webService.service.impl;

import javax.jws.WebService;

import webService.service.DemoService;
/**
 * webservice实现类
 * @author xyl
 *
 */
@WebService
public class DemoServiceImpl implements DemoService {

    //添加属性
    private int count=520;
    
    @Override
    public int getcount() {
        // TODO Auto-generated method stub
        return count;
    }

    @Override
    public String getUserName(String username) {
        // TODO Auto-generated method stub
        return "调用webservice接口成功,返回的结果是"+username;
    }

}

完成以上步骤后启动Tomcat即可,如果webservice发布成功,在地址栏中输入http://localhost:8080/WcxfDemo/serivces即可出现如图所示:

图上则暴露出接口方法及wsdl路径.

接下来是客户端测试类编写:

我给我的测试程序写了一个工具类,仅仅是个初版,还有很多的问题,现在这个仅适用于返回类型为基本数据类型及解决了调用C#webservice时的返回类型在java中不匹配的问题,因为不确定webservice的返回类型,所以我这边用的泛型,提供一个方法解析泛型类型。代码如下:

import org.apache.axis.client.Call;            import org.apache.axis.client.Service;



这里注意需要导入的包是:

axis.jar

commons-discovery-0.2.jar

commons-logging.jar

wsdl4j-1.6.2.jar  否则创建service对象时会出错。

main程序如下:


在main程序里面只要配置一下工具类中方法的各项参数即可,因为如果调用的C#webservice有时会存在类型在java中不匹配的问题(我这边仅仅是做的调天气webservice做的测试),所以我这边用的vector做的返回类型,在判断泛型类型时做了特殊判断。结果如下:

下面这段代码是测试本地cxf发布的webservice,代码及运行结果如下:


大笑仅供参考,不喜勿喷.

附上工程代码:WebServiceDemo

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值