1、使用CXF开发Web Service服务端

1.1 开发一个Web Service业务接口,该接口要用@WebService修饰

(1)创建一个Java项目MyServer

wKiom1PlBUfC3RlPAAJcLKClvY8527.jpg

(2)在MyServer项目中创建一个接口HelloWorld

wKiom1PlBZDDXUNMAAGfkb4skIs760.jpg

package com.xju.ws;
import javax.jws.WebService;
@WebService
public interface HelloWorld {
String sayHello(String name);
}


1.2 开发一个Web Service实现类,实现类也需要用@WebService修饰

wKioL1PlB8PjrWuVAAJNdUJh04A915.jpg

package com.xju.ws.impl;
import javax.jws.WebService;
import com.xju.ws.HelloWorld;
@WebService(endpointInterface = "com.xju.ws.HelloWorld", serviceName = "HelloWorldWs")
public class HelloWorldWs implements HelloWorld {
@Override
public String sayHello(String name) {
// TODO Auto-generated method stub
return null;
}
}


1.3 使用Endpoint类的静态方法来发布WebService

wKioL1PlCe3giuerAAI1hhjTTHQ775.jpg

package com.xju.ws.pub;
import javax.xml.ws.Endpoint;
import com.xju.ws.HelloWorld;
import com.xju.ws.impl.HelloWorldWs;
public class ServerMain {
public static void main(String[] args) {
HelloWorld hw=new HelloWorldWs();
Endpoint.publish("http://127.0.0.1:8080/test", hw);
System.out.println("发布成功");
}
}

备注:在运行中必须添加CXF2.7运行库。

wKioL1PlDvnzBA2KAAP9ic6yLr8488.jpg


2 使用CXF开发Web Service客户端

2.1 调用CXF提供的wsdl2java工具,根据WSDL文件生成相应的Java代码

wKioL1PlDIvTYZLXAAJehfQhFjQ549.jpg

在DOS中进入当前项目的src目录下,如输入下命令:

    wsdl2java -frontend jaxws21 http://127.0.0.1:8080/test?wsdl

wKioL1Pnk1DQZc7aAAETs1NbIEc815.jpg

    备注:加入参数-frontend jaxws21,为了防止出现CXF自带的javax.xml.service 版本高过jdk的javax.xml.service时报错:构造函数 Service(URL, QName, WebServiceFeature[]未定义。


2.2 找到wsdl2java所生成类中,一个继承了Service的类,该类的实例当成工厂来使用

wKioL1PnlI-T17P2AAI1bkwAu3o014.jpg



2.3 调用Service子类的实例的getXxxPort方法,返回远程WebService代理

package com.xju.publish;
import com.xju.ws.HelloWorld;
import com.xju.ws.impl.HelloWorldWs;
public class ClientMain {
public static void main(String[] args) {
HelloWorldWs factory=new HelloWorldWs();
HelloWorld hw=factory.getHelloWorldWsPort();
System.out.println(hw.sayHello("yyq"));
}
}

运行结果:

yyq,你好!现在时间是:Sun Aug 10 23:51:39 CST 2014


备注:此处也可以使用创建Web Service客户端的方法来创建。