小编use*_*890的帖子

JAX-WS Java客户端,WCF服务互操作性:"400:错误请求"

我也在Mirth论坛上问了这个问题.

我们目前正在尝试使用开源医疗保健集成引擎Mirth连接到WCF服务.Mirth是基于Java的,在内部使用Mule,它使用JAX-WS.WCF服务器返回HTTP状态代码"400:错误请求".我们无法轻松访问WCF服务器.

与客户的通信在C#中运行良好.在Visual Studio中,添加服务引用,然后在main()中:

PatientRegistryQueryFulfiller.GetDemographicsClient svc = new PatientRegistryQueryFulfiller.GetDemographicsClient();
doc.Load(@"C:\MirthTesting\PRPA_EX201307NO_10_PatientReg_GetDemographics.xml");
PatientRegistryQueryFulfiller.PRPA_IN201307NO patientRegistryRequest = (PatientRegistryQueryFulfiller.PRPA_IN201307NO)ObjectSerializer.DeserializeObject(doc, typeof(PatientRegistryQueryFulfiller.PRPA_IN201307NO));
PatientRegistryQueryFulfiller.PRPA_IN201307NOResponse patientRegistryResponse = svc.GetDemographics(patientRegistryRequest);
doc = ObjectSerializer.SerializeObject(patientRegistryResponse.Item);
Run Code Online (Sandbox Code Playgroud)

自动生成的WCF客户端(来自WSDL)具有带端点的app.config,并且此绑定:

<bindings>
    <basicHttpBinding>
        <binding name="PatientRegistryQueryFulfiller_Binding" closeTimeout="00:01:00"
         openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
         allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
         maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
         messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
         useDefaultWebProxy="true">
        <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="655360"
           maxBytesPerRead="4096" maxNameTableCharCount="655360" />
        <security mode="None">
        <transport clientCredentialType="None" proxyCredentialType="None"
             realm="" />
        <message clientCredentialType="UserName" algorithmSuite="Default" />
      </security>
    </binding>
  </basicHttpBinding>
</bindings>
Run Code Online (Sandbox Code Playgroud)

在WCF解决方案中唯一不同的做法是在相关绑定的readerQuotas标记中扩展maxNameTableCharCount和maxArrayLength,其余部分保留默认值.但是,我还没有找到在Mirth中设置这些的方法,如果这确实是错误的原因.

我们正在运行Mirth v 2.2.1(最近结账),并且Mirth Channel设置为读取和发送HL7v3文档.只有在尝试与WCF服务进行通信时才会出现问题.目标是Web Service Sender,从WSDL读取服务和端口.没有任何验证,信封是从唯一可用的操作生成的.我们没有使用MTOM.

我们相当确定这与JAX-WS和WCF互操作性有关.任何一般提示?

我们已经尝试在JAX-WS连接上设置属性.在欢乐的深处,我们尝试设置http块大小:dispatch.getRequestContext().put(JAXWSProperties.HTTP_CLIENT_STREAMING_CHUNK_SIZE,8192)(WebServiceMessageDispatcher.Java line 140)

堆栈跟踪如下:

ERROR-410: Web Service …
Run Code Online (Sandbox Code Playgroud)

wcf jax-ws mule mirth

5
推荐指数
1
解决办法
6916
查看次数

标签 统计

jax-ws ×1

mirth ×1

mule ×1

wcf ×1