1 Reply Latest reply on Jun 8, 2006 3:27 PM by Fernis

    Web Service failing only on one of two servers in Clustered Environment

    Beals
      We have two cloned servers in a clustered-fail-over environment. Due to some hardware problems, server 1 was rebuilt and restored to being a mirror of server 2. At this point a web service registered to both stopped working on server 1. The service simply returns a query object.

      Calling the service from server 1 results in the following error:

      coldfusion.xml.rpc.ServiceProxy$ServiceInvocationException: Could not perform web service invocation "getusercommunitybindings" because AxisFault
      faultCode: { http://schemas.xmlsoap.org/soap/envelope/}Server.userException
      faultSubcode:
      faultString: org.xml.sax.SAXParseException: Next character must be ">" terminating comment .
      faultActor:
      faultNode:
      faultDetail:
      { http://xml.apache.org/axis/}stackTrace: org.xml.sax.SAXParseException: Next character must be ">" terminating comment .
      at com.macromedia.crimson.parser.Parser2.fatal(Unknown Source)
      at com.macromedia.crimson.parser.Parser2.fatal(Unknown Source)
      at com.macromedia.crimson.parser.Parser2.nextChar(Unknown Source)
      at com.macromedia.crimson.parser.Parser2.maybeComment(Unknown Source)
      at com.macromedia.crimson.parser.Parser2.maybeMisc(Unknown Source)
      at com.macromedia.crimson.parser.Parser2.parseInternal(Unknown Source)
      at com.macromedia.crimson.parser.Parser2.parse(Unknown Source)
      at com.macromedia.crimson.parser.XMLReaderImpl.parse(Unknown Source)
      at javax.xml.parsers.SAXParser.parse(SAXParser.java:345)
      at org.apache.axis.enc...
      at coldfusion.xml.rpc.ServiceProxy.invokeImpl(ServiceProxy.java:219)
      at coldfusion.xml.rpc.ServiceProxy.invoke(ServiceProxy.java:132)
      at coldfusion.runtime.CfJspPage._invoke(CfJspPage.java:1587)
      at coldfusion.tagext.lang.InvokeTag.doEndTag(InvokeTag.java:372)
      at cflp2ecfm1020086963.runPage(\\sanbox\cfas_storage$\WebSites\Ecampus\lp.cfm:9)
      at coldfusion.runtime.CfJspPage.invoke(CfJspPage.java:147)
      at coldfusion.tagext.lang.IncludeTag.doStartTag(IncludeTag.java:357)
      at coldfusion.filter.CfincludeFilter.invoke(CfincludeFilter.java:62)
      at coldfusion.filter.ApplicationFilter.invoke(ApplicationFilter.java:107)
      at coldfusion.filter.RequestMonitorFilter.invoke(RequestMonitorFilter.java:48)
      at coldfusion.filter.PathFilter.invoke(PathFilter.java:80)
      at coldfusion.filter.ExceptionFilter.invoke(ExceptionFilter.java:47)
      at coldfusion.filter.BrowserDebugFilter.invoke(BrowserDebugFilter.java:52)
      at coldfusion.filter.ClientScopePersistenceFilter.invoke(ClientScopePersistenceFilter.java:2 8)
      at coldfusion.filter.BrowserFilter.invoke(BrowserFilter.java:35)
      at coldfusion.filter.GlobalsFilter.invoke(GlobalsFilter.java:43)
      at coldfusion.filter.DatasourceFilter.invoke(DatasourceFilter.java:22)
      at coldfusion.CfmServlet.service(CfmServlet.java:105)
      at jrun.servlet.ServletInvoker.invoke(ServletInvoker.java:91)
      at jrun.servlet.JRunInvokerChain.invokeNext(JRunInvokerChain.java:42)
      at jrun.servlet.JRunRequestDispatcher.invoke(JRunRequestDispatcher.java:249)
      at jrun.servlet.ServletEngineService.dispatch(ServletEngineService.java:527)
      at jrun.servlet.jrpp.JRunProxyService.invokeRunnable(JRunProxyService.java:192)
      at jrunx.scheduler.ThreadPool$DownstreamMetrics.invokeRunnable(ThreadPool.java:348)
      at jrunx.scheduler.ThreadPool$ThreadThrottle.invokeRunnable(ThreadPool.java:451)
      at jrunx.scheduler.ThreadPool$UpstreamMetrics.invokeRunnable(ThreadPool.java:294)
      at jrunx.scheduler.WorkerThread.run(WorkerThread.java:66)

      Calling the service directly from both servers (with the correct authentication) results in a successful XML return:

      <?xml version="1.0" encoding="UTF-8" ?>
      - <wsdl:definitions targetNamespace=" http://webservices"
      xmlns:impl=" http://webservices" xmlns:intf=" http://webservices"
      xmlns:apachesoap=" http://xml.apache.org/xml-soap"
      xmlns:wsdlsoap=" http://schemas.xmlsoap.org/wsdl/soap/"
      xmlns:soapenc=" http://schemas.xmlsoap.org/soap/encoding/"
      xmlns:xsd=" http://www.w3.org/2001/XMLSchema" xmlns:tns1=" http:// rpc.xml.coldfusion" xmlns:wsdl=" http://schemas.xmlsoap.org/wsdl/"
      xmlns=" http://schemas.xmlsoap.org/wsdl/">
      - <wsdl:types>
      - <schema xmlns=" http://www.w3.org/2001/XMLSchema"
      targetNamespace=" http://rpc.xml.coldfusion">
      <import namespace=" http://schemas.xmlsoap.org/soap/encoding/" />
      - <complexType name="CFCInvocationException">
      <sequence />
      </complexType>
      </schema>
      </wsdl:types>
      - <wsdl:message name="getusercommunitybindingsRequest">
      <wsdl:part name="vchemersonusername" type="xsd:string" />
      </wsdl:message>
      - <wsdl:message name="CFCInvocationException">
      <wsdl:part name="fault" type="tns1:CFCInvocationException" />
      </wsdl:message>
      - <wsdl:message name="getusercommunitybindingsResponse">
      <wsdl:part name="getusercommunitybindingsReturn" type="xsd:string" />
      </wsdl:message>
      - <wsdl:portType name="UserInformation">
      - <wsdl:operation name="getusercommunitybindings"
      parameterOrder="vchemersonusername">
      <wsdl:input name="getusercommunitybindingsRequest"
      message="impl:getusercommunitybindingsRequest" />
      <wsdl:output name="getusercommunitybindingsResponse"
      message="impl:getusercommunitybindingsResponse" />
      <wsdl:fault name="CFCInvocationException"
      message="impl:CFCInvocationException" />
      </wsdl:operation>
      </wsdl:portType>
      - <wsdl:binding name="UserInformation.cfcSoapBinding"
      type="impl:UserInformation">
      <wsdlsoap:binding style="rpc" transport=" http:// schemas.xmlsoap.org/soap/http" />
      - <wsdl:operation name="getusercommunitybindings">
      <wsdlsoap:operation soapAction="" />
      - <wsdl:input name="getusercommunitybindingsRequest">
      <wsdlsoap:body use="encoded" encodingStyle=" http:// schemas.xmlsoap.org/soap/encoding/" namespace=" http://webservices" />
      </wsdl:input>
      - <wsdl:output name="getusercommunitybindingsResponse">
      <wsdlsoap:body use="encoded" encodingStyle=" http:// schemas.xmlsoap.org/soap/encoding/" namespace=" http://webservices" />
      </wsdl:output>
      - <wsdl:fault name="CFCInvocationException">
      <wsdlsoap:fault use="encoded" encodingStyle=" http:// schemas.xmlsoap.org/soap/encoding/" namespace=" http://webservices" />
      </wsdl:fault>
      </wsdl:operation>
      </wsdl:binding>
      - <wsdl:service name="UserInformationService">
      - <wsdl:port name="UserInformation.cfc"
      binding="impl:UserInformation.cfcSoapBinding">
      <wsdlsoap:address location=" http://learningportals.emerson.edu/
      webservices/UserInformation.cfc" />
      </wsdl:port>
      </wsdl:service>
      </wsdl:definitions>


      with 2 differences:

      the non-functionign server loses the case sensitivity in the following two places:

      <wsdl:binding name="userinformation.cfcSoapBinding"
      type="impl:UserInformation">

      - <wsdl:port name="userinformation.cfc"
      binding="impl:userinformation.cfcSoapBinding">

      Looking through the xml I do not see any offending characters to prompt the need for a closing ">" error above.

      A first question is why would the second server lose the case? and the more important question why will the service be successfully invoked on one server and not the other?

      I'm completely at a loss. Any help or direction would be greatly appreciated.