Title:
Nationwide: Web Services default to Axis 2 methods even if set to Axis 1 in CF Admin
| View in TrackerStatus/Resolution/Reason: Closed/Fixed/
Reporter/Name(from Bugbase): / Bob Ziegler (Daryl Dean)
Created: 08/30/2012
Components: Web Services, General
Versions: 10.0
Failure Type: Incorrect w/Workaround
Found In Build/Fixed In Build: 10.0 / 282849
Priority/Frequency: Critical / Most users will encounter
Locale/System: English / Linux
Vote Count: 0
The issue involves the use of two WSDL’s (say, WSDL”A” and WSDL “B”) on the same physical location on the server.
WSDL-A uses <import> to bring in WSDL-B. ( both WSDL's are attached to this bug ). The import statement, shown below, doesn’t need to include a full path to WSDL B – PropertyPrefill.wsdl, since it happens on the server side:
<import location="PropertyPrefill.wsdl" namespace="http://propertyprefillservice_1.external.underwritingmanagement.nationwide.com" />
This worked with CF8. What happens in CF10, as per the error message below, is that CF tries to load WSDL-B from “/webdata/logs/was80/appsrv/personallarge/propertyprefill.wsdl”. This path is the location of the JVM being used by this instance of ColdFusion under WAS.
WSDL A was loaded from http://propertyprefillserviceit.nwie.net/PropertyPrefillWebService/services/PropertyPrefill/wsdl/UnderwritingManagement.wsdl, and the expectation is that WSDL B will load from the same path as this, even though it has not been specified.
The customer has tried to consume the service in CF10 using Axis1 and Axis2 settings (set in CF Admin), and neither works. (It needs Axis 1.)
Environment: CF 10, WebSphere 7.x, RHEL 64-bit.
The error message and the wsdl output are detailed below.
Result: Accessing the web service as normal fails.
Expected: The web service should work. You should be able to set the Web Service to "Axis 1" in CF Admin and have that bring the same effect as the workaround code change below. (It seems the connection between specifying the version of the service in CF Admin and actual usage is broken.)
Workaround: Adding wsversion="1" to the createobject call, as shown below, solves the issue. This is not the ideal solution for the customer, however, as it would involve scanning through and changing their entire codebase. That is not practical for them.
createobject("webservice","http://localhost:8500/EET/august/wsdl_import/first.wsdl",{wsversion="1", refreshwsdl="true"})
----------------------------- Additional Watson Details -----------------------------
Watson Bug ID: 3321512
External Customer Info:
External Company: Nationwide Mutual Insurance
External Customer Name: Bob Ziegler
External Customer Email: ziegler1@nationwide.com
Attachments:
Comments: