现在使用的最流行的webservice框架基本上就是Axis,Axis2和Cxf,其实这些框架间这有各的特点,并不能一概而论哪个好,哪个不好,关键是要根据你的系统自身去选择,看哪个更适合于你。
以下是Axis2和Cxf的部分比较:
1.CXF支持WS-Addressing,WS-Policy,WS-RM,WS-Security 和 WS-I 基本规范。Axis2支持除WS-Policy之外的所有协议,WS-Policy也会在即将到来的版本支持。
2.CXF很容易和Spring集成,而Axis2不。
3.Axis2
支持范围更大的数据绑定,包括XMLBeans、JiBX、JaxMe和JaxBRI同时还有它自带的数据绑定方式--ADB。注意对JaxME和
JaxBRI的支持在Axis2
1.2中仍然处在实验阶段。CXF目前仅支持JAXB和Aegis,对XMLBeans、JiBX和Castor的支持将会在CXF 1.2中实现。
4.Axsi2支持多种语言--在java版本之外还有C/C++的版本可用。
5.Axis2有利于web services的独立,不依赖其他应用,Cxf可以更好的嵌入到原有系统中,专注于开发者的高效和可嵌入性。
服务器端:
导入包(jaxws-api-2.0.jar在服务器端不是必须的):
aopalliance-1.0.jar
commons-logging-1.1.jar
cxf-2.0.2-incubator.jar
geronimo-activation_1.1_spec-1.0-M1.jar
geronimo-annotation_1.0_spec-1.1.jar
geronimo-javamail_1.4_spec-1.0-M1.jar
geronimo-servlet_2.5_spec-1.1-M1.jar
geronimo-ws-metadata_2.0_spec-1.1.1.jar
jaxb-api-2.0.jar
jaxb-impl-2.0.5.jar
jaxws-api-2.0.jar
neethi-2.0.2.jar
saaj-api-1.3.jar
saaj-impl-1.3.jar
spring-beans-2.0.4.jar
spring-context-2.0.4.jar
spring-core-2.0.4.jar
spring-web-2.0.4.jar
stax-api-1.0.1.jar
wsdl4j-1.6.1.jar
wstx-asl-3.2.1.jar
xml-resolver-1.2.jar
XmlSchema-1.2.jar
新建一个web工程cxf,分别编写接口HelloWorld和其实现类HelloWorldImpl,接口暴露出方法sayHello()供客户端调用(注,必须使用jdk1.5进行编译):
HelloWorld:
-
package
cn.com.service;
-
-
import
javax.jws.WebService;
-
-
@WebService
-
public
interface
HelloWorld {
-
-
public
String sayHello(String text);
-
}
package cn.com.service;
import javax.jws.WebService;
@WebService
public interface HelloWorld {
public String sayHello(String text);
}
HelloWorldImpl:
-
package
cn.com.service;
-
-
import
javax.jws.WebService;
-
-
@WebService
(endpointInterface=
"cn.com.service.HelloWorld"
)
-
public
class
HelloWorldImpl
implements
HelloWorld {
-
-
public
String sayHello(String text) {
-
-
return
"Hello"
+ text ;
-
}
-
-
}
package cn.com.service;
import javax.jws.WebService;
@WebService(endpointInterface="cn.com.service.HelloWorld")
public class HelloWorldImpl implements HelloWorld {
public String sayHello(String text) {
return "Hello" + text ;
}
}
在spring的配置文件spring-bean.xml中配置:
-
<
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"
/>
-
-
<
bean
id
=
"hello"
class
=
"cn.com.service.HelloWorldImpl"
/>
-
-
<
jaxws:endpoint
id
=
"helloWorld"
implementor
=
"#hello"
-
address
=
"/HelloWorld"
/>
-
-
-
</
beans
>
<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" />
<bean id="hello" class="cn.com.service.HelloWorldImpl" />
<jaxws:endpoint id="helloWorld" implementor="#hello"
address="/HelloWorld" />
</beans>
web.xml:
-
<?
xml
version
=
"1.0"
encoding
=
"UTF-8"
?>
-
<
web-app
version
=
"2.4"
xmlns
=
"http://java.sun.com/xml/ns/j2ee"
-
xmlns:xsi
=
"http://www.w3.org/2001/XMLSchema-instance"
-
xsi:schemaLocation
="http://java.sun.com/xml/ns/j2ee
-
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
-
<
context-param
>
-
<
param-name
>
contextConfigLocation
</
param-name
>
-
<
param-value
>
classpath:spring-bean.xml
</
param-value
>
-
</
context-param
>
-
-
<
listener
>
-
<
listener-class
>
-
org.springframework.web.context.ContextLoaderListener
-
</
listener-class
>
-
</
listener
>
-
-
<
servlet
>
-
<
servlet-name
>
CXFServlet
</
servlet-name
>
-
<
display-name
>
CXF Servlet
</
display-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
>
-
</
web-app
>
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-bean.xml</param-value>
</context-param>
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<servlet>
<servlet-name>CXFServlet</servlet-name>
<display-name>CXF Servlet</display-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>
</web-app>
将应用部署到web服务器中(我是部署到tomcat下),可以通过http://localhost:8080/cxf/HelloWorld?wsdl
检测是否发布成功.
客户端:
导入的包同服务器端相同(只是要将服务器端的接口类打成jar包,方便在客户端调用)
client:
-
package
cn.com.client;
-
-
import
org.springframework.context.ApplicationContext;
-
import
org.springframework.context.support.ClassPathXmlApplicationContext;
-
-
import
cn.com.service.HelloWorld;
-
-
public
class
client {
-
-
public
static
void
main(String[] args) {
-
-
ApplicationContext ctx = new
ClassPathXmlApplicationContext(
-
"spring-bean.xml"
);
-
HelloWorld client = (HelloWorld) ctx.getBean("client"
);
-
String result = client.sayHello("你好@@!!"
);
-
System.out.println(result);
-
}
-
}
spring-bean.xml:
-
<
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"
/>
-
-
<
bean
id
=
"hello"
class
=
"cn.com.service.HelloWorldImpl"
/>
-
-
<
jaxws:endpoint
id
=
"helloWorld"
implementor
=
"#hello"
-
address
=
"/HelloWorld"
/>
-
-
-
</
beans
>
分享到:
相关推荐
在本例中,我们关注的是反向过程,即从Java代码生成WSDL。 4. **配置CXF环境**:使用CXF的工具前,需要先将其添加到系统的类路径中,或者在IDE(如Eclipse、IntelliJ IDEA)中配置相应的插件。`cxf环境变量配置以及...
在本例中,我们看到的是`apache-cxf-3.4.0`版本,这通常包含CXF运行库和相关的命令行工具。你可以通过解压这个压缩包并将其添加到你的系统路径来使用它们。 生成Java代码的过程分为以下几个步骤: 1. **准备WSDL...
以Eclipse为例,你可以按照以下步骤操作: 1. 打开你的项目,在"Project Explorer"或"Package Explorer"视图中找到你的项目。 2. 右键点击项目,选择"Properties"。 3. 在打开的属性对话框中,导航到"Java Build ...
在IT行业中,CXF和Spring的整合是构建企业级Web服务解决方案的重要部分。CXF是一个开源的Java框架,主要用于创建和消费Web服务,而Spring框架则是一个广泛使用的应用框架,提供了一个全面的基础设施来构建Java应用...
创建一个Java Project或J2EE Web项目(本例中为CXF_Spring_Survey),并将输出路径设为WEB-INF/classes,以便于直接部署。随后,将CXF安装包中的所有.jar文件复制到项目WEB-INF/lib目录下,更新Java Build Path,以...
2. **Spring集成**:在提供的文件名称"Aegis_Spring_Client"中,我们可以推断出示例可能涉及到Spring框架的集成。Spring是Java应用开发中的一个强大框架,它可以帮助管理对象依赖关系,并提供事务管理、AOP(面向切面...
在本例中,"cxfService" 文件很可能包含了服务端的部署代码或配置。 【CXF 特性与优势】 1. **多协议支持**:CXF 支持 SOAP 1.1/1.2、RESTful HTTP、JMS 等多种通信协议,可以方便地在不同技术栈间进行交互。 2. ...
在本例中,Tomcat被用作运行CXF Web服务的服务器。配置Tomcat来运行CXF服务需要在`web.xml`配置文件中添加特定的servlet定义。 3. **配置web.xml**: 在`web.xml`中,需要添加 `<servlet>` 和 `<servlet-mapping>`...
6. **示例代码**(以CXF为例): ```java Service service = Service.create(new URL("http://example.com/service?wsdl"), new QName("http://example.com", "HelloWorldService")); HelloWorldPortType port = ...
这个过程通常由代码生成工具完成,如Apache CXF、gSOAP或wsimport(JAX-WS的一部分)。这些工具解析WSDL文件,并根据其内容自动生成C++代码,包括请求和响应的消息结构,以及调用服务的方法。 以gSOAP为例,这是一...
在本DEMO中,我们将深入探讨服务端和客户端的实现,以"SpringWebServiceClient"和"SpringWebServiceServer"为例。 首先,让我们关注服务端——"SpringWebServiceServer"。Spring框架提供了强大的支持来创建Web ...
以Apache CXF为例,以下是一个简单的步骤说明: 1. 添加依赖:在你的项目中引入Apache CXF的依赖库。如果是Maven项目,可以在pom.xml文件中添加对应的依赖项。 2. 生成客户端代码:使用CXF的wsdl2java工具,将WSDL...
这篇实例主要探讨了如何在Java环境中,结合多线程技术来实现GUI的动态绘图,以风扇控制为例。在这个作业中,开发者面临的主要挑战是如何在保持界面响应性的同时,通过多线程来控制风扇的转动效果。 首先,我们来看...
本篇文章将详细探讨如何在Java环境中创建和使用Web服务客户端,以"weather"为例。 一、Web服务基础 Web服务通常通过SOAP(简单对象访问协议)或REST(Representational State Transfer)进行通信。SOAP是基于XML的...
- **内置多种服务引擎**:如 Camel、CXF 等,用于支持消息处理和 Web 服务交互。 - **灵活的部署模式**:支持独立部署、集群部署等多种模式。 - **丰富的插件生态**:提供了大量现成的插件来满足不同的需求。 #### ...
在本例中,我们将探讨如何使用XFire库来调用和发布WebService服务。 首先,让我们理解什么是XFire。XFire是Apache CXF项目的前身,是一个用于创建和消费SOAP(简单对象访问协议)服务的Java框架。它简化了...
在本例中,我们将探讨如何使用XFire来创建一个简单的WebService服务器端。 首先,让我们了解什么是Web服务。Web服务是一种通过网络(通常使用HTTP协议)进行通信的应用程序接口。它们允许不同系统之间的数据交换,...