2016-12-06 3 views
10

私は突然ColdFusionの2016と私のWebサービスへのColdFusion 9から、もはや仕事をアップグレードしていませんよ。私はそれが軸2が常温核融合10で導入されたためだと、それは非機能私の既存のWebサービスをレンダリングと信じています。私は、ColdFusion Administratorで1に戻って、Webサービスのバージョンを設定してもWebサービスは、もは​​や機能しない

、それはまだ動作しません。

私は、これらのWebサービスを呼び出す方法は、以下のようなcreateObject機能である:

<cfscript> 
    objSoapHeader = XmlParse("<wsse:Security mustUnderstand=""true"" xmlns:wsse=""http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd""><wsse:UsernameToken><wsse:Username>USERNAME</wsse:Username><wsse:Password>PASSWORD</wsse:Password></wsse:UsernameToken></wsse:Security>"); 

    Application.UserWebService = CreateObject("webservice", PATH & "Requests/UserService.asmx?WSDL"); 
    addSOAPRequestHeader(Application.UserWebService,"","",objSoapHeader,true); 

    // Get the .Net resources 
    Application.NetResources = Application.UserWebService.GetNetResources(); 

</cfscript> 

私が受け取るエラーは、次のとおりです。

Cannot perform web service invocation GetNetResources.

The fault returned when invoking the web service operation is:java.lang.RuntimeException: Error obtaining parser from data source:LanguageHeader cannot be null!

それはLangaugeHeaderができないと述べていますnullなります。メッセージのリストを見たとき、私はGetNetResourcesに関連する3つのメッセージを参照することができますしかし

<wsdl:portType name="UserServiceSoap"> 
    <wsdl:operation name="GetNetResources"> 
     <wsdl:input message="tns:GetNetResourcesSoapIn"/> 
     <wsdl:output message="tns:GetNetResourcesSoapOut"/> 
    </wsdl:operation> 
</wsdl:portType > 

:操作のみを指定した場合

<wsdl:message name="GetNetResourcesSoapIn"> 
    <wsdl:part name="parameters" element=tns:GetNetResources"/> 
</wsdl:message> 
<wsdl:message name="GetNetResourcesSoapOut"> 
    <wsdl:part name="parameters" element=tns:GetNetResourcesResponse"/> 
</wsdl:message> 
<wsdl:message name="GetNetResourcesLanguageHeader"> 
    <wsdl:part name="parameters" element=tns:LanguageHeader"/> 
</wsdl:message> 

をWSDLはGetNetResources操作に関連した2件のメッセージを表示します2つのメッセージ、次にWSDLファイル内でこの3番目のメッセージが操作に関連付けられていますか?

LanguageHeaderパラメータは絶対に必要とColdFusion 2016年にenforedされているようですので、なぜそれは、ColdFusion 9(1軸)で働いていましたか?

EDIT 1

portTypeとは対照的に、私はbindingに次のコードを見つけ上記(アウトstriked)私の最初の質問に答えるために:

<wsdl:binding name="UserServiceSoap" type="tns:UserServiceSoap"> 
    <wsdl:operation name="GetNetResources"> 
     <soap:operation style="document" soapAction="http://tempuri.org/GetNetResources"/> 
     <wsdl:input> 
      <soap:body use="literal"/> 
      <soap:header message="tns:GetNetResourcesLanguageHeader" use="literal" part="LanguageHeader"/> 
     </wsdl:input> 
     <wsdl:output> 
      <soap:body use="literal"/> 
     </wsdl:output> 
    </wsdl:operation> 
</wsdl:binding> 

しかしまだないこと私の2番目の質問に答えてください。

EDIT 2

コードで少し遊んでた後、私は、Webサービスの呼び出しに変数を追加することにより、RuntimeExceptionを解決するためにうまく管理。今、次のエラーが発生し

args = {TEST="<locale>en-CA</locale>"}; 
Application.NetResources = Application.UserWebService.GetNetResources(argumentCollection=args); 

TESTとして

Web service parameter name languageHeader cannot be found in the provided parameters {TEST}.

は、WSDLで指定された実際のパラメータではありません、私はlanguageHeaderにそれを修正し、この新しいエラーを受け取る:

Web service operation GetNetResources with parameters {LANGUAGEHEADER={<locale>en-CA</locale>}} cannot be found.

これは実際にはlanguageHeaderが正しいパラメータ名であることを示していますが、依然としてWebサービス操作を見つけることができないため、パラメータの 'タイプ'は異なります。

おそらく、私が値として文字列を送信することとしていないよ、しかし私のWSDLで振り返ってみると、それは彼らがLocaleのタイプと述べている文字列です:

<wsdl:types> 
    <s:schema targetNamespace="http://tempuri.org/" elementFormDefault="qualified"> 
     <s:element name="LanguageHeader" type="tns:LanguageHeader"/> 
     <s:complexType name="LanguageHeader"> 
      <s:sequence> 
       <s:element name="Locale" type="s:string" maxOccurs="1" minOccurs="0"/> 
      </s:sequence> 
      <s:anyAttribute/> 
     </s:complexType> 
    </s:schema> 
</wsdl:types> 

私が理解から、I文字列としてLocaleを含むパラメータとしてcomplexTypeオブジェクトを送信すると仮定します。

この場合、CFMLからどのようなオブジェクトを送信しますか?

+0

ないあなたの質問への答えが、あなたはそれがキャッシュのような愚かなものではありませんを確認するために、 'refreshWSDL = true'をしましたか? :) – Leigh

+0

私は 'cfinvoke'を使って試してみましたが、それでも動作しません。 – MPaul

+0

Ok。実際にWSオブジェクトを検証するだけでは、バージョン1(適切なスコープ内)で作成されました。私は今は2016年にアクセスすることはできませんが、何かが変わる可能性は常にあります。申し訳ありませんが、私はもっと助けになることはできませんでした。 – Leigh

答えて

関連する問題