简单cxf+spring构建webservice服务

  cxf的作用,我就不在这里讲述了,因为网上比我讲的好的多的多的,忽忽! 

  这篇文章主要是给刚入门cxf的童鞋们一个例子。
  我用的jar包是:spring 3.1+ cxf 2.6
  首先我们来编写服务端:
  step1:Myeclipse 创建web project(project Name: HelloCXF)
  实现一个服务:
  类Student充当Model:
 
   @XmlType(name="StudentInfo")
@XmlAccessorType(XmlAccessType.FIELD)
public class Student implements Serializable{

	private static final long serialVersionUID = 6841706329341519463L;
	
	private String id;
	private String name;
	private Integer age;
	private String addr;
	
	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public Integer getAge() {
		return age;
	}
	public void setAge(Integer age) {
		this.age = age;
	}
	public String getAddr() {
		return addr;
	}
	public void setAddr(String addr) {
		this.addr = addr;
	}
	public static long getSerialVersionUID() {
		return serialVersionUID;
	}
}
  


定义服务接口:
  
     @WebService
public interface IStudentService {
	public void saveStu(@WebParam(name="StudentInfo") Student student,@WebParam(name="saveFlag")boolean flag);
	public void updateStu(@WebParam(name="StuInfo")String info);
	public void deleteStu(@WebParam(name="id")String id);
}
   


服务接口实现类:
  
    @WebService
public class StudentServiceImpl implements IStudentService{
	
	public void deleteStu(String id) {
		System.out.println("delete Student Id="+id);
	}

	public void saveStu(Student student, boolean flag) {
		System.out.println("save Student !");
	}

	public void updateStu(String info) {
		System.out.println("Update Student Infor!");
	}
}
   


  现在服务都写好了,就剩下配置文件了:
  配置cxf配置文件:bean.xml
 
   <?xml version="1.0" encoding="UTF-8"?>  
<beans xmlns="http://www.springframework.org/schema/beans"  
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jaxws="http://cxf.apache.org/jaxws"  
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd   
	http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd">  
<import resource="classpath:META-INF/cxf/cxf.xml" />  
<import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />  
<import resource="classpath:META-INF/cxf/cxf-servlet.xml" />  
<jaxws:endpoint id="stuService" implementor="com.zzn.serviceImpl.StudentServiceImpl"  address="/stuService" />  
</beans>
  


配置web.xml

  <?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 
	xmlns="http://java.sun.com/xml/ns/javaee" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  <context-param>
  	<param-name>contextConfigLocation</param-name>
  	<param-value>
  		WEB-INF/bean.xml
  	</param-value>
  </context-param>
  
  <listener>
  	<listener-class>
  		org.springframework.web.context.ContextLoaderListener
  	</listener-class>
  </listener>
  
  <servlet>
  	<servlet-name>CXFServlet</servlet-name>
  	<servlet-class>
  		org.apache.cxf.transport.servlet.CXFServlet
  	</servlet-class>
  	<load-on-startup>1</load-on-startup>
  </servlet>
  
  <servlet-mapping>
		<servlet-name>CXFServlet</servlet-name>
		<url-pattern>/*</url-pattern>
	</servlet-mapping>
  
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>


ok现在可以测试下服务cxf成功没有访问:
http://localhost:8080/HelloCXF/stuService?wsdl

step2:编写客户端程序:
利用cxf的工具wsdl2java生成服务端代码,以便客户端使用:
C:\Users\zzn>wsdl2java -frontend jaxws21 -d e:\ -p com.zzn.service http://localh
ost:8080/HelloCXF/service?wsdl


wsdl2java -frontend的参数作用是为了生成的代码兼容java6,不过不利用这个参数生成的代码会报错(java6的情况下), -d是制定生成代码的路径,-p生成代码的包

在使用这个命令的时候最好要配置环境变量
CXF_HOME=G:\学习\java\webservice\apache-cxf-2.6.0\apache-cxf-2.6.0
PATH中增加:%CXF_HOME%/bin;
CLASSPATH中增加:%CXF_HOME%/lib;

创建java客户端项目(HelloCXFClient)
将上面自动生成的代码放入这个项目。
编写配置文件bean.xml

<?xml version="1.0" encoding="UTF-8"?>  
  <beans xmlns="http://www.springframework.org/schema/beans"  
		xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
		xmlns:jaxws="http://cxf.apache.org/jaxws"  
		xsi:schemaLocation="http://www.springframework.org/schema/beans   
		http://www.springframework.org/schema/beans/spring-beans-2.0.xsd  
		http://cxf.apache.org/jaxws   
		http://cxf.apache.org/schemas/jaxws.xsd">  
	<jaxws:client id="service"  
    address="http://localhost:8080/HelloCXF/stuService"  
    serviceClass="com.zzn.service.IStudentService" />  
  </beans> 




编写客户端代码:
public class TestClient {
	public static void main(String[] args) {
		ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");
		
		IStudentService service = (IStudentService)context.getBean("service");
		
		StudentInfo studentInfo = new StudentInfo();
		studentInfo.setAddr("China");
		studentInfo.setAge(20);
		studentInfo.setId("sd2011022");
		studentInfo.setName("zhangzhennan");
		
		service.saveStu(studentInfo, true);
		service.deleteStu("sd2011022");
	}
}


运行成功!
源代码在附件中,如大家有疑问可以提出!
 
 

猜你喜欢

转载自zhangzhennan.iteye.com/blog/1624624