CXF实现WebService入门示例

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u014248473/article/details/87533300

CXF实现WebService入门示例

一、环境介绍

cxf:2.6.2
jdk:1.7
ide:IDEA14
(-)服务端借助jetty发布服务
(-)客户端使用wsdl2java工具生成(需将cxf配置环境变量)

二、服务端

1.jar包(CXF的lib目录下都有)

asm-3.3.1.jar
commons-logging-1.1.1.jar
cxf-2.6.2.jar
geronimo-servlet_2.5_spec-1.1.2.jar
neethi-3.0.2.jar
wsdl4j-1.6.2.jar
xmlschema-core-2.0.3.jar

jetty-continuation-7.5.4.v20111024.jar
jetty-http-7.5.4.v20111024.jar
jetty-io-7.5.4.v20111024.jar
jetty-security-7.5.4.v20111024.jar
jetty-server-7.5.4.v20111024.jar
jetty-util-7.5.4.v20111024.jar

2.接口

package com.yale.service;

import javax.jws.WebService;

@WebService
public interface HelloWorld {
    String sayHello(String name);
}

3.接口实现

package com.yale.service;

import javax.jws.WebService;

@WebService(endpointInterface = "com.yale.service.HelloWorld")
public class HelloWorldImpl implements HelloWorld {

    @Override
    public String sayHello(String name){
        System.out.println("sayHello方法被调用");
        return ("Hello "+name);
    }

}

4.发布

package com.yale.server;

import com.yale.service.HelloWorld;
import com.yale.service.HelloWorldImpl;
import org.apache.cxf.jaxws.JaxWsServerFactoryBean;

public class MainServer {
    public static void main(String[] args) {
        JaxWsServerFactoryBean factoryBean = new JaxWsServerFactoryBean();
        factoryBean.setAddress("http://localhost:8989/crazyit");
        factoryBean.setServiceClass(HelloWorld.class);
        factoryBean.setServiceBean(new HelloWorldImpl());
        factoryBean.create();
        System.out.println("发布成功!");
    }
}

5.测试

浏览器打开:http://localhost:8989/crazyit?wsdl

三、客户端

1.jar包

asm-3.3.1.jar
commons-logging-1.1.1.jar
cxf-2.6.2.jar
geronimo-servlet_2.5_spec-1.1.2.jar
neethi-3.0.2.jar
wsdl4j-1.6.2.jar
xmlschema-core-2.0.3.jar

2.wsdl2java生成客户端

- 新建一个Java项目
- 在src目录下进入cmd窗口
- 输入命令:wsdl2java -d . -p com.yale.service http://localhost:8989/crazyit?wsdl

3.精简客户端(可选)

- 只保留HelloWorld接口java文件,其他都删了
- HelloWorld接口报错的那一行删掉(含有ObjectFactory的那一行)

4.生成代理调用

package com.yale.client;

import com.yale.service.HelloWorld;
import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;

public class ClientMain {
    public static void main(String[] args) {
        JaxWsProxyFactoryBean bean = new JaxWsProxyFactoryBean();
        bean.setAddress("http://localhost:8989/crazyit");
        bean.setServiceClass(HelloWorld.class);
        HelloWorld proxy = (HelloWorld)bean.create();
        System.out.println(proxy.sayHello("tom"));
    }
}

 

猜你喜欢

转载自blog.csdn.net/u014248473/article/details/87533300
今日推荐