利用CXF开发WebService的小案例

http://www.blogjava.net/ashutc/archive/2009/11/24/303521.html

开发工具:MyEclipse 6.0

开发环境:

1.     jdk1.5

2.     CXF框架,版本apache-cxf-2.2.3.zip,到http://cxf.apache.org/download.html下载

注:如使用jdk1.6进行开发,需下载jaxb-api.jar和jaxws-api.jar,然后在本机安装JDK的地方,在jdk1.6.0的jre文件夹下的lib文件夹中新建endorsed文件夹,放入以上两个jar包才可以进行开发

第一步,先在MyEclipse新建一个java项目,项目名为HelloWebService。

第二步,在项目中引入apache-cxf-2.2.3.ziplib下的所有jar包。

第三步,编写测试用接口以及其实现类:

 

接口:

 

 

Java代码

  1. package test;
  2. import javax.jws.WebService;
  3. public interface Hello {
  4. public String sayHello(String str);
  5. }
package test;
import javax.jws.WebService;
public interface Hello {
public String sayHello(String str);
}

实现类:

 

Java代码

  1. package test;
  2. public class HelloImpl implements Hello {
  3. public String sayHello(String str) {
  4. System.out.println("调用成功");
  5. return "Hello " + str;
  6. }
  7. }
package test;
public class HelloImpl implements Hello {
public String sayHello(String str) {
System.out.println("调用成功");
return "Hello " + str;
}
}

 

在接口中添加WebService的注解,将其标注为WebService的服务接口。

 

 

Java代码

  1. @WebService
  2. public interface Hello {
@WebService
public interface Hello {

第四步,编写WebService的服务器端。

Java代码

  1. package test;
  2. import org.apache.cxf.endpoint.Server;
  3. import org.apache.cxf.jaxws.JaxWsServerFactoryBean;
  4. public class MainServer {
  5. public static void main(String[] args) {
  6. JaxWsServerFactoryBean factory = new JaxWsServerFactoryBean();
  7. factory.setAddress("http://localhost:8080/HelloWebService");
  8. factory.setServiceClass(HelloImpl.class);
  9. Server server = factory.create();
  10. server.start();
  11. }
  12. }
package test;
import org.apache.cxf.endpoint.Server;
import org.apache.cxf.jaxws.JaxWsServerFactoryBean;
public class MainServer {
public static void main(String[] args) {
JaxWsServerFactoryBean factory = new JaxWsServerFactoryBean();
factory.setAddress("http://localhost:8080/HelloWebService");
factory.setServiceClass(HelloImpl.class);
Server server = factory.create();
server.start();
}
}

factory.setAddress("http://localhost:8080/HelloWebService");

设置服务在服务器上部署的位置

 

factory.setServiceClass(HelloImpl.class);

设置服务暴露的接口实现类

完成之后运行MainServer中的main方法。

注:因为CXF框架中有Jetty 6 服务器,所以这个的demo发布在其中运行。

之后打开浏览器,输入:

http://localhost:8080/HelloWebService?wsdl

如能看见以下画面则WebService发布成功:

Xml代码

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. - <wsdl:definitions name="HelloImplService" targetNamespace="http://test/" xmlns:ns1="http://schemas.xmlsoap.org/soap/http" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://test/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  3. - <wsdl:types>
  4. - <xs:schema elementFormDefault="unqualified" targetNamespace="http://test/" version="1.0" xmlns:tns="http://test/" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  5. <xs:element name="sayHello" type="tns:sayHello" />
  6. <xs:element name="sayHelloResponse" type="tns:sayHelloResponse" />
  7. - <xs:complexType name="sayHello">
  8. - <xs:sequence>
  9. <xs:element minOccurs="0" name="arg0" type="xs:string" />
  10. </xs:sequence>
<?xml version="1.0" encoding="UTF-8" ?>
- <wsdl:definitions name="HelloImplService" targetNamespace="http://test/" xmlns:ns1="http://schemas.xmlsoap.org/soap/http" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://test/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
- <wsdl:types>
- <xs:schema elementFormDefault="unqualified" targetNamespace="http://test/" version="1.0" xmlns:tns="http://test/" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="sayHello" type="tns:sayHello" />
<xs:element name="sayHelloResponse" type="tns:sayHelloResponse" />
- <xs:complexType name="sayHello">
- <xs:sequence>
<xs:element minOccurs="0" name="arg0" type="xs:string" />
</xs:sequence>

第五步,编写客户端

Java代码

  1. package test;
  2. import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;
  3. public class Client {
  4. public static void main(String[] args) {
  5. JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
  6. factory.setServiceClass(Hello.class);
  7. factory.setAddress("http://localhost:8080/HelloWebService");
  8. Hello hello = (Hello)factory.create();
  9. System.out.println(hello.sayHello("weberyb"));
  10. }
  11. }
package test;
import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;
public class Client {
public static void main(String[] args) {
JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
factory.setServiceClass(Hello.class);
factory.setAddress("http://localhost:8080/HelloWebService");
Hello hello = (Hello)factory.create();
System.out.println(hello.sayHello("weberyb"));
}
}

 

factory.setServiceClass(Hello.class);

设置访问服务器端的指定接口。

factory.setAddress("http://localhost:8080/HelloWebService");

设置访问的服务的地址。

factory.create()

创建代理对象以供远程调用

 

之后运行Client中main方法,可以在控制台的服务器端看见如下输出:

Java代码

  1. ....................
  2. 2009-8-13 14:00:42 org.apache.cxf.service.factory.ReflectionServiceFactoryBean buildServiceFromClass
  3. 信息: Creating Service {http://test/}HelloService from class test.Hello
  4. Hello weberyb
....................
2009-8-13 14:00:42 org.apache.cxf.service.factory.ReflectionServiceFactoryBean buildServiceFromClass
信息: Creating Service {http://test/}HelloService from class test.Hello
Hello weberyb

说明客户端调用WebService成功。

至此,这个简单的WebService开发完毕 尝试过jdk1.6   它的包会变成import org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean; 并且没有factory.setAddress这个方法 采用自带的例子进行测试 会出现参数null错误,但是客户端调用服务器端都调用成功,可能原因是没有加载那两个JAR文件的问题,暂时没有测试

时间: 2024-12-24 02:42:22

利用CXF开发WebService的小案例的相关文章

WebService开发笔记 1 -- 利用cxf开发WebService竟然如此简单

现在的项目中需要用到SOA概念的地方越来越多,最近我接手的一个项目中就提出了这样的业务要求,需要在.net开发的客户端系统中访问java开发的web系统,这样的业务需求自然需要通过WebService进行信息数据的操作.下面就将我们在开发中摸索的一点经验教训总结以下,以供大家参考. 我们项目的整个架构使用的比较流行的WSH MVC组合,即webwork2 + Spring + Hibernate; 1.首先集成Apacha CXF WebService 到 Spring 框架中; apache

利用cxf开发WebService

利用cxf开发WebService 1.什么是CXF Apache CXF =Celtix + Xfire 支持多种协议: ?    SOAP1.1,1,2 ?    XML/HTTP ?    CORBA(Common ObjectRequest Broker Architecture公共对象请求代理体系结构,早期语言使用的WS.C,c++,C#) ?    并可以与Spring进行快速无缝的整合 ?    灵活的部署:可以运行在Tomcat,Jboss,Jetty(内置),IBMWS,Bea

[转] WebService开发笔记 1 -- 利用cxf开发WebService竟然如此简单

以下文章来自   http://www.blogjava.net/jacally/articles/186655.html 现在的项目中需要用到SOA概念的地方越来越多,最近我接手的一个项目中就提出了这样的业务要求,需要在.net开发的客户端系统中访问java开发的web系统,这样的业务需求自然需要通过WebService进行信息数据的操作.下面就将我们在开发中摸索的一点经验教训总结以下,以供大家参考. 我们项目的整个架构使用的比较流行的WSH MVC组合,即webwork2 + Spring

webservice 之 使用cxf开发WebService服务器端接口

摘要:webservice 不是一种新技术,它是一种跨平台,跨语言的规范,用于不同平台,不同语言开发应用之间的交互. cxf:是java主流的WebService实现框架. 接下来开始 使用cxf开发WebService服务器端接口 1.新建一个maven项目: 2. 项目用jdk1.7(因为1.7有webservice的默认实现)项目结构如: 3. 首先新建接口,HelloWorld.java: package com.wh.webservice; import javax.jws.WebSe

使用cxf开发webservice接口

项目中经常用到开发webservice接口,及调用webService接口.这里讲解如何使用cxf开发webService接口. 一.webservice介绍及理解 webservice是一种跨平台,跨语言的规范,用于不同平台,不同语言开发的应用之间的交互.        比如,平台平台淘宝.京东想获取其他快递公司数据接口,需快递公司开放数据接口.       那么 webservice就是出于以上类似需求而定义出来的规范:无需关心对方什么平台上开发以及使用何种语言开发.       只关心调用

使用CXF开发WebService客户端

前面一讲开发了webservice服务器端接口,今天的话,我们来开发webservice客户端,让大家来体验下过程: 首先建一个Maven项目,项目名字,WS_Client: 然后我们要用CXF给我们提供的工具wsdl2java 来根据请求的url生成客户端代码: wsdl2java工具在CXF开发包里: 开发下载地址:http://cxf.apache.org/download.html 下载二进制包,然后解压到D盘 这里我们看到了wsdl2java命令:当然要用的话,还得配置Path.我们打

IIdea使用CXF开发WebService

写这篇文章主要是用于增强记忆,而我参考的是这位朋友的随笔,链接如下 http://www.xiaomager.com/415.html 服务端开发过程 1.首先创建一个maven项目,如下图 2.添加项目的依赖包以及设置相关配置 提示:首先介绍一下基础环境 ,开发编译器 intellij idea ,我们的jdk是1.7,tomcat是7,spring使用的是spring4,cxf准备使用3.1.4,这里特别需要说明的是,cxf 3.0以后的版本只能在jdk1.7上使用,如果在1.6使用的话,会

在web项目中使用cxf开发webservice,包含spring支持

本文主要介绍了,如何使用cxf内置的例子,学会开发webserivce,在web项目中使用,且包含spring支持. webserivce的开发可以使用cxf或者axis,好像还有httpclient等等.以前也多次研究过,上网搜过很多别人的例子来看,写过代码下来,但没有总结过,少废话,上干货. 1. 到cxf的官网下载jar包.我用的是以前下载下来的apache-cxf-2.7.6.zip,并非最新版本.下载完成后,解压后,目录结构如下左图: 打开其中的samples文件夹,其内包含了很多例子

CXF 开发 WebService

什么是CXF: Apache CXF = Celtix + Xfire 支持多种协议: SOAP1.1,1.2 XML/HTTP CORBA(Common Object Request Broker Architecture公共对象请求代理体系结构,早期语言使用的WS.                    C,c++,C#) 并可以与Spring进行快速无缝的整合 灵活的部署:可以运行在Tomcat,Jboss,Jetty(内置),IBMWS,BeaWL上面. 安装CXF的其他支持项目: An