`

Apache CXF之helloworld

阅读更多
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>



最后,附上源码
分享到:
评论
1 楼 liyebing 2011-12-15  
不错,简单易懂,谢谢分享

相关推荐

    apache cxf 一个helloworld的例子

    ### Apache CXF HelloWorld 示例详解 #### 一、Apache CXF简介与特点 Apache CXF(以下简称为CXF)是一款非常流行的开源项目,用于构建和服务Web Services。它整合了两个著名的开源项目:Apache Celtix 和 XFire。...

    apache cxf helloworld小例子

    本示例将引导你了解如何使用Apache CXF创建一个简单的“Hello World”应用程序,涉及客户端和服务端的实现。 首先,让我们从服务端(WS_Server)开始。在CXF中,服务端通常被称为服务提供者。为了创建一个服务,你...

    cxf_helloworld.rar_SOA CXF_SOA JAVA _cxf_cxf helloworld_hellowor

    【标题】"cxf_helloworld.rar" 是一个关于Apache CXF框架入门的示例项目,它专注于SOA(Service-Oriented Architecture,面向服务架构)的实现,特别是使用Java技术。"SOA CXF_SOA JAVA_cxf_cxf helloworld_hello...

    01_CXF之HelloWorld

    标题 "01_CXF之HelloWorld" 暗示了我们即将探讨的是使用Apache CXF框架实现的一个基础的“Hello, World”示例。Apache CXF是一个开源的Java框架,主要用于构建和开发服务导向架构(SOA)和 Representational State ...

    CXF的helloworld实现

    mvn archetype:generate -DgroupId=com.example -DartifactId=cxf-helloworld -DarchetypeArtifactId=cxf-quickstart-jaxws -DarchetypeGroupId=org.apache.cxf.archetypes -DinteractiveMode=false ``` 这将生成一...

    WebService (一) CXF 入门 HelloWorld

    本篇将详细介绍如何使用Apache CXF框架来创建和消费一个简单的HelloWorld WebService。 Apache CXF是一个开源的Java框架,它提供了构建和部署Web服务的工具和API。CXF不仅支持SOAP,还支持RESTful服务,使得开发...

    Web service之CXF-helloworld DEMO

    在我们的"helloWorld"项目中,可能包含了服务接口、实现类、配置文件以及可能的测试客户端代码。通过这个简单的DEMO,你可以了解到如何使用Apache CXF构建Web服务,并进行基本的交互。随着对CXF的进一步学习,你还...

    CXF的第一个例子helloWorld

    【标题】"CXF的第一个例子helloWorld"是一个基础教程,主要介绍了如何使用Apache CXF框架创建一个简单的Web服务。Apache CXF是一个开源的Java框架,它用于构建和开发Web服务,支持SOAP、RESTful等多种通信协议。这个...

    apache-cxf-3.2.4完整版

    &lt;jaxws:endpoint id="helloWorld" implementor="#helloWorld" wsdlLocation="HelloWorld.wsdl" address="/HelloWorld" /&gt; ``` Apache CXF-3.2.4是一个强大的Web服务框架,它为开发者提供了丰富的工具和功能来...

    实战Web Service —— 使用Apache CXF开发Web服务的教程

    假设我们有一个简单的`HelloWorld`服务,提供一个`sayHello`方法。首先,我们定义服务接口: ```java public interface HelloWorld { String sayHello(String name); } ``` 然后,实现该接口: ```java @Service...

    cxf 入门(hello world)

    public class HelloWorldImpl implements HelloWorld { public String sayHello(String name) { return "Hello, " + name; } } ``` **步骤三:配置CXF并发布服务** 1. 在Maven的src/main/webapp/WEB-INF目录下...

    Apache cxf

    在实际开发中,创建一个简单的Hello World Web Service就像在Java类上添加注解,然后配置CXF来暴露和运行这个服务。在给出的部分内容中,可以看出这个例子是一个基于Maven的Web应用项目,使用了CXF的多个模块,通过...

    CXF视频:1、使用CXF实现简单的HelloWorld

    【标题】"CXF视频:1、使用CXF实现简单的HelloWorld",这是一段关于Apache CXF框架的初级教程,旨在引导初学者通过实际操作理解如何利用CXF创建一个基本的“HelloWorld”服务。Apache CXF是一个开源的Java框架,它...

    apache-cxf-3.2.1

    HelloWorld client = (HelloWorld) factory.create(); System.out.println(client.sayHello("World")); ``` 5. **持续发展**: - Apache CXF不断更新和完善,后续版本会增加新功能并优化性能,以适应不断发展的...

    Apache CXF部署WebServices实例代码

    public class HelloWorldImpl implements HelloWorld { @Override public String sayHello(String name) { return "Hello, " + name; } } ``` 3. **创建WSDL**:Apache CXF可以自动生成WSDL文件,描述你的服务...

    1.webservice-cxf-helloworld.part2

    webservice-helloworld 视频 两台机器访问,一个是虚拟机。

    1.webservice-cxf-helloworld.part1

    webservice-helloworld 视频 两台机器访问,一个是虚拟机。 高清

    cxf实用案例代码helloworld

    【CXF实用案例:HelloWorld详解】 Apache CXF是一个开源的Java框架,它主要用于构建和服务导向架构(SOA)的应用程序。CXF使得开发者能够轻松地创建和部署Web服务,同时也支持SOAP、RESTful API等多种通信协议。在...

    基于Apache CXF 3.0 Spring 4.0 Maven 3.0 构建简单Restful 接口

    return "Hello, World!"; } } ``` 4. **启动和测试**:运行应用,Apache CXF将根据配置启动一个HTTP服务器。你可以使用浏览器或curl命令来测试你的REST接口,如`http://localhost:8080/rest/hello`。 这个简化...

Global site tag (gtag.js) - Google Analytics