首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web前端 >

简略cxf+spring构建webservice服务

2012-11-19 
简单cxf+spring构建webservice服务cxf的作用,我就不在这里讲述了,因为网上比我讲的好的多的多的,忽忽!这篇

简单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;}}  


定义服务接口:
  
     @WebServicepublic 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);}   


服务接口实现类:
  
    @WebServicepublic 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://localhost: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"      service/>    </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");}}


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

热点排行