webservice接口(三)

由于我负责的项目中jdk版本为1.6,于是下述内容以CXF2.6版本为准,CXF3.X版本以后再写。

一.服务端开发

1.建立一个web工程ws_cxf_webservice,引入CXF相关jar包(再次强调是2.6版本)

2.service开发

   接口类:

 package com.cxf.hello;

 import javax.jws.WebService;

 @WebService

 public interface Hello {

    public String sayHello(String name);

 }

 实现类: 

 package com.cxf.hello.impl;

 import com.cxf.hello.Hello;

 public class HelloImpl implements Hello {

    @Override

    public String sayHello(String name) {

       return "Hello" + name;

    }

 }

3.配置web.xml

134229_0RFO_2296601.jpg

4.配置spring_ws.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"

    xsi:schemaLocation="

http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd

http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd">

    <import resource="classpath:META-INF/cxf/cxf.xml" />

    <import resource="classpath:META-INF/cxf/cxf-servlet.xml" />

    <jaxws:endpoint id="HelloTest" address="/HelloService">

       <jaxws:implementor>

           <ref bean="helloImpl" />

       </jaxws:implementor>

    </jaxws:endpoint>

    <bean id="helloImpl" class="com.cxf.hello.impl.HelloImpl" />

</beans>

5.发布到tomcat中,然后IE中输入

http://localhost:8080/ws_cxf_service/services/HelloService?wsdl,还是以看到wsdl描述语言为准。

二 . 客户端

建一个java工程ws_cxf_client,采用JUNIT单元测试;采用wsdl2Java生成客户端的方式调用,这里要用到cxf包中bin中的wsdl2java.bat。

1.打开cmd命令窗口,找到cxf安装包中的bin目录(如下):

  F:\jar\apache-cxf-2.6.0\bin>wsdl2java -p com.cxf.proxy -d d:/ws -verbose     http://localhost:8080/ws_cxf_service/services/HelloService?wsdl

说明:-p 包名路径,最好和项目中的包名对应,这样生成的代码无需修改。

          -d 生成的代码的位置,这里指定在d盘ws文件下。

  -verbose 后面就是服务端生成的wsdl。

其它参数可以参考CXF的官方文档

2.将生成的d:\\ws下的代码Copy到我们的工程中,对于有异常的类做一下修改(通过是XXXImplService.java有点异常,按照提示修改一下参数就行了);也可以将客户端代码编译后打包引入进工程中。

3.引入客户端调用的包,这里给一个需要引入最少JAR的列表

135945_AABG_2296601.jpg

4.客户端测试代码

public class CXFClient {

    @Test

    public void testSayHello() throws Exception {

       try {

    JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();

    factory.setServiceClass(Hello.class);

    factory.setAddress("http://localhost:8080/ws_cxf_service/services/HelloService");

       Object obj = factory.create();

       if (obj != null) {

           Hello ws = (Hello) obj;

           String s = ws.sayHello(" gary");

           System.out.println("s="+s);

       }

       } catch (Exception ex) {

           ex.printStackTrace();

       }

    }

}


转载于:https://my.oschina.net/u/2296601/blog/661717

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值