2

什么可能导致 ColdFusion 在使用 Web 服务时抛出“java.lang.NullPointerException:null”错误?

对于任何其他计算机,Web 服务都存在并且可以完美运行。但是有一些关于 ColdFusion 的安装会导致错误。我尝试卸载并重新安装 IIS 和 ColdFusion,但均无济于事。

我什至在服务器上试过soapUI,效果很好。不确定这是否是 ColdFusion/IIS 问题。

使用或 CreateObject 发生

服务器操作系统:Windows Server 2008
CF 版本:9.0
IIS 版本:7.5

到目前为止,我已经用尽了所有的想法。任何帮助,将不胜感激。

任何感兴趣的人的堆栈跟踪

    在 cftest2ecfm526089628.runPage(C:\inetpub\wwwroot\....cfm:21) 在 cftest2ecfm526089628.runPage(C:\inetpub\wwwroot\.....cfm:21)

    java.lang.NullPointerException
    在 org.apache.axis.client.Service.getEngineConfiguration(Service.java:801)
    在 org.apache.axis.client.Service.getAxisClient(Service.java:143)
    在 org.apache.axis.client.Service.(Service.java:152)
    在 com.media.modules.ws.AcfwsServiceLocator.(AcfwsServiceLocator.java:12)
    在 sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    在 sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
    在 sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
    在 java.lang.reflect.Constructor.newInstance(Constructor.java:513)
    在 java.lang.Class.newInstance0(Class.java:355)
    在 java.lang.Class.newInstance(Class.java:308)
    在coldfusion.xml.rpc.XmlRpcServiceImpl$4.run(XmlRpcServiceImpl.java:372)
    在 java.security.AccessController.doPrivileged(本机方法)
    在coldfusion.xml.rpc.XmlRpcServiceImpl.registerWebService(XmlRpcServiceImpl.java:368)
    在coldfusion.xml.rpc.XmlRpcServiceImpl.getWebService(XmlRpcServiceImpl.java:496)
    在coldfusion.xml.rpc.XmlRpcServiceImpl.getWebServiceProxy(XmlRpcServiceImpl.java:450)
    在coldfusion.xml.rpc.WebServiceProxyFactory.getProxy(WebServiceProxyFactory.java:22)
    在coldfusion.runtime.ProxyFactory.getProxy(ProxyFactory.java:65)
    在coldfusion.runtime.CFPage.createObjectProxy(CFPage.java:4949)
    在coldfusion.runtime.CFPage.CreateObject(CFPage.java:4920)
    在coldfusion.runtime.CFPage.CreateObject(CFPage.java:4861)
    在coldfusion.runtime.CFPage.CreateObject(CFPage.java:4839)
    在coldfusion.runtime.CFPage.CreateObject(CFPage.java:4796)
    在 cftest2ecfm526089628.runPage(C:\inetpub\wwwroot\ACF\TestStreaming\test.cfm:21)
    在coldfusion.runtime.CfJspPage.invoke(CfJspPage.java:231)
    在coldfusion.tagext.lang.IncludeTag.doStartTag(IncludeTag.java:416)
    在coldfusion.filter.CfincludeFilter.invoke(CfincludeFilter.java:65)
    在coldfusion.filter.ApplicationFilter.invoke(ApplicationFilter.java:363)
    在coldfusion.filter.RequestMonitorFilter.invoke(RequestMonitorFilter.java:48)
    在coldfusion.filter.MonitoringFilter.invoke(MonitoringFilter.java:40)
    在coldfusion.filter.PathFilter.invoke(PathFilter.java:87)
    在coldfusion.filter.ExceptionFilter.invoke(ExceptionFilter.java:70)
    在coldfusion.filter.ClientScopePersistenceFilter.invoke(ClientScopePersistenceFilter.java:28)
    在coldfusion.filter.BrowserFilter.invoke(BrowserFilter.java:38)
    在coldfusion.filter.NoCacheFilter.invoke(NoCacheFilter.java:46)
    在coldfusion.filter.GlobalsFilter.invoke(GlobalsFilter.java:38)
    在coldfusion.filter.DatasourceFilter.invoke(DatasourceFilter.java:22)
    在coldfusion.filter.CachingFilter.invoke(CachingFilter.java:53)
    在coldfusion.CfmServlet.service(CfmServlet.java:200)
    在coldfusion.bootstrap.BootstrapServlet.service(BootstrapServlet.java:89)
    在 jrun.servlet.FilterChain.doFilter(FilterChain.java:86)
    在coldfusion.monitor.event.MonitoringServletFilter.doFilter(MonitoringServletFilter.java:42)
    在coldfusion.bootstrap.BootstrapFilter.doFilter(BootstrapFilter.java:46)
    在 jrun.servlet.FilterChain.doFilter(FilterChain.java:94)
    在 jrun.servlet.FilterChain.service(FilterChain.java:101)
    在 jrun.servlet.ServletInvoker.invoke(ServletInvoker.java:106)
    在 jrun.servlet.JRunInvokerChain.invokeNext(JRunInvokerChain.java:42)
    在 jrun.servlet.JRunRequestDispatcher.invoke(JRunRequestDispatcher.java:286)
    在 jrun.servlet.ServletEngineService.dispatch(ServletEngineService.java:543)
    在 jrun.servlet.jrpp.JRunProxyService.invokeRunnable(JRunProxyService.java:203)
    在 jrunx.scheduler.ThreadPool$DownstreamMetrics.invokeRunnable(ThreadPool.java:320)
    在 jrunx.scheduler.ThreadPool$ThreadThrottle.invokeRunnable(ThreadPool.java:428)
    在 jrunx.scheduler.ThreadPool$UpstreamMetrics.invokeRunnable(ThreadPool.java:266)
    在 jrunx.scheduler.WorkerThread.run(WorkerThread.java:66)
4

1 回答 1

0

放弃尝试在 ColdFusion 中正确调用 Web 服务。相反,我编写了一个小型soap 调用程序组件,该组件使用正确的soap 标头/调用向目标URL 发送请求。如果有人想要代码,它在下面。我仍然觉得它不起作用真的很奇怪,我什至在同一台服务器上检查了 ASP,它没有问题。

<cfcomponent namespace="soapLib">
    <cffunction name="soapRequest" returnType="string" returnFormat="plain" hint="Consume a SOAP webservice from the given URL with the given function and arguments.">
    <cfargument name="wsdlUrl" type="string" hint="URL of the web service to consume including ?wsdl at the end.">
    <cfargument name="serviceNs" type="string" hint="The namespace of the web service, needed to complete a webservice properly.">
    <cfargument name="funcName" type="string" hint="The function to call when consuming the web service.">
    <cfargument name="args" type="array" hint="The arguments to parse to the web service.">
    <cfset i=0>
    <cfset soapArgs = ''>
    <cfloop array="#args#" index="arg">
        <cfset soapArgs &= '<arg#i#>#arg#</arg#i#>'>
        <cfset i++>
    </cfloop>
    <cfset soap = '<?xml version="1.0" encoding="utf-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <SOAP-ENV:Body>
        <m:#funcName# xmlns:m="#serviceNs#">
            #soapArgs#
        </m:#funcName#>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>'>
        <cfhttp url="#wsdlUrl#" method="post">
            <cfhttpparam type="header" name="Content-Type" value="text/xml">
            <cfhttpparam type="header" name="SOAPAction" value="#funcName#">
            <cfhttpparam type="header" name="content-length" value="#len(soap)#">
            <cfhttpparam type="header" name="charset" value="utf-8">
            <cfhttpparam type="xml" name="message" value="#trim(soap)#">
        </cfhttp>
        <cfif not IsXML(cfhttp.fileContent)>
            <cfset return = false>
        <cfelse>
            <cfset xml = XmlParse(cfhttp.fileContent)>
            <cfset return = xml['S:Envelope']['S:Body']['ns2:#funcName#Response']['return']['XmlText']>
        </cfif>
        <cfreturn return>
    </cffunction>
</cfcomponent>
于 2012-09-05T19:38:47.903 回答