首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从web服务调用的cfc中调用cfc

从web服务调用的cfc中调用cfc
EN

Stack Overflow用户
提问于 2015-05-22 03:11:41
回答 1查看 150关注 0票数 1

我想从作为web服务使用的cfc中调用cfc。web服务只是向调用者返回一个状态通知,但我需要启动另一个cfc来启动一些打开ftp的进程,获取一个文件并将其下载到我们的服务器。目前我得到了这个错误。Action GetFile导致550无法打开文件。详细信息错误: 550无法打开文件。。消息在FTP GetFile操作过程中发生错误。打开文件。。

当我直接从一个url或从另一个页面调用cfc进程时,它工作得很好。任何帮助都将不胜感激。

Web服务代码:

代码语言:javascript
复制
    <cfargument name="FileName" required="yes" type="string">
    <cfargument name="BatchNumber" required="yes" type="numeric">
    <cfargument name="LOGIN_USERID" required="yes" type="string">
    <cfargument name="LOGIN_PASSWORD" required="yes" type="string">


    <cfset comparison = Compare(LOGIN_PASSWORD, "xxxxxxx")>

    <cfif (LOGIN_USERID EQ "myid") AND (comparison EQ 0)>

        <cfset xmlDoc = XmlNew()>
        <cfset xmlDoc.XMLRoot = XMLElemNew(xmlDoc,"batchfiles")>
        <cfset xmlDoc.batchfiles.XmlChildren[1] = XmlElemNew(xmlDoc,"batch")>
        <cfset arrayappend(xmlDoc.batchfiles.XmlChildren[1].xmlChildren, XmlElemNew(xmlDoc,"batchnumber"))>
        <cfset xmlDoc.batchfiles.XmlChildren[1].batchnumber.XMLText="#batchnumber#">
        <cfset arrayappend(xmlDoc.batchfiles.XmlChildren[1].xmlChildren, XmlElemNew(xmlDoc,"filename"))>
        <cfset xmlDoc.batchfiles.XmlChildren[1].filename.XMLText="#filename#">
        <cfset arrayappend(xmlDoc.batchfiles.XmlChildren[1].xmlChildren, XmlElemNew(xmlDoc,"status"))>
        <cfset xmlDoc.batchfiles.XmlChildren[1].status.XMLText="Notification Received OK">



        <cfinvoke component="ImportRCMOrders" method="GetRCMOrderFiles">
            <cfinvokeargument name="FileName" value="#filename#">
            <cfinvokeargument name="BatchNumber" value="#batchnumber#">
        </cfinvoke>


        <cfreturn xmlDoc>   


    <cfelse>

        <cfoutput>Unauthorized Access. Please check username / password and ty again.</cfoutput>
        <cfabort>

    </cfif>

整个错误: Action GetFile导致550无法打开文件。详细信息错误: 550无法打开文件。。消息在FTP GetFile操作过程中发生错误。FTP coldfusion.tagext.net.FtpHandler$FtpOperationException:在StackTrace GetFile操作期间发生错误。在coldfusion.tagext.net.FtpHandler.checkError(FtpHandler.java:189)在coldfusion.tagext.net.FtpHandler.getFile(FtpHandler.java:682)在coldfusion.tagext.net.FtpTag.doStartTag(FtpTag.java:763)在coldfusion.runtime.CfJspPage._emptyTcfTag(CfJspPage.java:2991)在cfImportRCMOrders2ecfc184096832$funcGETRCMORDERFILES.runFunction(C:\inetpub\wwwroot\imarkwebservice\rcm\dynamic\ImportRCMOrders.cfc:56)在coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:487)在coldfusion.runtime.UDFMethod$ReturnTypeFilter.invoke(UDFMethod.java:420) at coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:383) at coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:95) at coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:334) at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:533) at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:648) at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:457) at coldfusion.runtime.CfJspPage._invoke(CfJspPage.java:2424) at coldfusion.tagext.lang.InvokeTag.doEndTag(InvokeTag.java:399)在cfcfc_init2ecfm454010022.runPage(C:\inetpub\wwwroot\imarkwebservice\rcm\dynamic\cfc_init.cfm:14) at coldfusion.runtime.CfJspPage.invoke(CfJspPage.java:246) at coldfusion.tagext.lang.IncludeTag.handlePageInvoke(IncludeTag.java:736) at coldfusion.tagext.lang.IncludeTag.doStartTag(IncludeTag.java:572) at coldfusion.filter.CfincludeFilter.invoke(CfincludeFilter.java:65) at coldfusion.filter.IpFilter.invoke(IpFilter.java:45) at coldfusion.filter.ApplicationFilter.invoke(coldfusion.filter.RequestMonitorFilter.invoke(RequestMonitorFilter.java:42) at coldfusion.filter.MonitoringFilter.invoke(MonitoringFilter.java:40) at coldfusion.filter.PathFilter.invoke(PathFilter.java:142) at coldfusion.filter.ExceptionFilter.invoke(ExceptionFilter.java:94) at coldfusion.filter.BrowserDebugFilter.invoke(BrowserDebugFilter.java:78) at coldfusion.filter.ClientScopePersistenceFilter.invoke(ClientScopePersistenceFilter.java:28) at coldfusion.filter.BrowserFilter.invoke(BrowserFilter.java:38) at coldfusion.filter.NoCacheFilter.invoke(coldfusion.filter.GlobalsFilter.invoke(GlobalsFilter.java:38) at coldfusion.filter.DatasourceFilter.invoke(DatasourceFilter.java:22) at coldfusion.filter.CachingFilter.invoke(CachingFilter.java:62) at coldfusion.CfmServlet.service(CfmServlet.java:219) at coldfusion.bootstrap.BootstrapServlet.service(BootstrapServlet.java:89) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at coldfusion的NoCacheFilter.java:58)。monitor.event.MonitoringServletFilter.doFilter(MonitoringServletFilter.java:42)在coldfusion.bootstrap.BootstrapFilter.doFilter(BootstrapFilter.java:46)在org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)在org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)在org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)在org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)在org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:422) at org.apache.coyote.ajp.AjpProcessor.process(AjpProcessor.java:199) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607) at org.apachejava.util.concurrent.ThreadPoolExecutor.runWorker(Unknown源的.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:314) ) java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown源的)java.lang.Thread.run的org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) (未知源)

GetRCMOrderFiles:

代码语言:javascript
复制
    <!--- Open FTP connection --->
    <cfftp connection ="FTPRequest"
        action ="OPEN"
        username ="xxxxxx"
        password ="xxxx"
        server ="ftp.server.com"
        stopOnError ="Yes" 
        timeout="36000">


    <!--- List directories --->
    <cfftp connection = "FTPRequest"
        action = "LISTDIR"
        stopOnError = "Yes"
        name = "ftpQuery"            
        directory = "#arguments.ftpOrdersDir#"> 


    <!--- Download ftp files --->
    <cfif ftpQuery.recordcount GT 0>
        <cfif ftpQuery.Name EQ  arguments.filename>
            <cfset extension = LCase(listLast(arguments.filename,".")) >
            <cfif extension EQ 'csv'>

                <cftry>
                    <!--- Download ftp files --->
                    <cfftp connection = "FTPRequest"
                        action = "GetFile"
                        name = "dlFiles" 
                        remotefile="#ftpOrdersDir##arguments.filename#" 
                        localfile="#ExpandPath('/mydir/dynamic/orders/'& arguments.filename)#" 
                        failifexists="no" 
                        stoponerror="yes"> 

                    <!--- Rename files in ftp processed dir --->
                    <cfftp connection = "FTPRequest"
                        action = "RENAME"
                        existing="#arguments.ftpOrdersDir##arguments.filename#"
                        new="#arguments.ftpOrdersDir##arguments.filename#.#DateFormat(Now(), 'mmddyyyy')##Hour(Now())##Minute(Now())##Second(Now())#"
                        stopOnError = "Yes">

                <cfcatch type="any">
                    <cfmail type="html" 
                        to="email@myemailacct.com" 
                        from="FTPProcess@myemailacct.com" 
                        subject="FTP Error"> 
                        <p> An error occurred on #DateFormat( Now(), "mmm d, yyyy" )# at #TimeFormat( Now(), "hh:mm TT" )# </p> 
                        Error Message: #cfcatch.message#<br> 
                        Error Detail: #cfcatch.detail#<br> 
                        Error Location: #GetBaseTemplatePath()#<br>
                        <cfdump var="#cfcatch#">
                        </cfmail>
                    <cfabort>
                </cfcatch>
                </cftry>
            </cfif>

这来自作为web服务调用的第一个函数。结构: BATCHNUMBER 35506文件名batchfile_35506.csv LOGIN_PASSWORD密码LOGIN_USERID userid

struct BATCHNUMBER 35506文件名batchfile_35506.csv FTPORDERSDIR /目录/35506/

EN

回答 1

Stack Overflow用户

发布于 2015-05-22 04:21:12

来自FTP客户端的550表示文件或目录不存在。检查您的路径是否正确,该文件是否存在于该路径下,以及您登录的用户(在FTP调用中)是否具有访问此文件的权限。

我假设GetRCMOrderFiles()函数正在尝试从FTP检索文件。

您也应该捕获这些异常,并可能在执行get之前检查该文件是否存在。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30382389

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档