spring调用wcf以及配置过程

原文出自于

http://www.blogjava.net/downmoon/archive/2010/08/24/329786.html

我们看看生成的WSDL

第二步:调用WCF生成的WSDL生成java客户端。

首先,请允许我介绍下axis2,它的官方地址:http://ws.apache.org/axis2/

这是一个java平台的web service解决方案。我们最常用的是WSDL2Java和Java2WSDL两个功能。

关于Web service的另一个解决方案是xFire,我没试过。

关于命令行执行WSDL2Java,我也没有执行成功! 我这里介绍的是Code Generator Wizard - eclipse Plug-in,一个Eclipse的插件。而且是在参考了众多解决方案才配置成功!

特别感谢yycxbjl的这篇文章:http://www.cnblogs.com/yycxbjl/archive/2010/06/14/1758063.html

我的Java整个配置环境:

1.安装JDK并配置环境变量

 JAVA_HOME=D:\2000\Java\JDKUpdate(注意,不带版本号是为了以后升级时只复制文件,而不必修改环境变量。)
path=%JAVA_HOME%\bin;
classpath=.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar

2.下载并安装Eclipse3.6,就是大家熟悉的太阳神Helios(解压即可)
  解压到:D:\2000\Java\Eclipse

3.下载Tomcat6.0.29(本文中使用的是绿色版,故解压即完成)
  解压到:D:\2000\Java\tomcat(注意,不带版本号是为了以后升级时只复制文件,而不必修改环境变量。)
  由于安装的是tomcat6.0不用配置tomcat的环境变量,至于以前的版本可以查资料。
  需要设置TOMCAT_HOME,CATAlINA等环境变量

4.从  http://ws.apache.org/axis2/download/1_4_1/download.cgi下载 axis2-1.4.1-bin.zip 
解压到:D:\2000\Java\Axis2,注意不要下载Axis2 1.5.1,原因yycxbjl说: “最新版的 1.5.0 与 1.5.1 中没有 backport-util-concurrent-3.1.jar, 无法解决:使用axis2-eclipse-codegen-wizard插件,从wsdl文件生成java文件时出错无法继续的问题,故不使用。)

5.下载1.4.1版的 axis2-eclipse-codegen-wizard 与 axis2-eclipse-service-archiver-wizard

http://ws.apache.org/axis2/tools/1_0/eclipse/wsdl2java-plugin.html#operation1

(但解压后里面显示是1.3.0, 解压到:D:\2000\java\Eclipse\dropins  (连压缩包中的根目录一起解压出来)。也可以用传统的link方法部署。

复制  D:\2000\Java\Axis2\lib\backport-util-concurrent-3.1.jar 与 geronimo-stax-api_1.0_spec-1.0.1.jar
到:D:\2000\JAVA\Eclipse\dropins\Axis2_Codegen_Wizard_1.3.0\lib,  并编辑:D:\2000\Java\Eclipse\dropins\Axis2_Codegen_Wizard_1.3.0\plugin.xml
在 runtime 下 添加 
      <library name="lib/backport-util-concurrent-3.1.jar">
         <export name="*"/>
      </library>
      <library name="lib/geronimo-stax-api_1.0_spec-1.0.1">
         <export name="*"/>
      </library>

将Axis2_Codegen_Wizard_1.3.0重命名为Axis2_Codegen_Wizard_1.4.1,(这是整个部署的关键!这里邀月折腾了整整一天!)

 

新建一个Java project,命名为GetWCFInfoByJavaClient,并在新项目中添加新向导,File-New

此时,我们可以看到期待已久的wizard界面:

此进,在新建的 GetWCFInfoByJavaClient 项目中建一个package,命名为org.tempuri,与前面自定义的命名空间一致。将生成的两个类文 件,ServiceCallbackHandler.java和ServiceStub.java文件添加进来,并在jreSE1.6库中添加 d:\2000\Java\Axis2\lib下所有jar文件的引用。

注意此时有个特殊的文件,即Axis2_Codegen_Wizard_1.4.1\lib\axis2-1.4.1.jar,需要手动复制到d:\2000\java\axis2\lib下并添加到项目的jre库中,这是邀月第二个卡壳的地方,琢磨了好久,慎之慎之。

项目的结构应该如下图:

 

eclipse的命名空间提示就是比vs强啊!很喜欢Ctrl+1。呵呵。微软要是能做到这点,那该多好啊!

要命的是,此时库都添加完成,检查代码也无误,居然编译错误,提示:

Access restriction: The type AxisFault is not accessible due to restriction on required library D:\2000\Java\Axis2\lib\axis2-kernel-1.4.1.jar

 


这下我傻眼了,于是赶紧google,这两天google.com老是无故罢工,真是祸不单行,终于找到一篇老外的文章,说是如下,即可解决:
    * Go to the Build Path settings in the project properties. Windows -> Preferences -> Java Compiler
    * Remove the JRE System Library
    * Add another JRE with a "perfect match"
    * clean and build your project again. It worked for me.

试了下,我的默认jre环境果然是JDK5,于是换为jre system library

终于编译成功!看到曙光了,

此时,最后的工作就是在Main中调用stub得到我们想要的服务结果了,简单方法,将刚才生成的测试类的方法略作修改,即可运行。如下:

这正是我们想要的结果。

时间: 2024-10-26 12:50:51

spring调用wcf以及配置过程的相关文章

一步一步搭建客服系统 (4) 客户列表 - JS($.ajax)调用WCF 遇到的各种坑

阅读目录 1 创建WCF服务 2 调用WCF 3 配置 4 遇到的各种坑 本文以一个生成.获取"客户列表"的demo来介绍如何用js调用wcf,以及遇到的各种问题. 回到顶部 1 创建WCF服务 1.1 定义接口 创建一个接口,指定用json的格式: [ServiceContract] interface IQueue { [OperationContract] [WebInvoke(Method = "POST", BodyStyle = WebMessageBo

WCF分布式开发步步为赢(2)自定义托管宿主WCF解决方案开发配置过程详解

上一节<WCF分布式框架基础概念>我们介绍了WCF服务的概念和通信框架模型,并给出了基于自定义托管服务的WCF程序的实现代码.考虑到WCF分布式开发项目中关于托管宿主服务配置和客户端添加引用.两个环节最容易出错.对于大部分想学习WCF分布式开发的人来说,成功开发.配置.部署第一个自己的WCF服务困难重重.很多资料都介绍了WCF的基本概念.但是对于实际的项目开发过程介绍粗略,给入门者带来诸多不便.今天我们就来补充一节WCF分布式开发一个完整解决方案的开发和配置过程.本节基本结构是:首先介绍[1]

记录:Web无引用无配置方式动态调用WCF服务

这几年一直用WebApi较多,最近项目中有个需求比较适合使用WCF,以前也用过JQuery直接调用Wcf的,但是说实话真的忘了… 所以这次解决完还是花几分钟记录一下 WCF服务端:宿主在现有Win服务中,在服务启动时添加代码 ,服务代码就不用写了,接口和实现按照契约实现即可 private ServiceHost serviceHost = null; //服务宿主 //启动WCF服务 if (serviceHost != null) { serviceHost.Close(); } servi

Wcf:可配置的服务调用方式

添加wcf服务引用时,vs.net本来就会帮我们在app.config/web.config里生成各种配置,这没啥好研究的,但本文谈到的配置并不是这个.先看下面的图: 通常,如果采用.NET的WCF技术来架构SOA风格的应用,我们会把项目做一些基本的分层,如上图: 01. contract层:通常定义服务的接口(即服务契约ServiceContract,指明该服务提供了哪些方法可供外部调用).以及接口方法中传输的Model定义(即:数据契约DataContract,指明方法中的对象参数的Clas

PHP调用WCF提供的方法

一.准备工作 1.安装wampserver:过程略 2.配置wampserver: 2.1打开php.ini文件,去掉 ;extension=php_soap.dll 这里那个分号. 也有说把这个 ;extension=php_openssl.dll前面的分号也去掉的. 2.2 如上图,将php_soap打上√. 2.3 如上图,打开httpd.conf文件,找到Listen 80 ,将80端口改成一个较大的端口,如8000.因为80端口也能别的程序用着. 在这个directory里面有php页

调用WCF不需要添加服务引用,使用一个WCFHelper类就可以

效果图: 调用过程: string WCFURL = "http://localhost:100/Service1.svc"; UserRequest user = new UserRequest { UserName = UserName.Text, Address = Address.Text, Email = Email.Text }; string request = "{\"request\":" + new JavaScriptSer

Spring之IOC容器初始化过程

Ioc容器的初始化是由refresh()方法来启动的,这个方法标志着Ioc容器的正式启动. 具体来说这个启动过程包括三个基本过程: 1.BeanDifinition的Resource定位 2.BeanDifinition的载入与解析 3.BeanDifinition在Ioc容器中的注册 需要注意的是,Spring把这三个过程分开,并使用不同的模块来完成,如使用相应的ResourceLoader.BeanDifinitionReader等模块,通过这样的实际方式,可以让用户更加灵活的对这三个过程进

Spring+MyBatis双数据库配置

Spring+MyBatis双数据库配置 近期项目中遇到要调用其它数据库的情况.本来仅仅使用一个MySQL数据库.但随着项目内容越来越多,逻辑越来越复杂. 原来一个数据库已经不够用了,须要分库分表.所以决定扩充数据库,正好Spring能够灵活的扩充数据库.以下简单写一篇博文,记录下多数据库配置的过程. 1.项目结构例如以下图: 当中mkhl和ulab分别相应两个数据库模块.同一时候也相应两个不同的功能模块. 2.整个Maven项目的配置文件:pom.xml <project xmlns="

Java+MyEclipse+Tomcat (一)配置过程及jsp网站开发入门

这些年免费帮同学或同学的朋友做过的毕设还是有一些了,我的博客基本都是基于我做过的项目相关的,而里面又有三分之一都是自己做的毕设或别人的毕设的做后感.毕设其中就包括MFC图像处理..Net安全软件.C#聊天软件字典软件.Android百度地图随手拍.php网站..Net图书管理系统等等.其实我回过头来想想啊!这些知识对我的帮助和提高还是非常大的,虽然比不上公司实际上线项目,但是帮帮同学对我挺好的,当然很大程度也是害了一些同学,但他们很多都从事了非软件相关的专业. 很显然,大部分的毕设都是基于XXX