本实例中需要引入cxf-2.0.10.jar的jar包,在链接http://192.168.0.122:8888/CXFWEBService/中的[color=darkred]CXFWEBService 是项目的名称[/color],
需要注意的一点是:
在服务器端,使用的工厂是JaxWsServerFactoryBean factory = new JaxWsServerFactoryBean();,
设置的class 是实现类,如:factory.setServiceClass(SayHappyImpl.class);
在客户端: 使用的工厂是 JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
设置的class是接口,如:factory.setServiceClass(SayHappy.class);
[ :) b]第一步: 创建一个接口[/b]
package com.test.cxf.service.server;
import javax.jws.WebService;
// 注明webservice的接口
@WebService
public interface SayHappy {
/**
* WebService接口定义类.
*
* 使用@WebService将接口中的所有方法输出为Web Service.
* 可用annotation对设置方法、参数和返回值在WSDL中的定义.
*/
public String letMeSayHappy();
public String letKanasiiGo();
/**
* 一个复杂地方法,通过对象来交互
* @param
* @param
* @return
* @WebParam(name="xxxx")设置wsdl文件中传的参数的名称
* @WebResult(name="xxxx")设置wsdl文件中返回的结果的名称
*/
// public People changePeopleAge(String operName,String operPass);
}
:) [b]第二步:创建一个类,实现上面的接口[/b]
package com.test.cxf.service.server;
import javax.jws.WebService;
/**
* WebService接口的具体实现类
*
* @author
* @WebService(endpointInterface="xxxx") xxxx指向接口的全路径
*/
// 这个实现类上的注解让CXF知道哪个接口要创建我们的WSDL的。
@WebService(endpointInterface = "com.test.cxf.service.server.SayHappy")
public class SayHappyImpl implements SayHappy {
public String letKanasiiGo() {
// TODO Auto-generated method stub
return "悲しみにさよなら";
}
public String letMeSayHappy() {
// TODO Auto-generated method stub
return "幸せに過ごす!";
}
}
:) [b]第三步:创建服务器端,发布webservice[/b]
package com.test.cxf.service.server;
import org.apache.cxf.endpoint.Server;
import org.apache.cxf.jaxws.JaxWsServerFactoryBean;
public class SayHappyServer {
/**
* @param args
*/
public static void main(String[] args) {
JaxWsServerFactoryBean factory = new JaxWsServerFactoryBean();
// JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
factory.setServiceClass(SayHappyImpl.class);//
factory.setAddress("http://192.168.0.122:8888/CXFWEBService/");
Server server = factory.create();
server.start();
}
}
Endpoint.publish("http://localhost:8080/helloWebService",new HelloWebServiceImpl()); 同样也是发布服务的方式之一
第四步:创建客户端接口,访问webservice
package com.test.cxf.service.server;
import org.apache.cxf.jaxws.JaxWsProxyFactoryBean; //cxf-2.0.10.jar
public class SayHappyClientTest {
public static void main(String[] args){
JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
factory.setServiceClass(SayHappy.class);//
factory.setAddress("http://192.168.0.122:8888/CXFWEBService/");
SayHappy sayHappy = (SayHappy) factory.create();
System.out.println("webservice:"+sayHappy.letMeSayHappy());
}
}
需要注意的一点是:
在服务器端,使用的工厂是JaxWsServerFactoryBean factory = new JaxWsServerFactoryBean();,
设置的class 是实现类,如:factory.setServiceClass(SayHappyImpl.class);
在客户端: 使用的工厂是 JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
设置的class是接口,如:factory.setServiceClass(SayHappy.class);
[ :) b]第一步: 创建一个接口[/b]
package com.test.cxf.service.server;
import javax.jws.WebService;
// 注明webservice的接口
@WebService
public interface SayHappy {
/**
* WebService接口定义类.
*
* 使用@WebService将接口中的所有方法输出为Web Service.
* 可用annotation对设置方法、参数和返回值在WSDL中的定义.
*/
public String letMeSayHappy();
public String letKanasiiGo();
/**
* 一个复杂地方法,通过对象来交互
* @param
* @param
* @return
* @WebParam(name="xxxx")设置wsdl文件中传的参数的名称
* @WebResult(name="xxxx")设置wsdl文件中返回的结果的名称
*/
// public People changePeopleAge(String operName,String operPass);
}
:) [b]第二步:创建一个类,实现上面的接口[/b]
package com.test.cxf.service.server;
import javax.jws.WebService;
/**
* WebService接口的具体实现类
*
* @author
* @WebService(endpointInterface="xxxx") xxxx指向接口的全路径
*/
// 这个实现类上的注解让CXF知道哪个接口要创建我们的WSDL的。
@WebService(endpointInterface = "com.test.cxf.service.server.SayHappy")
public class SayHappyImpl implements SayHappy {
public String letKanasiiGo() {
// TODO Auto-generated method stub
return "悲しみにさよなら";
}
public String letMeSayHappy() {
// TODO Auto-generated method stub
return "幸せに過ごす!";
}
}
:) [b]第三步:创建服务器端,发布webservice[/b]
package com.test.cxf.service.server;
import org.apache.cxf.endpoint.Server;
import org.apache.cxf.jaxws.JaxWsServerFactoryBean;
public class SayHappyServer {
/**
* @param args
*/
public static void main(String[] args) {
JaxWsServerFactoryBean factory = new JaxWsServerFactoryBean();
// JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
factory.setServiceClass(SayHappyImpl.class);//
factory.setAddress("http://192.168.0.122:8888/CXFWEBService/");
Server server = factory.create();
server.start();
}
}
Endpoint.publish("http://localhost:8080/helloWebService",new HelloWebServiceImpl()); 同样也是发布服务的方式之一
第四步:创建客户端接口,访问webservice
package com.test.cxf.service.server;
import org.apache.cxf.jaxws.JaxWsProxyFactoryBean; //cxf-2.0.10.jar
public class SayHappyClientTest {
public static void main(String[] args){
JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
factory.setServiceClass(SayHappy.class);//
factory.setAddress("http://192.168.0.122:8888/CXFWEBService/");
SayHappy sayHappy = (SayHappy) factory.create();
System.out.println("webservice:"+sayHappy.letMeSayHappy());
}
}