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,如需转载请自行联系原作者