精华内容
下载资源
问答
  • Java调用wcf服务

    2014-07-01 22:03:01
    Java调用WCF服务实现不同程序间数据传输
  • java调用WCF服务

    千次阅读 2017-09-28 15:03:01
    一、概述最近项目上有需要和建科机器进行...而我一直努力的方向就是实现java和webservice交互,在网上搜索尝试了各种代码始终调不通服务,获取不到数据,最后才发现,这个东西叫WCF,我要做的是JavaWCF交互,好吧,总

    一、概述

    最近项目上有需要和建科机器进行通信的需求,而建科这边给的技术文档和服务都是webservice的,我这边要做的就是用Java和建科的webservice交互。
    启动建科的webservice,就能看到:
    这里写图片描述

    而我一直努力的方向就是实现java和webservice交互,在网上搜索尝试了各种代码始终调不通服务,获取不到数据,一直报这个错:

    由于 ContractFilter 在 EndpointDispatcher 不匹配,因此 Action 为“”的消息无法在接收方处理。这可能是由于协定不匹配(发送方和接收方 Action 不匹配)或发送方和接收方绑定/安全不匹配。请检查发送方和接收方是否具有相同的协定和绑定(包括安全要求,如 Message、Transport、None)。

    最后才发现,这个东西叫WCF,我要做的是Java和WCF交互,好吧,总算找到方向了,在网上参照牛人的方法,成功实现交互。

    二、WSImport实现

    1.找到位于%JAVA_HOME%\bin下的wsimport.exe文件;
    2.在bin目录下新建文件夹JavaSrc;
    3.指定到当前路径,在命令行cmd中输入:

    wsimport -s JavaSrc http://192.168.0.45:7999/TjkServiceLibrary/Service1/?wsdl

    4.在当前路径的JavaSrc下会生成相关的Java类,直接复制到项目的Src目录下即可使用。

    这里写图片描述

    三、测试代码

    我写了一个单例工具类,方便调用:

    这里写图片描述

    展开全文
  • 主要介绍了详解JAVA调用WCF服务的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • Hi All,Invoking WCF service through java script.I wrote a method to invoke the service ,everthing is fine but while attaching url to method im facing problem.This application for an IPhone application...

    Hi All,

    Invoking WCF service through java script.

    I wrote a method to invoke the service ,everthing is fine but while attaching url to method im facing problem.

    This application for an IPhone application.

    please help me.

    Thanks in Advance.

    解决方案

    I don''t connect directly from the client with my WCF services.

    Another thing I have is that most of my services are not exposed to the outside of the server or I want them secured under forms authentication.

    So, for this what I do is create an Handler (ASHX) that acts as a controller that can transform the information that comes and goes.

    On the client O call a method on the ASHX that to its thing (call a service or whatever), does all the necessary transformations (if any) and return the result back to the client.

    展开全文
  • Java与WCF交互(一 Java客户端调用WCF服务
                   

     

    最近开始了解WCF。写了个最简单的Helloworld,想通过java客户端实现通信。没想到以我的基础,居然花了整整两天(当然是工作以外的时间,呵呵),整个过程大费周折,特写下此文,以供有需要的朋友参考:

    第一步:生成WCF服务

    新建WCF解决方案,分别添加三个项目,HelloTimeService(类库),HelloTimehost(控制台程序),HelloTimeClient(控制台程序),项目结构如图:
    邀月工作室
    各个项目的主要代码:
    service:
    邀月工作室

    Host:
    邀月工作室

    Client:
    邀月工作室

    编译通过后,测试Host和Client分别成功:
    邀月工作室

    邀月工作室

    保持Host程序打开,这样,WCF服务就一直可以被外部程序调用。当然也包括Java客户端。

    我们看看生成的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得到我们想要的服务结果了,简单方法,将刚才生成的测试类的方法略作修改,即可运行。如下:
    邀月工作室

    这正是我们想要的结果。

     

    关于java与.net交互的其他文章,请参考:

    微软示例:

    Java/.NET Interoperability with the Microsoft.com Web Service
    http://msdn.microsoft.com/en-us/library/ms953968.aspx

    Interoperability Testing

    http://msdn.microsoft.com/en-us/library/aa480510.aspx

    IBM示例:使用 Eclipse 和 Java SE 6 创建独立 Web Services 应用程序,第 1 部分: Web Services 服务端应用程序(该链接需要先注册)

    https://www6.software.ibm.com/developerworks/cn/education/webservices/ws-eclipse-javase1/section2.html

     

     

    小结:这虽然只是一个简单的demo,但我问了许多人,并在论坛发问,可是由于使用环境的不同,最终没找到类似的环境,只好自己摸索实践,好在还有一点点java基础,另外网上几个论坛像javaeye提供的答案过于陈旧,这正是java初学者苦恼之处,这点来看,微软的开发环境无论如何是值得称赞的,至少它不用跑到别的地盘去问答案。eclipse/tomcat/axis等代表的服务器和开发环境、插件配置非常的让初学者无奈!因为你不知道某个jar是否与其他几千个jar很好的兼容。不知道java高手们是否指一条明道,非常感谢!并再次感谢yycxb

    下篇文章介绍WCF客户端如何调用java的web service,那要简单多了。敬请关注。

     


     附:WCF的配置文件:
    <?xml version="1.0" encoding="utf-8" ?><configuration>  <system.web>    <compilation debug="true" />  </system.web>  <system.serviceModel>    <services>      <service name="Sample.WCF.HelloTimeForJava.Service" behaviorConfiguration="MyServiceTypeBehaviors">        <endpoint address="HelloTimeService" binding="wsHttpBinding" contract="Sample.WCF.HelloTimeForJava.IService">          <identity>            <dns value="localhost" />          </identity>        </endpoint>        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />        <host>          <baseAddresses>            <add baseAddress="http://localhost:8000/" />          </baseAddresses>        </host>      </service>    </services>    <behaviors>      <serviceBehaviors>        <behavior name="MyServiceTypeBehaviors">          <serviceMetadata httpGetEnabled="True" httpGetUrl=""/>          <serviceDebug includeExceptionDetailInFaults="False" />        </behavior>      </serviceBehaviors>    </behaviors>  </system.serviceModel></configuration>


    相关链接:

    邀月注:本文版权由邀月和CSDN共同所有,转载请注明出处。
    助人等于自助!   3w@live.cn
       

      

     

               
    展开全文
  • java 调用wcf

    2011-12-07 14:44:57
    java调用wcf 主要讲述用myeclipse自动生成客户端文件。
  • java调用WCF问题.pdf

    2021-09-13 14:54:57
    java调用WCF问题.pdf
  • java调用WCF类型webservice服务必须要加上Action和命名空间,不然无法调通,会报如下错误: 1.需要查找名称为“”、命名空间为“”的节点类型“Element”。找到名称为“”、命名空间为“”的节点类型“Element” ...

    java调用WCF类型webservice服务必须要加上Action和命名空间,不然无法调通,会报如下错误:

    1.需要查找名称为“”、命名空间为“”的节点类型“Element”。找到名称为“”、命名空间为“”的节点类型“Element”

    该问题为未加命名空间。

    
                QName qn = new QName("http://tempuri.org/", "GetRFC_RFID_LoadingMessage"); 
                call.setOperationName(qn);

    2.“由于 ContractFilter 在 EndpointDispatcher 不匹配,因此 Action 为“”的消息无法在接收方处理。这可能是由于协定不匹配(发送方和接收方 Action 不匹配)或发送方和接收方绑定/安全不匹配。请检查发送方和接收方是否具有相同的协定和绑定(包括安全要求,如 Message、Transport、None)”;

    该问题为未加Action的值:

    
                call.setSOAPActionURI("http://tempuri.org/ISAPRFCService/GetRFC_RFID_LoadingMessage"); 

    总体代码如下:

    try {  
    			
    			
                String endpoint = "http://192.168.3.88:59886/SAPRFCService/?wsdl";  
                Service service = new Service();  
                Call call = (Call) service.createCall();  
                call.setTargetEndpointAddress(endpoint);  
                QName qn = new QName("http://tempuri.org/", "GetRFC_RFID_LoadingMessage"); 
                call.setSOAPActionURI("http://tempuri.org/ISAPRFCService/GetRFC_RFID_LoadingMessage");
                call.setOperationName(qn);
                QName qn1 = new QName("http://tempuri.org/", "VENDORID");
                QName qn2 = new QName("http://tempuri.org/", "TRUCKID");
                QName qn3 = new QName("http://tempuri.org/", "HUID");
                call.addParameter(qn1,org.apache.axis.encoding.XMLType.XSD_STRING, javax.xml.rpc.ParameterMode.IN); 
                call.addParameter(qn2,org.apache.axis.encoding.XMLType.XSD_STRING, javax.xml.rpc.ParameterMode.IN); 
                call.addParameter(qn3,org.apache.axis.encoding.XMLType.XSD_STRING, javax.xml.rpc.ParameterMode.IN);
                call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING);// 设置返回类型  
                String VENDORID = "测试人员";   
                String TRUCKID = "测试人员";   
                String HUID = "测试人员";  
                String result = (String) call.invoke(new Object[] { VENDORID,TRUCKID,HUID });  
                // 给方法传递参数,并且调用方法  
                System.out.println("result is " + result);  
            } catch (Exception e) {  
                System.err.println(e.toString());  
            }  

     

    展开全文
  • Java调用WCF的WebService服务

    千次阅读 2018-11-27 21:06:36
    在Eclipse项目上右击,NewàOtheràWeb ServiceàWeb Service Client 点击完成即可生成客户端代码,测试... 需要引用activation-1.1.jar及mail-1.4.jar,这两个jar包可以从下载的axis2-1.7.6-bin.zip中获取。......
  • java调用.net wcf服务

    2015-10-15 16:16:30
    java调用.net wcf服务。包好整个调用的详细内容,已经遇到的问题,大神之作 。 主要是借助.net wcf服务接口的代理对象来完成调用。过程简单,通俗易懂
  • Java调用wcf

    2021-07-28 14:28:26
    使用分布式编程,很方便不同编程语言之间互相访问,但也必须注意一些...在网站中添加WCF服务,取名字为:GetAccountService.svc,这时同时生成了一个接口:IGetAccountService.cs和一个实现类:GetAccountService...
  • JAVA调用WCF

    2013-05-24 17:24:00
    主要说说JAVA如何调用WCF服务。  Java环境下生成代理类的工具有很多,如wsdl2Java,wsimport 等。本文中使用的工具是wsimport。  wsdl2Java 生成命令实例:   wsdl2Java -p packageName -d C:\ProxyClass ...
  • java调用wcf控件的两种交互.pdf
  • 最近开始了解WCF,写了个最简单的Helloworld,想通过java客户端实现通信。...第一步:生成WCF服务 新建WCF解决方案,分别添加三个项目,HelloTimeService(类库),HelloTimehost(控制台程序),HelloTimeClient(控...
  • java调用wcf数据量过大

    2018-11-09 05:40:59
    大家好,我在使用java调用微软.net的wcf服务时,由于传递的数据量超过了65526,结果总是报错, 还请各位大神能否解答,同时我在...如何在java客户端做配置,使java调用wcf可以超过65536的限制? 感谢
  • java KSoap调用WCF服务

    2017-09-06 09:24:42
    1.WCF服务编写  //接口设置 注意后面的Namespace 在java 或者安卓中将会被使用  [ServiceContract(Name = "IService", Namespace = "http://www.json.com")]  public interface IService...
  • Java客户端调用WCF服务

    千次阅读 2016-05-04 14:06:55
    如何判断接口用的是WCF服务的打开别人给你的接口地址(WSDL) 里面有svcutil.exe 就是WCF二.在eclipse中安装axis2插件1.原因: 为什么安装axis2插件,为了生成java客户端。2.下载:axis2-eclipse-codegen-plugin ...
  • Java客户端调用WCF服务的方法

    热门讨论 2011-08-10 12:11:33
    原创,使用myeclipse和vs2008实现Java客户端对.net wcf服务调用,有详细的代码及说明。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,503
精华内容 2,201
关键字:

java调用wcf服务

java 订阅