2

Web サービスを使用するときに ColdFusion が「java.lang.NullPointerException: null」エラーをスローする原因は何ですか?

他のコンピュータには、Web サービスが存在し、完全に機能します。しかし、この ColdFusion のインストールには、エラーの原因となっている何かがあります。IIS と ColdFusion の両方をアンインストールして再インストールしようとしましたが、役に立ちませんでした。

サーバーでsoapUIを試してみましたが、問題なく動作します。ColdFusion/IIS の問題かどうかはわかりません。

またはCreateObjectを使用して発生します

サーバー OS: 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(ネイティブメソッド)
    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 ヘッダー/呼び出しを使用してターゲット URL に要求を送信する小さな SOAP 呼び出し元コンポーネントを作成しました。コードが必要な場合は、以下を参照してください。問題なく動作する同じサーバーで 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 に答える