当前位置: 首页 > 知识库问答 >
问题:

从 Web 服务调用的 cfc 调用 cfc

郑安晏
2023-03-14

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

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

Web服务代码:

    <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>

整个错误:操作GetFile原因550无法打开文件。详细信息错误:550无法打开文件。消息FTP GetFile操作期间出错。StackTrace coldfusion.tagext.net。FtpHandler$FtpOperationException:FTP GetFile操作期间出错。coldfusion.tagext.net.FtpHandler.checkError(FtpHander.java:189),位于coldfusion.tagext.net.FtpHandler.getFile(FtpHandler.java:682),位于cfImportRCMOrders2ecfc184096832$funcGETRCMORDERFILES.runFunction(C:\inetpub\wwroot\imarkwebservice\rcm \dynamic\ImportRCMOrders.cfc:56)coldfusion.runtime.UDFMethod$ReturnTypeFilter.invoke(UDFMeth.java:420)。coldfusion.runtime处的UDFMethosd$ArgumentCollectionFilter.iinvoke(UDFMethod.java:383),coldfussion.runtime.FunctionAccessFilter.inavoke(FunctionAccessFilter.java:95)coldfusion.runtime.UDFMethod.invoke(UDFMeth.java:533)位于coldfusion.runtime。TemplateProxy.invoker(TemplateProx.java:648)位于coldpusion.rntime(C:\inetpub\wwwroot\imarkwebservice\rcm\dynamic\cfc_init.cfm:14)在coldfusion.runtime.CfJspPage.invoke(CfJspPage.java:246)在coldpusion.tagext.lang.IncludeTag.handlePageInvoke(IncludeTag.java:736)在coldwusion.tageext.lang.IncludeTag.doStartTag(IncludeTag.java:572)在colddusion.filter.CfincludeFilter.invoker(Cfinclude filter.java:65)在coldmusion.IpFilter.iinvoke(IpFilter)。java:45)在coldfusion.filter.ApplicationFilter.invoke处的coldfussion.filter.RequestMonitorFilter.iinvoke(RequestMontorFilter.java:42)处的coltfusion.filter.MonitoringFilter.inavoke(MonitoringFilter.java:40)处的coldfusion.pfilter.PathFilter.in voke(PathField.java:142)处coldfusion.filter.ClientScopePersistenceFilter.invoke(ClientScopePerssistenceField.java:28)处的coldfusion。filter.BrowserFilter.inavoke(BrowserFilter.java:38)处的coldfusion.pilter.NoCacheFilter.iinvoke(NoCacheField.ja:58)处的位于org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)处的coldfusion.CfmServlet.service(CfmServlet.java:219)处的位于org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)的coldfusion.bootstrap.BootstrapFilter.doFilterorg.apache.catalina.core.StandardWrapperValve.invoke(StandardWapperValve.java:220),位于org.apacher.catalina.core.StanStandardContextValve.iinvoke(标准上下文阀.java:122),位于.org.apache.coatalina.authenticator.Authenticattor.AutheenticatorBase.invok(AuthentiatorBase.java:501)(ErrorReportValve.java:102)位于org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineeValve.ja:116),位于org.aaphe.catarina.connector.CoyoteAdapter.service(CoyoteAdepter.java:422),位于.org.apache.coyote.ajp.AjpProcessor.process(AjpProcessor.java:199),位于org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEnppoint.java:314),位于java.util.concurrent.ThreadPoolExecutor。java.util.concurrent.ThreadPoolExecutor$Worker处的runWorker(未知源)。org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61),java.lang.Thread。运行(未知源)

获取RCMOrder文件:

    <!--- 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 服务的第一个函数。结构:批号 35506 文件名batchfile_35506.csv LOGIN_PASSWORD密码LOGIN_USERID用户标识

结构 批号 35506 文件名 batchfile_35506.csv FTPORDERSDIR /Dir/35506/

共有1个答案

柳胡媚
2023-03-14

来自FTP客户端的550表示该文件或目录不存在。请检查您的路径是否正确,并且该文件确实存在于该路径上,并且您登录的用户(在FTP调用中)对该文件具有权限。

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

您还应该将这些作为异常来捕获,并在执行get之前检查该文件是否存在。

 类似资料:
  • 我需要调用WildFly 8上可用的JAX-WS Web服务。我从一个简单的例子开始。这是我的网络服务: WSDL 可在以下网址获得: http://localhost:8080/DemoWS/HelloWorld?wsdl 看看Tomcat-CXF的例子,我编写了以下路由: 通过在 Camel 上下文中运行上述代码,将返回以下错误: serviceClass=com.sample。HelloWo

  • JSON似乎打印到浏览器窗口,所以我不完全确定这种方法有什么问题?请谁能提供一些帮助,为什么这可能不起作用? 谢谢

  • 我对从web服务调用jasper报告有问题。 我使用这个URL http://host:port/jasperserver[-pro]/rest_v2/reportexecutions获取请求id,输出类似于下面的XML。 现在我正尝试通过以下url运行jasper报表 http://localhost:8080/jasperserver/rest_v2/reportexecutions/7818

  • 我在Scala上使用Play 2.5,我创建了一个类,可以多次调用外部web服务。 外部Web服务在某些条件下被调用并得到ok或nok的简单响应。如果可以,那么我应该更新内部对象状态,如果可以,我现在什么也不做。 这是我的类,它将String的列表作为参数,并返回要在控制器中处理的对象的Future列表。 是列表类型的列表,但我希望它只是一个简单的响应列表。 1)如何简化和纠正我的代码以获得响应列

  • 问题内容: 我有一个带有按钮的HTML页面。当我单击该按钮时,我需要调用REST Web服务API。我尝试在任何地方在线搜索。毫无头绪。有人可以给我牵头/抢先吗?非常感谢。 问题答案: 我很惊讶没有人提到新的FetchAPI,在撰写本文时,除IE11之外,所有浏览器都支持该API。它简化了您在其他许多示例中看​​到的XMLHttpRequest语法。 API包含更多内容,但从方法开始。它有两个参数

  • 我对webservice世界相对来说是个新手,我的研究似乎让我困惑而不是启发,我的问题是我得到了一个库(jar),我必须用一些webservice功能来扩展它。 这个库将共享给其他开发人员,在jar中的类中,将有一个调用webservice的方法的类(该方法实质上设置类的属性,执行一些业务逻辑,如将对象存储在db中等,并将对象与这些修改一起发回)。我希望对这个服务的调用尽可能简单,希望尽可能简单,