详解JAVA调用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)

相关推荐

  • C# 调用 JavaWebservice服务遇到的问题汇总

    1. A SOAP 1.2 message is not valid when sent to a SOAP 1.1 only endpoint. 问题原因: 客户端和服务端的SOAP协议版本不一致. 解决方法: ①修改客户端SOAP协议版本和服务端一致 ②修改服务端SOAP协议版本和客户端一致 附Java服务端修改服务暴露SOAP版本方法: 在接口的实现类上面添加注解 //import javax.xml.ws.BindingType; //import javax.xml.ws.soap.S

  • Java利用Sping框架编写RPC远程过程调用服务的教程

    RPC,即 Remote Procedure Call(远程过程调用),说得通俗一点就是:调用远程计算机上的服务,就像调用本地服务一样. RPC 可基于 HTTP 或 TCP 协议,Web Service 就是基于 HTTP 协议的 RPC,它具有良好的跨平台性,但其性能却不如基于 TCP 协议的 RPC.会两方面会直接影响 RPC 的性能,一是传输方式,二是序列化. 众所周知,TCP 是传输层协议,HTTP 是应用层协议,而传输层较应用层更加底层,在数据传输方面,越底层越快,因此,在一般情况下

  • java调用百度定位api服务获取地理位置示例

    复制代码 代码如下: package test; import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.Reader;import java.net.URL;import java.nio.charset.Charset; import org.json.JSONException;imp

  • 详解JAVA调用WCF服务的示例代码

    这一篇将要解决java中调用WCF的问题,使用的依旧是上一篇中托管在IIS中的WCF服务,本来我是打算用axis来写这篇文章的,可就在我开始之前,无意中发现了在java包中自带的wsimport工具,用起来是极为爽快,而且也节省了配置axis的时间.所以,就它吧 其实在有了wsimport,在java调用wcf的时候是极为简单的,当然这是建立在使用不太复杂的服务的情况下,如果还要考虑安全验证.发布订阅等问题,还是相对复杂的,但是这三篇文章没准备写那么多,只是想能把跨平台这三个字真的应用在实践中

  • 详解java调用存储过程并封装成map

    详解java调用存储过程并封装成map 本文代码中注释写的比较清楚不在单独说明,希望能帮助到大家, 实例代码: public List<Map<String , Object>> doCallProcedure(String procedureString,String[] parameters) throws PersistentDataOperationException { if (!isReady ()) { throw new PersistentDataOperatio

  • 详解java调用ffmpeg转换视频格式为flv

    详解java调用ffmpeg转换视频格式为flv 注意:下面的程序是在Linux下运行的,如果在windows下rmvb转换成avi会出现问题,想成功需要下载下个drv43260.dll东西放到C:WindowsSystem32下面 这几天在写一个视频管理系统,遇到一个很大的问题就是如果把不同格式转换为flv,格式!经过网上的一番搜索,自己在总结,整理,整理,终于整出来了!实现了视频进行转换的同时还能够进行视频截图和删除原文件的功能! 格式转换主要原理就是先用java调用ffmpeg的exe文件

  • 详解Java 10 var关键字和示例教程

    关键要点 Java 10引入了一个闪亮的新功能:局部变量类型推断.对于局部变量,现在可以使用特殊的保留类型名称"var"代替实际类型. 提供这个特性是为了增强Java语言,并将类型推断扩展到局部变量的声明上.这样可以减少板代码,同时仍然保留Java的编译时类型检查. 由于编译器需要通过检查赋值等式右侧(RHS)来推断var的实际类型,因此在某些情况下,这个特性具有局限性,例如在初始化Array和Stream的时候. 如何使用新的"var"来减少样板代码. 在本文中,

  • 详解java调用python的几种用法(看这篇就够了)

    java调用python的几种用法如下: 在java类中直接执行python语句 在java类中直接调用本地python脚本 使用Runtime.getRuntime()执行python脚本文件(推荐) 调用python脚本中的函数 准备工作: 创建maven工程,结构如下: 到官网https://www.jython.org/download.html下载Jython的jar包或者在maven的pom.xml文件中加入如下代码: <dependency> <groupId>org

  • 详解PHP调用Go服务的正确方式

    问题 服务耦合 我们在开发过程中可能会遇到这样的情况: 进程依赖于某服务,所以把服务耦合在进程代码中: 服务初始化耗时长,拖慢了进程启动时间: 服务运行要占用大量内存,多进程时内存损耗严重. 文本匹配服务,它是消息处理流程中的一环,被多个消息处理进程依赖,每次初始化进程要 6秒 左右时间构造 Trie 树,而且服务读取关键词大文件.使用树组构造 Trie 树,会占用大量(目前设置为 256M )内存. 我已经把进程写成了守护进程的形式,让它们长时间执行,虽然不用更多地考虑初始化时间了,但占用内存

  • 详解Java Fibonacci Search斐波那契搜索算法代码实现

    一, 斐波那契搜索算法简述 斐波那契搜索(Fibonacci search) ,又称斐波那契查找,是区间中单峰函数的搜索技术. 斐波那契搜索采用分而治之的方法,其中我们按照斐波那契数列对元素进行不均等分割.此搜索需要对数组进行排序. 与二进制搜索不同,在二进制搜索中,我们将元素分成相等的两半以减小数组范围-在斐波那契搜索中,我们尝试使用加法或减法来获得较小的范围. 斐波那契数列的公式是: Fibo(N)=Fibo(N-1)+Fibo(N-2) 此系列的前两个数字是Fibo(0) = 0和Fibo

  • 实例详解Java调用第三方接口方法

    目录 一. 通过JDK网络类Java.net.HttpURLConnection 1.java.net包下的原生java api提供的http请求 2.HttpClientUtil工具类 3.第三方api接口 4.测试类 二.通过Apache common封装好的HttpClient 1.引入依赖 2.httpClientUtil 3.第三方api接口 4.测试类 三.通过Spring的RestTemplate 1.引入依赖 2.RestTemplate配置类 3.RestTemplate实现类

  • 详解C#实现MD5加密的示例代码

    C#实现MD5加密,具体如下: 方法一 首先,先简单介绍一下MD5 MD5的全称是message-digest algorithm 5(信息-摘要算法,在90年代初由mit laboratory for computer science和rsa data security inc的ronald l. rivest开发出来, 经md2.md3和md4发展而来. MD5具有很好的安全性(因为它具有不可逆的特征,加过密的密文经过解密后和加密前的东东相同的可能性极小) 引用 using System.S

  • java调用c程序通信示例代码

    复制代码 代码如下: //===============Client Struct================#pragma pack(push,4) #define LOG_SEND 0#define MSG_SEND 1#define EXIT_SEND 2#define BUFFER_MAX_SIZE 512#define HEADER_LEN  sizeof(Header)typedef struct HeaderStruct{ int OP;//OP : 0--> Login  1

随机推荐