针对不同应用程序的不同位置的Coldfusion映射
我目前在同一台服务器上有多个应用程序。这些应用程序彼此位于不同的文件夹中。 在应用程序中,我们动态创建一个名为“custom”的映射,该映射需要指向每个应用程序相应的“custom”文件夹 例如,以以下三个应用程序及其路径为例: app1 c:\inetpub\app1\custom app2 c:\inetpub\app2\custom app3 c:\inetpub\app3\custom 我用于为一个应用程序执行此操作(在OnApplicationStart中调用)的代码是:针对不同应用程序的不同位置的Coldfusion映射,coldfusion,Coldfusion,我目前在同一台服务器上有多个应用程序。这些应用程序彼此位于不同的文件夹中。 在应用程序中,我们动态创建一个名为“custom”的映射,该映射需要指向每个应用程序相应的“custom”文件夹 例如,以以下三个应用程序及其路径为例: app1 c:\inetpub\app1\custom app2 c:\inetpub\app2\custom app3 c:\inetpub\app3\custom 我用于为一个应用程序执行此操作(在OnApplicationStart中调用)的代码是: <cf
<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>
mappingCustom=“/custom”;
serviceFactory=createObject(“java”、“coldfusion.server.serviceFactory”);
mappings=serviceFactory.runtimeService.getMappings();
映射[“/custom”]=“#参数.绝对路径#\wwwroot”;
问题是,对于一个应用程序,这是可行的。但对于多个应用程序,它会被自然覆盖,因为映射名称是相同的
为了让我们对所有应用程序使用相同的代码库,每个应用程序的映射名称应该一致(“自定义”)。
那么我们如何做到这一点呢
我能想到的唯一方法是将每个应用程序作为单独的实例运行,使用CFAdmin中的实例管理器。
这是我唯一的选择吗?还是有什么我可能不知道的
我正在运行CF2018
感谢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文件本身中的数字 你为什么不使用Ben的文章中提到的特定于应用程序的映射:你为什么不在
application.cfc
中使用this.mappings
来实现这个目的呢?@RandyJohnson和RRK:谢谢,这看起来很有用。我要去测试一下,很快就回来。@RandyJohnson:这很有效。非常感谢。如果你想把答案贴出来,我会接受的。干杯