【问题标题】:In ColdFusion, is there a way to determine what server the code is running on?在 ColdFusion 中,有没有办法确定代码在哪个服务器上运行?
【发布时间】:2010-10-24 06:23:16
【问题描述】:

ColdFusion 代码中是否有任何方法可以确定代码在哪个服务器上执行?我有几个负载平衡的 ColdFusion 服务器。当我捕获异常时,我希望能够知道代码在哪个服务器上运行,因此我可以将该信息包含在日志记录/报告代码中。

如果重要的话,服务器是 Windows 2003/IIS。我也很想知道如何在 Linux/Apache 中做到这一点。 :-)

【问题讨论】:

    标签: java networking coldfusion


    【解决方案1】:

    我相信CGI.SERVER_NAME 会得到你想要的。

    根据评论编辑:您也许可以做一些更“低级”的事情......

    <cfset inet = CreateObject("java", "java.net.InetAddress")>  
    <cfdump var = "#inet.getLocalhost().gethostname()#">  
    

    (这里没有 CF 服务器在工作,所以我无法测试)。

    【讨论】:

    • 我不这么认为。它将包含面向客户端的服务器名称。无法找到您所在的实际机器。
    • 在负载平衡场景中这还不够吗?
    • 客户端看到一个服务器名称。假设有 2 台服务器。您如何使用一个服务器名称找出您所在的服务器?
    • Java版比较像。 +1 ColdFusion 支持 JavaBeans 语法,所以 就足够了。确认工作正常。
    【解决方案2】:

    你可以用Server Variables点赞

    server.coldfusion.appserver 
    server.coldfusion.expiration    
    server.coldfusion.productlevel
    server.coldfusion.productname   
    server.coldfusion.productversion
    server.coldfusion.rootdir   
    server.coldfusion.serialnumber  
    server.coldfusion.supportedlocales
    server.os.additionalinformation 
    server.os.arch  
    server.os.buildnumber   
    server.os.name  
    server.os.version
    

    将您的代码调整到特定平台。发送&lt;cfdump var=”#SERVER#” /&gt; 以查看适用于您的 Coldfusion 版本的内容。

    您可以通过 Java 调用获取主机名:

    <cfscript>
    machineName = createObject("java", "java.net.InetAddress").localhost.getHostName();
    instanceName = createObject("java", "jrunx.kernel.JRun").getServerName();
    </cfscript>
    

    【讨论】:

      【解决方案3】:

      这可能会帮助您进一步...

      <cfscript>
      machineName = createObject("java", "java.net.InetAddress").localhost.getCanonicalHostName();
      hostaddress = createObject("java", "java.net.InetAddress").localhost.getHostAddress();
      </cfscript>
      <cfdump var="#machineName#"><br />
      <cfdump var="#hostaddress#"><br />
      

      【讨论】:

        【解决方案4】:

        查找有关正在执行的 JRun 进程的信息的另一个地方是实例化以下内容:

        <cfset oErrorJRun = createObject("java","jrunx.kernel.JRun")/>
        <cfset strServerName = oErrorJRun.ServerName />
        

        这将为您提供正在执行代码的 JRun 实例的名称。我们遇到过这样的情况,在我们的集群环境中,一个节点上的 IIS 将记录页面命中,但另一个节点上的 JRun 将处理请求。有时,我们会让一个节点的 JRun 停止响应,我们需要重新启动一些服务以将流量返回到该节点。我在我的错误处理程序插件中使用上述代码将服务器名称粘贴在我发送给管理员的电子邮件中,并将其合并到我编写调试信息的文件名中。

        【讨论】:

          【解决方案5】:

          使用以下代码获取域名。

          <cfoutput>#cgi.server_name#</cfoutput>
          

          希望这是你所期待的。

          【讨论】:

          【解决方案6】:

          对于我们使用负载平衡代理后面的节点,我最终调用了“主机名”命令,也适用于 Windows - 所以这里是集合:

          <cfscript>
          machineName = createObject("java", "java.net.InetAddress").localhost.getCanonicalHostName();
          hostaddress = createObject("java", "java.net.InetAddress").localhost.getHostAddress();
          </cfscript>
          <cfdump var="#machineName#"><br />
          <cfdump var="#hostaddress#"><br />
          <cfdump var="#CGI.SERVER_NAME#"><br />
          <cfexecute name = "hostname" timeout = "1"></cfexecute>
          

          【讨论】:

            【解决方案7】:
            <cffunction name="getMachineName" returntype="string" access="private" output="false" hint="Server Name">
                <cftry>
                    <cfexecute
                        name="hostname"
                        arguments=""
                        variable="local.machineNameResult"
                        timeout=10 />
                        <cfreturn Trim(local.machineNameResult)>
                    <cfcatch type="any">
                        <cfdump var="#cfcatch#">
                        <cfabort>
                    </cfcatch>
                </cftry>
            </cffunction>
            
            <cfdump var="#getMachineName()#" />
            <cfabort />
            

            【讨论】:

              猜你喜欢
              • 2020-12-07
              • 2017-01-21
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2023-03-21
              • 1970-01-01
              • 2023-04-09
              • 2022-01-25
              相关资源
              最近更新 更多