Web Service整合

本文详细介绍了三大WebService框架——xFire、CXF和Axis2的区别,包括它们的功能特性、优缺点以及依赖包数量。同时,提供了xFire和CXF的使用和配置步骤,包括服务端和客户端的实现,以及如何整合Spring框架。对于Axis2,文章提及其由来和传输协议支持,但未涉及具体配置。
摘要由CSDN通过智能技术生成

一、 各大WebService框架区别

1.xFire

(1)、支持将Web服务绑定到POJO、xmlbeans、JAXB1.1、JAXB2.0和Castor 
(2)、支持基于HTTP、JMS、XMPP等多种协议访问Web服务; 
(3)、容易上手,可以方便快速地从pojo发布服务; 
(4)、对Spring、Pico、Plexus等项目的支持; 
(5)、服务器响应时间快,是Axis的2-6倍;

(6)、依赖jar包较少(实现基本功能所需jar包:6个)

(7)、配置简单,便于开发

 

2.CXF

(1)、CXF相对于xFire支持ESB(企业服务总线),该项目中不会使用
(2)、CXF=xFire+Celtix,Celtix及ESB的框架,所以CXF包含xFire中的大部分功能及优点; 
(3)、CXF配置采用Annotation注解方式配置服务器端,开发时可减少繁琐过程; 
(4)、CXF是基于Spring的思想开发的,对Spring有较好的支持,整合方便; 
(5)、.CXF支持 WS-Addressing,WS-Policy, WS-RM,WS-Security和WS-I BasicProfile;

(6)、依赖jar包相对于xFire较多(实现基本功能所需jar包:11个);

(7)、CXF更注重开发人员的工效和嵌入能力;

 

3.Axis2

(1)、Axis2是从Axis1.x系列发展而来,从底层全部重新实现,使用了新的扩展性更好模块架构;
(2)、支持HTTP,SMTP,JMS,TCP传输协议; 
(3)、 Axis2支持多语言-除了Java,他还支持C/C++版本,对客户端的开发有很好的支持,可以生成Java和其他语言版WebService客户端和服务端代码; 
(4)、Axis2是一个重量级WebService的框架依赖jar包非常多(实现总线所需jar包:15个,adb方式调用所需jar包:12个);

 

二、 使用及配置方式

1、  xFire使用方式及配置(服务端:基本使用)

① 创建web项目,引入实现基本功能所需的6jar包,包括


② 创建所要暴露的接口和对应的实现类(编写所要提供的服务)

③ web.xml添加中配置如下信息

<servlet>

 <servlet-name>xFireServlet</servlet-name>

 <servlet-class>org.codehaus.xfire.transport.http.XFireConfigurableServlet</servlet-class>

 <load-on-startup>0</load-on-startup>

  </servlet>

  <servlet-mapping>

 <servlet-name>xFireServlet</servlet-name>

 <url-pattern>/services/*</url-pattern>

  </servlet-mapping>

④ src目录下创建“META-INF”文件夹及子文件夹“xfire”,在子文件夹中创建名为“services.xml”的配置文件,其内容如下:

<?xml version="1.0" encoding="utf-8"?>

<beansxmlns="http://xfire.codehaus.org/config/1.0">

<service>

<!-- 服务名称 -->

<name>HelloWorldService</name>

<!-- 实现类的命名空间 --> 

<namespace>http://www.server.com/xfire/HelloWorldService</namespace>

<!-- 实现类所指的包和类 -->

<serviceClass>com.server.xfire.HelloWorldService</serviceClass>

<!-- 对应接口的实现 --> 

<implementationClass>com.server.xfire.impl.HelloWorldServiceImpl</implementationClass>

</service>

</beans>

 

⑤ 启动tomcat

⑥ 通过链接访问xml文件

 

 

 

 

2、  xFire使用方式及配置(客户端)

① 创建普通java项目,引入实现基本功能所需的6jar包,包括(和服务端的jar包有所不同)


② 创建服务端对应的接口类(仅接口,必须和服务器端一致)

③ 创建main方法进行测试,其内容如下:

package com.test.xfire;

import java.net.MalformedURLException;

import org.codehaus.xfire.client.XFireProxyFactory;

import org.codehaus.xfire.service.Service;

import org.codehaus.xfire.service.binding.ObjectServiceFactory;

import com.client.xfire.HelloWorldService;

public class Client {

         public static voidmain(String[] args) {

        //根据服务器相同的接口创建ServiceModel

                   ServiceserviceModel = new ObjectServiceFactory().create(HelloWorldService.class);

                   //声明接口类型对象

                   HelloWorldServiceservice = null;

                   //web服务对应的url地址

                   String url= "http://localhost:8080/webService_server/services/HelloWorldService";

                   try {

                            service= (HelloWorldService)new XFireProxyFactory().create(serviceModel,url);

                   } catch (MalformedURLExceptione) {

                            e.printStackTrace();

                   }

                   //调用WebService方法

                   if(service!=null){

                            Stringmessage = service.sayHello("刘鹏飞");

                            System.out.println(message);

                   }

         }

}

 

 

 

3、  xFire整合Spring(服务端)

① 创建web项目,引入所依赖的jar包,包括:


② 创建所要暴露的接口和对应的实现类(编写所要提供的服务)

③  web.xml添加中配置如下信息

<context-param>

<param-name>contextConfigLocation</param-name>

<!-- 可以再这里加入xfire.xml也可以在applicationContext.xml中引入 -->

<param-value>classpath:beans.xml</param-value>

</context-param>

    <!-- Spring framework-->

<listener>

<listener-class>

org.springframework.web.context.ContextLoaderListener

</listener-class>

</listener>

<!-- Xfire Servlet -->

<servlet>

<servlet-name>XFireServlet</servlet-name>

<!-- 不整合时使用org.codehaus.xfire.transport.http.XFireConfigurableServlet-->

        <servlet-class>org.codehaus.xfire.spring.XFireSpringServlet</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>XFireServlet</servlet-name>

<url-pattern>/services/*</url-pattern>

</servlet-mapping>

④ src目录下创建spring配置文件,内容如下:

<?xml version="1.0" encoding="UTF-8"?>

<beansxmlns="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/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd">

                   <!-- 引入xfire.xml -->

                   <importresource="classpath:org/codehaus/xfire/spring/xfire.xml" />

                   <!--Service实现类 -->

                   <beanid="hello" class="com.springxfire.impl.HelloWorldImpl"/>

                   <!-- 这里的name属性并不是调用时的Service名字;调用时要用类名,不知道为什么 -->

                   <beanname="helloService"class="org.codehaus.xfire.spring.ServiceBean">

                            <propertyname="serviceBean" ref="hello" />                          <!-- Service实现类 -->

                            <propertyname="serviceClass"value="com.springxfire.inter.HelloWorld" />       <!-- Service接口 -->

                            <propertyname="inHandlers">

                                     <list>

                                               <refbean="addressingHandler" />

                                     </list>

                            </property>

                   </bean>

 

                   <beanid="addressingHandler"class="org.codehaus.xfire.addressing.AddressingInHandler" />

 

         </beans>

⑤ 服务器端创建完成,启动tomcat,输入链接测试

 

 

4、  CFX整合Spring(服务器端,基本使用)

① 创建web项目,引入CFX依赖11个jar包


② 创建所要暴露的接口和对应的实现类(编写所要提供的服务)

③ 在WEB-INF目录下创建spring配置文件,内容如下:

<?xml version="1.0" encoding="UTF-8"?>

<beansxmlns="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/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd

http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd">

         <importresource="classpath:META-INF/cxf/cxf.xml" />

         <importresource="classpath:META-INF/cxf/cxf-extension-soap.xml" />

         <importresource="classpath:META-INF/cxf/cxf-servlet.xml" />

         <beanid="service1" class="com.springcxf.impl.HelloWorldImpl"></bean>

         <jaxws:endpointid="hello" implementor="#service1" address="/HelloWorldService"/>

</beans>

 

④ 在web.xml文件中添加如下内容:

<listener> 

       <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 

    </listener> 

   <context-param> 

       <param-name>contextConfigLocation</param-name> 

       <param-value>/WEB-INF/beans.xml</param-value> 

   </context-param> 

     <servlet> 

       <servlet-name>HelloWorldService</servlet-name> 

        <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class> 

       <load-on-startup>1</load-on-startup> 

    </servlet> 

   <servlet-mapping> 

       <servlet-name>HelloWorldService</servlet-name> 

       <url-pattern>/services/*</url-pattern> 

</servlet-mapping> 

 

⑤ 服务器端创建完成,启动tomcat,输入链接测试

 

 

5、  Axis2暂未做研究

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值