• Global community
    • Language:
      • Deutsch
      • English
      • Español
      • Français
      • Português
  • 日本語コミュニティ
    Dedicated community for Japanese speakers
  • 한국 커뮤니티
    Dedicated community for Korean speakers
Exit
0

Broken SOAP, AxisFaults starting with CF10 Update 008

New Here ,
Mar 04, 2013 Mar 04, 2013

Copy link to clipboard

Copied

Anyone else experiencing this problem? It appears the cfinvoke arguments are not getting passed in the webservice call, so the remote end gets no arguments and the call fails. The code did not change a single character, and was working on CF10 Update 006, just before I updated to 8.

I'm calling a webservice hosted on CF7, and I am using wsversion=1 in my call. The wsdl looks fine to me. Again, was working fine on update 006.

Here's the exception being logged, I am clearly passing a struct called "form" into the cfinvoke as an argument, I've checked a half dozen times to make sure it's not something stupid I'm doing and that the cause of the error is not the obvious. I also use nearly the same code path to make a REST style call with cfhttp, and the form argument is being passed correctly (converted to wddx).

Cannot perform web service invocation sendWithdrawalEmail.The fault returned when invoking the web service operation is:<br> <pre>AxisFault faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException faultSubcode: faultString: coldfusion.xml.rpc.CFCInvocationException: [coldfusion.runtime.MissingArgumentException : The parameter FORM to function sendWithdrawalEmail is required but was not passed in.] faultActor: faultNode: faultDetail: {http://xml.apache.org/axis/}stackTrace:coldfusion.xml.rpc.CFCInvocationException: [coldfusion.runtime.MissingArgumentException : The parameter FORM to function sendWithdrawalEmail is required but was not passed in.] at coldfusion.xml.rpc.CFComponentSkeleton.__createCFCInvocationException(CFComponentSkeleton.java:608) at coldfusion.xml.rpc.CFComponentSkeleton.__invoke(CFComponentSkeleton.java:554) at ec.wwc.forms.wwCenters.sendWithdrawalEmail(/oracle/FUSD/www/ec/wwc/forms/wwCenters.cfc) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Metho... The specific sequence of files included or processed is: /media/sf_cfwebhome/forms/core/remote/index.cfc, line: 26

This is a J2EE deployment on Weblogic, Oracle Enterprise Linux 5 (essentially RHEL5), with Oracle HTTP Server (aka Apache) in front of it, running in a VirtualBox VM, if it matters... oh and still on Java 6, I did not update the JRE to 7 even though I read I can do that, I did not read anywhere that it was required to do so. This is a developer edition environment, unfortunately I won't be able to update production until I find a fix for this issue.

I think I've done enough explaining. Did I miss something critical in the upgrade?

Views

3.3K

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Participant ,
Mar 04, 2013 Mar 04, 2013

Copy link to clipboard

Copied

Could it be something as simple as you have not passed the parameter FORM to your sendWithdrawalEmail method? That seems to be what the error is saying.

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
New Here ,
Mar 04, 2013 Mar 04, 2013

Copy link to clipboard

Copied

Thanks for the reply. As I explained I did a sanity check and confirmed that the form structure is being passed in CF code. I also eliminated case-sensitivity as a potential cause, I tried every permutation. There is absolutely no doubt that it is being passed, that is it defined, and it contains exactly the data that I expect. The only change was update 8, the call was working perfectly on update 6. The error seems to be in the Axis implementation layer, it seems to not be picking up the arguments that I pass. I've tried both <cfinvoke> with embedded <cfinvokeargument>, and also passing it via argumentsCollection attribute, neither wants to work.

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
New Here ,
Mar 04, 2013 Mar 04, 2013

Copy link to clipboard

Copied

I unhooked everything and tried the following, which still produces the error.

<cfinvoke webservice="http://fusion-dev.erau.edu:8080/ec/wwc/forms/wwCenters.cfc?wsdl" method="sendWithdrawalEmail" wsversion="1">
     <cfinvokeargument name="form" value="#{ whatever = "something" }#">
     <cfinvokeargument name="transaction" value="#{ whatever = "something" }#">
     <cfinvokeargument name="emailParams" value="#{ whatever = "something" }#">
</cfinvoke>

and here is the function being called on the remote end

<cffunction name="sendWithdrawalEmail" access="remote" returnType="boolean">
     <cfargument name="form" type="any" required="true">
     <cfargument name="transaction" type="any" required="true">
     <cfargument name="emailParams" type="any" required="true">
     <!---------->
     <cfif isWddx(form)>
            <cfwddx action="wddx2cfml" input="#arguments.form#" output="arguments.form">
            <cfwddx action="wddx2cfml" input="#arguments.transaction#" output="arguments.transaction">
            <cfwddx action="wddx2cfml" input="#arguments.emailParams#" output="arguments.emailParams">
     </cfif>
     
     <!---Runs a query here--->
     
     <!---Sends email here --->
     
     <cfreturn true>
</cffunction>

I also tried changing the "any" type on each of those args to "struct" with the same result...  if others have not already complained, I have to believe it is specific to my platform, just not sure where to go from here other than roll back to update 6, or to try an update to java 7.

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
New Here ,
Mar 04, 2013 Mar 04, 2013

Copy link to clipboard

Copied

It appears to be specific to struct type arguments. When I pass form as a string, the call starts complaining about TRANSACTION. What am I doing wrong here?

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Explorer ,
Mar 05, 2013 Mar 05, 2013

Copy link to clipboard

Copied

I saw this mentioned that same code was working earlier on update-6 but still I insist that can you please uninstall update-8 and reinstall update-6 and check if this problem persists or its gone.

Also you mentioned that you changed the types for cfargument's from "any" to "struct", can you confirm that you changed it for all of them together, If not can you please try that once and see if it works.

Your reply will help me dig deeper in this issue.

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
New Here ,
Mar 05, 2013 Mar 05, 2013

Copy link to clipboard

Copied

All parameters in the remote function were changed from any to struct, and resulted in the same error. If a string is passed into "any" parameters rather than a struct, the call works and the parameters come through fine.

I ran the same code on my production server which runs Update 6 and it works perfectly.

I will uninstall update 8 from development today if I have time and give it a try, but all of the evidence so far points to a possible bug in the update, or an incompatibility between Java 6 and update 8. The reason I say this is, if update 8 was created primarily to bring Java 7 support, it makes sense that most testing before release would have been on that version of the JRE. I'm sorry I can't tell you whether this problem started with update 7 or 8, I never installed 7 in any environment.

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Explorer ,
Mar 08, 2013 Mar 08, 2013

Copy link to clipboard

Copied

Hi jkiah,

Have you verified this bug by un-installing update8 and running it on cf10 final bits or update6.

This piece of information is very important for us to fix it.

If you haven't followed on this already, can you please do so and reply as soon as you can.

Thanks,

Milan.

CF Engineering Team.

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Beginner ,
Sep 25, 2013 Sep 25, 2013

Copy link to clipboard

Copied

We just migrated to CF10 from CF8 and are having an identical issue. We are running Updater 11 on IIS8/2012, Java 1.7 and none of our SOAP XML posts are being parsed into the arguments of the Remote Methods of our Components.  Form and URL parameters are arriving just fine. We have tried setting wsversion=1 and also changed the version in the CF Administrator with no luck.  Any help on this issue (workarounds are fine too!) would be appreciated!  The webservices.log file still shows each web service being invoked as AXIS 2 instead of AXIS 1.

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Explorer ,
Sep 26, 2013 Sep 26, 2013

Copy link to clipboard

Copied

Hi,

In logs there are clear messages like:

webservice published by Axis1 or Axis2

and webservices consumed as Axis1 or Axis2.

I want to know the exact behavior of publishing and consuming.

published as Axis1 or Axis2?

consumed as Axis1/Axis2?

Also I suggest to set both the versions in Application.cfc and try again.

<cfset this.wssettings.version.consume = "1">

<cfset this.wssettings.version.publish = "1">

Thanks,

Milan.

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Explorer ,
Sep 26, 2013 Sep 26, 2013

Copy link to clipboard

Copied

just forgot to mention one thing.

please use refreshwsdl while invoking the webservice.

here is an example for clear understanding.

<cfscript>

            //invoke method

            ws = createObject("webservice","mywebservice.cfc?wsdl", {refreshwsdl="true"});

</cfscript>

       

<cfinvoke webservice = "#ws#" method="mymethod" argString="bar" returnVariable="foo" >

Thanks,

Milan.

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Beginner ,
Sep 26, 2013 Sep 26, 2013

Copy link to clipboard

Copied

Hi Milan,

We've tried all these settings but in the logs we keep seeing the web services switch back and forth between 1 and 2.  No-one with SOAP XML integration can post to the server.  I've rebuilt the CF Installation from scratch and still the behavior is the same (IIS8 Win 2012 64-bit, CF10 64bit + MU + Updater 11).  We want the behavior of published webservices (cfcs with remote methods) to be the same as it was in CF8.  Are you saying i have to invoke my own webservice with the refreshwsdl tag to clear the cache?

Sep 26, 2013  4:21 PM  Information  ajp-bio-8012-exec-4 

Using Axis 2 framework for servicing the web service request to the endPoint http://xxx.mydomain.com/com/proexams/webservices/public_webservice.cfc.





Deploying the CFC http://xxx.mydomain.com/com/proexams/webservices/public_webservice.cfc as a web service.
Sep 26, 2013  4:19 PM  Information  ajp-bio-8012-exec-4 

Using Axis 1 framework for servicing the web service request to the endPoint http://xxx.mydomain.com/com/proexams/webservices/public_webservice.cfc.

Sep 26, 2013  4:19 PM  Information  ajp-bio-8012-exec-4 

Deploying the CFC http://xxx.mydomain.com/com/proexams/webservices/public_webservice.cfc as a web service.

Sep 26, 2013  4:18 PM  Information  ajp-bio-8012-exec-4 

The logs show the CFC keeps switching between version 1 and 2 constantly.  We have multiple hosts pointing at the same code base... xxx1.domain1.com and xxx2.domain2.com and it keeps switching between Axis 1 and 2.

we have <cfcomponent wsversion="1"> enabled.  We have changed the CF Administrator setting to default to version 1.  We only use an application.cfm so we don't have an application.cfc but I copied the .cfcs to their own directory and added an application.cfc with the this.wssettings. flags and the behavior was the same.

Any help or tips on how to debug/diagnose this issue is appreciated!

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
New Here ,
Dec 01, 2014 Dec 01, 2014

Copy link to clipboard

Copied

LATEST

Dear All Technology Expert's,

I have a query related to Coldfusion SOAP services, that is most commonly asked in all the forum's but NONE of them has got answer.

If there is NO solution so I think Adobe has to come up with some patches so developer can able to do some customization.

I like to share with you all, in all other language ( PHP, JAVA, .NET etc) this option is available and you can customize the error.

Ok let me again explain the very basic error:

SOAP Request:

<soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">

   <soapenv:Header/>

   <soapenv:Body>

    

   </soapenv:Body>

</soapenv:Envelope>

SOAP Response:

  <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

   <soapenv:Body>

      <soapenv:Fault>

         <faultcode>soapenv:Server.userException</faultcode>

         <faultstring>java.lang.Exception: Body not found.</faultstring>

         <detail>

            <ns1:stackTrace xmlns:ns1="http://xml.apache.org/axis/">java.lang.Exception: Body not found.

  at org.apache.axis.providers.java.RPCProvider.processMessage(RPCProvider.java:121)...</ns1:stackTrace>

            <ns2:hostname xmlns:ns2="http://xml.apache.org/axis/">Coldfusion Error</ns2:hostname>

         </detail>

      </soapenv:Fault>

   </soapenv:Body>

</soapenv:Envelope>

HOW we can customize the error, in all other languages you can simple customize the error like

Other languages SOAP response:

  <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

   <soapenv:Body>

      <soapenv:Fault>

         <faultcode>BODY_NOT_FOUND</faultcode>

         <faultstring>Body is missing in your request</faultstring>

        

      </soapenv:Fault>

   </soapenv:Body>

</soapenv:Envelope>

But the same is NOT possible in Coldfusion, right?

AS you know it is vulnerability to display exception messages in the response.

We are developing this web service to access  from other language website (PHP, .NET).

We are also planning to upgrade server the Coldfusion 11, but do you think there is any solution with latest Coldfusion version.

Please response only if you know about these issue's or solution. 

Thanks

Niyaz

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Resources
Documentation