Отображения Coldfusion для разных мест для разных приложений - PullRequest
1 голос
/ 08 мая 2019

В настоящее время у меня есть несколько приложений на одном сервере. Приложения находятся в разных папках друг от друга. В приложении мы динамически создаем отображение под названием «пользовательский», которое должно указывать на соответствующую «пользовательскую» папку для каждого приложения.

Например, возьмите следующие три приложения и их пути:

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 Ответ

1 голос
/ 08 мая 2019

@ Паоло Броккардо, в соответствии с предложением @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.

...