`

cxf+spring=webservice CXF 之初体验

阅读更多
CXF 之初体验
下面我们将通过直接运行与简单修改 CXF 自带的例子体验一下服务的发布与消费。
配置与检查环境变量
UNIX 上:
CXF_HOME=/opt/Java/CXF
JAVA_HOME=/opt/JDK/1.5.0
ANT_HOME=/opt/Java/Ant
export PATH=$JAVA_HOME/bin:$ANT_HOME/bin:$CXF_HOME/bin:$PATH
export CLASSPATH=.:$CXF_HOME/lib/cxf-manifest-incubator.jar:./build/classes

Windows 上:
set CXF_HOME=C:\Java\CXF
set JAVA_HOME=C:\JDK\1.5.0
set ANT_HOME=C:\Java\Ant
set PATH=%JAVA_HOME%\bin;%ANT_HOME%\bin;%CXF_HOME%\bin;%PATH%
set CLASSPATH=.;%CXF_HOME%\lib\cxf-manifest-incubator.jar;.\build\classes

为了部署到 Java EE 的容器中进行测试,示例采用 Tomcat 来进行,同样设置 CATALINA_HOME 变量:
UNIX 上:
CATALINA_HOME=/opt/OpenSource/Tomcat-5.5.25
export CATALINA_HOME

Windows 上:
set CATALINA_HOME=C:\OpenSource\Tomcat-5.5.25

如果以上环境变量您没有并没有直接设置到系统的变量中,可以将之另存为一个文件,保存起来,比如存为:%CXF_HOME%/env.sh 或者 %CXF_HOME%/env.bat,这样在运行示例前,先运行它来设置环境变量即可。
回页首
通过 Ant 来构建和运行示例
构建与启动 Server
首先,进入到 %CXF_HOME%/java_first_pojo/ 目录下。在 UNIX 或 Windows 下的命令都是一样的,如下:
ant server

最后可以看到如下信息:
build:

server:
[java] Server ready...

如果看不到这些信息,请检查环境变量设置是否正确。
运行 Client
再打开一个命令窗口,运行:
ant client

最后可以看到如下信息:
client:
[java] Invoke sayHi()....
[java] Hello user

BUILD SUCCESSFUL

如果看不到这些信息,问题应当是出现在环境变量的设置上,需要再次检查一下您的环境变量设置是否正确。
回页首
体验改变
通过上面的构建,运行 Server ,再运行 Client ,我们可以体会到利用 CXF 发布与使用 Web Services 是如此简单。下面我们将开始进行简单地代码修改。
修改 Client 端
打开 %CXF_HOME%/samples/java_first_pojo/src/demo/hw/client 目录下的 Client.java 文件,在最后面修改为:
System.out.println(client.sayHi("World , 利用 Apache CXF 实现 Web Services"));

修改并保存后,再运行:
ant client

现在可以看到您修改后的信息,如下:
client:
[java] Invoke sayHi()....
[java] Hello World , 利用 Apache CXF 实现 Web Services

BUILD SUCCESSFUL

修改 Server 端代码
Ctrl + C 直接停止刚才启动的 ant server 启动端,然后打开 %CXF_HOME%/samples/java_first_pojo/src/demo/hw/server 目录下的 HelloWorldImpl.java 文件,修改
return "Hello " + text;


return "Hello " + text + new java.util.Date();

我们在返回信息时增加了一个时间戳上去,然后再次分别运行 ant server 与 ant client ,可以看到返回的信息后面增加了时间,如下:
client:
[java] Invoke sayHi()....
[java] Hello World , 利用 Apache CXF 实现 Web ServicesThu Sep 27 21:40:49 CST 2007

BUILD SUCCESSFUL

以上只是一个简单的示例,体验一下利用 CXF 进行发布与使用 Web Services,并尝试修改了 Server 端与 Client 端的代码。下面让我们更进一步,通过查看 Server.java 及 Client.java 的代码,来了解一下 CXF 的运作过程。
代码简单分析
Server.java 中主要的代码片断如下,它利用 ServerFactoryBean 来进行 Web Services 的发布,实例化一个实现类 HelloWorldImpl,设置将要进行发布的地址 address,最后通过 ServerFactoryBean 的 create() 方法就成功地发布了 Web Services,如此简单而已,只有六行代码:
HelloWorldImpl helloworldImpl = new HelloWorldImpl();
ServerFactoryBean svrFactory = new ServerFactoryBean();
svrFactory.setServiceClass(HelloWorld.class);
svrFactory.setAddress("http://localhost:9000/Hello");
svrFactory.setServiceBean(helloworldImpl);
svrFactory.create();

Client.java 中的主要代码片断如下,通过 ClientProxyFactoryBean 代理工厂类来创建一个服务,绑定到 endPointAddress 地址,就可以 create 并得到服务,并进行服务消费了:
ClientProxyFactoryBean factory = new ClientProxyFactoryBean();
factory.setServiceClass(HelloWorld.class);
factory.setAddress("http://localhost:9000/Hello");
HelloWorld client = (HelloWorld)factory.create();
System.out.println("Invoke sayHi()....");
System.out.println(client.sayHi("user"));

最后,停止 Server,并清除构建过程中产生的一些文件,直接运行 ant clean 即可。
回页首
构建和运行在 Servlet 容器里的示例
接下来我们尝试编译打包一个示例,并部署到 Java EE 的容器里进行测试。
构建 Web 应用程序包
停止掉前面运行的 Server ,然后在命令行运行:
ant war

将在 %CXF_HOME%/samples/java_first_pojo/build/war/ 目录下生成 helloworld.war 文件。
部署应用
先运行如下命令,将运行部署到 Tomcat 容器中:
ant deploy -Dtomcat=true

启动 Tomcat
然后在 Windows 下通过 startup.bat 或在 Unix 下通过 startup.sh 来启动 Tomcat,CXF 的应用也就随之启动。通过 Tomcat 管理控制台 http://localhost:8080/manager/html/ 可以看到已经成功部署了 helloworld.war 的应用程序,如下图所示:

图 2. 在 Tomcat 5.5.25 上面成功部署 CXF Web Service 的示意图

回页首
校验服务
假设您的 Tomcat 服务端口是 8080 ,那运行以下命令就可以调用部署到 Java EE 容器里的 CXF 所提供的 Web Services 的服务了。
http://localhost:8080/helloworld/services/hello_world?wsdl

查看 wsdl 文件的信息内容如下:

图 3. 在 Tomcat 5.5.25 上面成功部署 CXF Web Service 的示意图


运行 Client
接下来我们来运行 Client 来使用它,运行:
ant client-servlet

如果您的端口不是 8080,可以使用:
ant client-servlet -Dbase.url=http://localhost: 端口号

或者
ant client-servlet -Dhost=localhost -Dport= 端口号

来调用 Web Services ,返回结果如下:
client-servlet:
[java] Invoke sayHi()....
[java] Hello World , 利用 Apache CXF 实现 Web ServicesThu Sep 27 21:56:32 CST 2007

BUILD SUCCESSFUL

在 Tomcat 后台可以看到一些 Exception 的信息,这是正常的,是因为 public void pingMe() throws PingMeFault 特意抛出来的,不必理会,没有抛出异常信息才是不正常的,需要重新检查以上各个步骤是否正确执行了。
卸载应用
从 Tomcat 中卸载应用,运行:
ant undeploy -Dtomcat=true

最后,停止 Tomcat,然后清除构建过程中产生的一些文件,直接运行 ant clean 即可。

原文地址:[url]http://www.ibm.com/developerworks/cn/education/java/j-cxf/section2.html [/url]
分享到:
评论

相关推荐

    cxf+spring=webservice CXF 应用开发

    标题 "cxf+spring=webservice CXF 应用开发" 暗示了我们将讨论如何结合Apache CXF和Spring框架来创建Web服务。Apache CXF是一个开源的Java框架,主要用于构建和部署SOAP和RESTful Web服务。Spring框架则是一个广泛...

    cxf+spring实现webservice

    以上是CXF+Spring实现Web Service的基本流程和关键知识点。实际应用中,还需要根据具体的需求和环境进行适当的调整和扩展。例如,如果涉及到大型分布式系统,可能还需要考虑服务治理、负载均衡等问题。通过熟练掌握...

    Spring + cxf = webservice 完整实例源码免费下载

    Spring + cxf = webservice 完整实例源码免费下载 完全免费。此资源仅为文档提供。 版权为百度文档 "Spring + cxf = webservice 完整实例源码免费下载" 所有。

    简单的webservice+Cxf+Spring数据对接实例以及jar.rar

    简单的webservice+Cxf+Spring数据对接实例以及jar.rar简单的webservice+Cxf+Spring数据对接实例以及jar.rar简单的webservice+Cxf+Spring数据对接实例以及jar.rar简单的webservice+Cxf+Spring数据对接实例以及jar.rar...

    cxf+spring发布webservice和restservice

    本项目“cxf+spring发布webservice和restservice”专注于利用Apache CXF框架与Spring框架结合,实现这两种服务的发布。Apache CXF是一个开源的、功能丰富的服务栈,它使得开发者能够轻松地构建和部署SOAP和RESTful ...

    cxf+spring的webservice实例

    总的来说,"cxf+spring的webservice实例"是一个实践性的教程,旨在帮助开发者理解如何在Spring环境中利用CXF快速构建和部署Web服务。通过这个实例,你可以掌握从创建服务到发布、测试的整个流程,进一步提升你的Java...

    cxf+spring开发webservice实例(java)

    web项目使用spring和cxf的一个开发实例,有简单的代码样例和jar。是一个完整的项目,最终发布完成时访问 http://ip:port/项目名称/webservices/ 就会发现你发布的webservice服务。

    cxf+spring webservice demo client

    【标题】:“cxf+spring webservice demo client” 在IT领域,Web服务是一种常见的系统间交互方式,它允许不同应用程序之间共享数据和服务。本示例是关于如何使用Apache CXF和Spring框架创建一个Web服务客户端的...

    简单cxf+spring构建webservice服务

    标题“简单cxf+spring构建webservice服务”指的是使用Apache CXF框架与Spring框架结合来创建Web服务。Apache CXF是一个开源的Java框架,它允许开发者创建和消费各种Web服务,包括SOAP和RESTful风格。Spring框架则为...

    cxf+spring实现webservice例子

    在这个“cxf+spring实现webservice”的例子中,我们首先需要确保已经安装了Eclipse IDE,并且配置了Java和Maven环境。然后,我们需要创建一个新的Maven项目,并在pom.xml文件中添加CXF和Spring的相关依赖。这些依赖...

    Spring+cxf=webservice 的jar包1

    【Spring+cxf=WebService】是将Spring框架与Apache CXF集成来实现Web服务的一种常见方式。Spring是一个强大的Java企业级应用开发框架,它提供了一种模块化和灵活的方式来组织和管理应用程序的组件。而CXF则是一个...

    cxf+Spring实现webservice工程

    当我们谈论"CXF+Spring实现Web服务工程"时,我们实际上是在讨论如何利用Apache CXF框架和Spring框架来创建和消费Web服务。Apache CXF是一个强大的开源框架,它提供了多种方式来构建和部署Web服务,而Spring则以其...

    CXF+Spring+Tomcat发布WebService

    【标题】"CXF+Spring+Tomcat发布WebService"涉及的是使用Apache CXF框架与Spring框架结合,在Tomcat服务器上部署和消费Web服务的过程。这是一个常见的企业级应用开发场景,特别是对于实现基于SOAP协议的Web服务。...

    Spring+CXF+tomcat开发webservice

    这个项目"Spring+CXF+tomcat开发webservice"旨在教你如何利用这些技术搭建一个完整的Web服务环境,包括服务端和服务端客户端的实现。 **Spring** 是一个广泛使用的Java企业级应用开发框架,它提供了依赖注入(DI)...

    cxf+spring开发webservice客户端与服务端实例

    在IT行业中,Web服务是应用程序之间进行通信的一种标准方法,而CXF和Spring框架的结合则为开发高质量的Web服务提供了强大的支持。本实例将详细阐述如何利用CXF和Spring来构建Web服务的客户端和服务端。 一、CXF简介...

    ibatis+spring+cxf+mysql搭建webservice的客户端

    ibatis+spring+cxf+mysql搭建webservice的客户端,文章地址在http://blog.csdn.net/cenyi2013/article/details/17315755. 服务端源码的下载地址在http://download.csdn.net/detail/cenyi2012/6712729

    CXF+Spring发布webservice服务的例子

    在项目中引入CXF和Spring的依赖库,通常这些库会包含在名为"CXF_Server"的压缩包文件中。这些库包括但不限于:cxf-rt-frontend-jaxws、cxf-rt-transports-http、cxf-rt-transports-http-jetty、spring-beans、spring...

    Spring+cxf=webservice 的jar包2

    标题中的“Spring+cxf=webservice 的jar包2”表明这是一个与Spring框架和Apache CXF相关的Web服务实现项目。在Java开发中,Spring是一个广泛使用的轻量级框架,用于简化企业级应用的开发,而CXF则是一个开源的服务栈...

    cxf+spring webservice server demo

    【标题】"cxf+spring webservice server demo"是一个基于Apache CXF和Spring框架构建的Web服务服务器端示例项目。这个项目展示了如何将CXF与Spring集成,以创建、部署和运行一个高效的Web服务。 【描述】指出,由于...

    CXF2.1.3+spring3.0+struts2.3.4

    【标签】"CXF+spring WebService CXF"强调了这些组件的集成,特别是CXF作为Web服务的主要提供者,以及与Spring的紧密配合。CXF不仅可以用作服务提供者,还可以作为客户端来消费其他服务,这在Spring的管理下变得更加...

Global site tag (gtag.js) - Google Analytics