2012-04-11 13 views
6

Wie kann ich den Namen der ColdFusion-Instanz ("cfusion" zum Beispiel) in ColdFusion 10?Get Instanzname in ColdFusion 10

Pre-10 Sie mithilfe des jrun Java-Objekt tun, so könnte:

<cfobject action="create" type="java" class="jrunx.kernel.JRun" name="jr"> 

#jr.getServerName()# 

Aber da Jrun von Tomcat ersetzt wurde muss ich von immer den Namen der Instanz einen neuen Weg zu finden.

Ich weiß, dass es mit der Admin API getan werden kann, aber das funktioniert nicht für mich wegen der Sicherheitsprobleme.

+0

Wozu brauchst du es? –

+1

Bestimmen, welche Instanz Ihre Anfrage bedient. Wir haben mehrere Instanzen, die dieselbe App hinter einem Load Balancer bereitstellen. Ich möchte wissen, welche CF-Instanz meine Anfrage bearbeitet, weil es instance01, instance02 oder instance03 sein kann. –

+0

Jan, ich bin neugierig, warum du sagst, dass es "Sicherheitsprobleme" gibt, die dich dazu bringen, das Admin API zu benutzen, um dieses Problem zu lösen, wie auch Marcin gezeigt hat. Es ist die fertige Lösung für CF10, denn Sie können sich nicht mehr auf das JRun-Objekt verlassen. Ich könnte verstehen, wenn Sie alle Amin-API-Methoden anmelden (mit der Login-Methode der Administrator.cfc in der Admin-API), aber wie in Marcins Beispiel gesehen, ist dies nicht eine dieser Methoden. Es sollte für jeden funktionieren. Ich bin wirklich aufrichtig neugierig, was würde es für Sie "nicht funktionieren". –

Antwort

5

Blick in den Serverbereich. Es gibt einen Wert bei server.coldfusion.rootdir. Auf CF10 ist dies das Verzeichnis der Instanz. Für die "cfusion" -Instanz auf meinem Mac lautet dieser Wert beispielsweise/Applications/ColdFusion10/cfusion. Sie könnten das letzte Verzeichnis namd im Pfad auswählen und das ist der Name der Instanz. Nicht gerade elegant, aber vielleicht bekommst du das, was du brauchst.

+0

Ich denke, das wird funktionieren, lass es mich ausprobieren. –

+0

Das scheint zu funktionieren. Es ist nicht das letzte Verzeichnis in der Multi-Server-Konfiguration, aber es ist dort: 'C: \ CF \ Server \ Instanz01 \ cfusion-ear \ cfusion-Krieg \ WEB-INF \ cfusion' –

+0

interessant. könnte eine Mac vs PC-Sache sein –

-5

sollte diese Arbeit:

<cfset inetAddressObj = createObject("java", "java.net.InetAddress") /> 
<cfset machineName = inetAddressObj.localhost.getCanonicalHostName() /> 
+0

Leider gibt das den Namen der Maschine zurück, aber ich habe mehrere Instanzen auf dem _same_ machine. Ich brauche den Namen der CF-Instanz. Aber danke für die Antwort! –

+2

Das ist nicht der "Instanz" Name - und dieser Code funktioniert in jeder Version, um den "freundlichen" Namen des Rechners zu erhalten, auf dem er läuft. –

5

Es gibt eine "Laufzeit" -Komponente in der Admin-API in CF10. Sie können den Namen der Instanz mit diesem Code-Snippet erhalten:

var runtime = createObject("component", "CFIDE.adminapi.runtime"); 
instance = runtime.getInstanceName(); 

Dies sollte den gleichen Wert wie getServerName() verwendet, um in der jrunx.kernel.JRun Komponente zurückzukehren.

+0

+1 besser als den letzten Verzeichnisnamen von rootdir imho – Seybsen