Domanda In ColdFusion, c'è un modo per determinare su quale server viene eseguito il codice?


C'è un modo nel codice ColdFusion per determinare su quale server il codice è in esecuzione? Ho pochi server ColdFusion con carico bilanciato. Voglio essere in grado di sapere su quale server il codice è in esecuzione quando rilevo un'eccezione, quindi posso includere tali informazioni nel codice di registrazione / reporting.

I server sono Windows 2003 / IIS, se questo è importante. Mi piacerebbe sapere come farlo anche in Linux / Apache. :-)


16
2018-05-06 17:29


origine


risposte:


Questo può aiutarti ulteriormente ...

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

27
2018-05-06 18:16



Puoi usare Variabili del server piace

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

per modificare il codice su piattaforme specifiche. Fai un <cfdump var=”#SERVER#” /> per vedere cosa è applicabile alla tua versione di Coldfusion.

È possibile ottenere il nome host con una chiamata Java:

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

9
2018-05-06 17:47



credo che CGI.SERVER_NAME ti prenderà ciò che vuoi

Modifica per commento: potresti essere in grado di fare qualcosa di un po 'più "di basso livello" ...

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

(Nessun server CF qui al lavoro, quindi non posso testarlo).


2
2018-05-06 17:36



Un altro posto in cui cercare informazioni sul processo JRun in esecuzione è di istanziare quanto segue:

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

Questo ti darà il nome dell'istanza JRun in cui viene eseguito il codice. Abbiamo incontrato occasioni in cui nel nostro ambiente cluster l'IIS su un nodo registrerà l'hit della pagina, ma JRun sull'altro nodo gestirà la richiesta. Occasionalmente, il JRun di un nodo smetterà di rispondere e avremo bisogno di riavviare alcuni servizi per riportare il traffico su quel nodo. Io uso il codice sopra nel mio plugin del gestore degli errori per incollare il nome del server in una e-mail che invio agli amministratori e incorporarlo nel nome del file dove scrivo le informazioni di debug.


2
2018-05-19 14:20



Per noi che usiamo i nodi dietro un proxy di bilanciamento del carico ho finito col chiamare il comando 'hostname', funziona anche su Windows - quindi ecco il set:

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

0
2017-09-11 10:04



Usa il codice sottostante per ottenere il nome del dominio.

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

Sperando che questo sia ciò che ti aspetti.


-1
2018-03-06 11:10