使用WCF进行跨平台开发之三(JAVA调用WCF服务)1.开发必备2.生成WCF客户端3.开发程序4.结束语

     前两篇写了在.net中和php中调用WCF。这一篇将要解决java中调用WCF的问题,使用的依旧是上一篇中托管在IIS中的WCF服务,本来我是打算用axis来写这篇文章的,可就在我开始之前,无意中发现了在java包中自带的wsimport工具,用起来是极为爽快,而且也节省了配置axis的时间。所以,就它吧

     其实在有了wsimport,在java调用wcf的时候是极为简单的,当然这是建立在使用不太复杂的服务的情况下,如果还要考虑安全验证、发布订阅等问题,还是相对复杂的,但是这三篇文章没准备写那么多,只是想能把跨平台这三个字真的应用在实践中。起一个抛砖引玉的作用吧。

1.开发必备

这么说,只要是做java开发的,都不用看这一个章节啦,jdk+eclipse,甚至可以不使用eclipse,因为上面提到的wsimport工具是在java安装后的bin目录的一个可执行程序。如果钥匙使用axis,eclipse才是必须的。

2.生成WCF客户端

     使用的就是上面提到的wsimport,如果您正确的配置了java环境变量,就可以直接在控制台中使用了,简历文件夹x:/workspace/EmployeeManager/client

     打开命令行,cd到以上建立的目录x:/workspace/EmployeeManager/,然后执行命令:

import –s client http://192.168.11.1/emp/EmployeeManagement.svc?wsdl,然后就会发现在目录下生成了若干文件,其中有对应的java实体类文件,比如Employee.java,还有复杂生成实体的ObjectFactory,因为在这里使用的不是基础类型String、Int等,而是类JAXBElement<SalaryDetail>这样的类型,ObjectFactory可以帮助我们生成这些类型。

3.开发程序

     1.在eclipse中新建JAVA项目,例如testproject

     2.右键项目中的src文件夹,选择Import

     3.点击General中的File System,单击Next

     4.在下一步中点击刚简历的目录,并全选所有文件夹

     5.新建测试文件test.java

import org.datacontract.schemas._2004._07.contracts.*;
import com.microsoft.schemas._2003._10.serialization.*;
import org.tempuri.*;
 
public class test {
 
    /**
     * @param args
     */
    public static void main(String[] args) {
        //使用ObjectFactory帮助生成实体类对象
        org.datacontract.schemas._2004._07.contracts.ObjectFactory factory=new org.datacontract.schemas._2004._07.contracts.ObjectFactory();
        Employee emp=factory.createEmployee();
        //设置属性,同样使用ObjectFactory帮助设置,因为这里的类型有别与基础类型
        emp.setId(factory.createEmployeeId("dev001"));
        emp.setName(factory.createEmployeeName("James White"));
        emp.setDepartment(factory.createEmployeeDepartment("Development"));
        
        //调用的方法略显古怪,需要注意
        EmployeeManagement empManagement=new EmployeeManagement();
        IEmployeeManagement iempManagement=empManagement.getBasicHttpBindingIEmployeeManagement();
        SalaryDetail salaryDetail=iempManagement.getSalaryOfLastMonth(emp);
        //输出结果
        System.out.println("Employee ID:"+salaryDetail.getId().getValue());
        System.out.println("Salary Date:"+salaryDetail.getDate().getMonth());
        System.out.println("Salary:"+salaryDetail.getSalary().toString());
        
    }
 
}

运行程序,出结果

4.结束语

这个。。。。之后再写,,,累了 ,,吃饭去!!!

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

使用Python和Requests访问HP OpenStack Nova

因此,我申请加入新的惠普云服务的免费和私人测试版,已经被惠普云团队所接受,今天我终于有一段时间在惠普云端使用OpenStack API。我将从我对服务的第一印象...

1835
来自专栏张戈的专栏

WordPress静态缓存三剑客,强力推荐!

之前一直用的 wp-super-cache,效果确实非常不错!网络不出问题的话,页面基本秒开。可惜,这款插件有时候会缓存我的手机主题,导致在电脑上浏览时,呈现的...

4115
来自专栏Objective-C

Xcode 清理存储空间

3285
来自专栏Jerry的SAP技术分享

S/4HANA for Customer Management里的搜索分页处理

这篇文章的英文版我发在了SAP Community上:Paging Implementation in S/4HANA for Customer Managem...

3694
来自专栏小白安全

小白博客 kali Linux - 取证工具

在本章中,我们将学习Kali Linux中的取证工具。 p0f p0f是一个工具,只要检查捕获的数据包,即使有问题的设备位于数据包防火墙之后,也可以识...

3259
来自专栏软件开发

Node.js开发Web后台服务

一、简介 Node.js 是一个基于Google Chrome V8 引擎的 JavaScript 运行环境。Node.js 使用了一个事件驱动、非阻塞式 I/...

5489
来自专栏IT探索

VS2005 tips 问题及解决方法 (未完待续。。。)

Solution: 在命令提示符中输入regsvr32 "C:/Program Files/Common Files/Microsoft Shared/Hel...

742
来自专栏腾讯IVWEB团队的专栏

PhantomJS 基础及示例

PhantomJS 是一个无界面的 webkit 内核浏览器,你可以把它当作一个没有界面的 Safari 。本文介绍了一些相关的基础知识。

5.2K0
来自专栏IMWeb前端团队

PhantomJS基础及示例

概述 PhantomJS is a headless WebKit scriptable with a JavaScript API. It has fast...

2008
来自专栏智能大石头

ObjectDataSource选择业务对象列表为空的探讨

前天晚上,在一个页面上拖了一个ObjectDataSource,配置数据源时发现选择业务对象的列表没有列出当前项目的实体类,甚至连NewLife.CommonE...

1647

扫描关注云+社区