Java与WCF交互(二):WCF客户端调用Java web service【转】
原文:http://www.cnblogs.com/downmoon/archive/2010/08/25/1807982.html
在上篇《 Java与WCF交互(一):Java客户端调用WCF服务》中,我介绍了自己如何使用axis2生成java客户端的悲惨经历。有同学问起使用什么协议,经初步验证,发现只有wsHttpBinding可行,而NetTcpBinding不可行,具体原因待查。昨晚回去重新测试WCF客户端调用Java Web Service,并将过程公布如下:
其实本不需要做web service,只是原来公开的经典的Web service像(http://soapinterop.java.sun.com/round2.base?WSDL)等不可访问了。于是邀月重写了一个本地的web service,以作演示。
第一步:建立本地java环境,并构建 web Service代码,发布web service
1、设置Java环境:
JDK6/J2SE1.6以上,必须!!后面邀月会说明原因。
Eclipse 3.6
Axis2_Codegen_Wizard_1.4.1插件,配置见上文《Java与WCF交互(一):Java客户端调用WCF服务》
假定以上环境都OK
2、Services 服务端应用程序
在Eclipse中新建一个java project,名为JavaServiceForWCFClient,如图:
选择一个运行时库

在src下新建一个package,如图:
在该package下新建一个类HelloTimeForWCF,代码如下:

请注意上图中:@WebService的使用。这称为 Annotation 或元数据,由 Java SE 5 中引入的 Web Services 元数据规范 (Web Services Metadata Specification) 所使用。开发人员在对类和方法应用 Annotation 之前定义类和方法,以向运行时引擎指明如何将类及其方法作为 Web Services 和 Web Services 操作来启用。Java SE 6 附带了这样一个引擎。@WebService Annotation 将 SayHello 类标记为实现某个 Web Services ,从而产生可部署的 Web Services 。这个特定的 Annotation 是一个 WSDL 映射 Annotation,并将 Java 源代码与表示 Web Services 的 WSDL 元素相关联。(注:本段内容来自IBM官方网站,https://www6.software.ibm.com/developerworks/cn/education/webservices/ws-eclipse-javase1/section3.html)
下一步,就是Ant工具大派用场的时候了,
在项目根路径下新建一build.xml,内容如图:

以"Ant Build"方式运行该文件:
应该在控制台收到如下信息:
以上信息,表明ant创建成功!此时,刷新项目视图,应该得到如图所示的结果,其中黄色部分为刚生成的内容:
在package中新增一个主类,是否感觉有点像WCF中的Host引擎?其实作用就是如此。

其内容如下:
运行程序,就如同运行WCF中的Host:

可以用内部的浏览器来浏览这个地址:http://localhost:8080/JavaServiceForWCFClient?wsdl

至此,Java web端部署完成。
第二步:建立本地WCF客户端,调用第一步生成的web service
新建一个普通的控制台项目,名为WCFClientFromJava,,并按下图所示使用SvcUtil命令:(Svcutil.exe,ServiceModel 元数据实用工具用于依据元数据文档生成服务模型代码,以及依据服务模型代码生成元数据文档。ServiceModel 元数据实用工具可在 Windows SDK 安装位置中找到,一般位置为 C:\Program Files\Microsoft SDKs\Windows\v6.0\Bin)

生成后,将生成的文件包含在项目中,项目结构如下:
生成的app.config文件如下:
此时,在program.cs文件中添加如下方法:
至此,WCF客户端调用Java Web service成功!
小结,这是一个很简单的demo,主要技术点在于:
1、@Webservice的使用,参看http://java.sun.com/developer/technicalArticles/J2SE/jax_ws_2/
2、SvcUtil的使用,参看MSDN:http://msdn.microsoft.com/zh-cn/library/aa347733%28VS.90%29.aspx
本文参考:
使用 Eclipse 和 Java SE 6 创建独立 Web Services 应用程序,第 1 部分: Web Services 服务端应用程序
Introducing JAX-WS 2.0 With the Java SE 6 Platform, Part 1
http://java.sun.com/developer/technicalArticles/J2SE/jax_ws_2/
助人等于自助! 3w@live.cn
Java与WCF交互(二):WCF客户端调用Java web service【转】的更多相关文章
- 转载——Java与WCF交互(二):WCF客户端调用Java Web Service
在上篇< Java与WCF交互(一):Java客户端调用WCF服务>中,我介绍了自己如何使用axis2生成java客户端的悲惨经历.有同学问起使用什么协议,经初步验证,发现只有wsHttp ...
- .net 客户端调用java或.net webservice进行soapheader验证
.net 客户端调用java或.net webservice进行soapheader验证 最近项目中有业务需要跨平台调用web服务,客户端和服务器之间采用非对称加密来保证数据的安全性,webservi ...
- WCF分布式开发必备知识(3):Web Service 使用
参考地址:http://www.cnblogs.com/zhili/p/WebService.html 一.WebService概述 SOAP.WSDL.UDDISOAP(Simple Object ...
- Java压缩技术(二) ZIP压缩——Java原生实现
原文:http://snowolf.iteye.com/blog/642298 去年整理了一篇ZLib算法Java实现(Java压缩技术(一) ZLib),一直惦记却没时间补充.今天得空,整理一下ZI ...
- 翻译-使用Spring调用SOAP Web Service
原文链接: http://spring.io/guides/gs/consuming-web-service/ 调用SOAP web service 本指南将指导你使用Spring调用一个基于SOAP ...
- 【Java学习笔记】如何写一个简单的Web Service
本Guide利用Eclipse以及Ant建立一个简单的Web Service,以演示Web Service的基本开发过程: 1.系统条件: Eclipse Java EE IDE for Web De ...
- Spring Boot发布和调用RESTful web service
Spring Boot可以非常简单的发布和调用RESTful web service,下面参考官方指导体验一下 1.首先访问 http://start.spring.io/ 生成Spring Boot ...
- HTTP请求中的Body构建——.NET客户端调用JAVA服务进行文件上传
PS:今日的第二篇,当日事还要当日毕:) http的POST请求发送的内容在Body中,因此有时候会有我们自己构建body的情况. JAVA使用http—post上传file时,spring框架中 ...
- delphi7编写客户端调用java服务器端webservice示例
1. 首先取得java-webservice服务器端地址.我的是:http://localhost:8080/mywebservice/services/mywebservice?wsdl 2. 然后 ...
随机推荐
- Educational Codeforces Round 47
A. Game Shopping 签. #include <bits/stdc++.h> using namespace std; #define N 1010 int n, m, c[N ...
- Linux查看网卡UUID另一方法
转自:http://liaoronghui.com/linux-view-network-adapter-uuid-other-law.html 有时我们不小心将/etc/sysconfig/netw ...
- Spring整合Quartz定时发送邮件
功能描述:刚开始接触Quartz,试着用Quartz整合spring实现每隔一分钟发送一封邮件连续发送10次 核心jar: 邮件发送:commons-email-1.2.jar mail.jar(必须 ...
- Python笔记 #06# NumPy Basis & Subsetting NumPy Arrays
原始的 Python list 虽然很好用,但是不具备能够“整体”进行数学运算的性质,并且速度也不够快(按照视频上的说法),而 Numpy.array 恰好可以弥补这些缺陷. 初步应用就是“整体数学运 ...
- SQL学习笔记二之MySQL的数据库操作
阅读目录 一 系统数据库 二 创建数据库 三 数据库相关操作 一 系统数据库 information_schema: 虚拟库,不占用磁盘空间,存储的是数据库启动后的一些参数,如用户表信息.列信息.权限 ...
- validform校验框架不显示错误提示
今天做前端的校验,发现validform这个框架在项目中有,于是就网上搜索一下,开始使用,网上说,嗯,只写一句代码就可以用啦 $("#itemForm").Validform(); ...
- HDU 3339 In Action(最短路+背包)题解
思路:最短路求出到每个点的最小代价,然后01背包,求出某一代价所能拿到的最大价值,然后搜索最后结果. 代码: #include<cstdio> #include<set> #i ...
- 嵌入式Linux应用程序开发环境搭建记录
2016年2月 参考资料: OK210软件手册(Linux版).pdf Ubuntu下Qt4.7.1编译环境配置说明.pdf 我阅读了以下内容: OK210软件手册(Linux版).pdf 第七章 O ...
- TCGA系列--TCGA长链非编码RNA的可视化工具TANRIC
http://ibl.mdanderson.org/tanric/_design/basic/index.html
- [osg][osgearth]osg的分页加载,代码和结构图
DatabasePager加载数据的过程: 多线程 使用DatabasePager加载数据的流程: 左侧的图框表示数据的检索和输入, 中间的白色框表示用于数据存储的内存空间,而右边的图框表示存储数据的 ...