zoukankan      html  css  js  c++  java
  • 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:2000JavaJDKUpdate(注意,不带版本号是为了以后升级时只复制文件,而不必修改环境变量。)
    path=%JAVA_HOME%in;
    classpath=.;%JAVA_HOME%lib;%JAVA_HOME%lib ools.jar

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

    3.下载Tomcat6.0.29(本文中使用的是绿色版,故解压即完成)
      解压到:D:2000Java omcat(注意,不带版本号是为了以后升级时只复制文件,而不必修改环境变量。)
      由于安装的是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:2000JavaAxis2,注意不要下载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:2000javaEclipsedropins  (连压缩包中的根目录一起解压出来)。也可以用传统的link方法部署。

    复制  D:2000JavaAxis2libackport-util-concurrent-3.1.jar 与 geronimo-stax-api_1.0_spec-1.0.1.jar
    到:D:2000JAVAEclipsedropinsAxis2_Codegen_Wizard_1.3.0lib,  并编辑:D:2000JavaEclipsedropinsAxis2_Codegen_Wizard_1.3.0plugin.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:2000JavaAxis2lib下所有jar文件的引用。

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

    项目的结构应该如下图:
    邀月工作室
     

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

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

    Access restriction: The type AxisFault is not accessible due to restriction on required library D:2000JavaAxis2libaxis2-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得到我们想要的服务结果了,简单方法,将刚才生成的测试类的方法略作修改,即可运行。如下:
    邀月工作室

    这正是我们想要的结果。

  • 相关阅读:
    printcap
    browser-ua
    PHP 开发 APP 接口 学习笔记与总结
    Java实现 LeetCode 72 编辑距离
    Java实现 LeetCode 72 编辑距离
    Java实现 LeetCode 72 编辑距离
    Java实现 LeetCode 71 简化路径
    Java实现 LeetCode 71 简化路径
    Java实现 LeetCode 71 简化路径
    Java实现 LeetCode70 爬楼梯
  • 原文地址:https://www.cnblogs.com/lvk618/p/4525089.html
Copyright © 2011-2022 走看看