不同位置,不同应用的冷熔映射

时间:2019-05-08 12:14:09

标签: coldfusion

我目前在同一服务器上有多个应用程序。这些应用程序位于彼此不同的文件夹中。 在应用程序中,我们动态创建一个名为“ custom”的映射,该映射需要指向每个应用程序的相应“ custom”文件夹。

例如,采用以下三个应用程序及其路径:

app1 c:\ inetpub \ app1 \ custom

app2 c:\ inetpub \ app2 \ custom

app3 c:\ inetpub \ app3 \ custom

我用于一个应用程序的代码(在OnApplicationStart中调用)是:

<cffunction name="CreateAppMappings" output="no" returntype="void">
        <cfargument name="absolutePath" required="yes" />

        <cfscript>
            mappingCustom = "/custom";
            serviceFactory = createObject("java","coldfusion.server.ServiceFactory");
            mappings = serviceFactory.runtimeService.getMappings();
            mappings["/custom"] = "#arguments.absolutePath#\wwwroot";           
        </cfscript>

        <cfreturn />
    </cffunction>   

问题是,对于一个应用程序,它可以工作。但是对于多个应用程序,它自然会被覆盖,因为映射名称相同。

为了使我们对所有应用程序使用相同的代码库,每个应用程序的此映射名称应保持一致(“自定义”)。 那么我们如何做到这一点呢?

我能想到的唯一方法是使用CFAdmin中的实例管理器将每个应用程序作为一个单独的实例运行。 那是我唯一的选择吗?还是我可能不知道的其他事情?

我正在运行CF2018。

谢谢

1 个答案:

答案 0 :(得分:1)

@Paolo Broccardo,根据@RRK建议,您可以按照如下所示在Application.cfc文件中进行设置

 component output="false" {
        this.name ='Your Apps name';
        this.sessionManagement = true;
        this.sessiontimeout = createTimeSpan(0,1,0,0);
        this.root = getDirectoryFromPath( getCurrentTemplatePath() );
        this.mappings[ '/custom' ] = "#this.root#/folder1" ;
                 .........
                 .........
    }

在这里,我已将其指向我的应用程序的根目录,而/ custom则是用于映射您的自定义目录详细信息。您可以在app.cfc文件本身中将其设置为数字事物。