1.首先去http://cxf.apache.org/download.html下载CXF所需要的jar,我下载是apache-cxf-2.3.4.zip这个包。
2.建一个java project,并把相关的jar文件添加到classpath路径下.
cxf-2.3.4.jar
jetty-continuation-7.3.1.v20110307.jar
jetty-http-7.3.1.v20110307.jar
jetty-io-7.3.1.v20110307.jar
jetty-server-7.3.1.v20110307.jar
jetty-util-7.3.1.v20110307.jar
servlet-api.jar
wsdl4j-1.6.2.jar
XmlSchema-1.4.7.jar
3.创建一个接口
package com.cxf.service;
public interface HelloWorldCxfService {
String sayHello(String username);
}
4.创建该接口的实现类
package com.cxf.service;
public class HelloWorldCxfServiceImpl implements HelloWorldCxfService {
public String sayHello(String username) {
return "Hello,"+username;
}
}
5.发布webservice
package com.cxf.server;
import org.apache.cxf.frontend.ServerFactoryBean;
import com.cxf.service.HelloWorldCxfService;
import com.cxf.service.HelloWorldCxfServiceImpl;
public class Server {
public static void main(String[] args) {
HelloWorldCxfServiceImpl cxfServiceImpl= new HelloWorldCxfServiceImpl();
ServerFactoryBean factoryBean=new ServerFactoryBean();
factoryBean.setAddress("http://localhost:8080/hello");
factoryBean.setServiceClass(HelloWorldCxfService.class);
factoryBean.setServiceBean(cxfServiceImpl);
factoryBean.create();
}
}
运行Server,注意不要关闭,在控制台会打印如下信息:
2011-5-11 14:25:30 org.apache.cxf.service.factory.ReflectionServiceFactoryBean buildServiceFromClass
信息: Creating Service {http://service.cxf.com/}HelloWorldCxfService from class com.cxf.service.HelloWorldCxfService
2011-5-11 14:25:30 org.apache.cxf.endpoint.ServerImpl initDestination
信息: Setting the server's publish address to be http://localhost:8080/hello
2011-05-11 14:25:30.750:INFO::jetty-7.3.1.v20110307
2011-05-11 14:25:30.859:INFO::Started SelectChannelConnector@localhost:8080
2011-05-11 14:25:30.875:INFO::started o.e.j.s.h.ContextHandler{,null}
6.客户端调用
package com.cxf.server;
import org.apache.cxf.frontend.ClientProxyFactoryBean;
import com.cxf.service.HelloWorldCxfService;
public class Client {
public static void main(String[] args) {
ClientProxyFactoryBean factoryBean=new ClientProxyFactoryBean();
factoryBean.setAddress("http://localhost:8080/hello");
factoryBean.setServiceClass(HelloWorldCxfService.class);
HelloWorldCxfService worldCxfService=(HelloWorldCxfService) factoryBean.create();
System.out.println(worldCxfService.sayHello("张三"));
}
}
运行Client代码,控制台打印如下信息:
2011-5-11 14:25:35 org.apache.cxf.service.factory.ReflectionServiceFactoryBean buildServiceFromClass
信息: Creating Service {http://service.cxf.com/}HelloWorldCxfService from class com.cxf.service.HelloWorldCxfService
Hello,张三
到此,我们的webservice,已经成功调用了。大家是不是迫不及待的想看下wsdl文件是啥样的呢?
在浏览器中输入http://localhost:8080/hello?wsdl,即可看到wsdl文件了。其中http://localhost:8080/hello部分为代码里指定的Address。
wsdl文件信息:
<wsdl:definitions name="HelloWorldCxfService" targetNamespace="http://service.cxf.com/">
−
<wsdl:types>
−
<xsd:schema attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://service.cxf.com/">
<xsd:element name="sayHello" type="tns:sayHello"/>
−
<xsd:complexType name="sayHello">
−
<xsd:sequence>
<xsd:element minOccurs="0" name="arg0" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="sayHelloResponse" type="tns:sayHelloResponse"/>
−
<xsd:complexType name="sayHelloResponse">
−
<xsd:sequence>
<xsd:element minOccurs="0" name="return" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
</wsdl:types>
−
<wsdl:message name="sayHelloResponse">
<wsdl:part element="tns:sayHelloResponse" name="parameters">
</wsdl:part>
</wsdl:message>
−
<wsdl:message name="sayHello">
<wsdl:part element="tns:sayHello" name="parameters">
</wsdl:part>
</wsdl:message>
−
<wsdl:portType name="HelloWorldCxfServicePortType">
−
<wsdl:operation name="sayHello">
<wsdl:input message="tns:sayHello" name="sayHello">
</wsdl:input>
<wsdl:output message="tns:sayHelloResponse" name="sayHelloResponse">
</wsdl:output>
</wsdl:operation>
</wsdl:portType>
−
<wsdl:binding name="HelloWorldCxfServiceSoapBinding" type="tns:HelloWorldCxfServicePortType">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
−
<wsdl:operation name="sayHello">
<soap:operation soapAction="" style="document"/>
−
<wsdl:input name="sayHello">
<soap:body use="literal"/>
</wsdl:input>
−
<wsdl:output name="sayHelloResponse">
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
−
<wsdl:service name="HelloWorldCxfService">
−
<wsdl:port binding="tns:HelloWorldCxfServiceSoapBinding" name="HelloWorldCxfServicePort">
<soap:address location="http://localhost:8080/hello"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
最后,附上源码
分享到:
相关推荐
### Apache CXF HelloWorld 示例详解 #### 一、Apache CXF简介与特点 Apache CXF(以下简称为CXF)是一款非常流行的开源项目,用于构建和服务Web Services。它整合了两个著名的开源项目:Apache Celtix 和 XFire。...
本示例将引导你了解如何使用Apache CXF创建一个简单的“Hello World”应用程序,涉及客户端和服务端的实现。 首先,让我们从服务端(WS_Server)开始。在CXF中,服务端通常被称为服务提供者。为了创建一个服务,你...
【标题】"cxf_helloworld.rar" 是一个关于Apache CXF框架入门的示例项目,它专注于SOA(Service-Oriented Architecture,面向服务架构)的实现,特别是使用Java技术。"SOA CXF_SOA JAVA_cxf_cxf helloworld_hello...
标题 "01_CXF之HelloWorld" 暗示了我们即将探讨的是使用Apache CXF框架实现的一个基础的“Hello, World”示例。Apache CXF是一个开源的Java框架,主要用于构建和开发服务导向架构(SOA)和 Representational State ...
mvn archetype:generate -DgroupId=com.example -DartifactId=cxf-helloworld -DarchetypeArtifactId=cxf-quickstart-jaxws -DarchetypeGroupId=org.apache.cxf.archetypes -DinteractiveMode=false ``` 这将生成一...
本篇将详细介绍如何使用Apache CXF框架来创建和消费一个简单的HelloWorld WebService。 Apache CXF是一个开源的Java框架,它提供了构建和部署Web服务的工具和API。CXF不仅支持SOAP,还支持RESTful服务,使得开发...
在我们的"helloWorld"项目中,可能包含了服务接口、实现类、配置文件以及可能的测试客户端代码。通过这个简单的DEMO,你可以了解到如何使用Apache CXF构建Web服务,并进行基本的交互。随着对CXF的进一步学习,你还...
【标题】"CXF的第一个例子helloWorld"是一个基础教程,主要介绍了如何使用Apache CXF框架创建一个简单的Web服务。Apache CXF是一个开源的Java框架,它用于构建和开发Web服务,支持SOAP、RESTful等多种通信协议。这个...
<jaxws:endpoint id="helloWorld" implementor="#helloWorld" wsdlLocation="HelloWorld.wsdl" address="/HelloWorld" /> ``` Apache CXF-3.2.4是一个强大的Web服务框架,它为开发者提供了丰富的工具和功能来...
假设我们有一个简单的`HelloWorld`服务,提供一个`sayHello`方法。首先,我们定义服务接口: ```java public interface HelloWorld { String sayHello(String name); } ``` 然后,实现该接口: ```java @Service...
public class HelloWorldImpl implements HelloWorld { public String sayHello(String name) { return "Hello, " + name; } } ``` **步骤三:配置CXF并发布服务** 1. 在Maven的src/main/webapp/WEB-INF目录下...
在实际开发中,创建一个简单的Hello World Web Service就像在Java类上添加注解,然后配置CXF来暴露和运行这个服务。在给出的部分内容中,可以看出这个例子是一个基于Maven的Web应用项目,使用了CXF的多个模块,通过...
【标题】"CXF视频:1、使用CXF实现简单的HelloWorld",这是一段关于Apache CXF框架的初级教程,旨在引导初学者通过实际操作理解如何利用CXF创建一个基本的“HelloWorld”服务。Apache CXF是一个开源的Java框架,它...
HelloWorld client = (HelloWorld) factory.create(); System.out.println(client.sayHello("World")); ``` 5. **持续发展**: - Apache CXF不断更新和完善,后续版本会增加新功能并优化性能,以适应不断发展的...
public class HelloWorldImpl implements HelloWorld { @Override public String sayHello(String name) { return "Hello, " + name; } } ``` 3. **创建WSDL**:Apache CXF可以自动生成WSDL文件,描述你的服务...
webservice-helloworld 视频 两台机器访问,一个是虚拟机。
webservice-helloworld 视频 两台机器访问,一个是虚拟机。 高清
【CXF实用案例:HelloWorld详解】 Apache CXF是一个开源的Java框架,它主要用于构建和服务导向架构(SOA)的应用程序。CXF使得开发者能够轻松地创建和部署Web服务,同时也支持SOAP、RESTful API等多种通信协议。在...
return "Hello, World!"; } } ``` 4. **启动和测试**:运行应用,Apache CXF将根据配置启动一个HTTP服务器。你可以使用浏览器或curl命令来测试你的REST接口,如`http://localhost:8080/rest/hello`。 这个简化...