1、使用CXF开发Web Service服务端
1.1 开发一个Web Service业务接口,该接口要用@WebService修饰
(1)创建一个Java项目MyServer
(2)在MyServer项目中创建一个接口HelloWorld
1
2
3
4
5
6
|
package
com.xju.ws;
import
javax.jws.WebService;
@WebService
public
interface
HelloWorld {
String sayHello(String name);
}
|
1.2 开发一个Web Service实现类,实现类也需要用@WebService修饰
1
2
3
4
5
6
7
8
9
10
11
|
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
1
2
3
4
5
6
7
8
9
10
11
|
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运行库。
2 使用CXF开发Web Service客户端
2.1 调用CXF提供的wsdl2java工具,根据WSDL文件生成相应的Java代码
在DOS中进入当前项目的src目录下,如输入下命令:
wsdl2java -frontend jaxws21 http://127.0.0.1:8080/test?wsdl
备注:加入参数-frontend jaxws21,为了防止出现CXF自带的javax.xml.service 版本高过jdk的javax.xml.service时报错:构造函数 Service(URL, QName, WebServiceFeature[]未定义。
2.2 找到wsdl2java所生成类中,一个继承了Service的类,该类的实例当成工厂来使用
2.3 调用Service子类的实例的getXxxPort方法,返回远程WebService代理
1
2
3
4
5
6
7
8
9
10
|
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客户端的方法来创建。
本文转自stock0991 51CTO博客,原文链接:http://blog.51cto.com/qing0991/1537678,如需转载请自行联系原作者