转载——Java与WCF交互(二):WCF客户端调用Java Web Service

在上篇《 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 服务端应用程序

https://www6.software.ibm.com/developerworks/cn/education/webservices/ws-eclipse-javase1/section3.html

Introducing JAX-WS 2.0 With the Java SE 6 Platform, Part 1

http://java.sun.com/developer/technicalArticles/J2SE/jax_ws_2/

 

转载——Java与WCF交互(二):WCF客户端调用Java Web Service

时间: 2024-08-02 07:00:29

转载——Java与WCF交互(二):WCF客户端调用Java Web Service的相关文章

搭建基于asp.net的wcf服务,ios客户端调用的实现记录

一.写wcf 问题: 1.特定的格式 2.数据绑定 3.加密解密 二.发布到iis 问题: 1.访问权限问题,添加everyone权限 访问网站时:http://localhost/WebbUploadSample/ZipUpload.aspx “/WebbUploadSample”应用程序中的服务器错误. -------------------------------------------------------------------------------- 访问被拒绝. 说明: 访问服

Java压缩技术(二) ZIP压缩——Java原生实现

原文:http://snowolf.iteye.com/blog/642298 去年整理了一篇ZLib算法Java实现(Java压缩技术(一) ZLib),一直惦记却没时间补充.今天得空,整理一下ZIP的java原生实现. 看了几篇zip压缩算法的帖子,讲的算是比较细致了,但就是没有对应的解压缩实现,太惜败了! 我就喜欢没事做总结,稍作整理,将其收纳! 相关链接: Java压缩技术(一) ZLib Java压缩技术(二) ZIP压缩——Java原生实现 Java压缩技术(三) ZIP解压缩——J

【Java学习笔记】如何写一个简单的Web Service

本Guide利用Eclipse以及Ant建立一个简单的Web Service,以演示Web Service的基本开发过程: 1.系统条件: Eclipse Java EE IDE for Web Developers Java SE 6 Windows XP 2.基本环境搭建: 1)Java SE6 JDK的安装:下载Java SE6 JDK,双击,安装默认选项进行安装即可. 2)Eclipse的安装与配置: 安装时直接解压.     配置处有两点,Window>Preferences>Jav

【Java学习笔记之二十九】Java中的"equals"和"=="的用法及区别

Java中的"equals"和"=="的用法及区别 在初学Java时,可能会经常碰到下面的代码: 1 String str1 = new String("hello"); 2 String str2 = new String("hello"); 3 System.out.println(str1==str2); 4 System.out.println(str1.equals(str2)); 为什么第4行和第5行的输出结果不一

java内存模型(二)深入理解java内存模型的系列好文

深入理解java内存模型(一)--基础 深入理解java内存模型(二)--重排序 深入理解java内存模型(三)--顺序一致性 深入理解java内存模型(四)--volatile 深入理解java内存模型(五)--锁 深入理解java内存模型(六)--final 深入理解java内存模型(七)--总结 原文地址:https://www.cnblogs.com/jinggod/p/8495490.html

.net 客户端调用java或.net webservice进行soapheader验证

最近项目中有业务需要跨平台调用web服务,客户端和服务器之间采用非对称加密来保证数据的安全性,webservice的安全验证基于soapheader. 借此机会,顺便整理一下调用.net webservice 和 java webservice 的验证方式,记录下来. .net端web服务 1.若web服务是采用.net webservice实现,如下代码: /// </summary> [WebService(Namespace = "http://tempuri.org/&quo

hessian 通信,C#客户端调用java服务端服务

Hessian是一个轻量级的remoting onhttp工具,使用简单的方法提供了RMI的功能. 相比WebService,Hessian更简单.快捷.采用的是二进制RPC协议,因为采用的是二进制协议,所以它很适合于发送二进制数据(来自百度) 本次通过hessian简单实现C#调用java服务,并返回java方法的结果,其中C#以及java方法的参数可以是Entity. 1. 依赖 java包及DLL   1.1 hessian-4.0.37.jar   1.2 Hessiancsharp.d

Java虚拟机规范阅读(二)IEEE754简介以及Java虚拟机中的浮点算法

什么是浮点数 在计算机系统的发展过程中,曾经提出过多种方法表达实数.典型的比如相对于浮点数的定点数(Fixed Point Number).在这种表达方式中,小数点固定的位于实数所有数字中间的某个位置.货币的表达就可以使用这种方式,比如 99.00 或者 00.99 可以用于表达具有四位精度(Precision),小数点后有两位的货币值.由于小数点位置固定,所以可以直接用四位数值来表达相应的数值.SQL 中的 NUMBER 数据类型就是利用定点数来定义的.还有一种提议的表达方式为有理数表达方式,

用Jersey为Android客户端开发Restful Web Service

平时在做Android客户端的时候经常要与服务器之间通信,客户端通过服务端提供的接口获取数据,然后再展示在客户端的界面上,作为Android开发者,我们平时更多的是关注客户端的开发,而对服务端开发的关注相对较少,但是如果我们要自己一个人设计并开发一套完整的系统,我们就必须同时具备客户端和服务端的开发知识,而且我认为同时掌握客户端和服务端的开发技术还是很有用处的,不仅有助于提升我们的架构知识和能力,而且还……你懂得!身边一些做WEB开发的朋友很多都说为客户端开发接口和单纯地做WEB项目并没有很大的