1

.Net 4.0 から Java ベースのサービスを利用しようとしています。(C# コンソール/Windows サービス)
VS の Add Service Referenceダイアログを使用してサービス参照を追加しました。

サービスは WebSphere 8 でホストされ、WSDL 定義は cxf を使用して生成されます。
クライアント アプリは Windows Server 2008 R2 SP1 で実行されています。ただ、SP1以降はwindows updateが適用されていないと思います。

問題はときどき発生ます。サービス メソッドへの呼び出しはすべて例外を返します。エラーは次のとおりです。

The content type text/xml;charset=UTF8 of the response message does not match the content type of the binding (application/soap+xml; charset=utf-8).  
If using a custom encoder, be sure that the IsContentTypeSupported method is implemented properly.  
The first 1024 bytes of the response were: '<?xml version="1.0" encoding="UTF-8"?><wsdl:definitions name="MyServiceImplService" targetNamespace="http://impl.webService.myService.com/" xmlns:ns1="http://webService.myService.com/" xmlns:ns2="http://cxf.apache.org/bindings/xformat" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:tns="http://impl.webService.myService.com/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">  
<wsdl:import location="http://10.1.1.1/myService/webService/myService?wsdl=myService.wsdl" namespace="http://webService.myService.com/"></wsdl:import>  
<wsdl:binding name="MyServiceImplServiceSoapBinding" type="ns1:myService">
<soap12:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"></soap12:binding>
<wsdl:operation name="disableCard">
  <soap12:operation soapAction="" style="documen'..  

クライアント アプリの WCF 構成は次のとおりです。

<system.serviceModel>
   <bindings>
      <customBinding>
         <binding name="MyServiceImplServiceSoapBinding">
            <textMessageEncoding messageVersion="Soap12" />
            <httpTransport />
         </binding>
      </customBinding>
    </bindings>
    <client>
       <endpoint address="http://10.1.1.1/myService/webService/myService?wsdl"
           binding="customBinding" bindingConfiguration="MyServiceImplServiceSoapBinding"
           contract="MyServiceReference.myService" name="MyServiceImplPort" />
    </client>
</system.serviceModel>
  • すべてのメソッドが正常に機能し、突然、すべてがこの例外を返すため、これは WCF 構成とは何の関係もないと思います。

  • エラーは明らかな理由もなくランダムに表示されるようです。場合によっては 2 日後に ~1,000,000 件のリクエストが送信され、場合によっては 30 分後に送信されます。ただし、この例外が発生すると、サービスへのすべての呼び出しでこの例外が返されます。

  • サービス側では、呼び出しが Java アプリケーションに到達したという記録さえありません。私の呼び出しをサービスに渡す代わりに、WebSphere が wsdl 定義を送信するようです。

  • クライアント アプリを閉じて再起動しても、エラーは解消されません。システムを完全に再起動するだけで、エラーが消えます。(更新:エンドポイント アドレスから ?wsdl を削除し、システムを再起動する必要がなくなり、クライアント アプリを再起動するだけで、再び機能するようになります。)

  • エラーに直面したとき、私は Soap UI でサービス メソッドを呼び出し、例外なく結果を取得しました。したがって、サービス側にはおそらく何も問題はありません。

私の唯一の推測では、これは .Net Framework 4.0 のバグです。どんな助けでも大歓迎です。

4

0 に答える 0