Apache CXF 是一个Service框架,他简化了Service的创建, CXF实现了JAX-WS2.0规范,并通过了JAX-WS2.0 TCK; CXF和Spring无缝集成;CXF支持多种传输协议(HTTP, JMS, Corba等), 支持多种Binding数据格式(SOAP,XML,JSON等), 支持多种DataBinding数据类型(JAXB, Aegis) 。CXF基于Interceptor的架构,使得整个框架非常易于扩展。
二.  如何发布并调用简单的web service实例
2.1.下载:apache-cxf-2.1.1  http://cxf.apache.org/download.html
2.2. 新建java project ,并加入apache-cxf-2.0.7/lib所有包,编写要发布的web service 接口和实现
import javax.jws.WebService;
@WebService 
public interface HelloWorld {  
public String sayHello(String text);  
}
import javax.jws.WebService;  
@WebService(endpointInterface="test.HelloWorld")  
public class HelloWorldImpl implements HelloWorld {  
public String sayHello(String text) {  
return "Hello" + text ;  
}  
@WebService 注解表示是要发布的web 服务
name:用于Interface,属映射到wsdl:portType element的name属性。 
targetNamespace:用于Interface和implement,如果不指定,缺省会使用包名倒序做为wsdl名空间。
serviceName:用于implement,表示wsdl服务名。
portName:用于implement,表示wsdl:port 的name属性。
endpointInterface:用于implement,指定Interface全名,包括包名。
2.3.发布web service
public class Server {
protected Server() throws Exception {
System.out.println("Starting Server");
HelloWorldImpl implementor = new HelloWorldImpl();
String address = "http://localhost:9000/helloWorld";
Endpoint.publish(address, implementor);
}
public static void main(String args[]) throws Exception {
new Server();
System.out.println("Server ready...");
Thread.sleep(5 * 60 * 1000);
System.out.println("Server exiting");
System.exit(0);
}
}
运行后,在浏览器中输入http://localhost:9000/helloWorld?wsdl将显示这个web service的wsdl.说明web service发布成功。
2.4.下面就开始创建一个客户端程序,访问这个web service, 同样新建java project ,并加入apache-cxf-2.0.7/lib所有包,由于CXF已经提供wsdl转化成java 的命令工具,所以创建一个build.xml,用来生成客户端程序。Bulid.xml内容如下:
<?xml version="1.0"?>
<project name="cxf wsdl2java" basedir=".">  
<property name="cxf.home" location ="${basedir}/WebRoot/WEB-INF/"/>
<path id="cxf.classpath">
<fileset dir="${cxf.home}/lib">
<include name="*.jar"/>
</fileset>
</path>     
<target name="cxfWSDLToJava">
<java classname="org.apache.cxf.tools.wsdlto.WSDLToJava" fork="true">
<arg value="-client"/>
<arg value="-d"/>
<arg value="src"/>
<arg value="http://localhost:9000/helloWorld?wsdl"/>
<classpath>
<path refid="cxf.classpath"/>
</classpath>
</java>
</target>
</project>
或者:配置环境变量%CXF_HOME%=E:/WebService/CXF/apache-cxf-2.1.1/apache-cxf-2.1.1(以我的目录为例),并在PATH后加上;%CXF_HOME%/bin
在cmd命令行中输入wsdl2java如果显示其用法表示配置好了。
输入:wsdl2java -d src - client http://localhost:9000/helloWorld?wsdl
其作用上面的build.xml作用一样。
附加:wsdl2java用法:
wsdl2java -p com -d src -all  aa.wsdl
-p  指定其wsdl的命名空间,也就是要生成代码的包名:
-d  指定要产生代码所在目录
-client 生成客户端测试web service的代码
-server 生成服务器启动web  service的代码
-impl 生成web service的实现代码
-ant  生成build.xml文件
-all 生成所有开始端点代码:types,service proxy,,service interface, server mainline, client mainline, implementation object, and an Ant build.xml file.
详细用法见:http://cwiki.apache.org/CXF20DOC/wsdl-to-java.html
2.5.调用web service
public class MyClient {
public static void main(String[] argv) {
HelloWorld  hello = new HelloWorldImplService().getHelloWorldImplPort();
System.out.println(hello.sayHello("Tom") ); 
}
}
注意:运行时,要一定先要发布web sevice.
三.  参考资料
1.CXF 主页: http://cxf.apache.org/
2. CXF中文讨论组: http://groups.google.com/group/cxf-zh 
3. Web service: http://www.w3school.com.cn/webservices/index.asp
4. WSDL: http://www.w3school.com.cn/wsdl/index.asp
5. SOAP:http://www.w3school.com.cn/soap/index.asp
-----------------------------------------------------------以上是参考资料,以下是自己的实践-----------------------------------------------------------------------------
我在操作过程中,发现了一个方法的参数resultCode,以及另一个方法的voteCode都让我误操作定义为了错误的类型。
因此需要对 WSDL进行修改后,将其放置在:D:/test/0328目录下面。
我按照上面的地址下载到二级制压缩文件  apache-cxf-2.3.3.zip以后要注意,不要下载包含有src的
例如: apache-cxf-2.3.3-src.tar.gz
解压缩到D:/work/lib/apache-cxf-2.3.3
配置环境变量 CXF-HOME  为“D:/work/lib/apache-cxf-2.3.3”
增加  path  “%CXF-HOME %bin” 后,
在cmd下运行
D:/>cd test
D:/test>cd 0328
D:/test/0328>wsdl2java -frontend jaxws21 -p com.chinatelecom.jx.vote.inf.partner
 *wsdl
即可。完成代码的生成。覆盖掉原来的代码即可。

CXF wsdl2Java相关推荐

  1. CXF wsdl2java 生成java代码供客户端使用

    CXF wsdl2java 生成java代码供客户端使用 环境配置: 1.下载apache-cxf-2.6.2在环境变量中配置CXF_HOME 值为E:\gavin\cxf\apache-cxf-3. ...

  2. [解决]CXF wsdl2java 生成代码存在的一些问题

    [解决]CXF wsdl2java 生成代码存在的一些问题 参考文章: (1)[解决]CXF wsdl2java 生成代码存在的一些问题 (2)https://www.cnblogs.com/boaz ...

  3. cxf wsdl2java wsdl_通过cxf 包的 wsdl2java 生成客户端 测试webservice

    apache CXF wsdl2java工具的简单使用 一.下载apache cxf的包,如apache-cxf-2.7.10.zip,地址:cxf.apache.org/download.html ...

  4. Maven CXF wsdl2Java ListXxx生成ArrayOfXxx包装对象 解决方法

    Maven CXF wsdl2Java List<Xxx>生成ArrayOfXxx包装对象 解决方法 添加-xjc-Xxew解决,同时还要给插件添加相应的jar包,如下: <plug ...

  5. cxf wsdl2java 命令

    使用cxf 自带的wsdl2java 工具进行webservice 的客户端程序生成 前提是服务器端webservice 已经发布 下载 apeache-cxf-xxxx 在电脑环境设置中增加 CXF ...

  6. 利用CXF wsdl2java生成java代码

    CXF下载地址:http://cxf.apache.org/download.html 1.下载apache-cxf-2.6.2在环境变量中配置CXF_HOME ,在PATH中加入%CXF_HOME% ...

  7. CXF中 wsdl2java工具的使用方法

    下面是一个使用wsdl2java的例子: C:\Users\Administrator>F: F:\>cd misps2 F:\misps2>wsdl2java -d . http: ...

  8. java cxf 调用wcf接口_JAVA 调用 WCF 服务流程

    1.  将 WCF 服务发布到 Windows 服务(或者 IIS) 此步骤的目的是为 WCF 服务搭建服务器,从而使服务相关的 Web Services 可以被 JAVA 客户端程序调用,具体步骤参 ...

  9. [转载] WSDL2Java详细使用说明【官方最全说明】

    参考链接: Java中的this说明 WSDL to Java 命名 wsdl2java - 获取WSDL文档并生成完全带注释的Java代码,并实现相关服务. 概要 用例 : wsdl2java -f ...

最新文章

  1. 避免神经网络过拟合的5种技术(附链接) | CSDN博文精选
  2. 学习NGUI前的准备NGUI的相关信息
  3. 安装带有调试信息的C库
  4. badminton training
  5. PlantUML权威教程-时序图
  6. opencv java match_OpenCV模板匹配函数matchTemplate详解
  7. 【Java数据结构】3.1 顺序栈
  8. 工业三防手持终端如何选
  9. POJ 2063 (DP)
  10. 华为云薛浩:走进视频“新时代”
  11. 写入clickhouse效率低总结
  12. 在ENSP中配置DHCP服务器
  13. abs和pc混在一起怎么解决_PC和ABS塑料使用中常见问题的分析及其解决办法
  14. linux怎么查看证书库,curl --resolve 查看证书情况
  15. 如何将阿里图标库的引入项目中?
  16. fgets和gets的区别
  17. mysql _外键、实体关系与ER图
  18. 什么是大数据?什么是物联网?
  19. FAQ(43): com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL sy
  20. 2016年8月14日 星期日 --出埃及记 Exodus 16:15

热门文章

  1. 面向对象编程之生成器与迭代器
  2. VTK:BackgroundTexture背景纹理用法实战
  3. wxWidgets:wxPropertyGrid类用法
  4. wxWidgets:wxComboCtrl类用法
  5. boost::spirit::classic相关的测试程序
  6. boost::static_pointer_cast相关的测试程序
  7. boost::signals2::slot相关的测试程序
  8. boost::safe_numerics模块测试对文字的 constexpr 操作
  9. boost::python模块实现使用原始指针访问数据的示例
  10. boost::mpl模块实现insert相关的测试程序