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

时间:2022-06-15 10:50:56

在上篇《 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,如图:
转载——Java与WCF交互(二):WCF客户端调用Java Web Service

选择一个运行时库
 转载——Java与WCF交互(二):WCF客户端调用Java Web Service

在src下新建一个package,如图:
转载——Java与WCF交互(二):WCF客户端调用Java Web Service

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

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

请注意上图中:@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,内容如图:

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

以"Ant Build"方式运行该文件:
转载——Java与WCF交互(二):WCF客户端调用Java Web Service

应该在控制台收到如下信息:
转载——Java与WCF交互(二):WCF客户端调用Java Web Service

以上信息,表明ant创建成功!此时,刷新项目视图,应该得到如图所示的结果,其中黄色部分为刚生成的内容:
转载——Java与WCF交互(二):WCF客户端调用Java Web Service

在package中新增一个主类,是否感觉有点像WCF中的Host引擎?其实作用就是如此。

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

其内容如下:
转载——Java与WCF交互(二):WCF客户端调用Java Web Service

运行程序,就如同运行WCF中的Host:

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

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

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

至此,Java web端部署完成。

第二步:建立本地WCF客户端,调用第一步生成的web service

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

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

生成后,将生成的文件包含在项目中,项目结构如下:
转载——Java与WCF交互(二):WCF客户端调用Java Web Service

生成的app.config文件如下:
转载——Java与WCF交互(二):WCF客户端调用Java Web Service
此时,在program.cs文件中添加如下方法:
转载——Java与WCF交互(二):WCF客户端调用Java Web Service

至此,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/

 

邀月注:本文版权由邀月和博客园共同所有,转载请注明出处。
助人等于自助!  3w@live.cn
 
转载自:http://www.cnblogs.com/downmoon/archive/2010/08/25/1807982.html

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

  1. Java与WCF交互(二):WCF客户端调用Java web service【转】

    原文:http://www.cnblogs.com/downmoon/archive/2010/08/25/1807982.html 在上篇< Java与WCF交互(一):Java客户端调用WC ...

  2. WCF分布式开发必备知识&lpar;3&rpar;:Web Service 使用

    参考地址:http://www.cnblogs.com/zhili/p/WebService.html 一.WebService概述 SOAP.WSDL.UDDISOAP(Simple Object ...

  3. &period;net 客户端调用java或&period;net webservice进行soapheader验证

    .net 客户端调用java或.net webservice进行soapheader验证 最近项目中有业务需要跨平台调用web服务,客户端和服务器之间采用非对称加密来保证数据的安全性,webservi ...

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

    原文:http://snowolf.iteye.com/blog/642298 去年整理了一篇ZLib算法Java实现(Java压缩技术(一) ZLib),一直惦记却没时间补充.今天得空,整理一下ZI ...

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

    本Guide利用Eclipse以及Ant建立一个简单的Web Service,以演示Web Service的基本开发过程: 1.系统条件: Eclipse Java EE IDE for Web De ...

  6. HTTP请求中的Body构建——&period;NET客户端调用JAVA服务进行文件上传

    PS:今日的第二篇,当日事还要当日毕:)   http的POST请求发送的内容在Body中,因此有时候会有我们自己构建body的情况. JAVA使用http—post上传file时,spring框架中 ...

  7. 【Java学习笔记之二十九】Java中的&quot&semi;equals&quot&semi;和&quot&semi;&equals;&equals;&quot&semi;的用法及区别

    Java中的"equals"和"=="的用法及区别 在初学Java时,可能会经常碰到下面的代码: String str1 = new String(" ...

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

    深入理解java内存模型(一)--基础 深入理解java内存模型(二)--重排序 深入理解java内存模型(三)--顺序一致性 深入理解java内存模型(四)--volatile 深入理解java内存 ...

  9. delphi7编写客户端调用java服务器端webservice示例

    1. 首先取得java-webservice服务器端地址.我的是:http://localhost:8080/mywebservice/services/mywebservice?wsdl 2. 然后 ...

随机推荐

  1. linux 删除进程的多种方法

    kill pid kill -9 pid kill -15 pid pkill -f *.php kill -s 9 pid

  2. 如何基于RabbitMQ实现优先级队列

    概述 由于种种原因,RabbitMQ到目前为止,官方还没有实现优先级队列,只实现了Consumer的优先级处理. 但是,迫于种种原因,应用层面上又需要优先级队列,因此需求来了:如何为RabbitMQ加 ...

  3. mybatis 使用resultMap实现数据库的操作

    resultType:直接表示返回类型 resultMap:对外部resultMap的引用 二者不能同时使用 创建一个实体类Role和User public class Role { private ...

  4. 时间戳转换成时间js(年-月-日,例如&OpenCurlyDoubleQuote;2017-04-22”)

    function GetDateByShiJianChuo(timespan) { var date = new Date(parseInt(timespan.replace("/Date( ...

  5. web开发-Django博客系统

    项目界面图片预览 项目代码github地址 项目完整流程 项目流程: 1 搞清楚需求(产品经理) (1) 基于用户认证组件和Ajax实现登录验证(图片验证码) (2) 基于forms组件和Ajax实现 ...

  6. Django---框架简介和工程搭建

    Django框架 一.Django介绍 二.Django工程搭建 回到顶部 一.Django介绍 1.简介    Django的主要目的是简便.快速的开发数据库驱动的网站.它强调代码复用,多个组件可以 ...

  7. linux下的标准输出和错误输出重定向

    如果想要将对应信息输出到某个文件中,就用对应的数字加上重定向符号“>”,会将这些信息,重新定向到指定的文件中,即可.简单说明:系统默认的stdin,stdout,stderr,都是送往屏幕,所以 ...

  8. 如何提取cocos iOS应用程序APP与游戏安装包里的资源与文件

    平时玩手机,看到iOS app中许多不错的图片素材的时候,有木有很心动,是不是想把其中的图片资源导出来使用,即可以练手,又可以提高自己的审美观0-0,增加app的颜值.当然,请不要作为商业用途.开发软 ...

  9. HTTP协议详细解析

    HTTP协议详解 HTTP协议(HyperText Transfer Protocol,超文本传输协议)是因特网上应用最为广泛的一种网络传输协议,所有的WWW文件都必须遵守这个标准. HTTP是一个基 ...

  10. error&colon;&colon;尝试加载 Oracle 客户端库时引发 BadImageFormatException。如果在安装 32 位 Oracle 客户端组件的情况下以 64 位模式运行,将出现此问题。

    1.VS出现此问题 问题分析:本地电脑安装的oracle客户端为64位客户端,vs启动网站默认启动自带的32位IIS Express,所以出错. 解决方案: 方案1.本地电脑安装oracle32位客户 ...