2012-04-11 27 views
6

Làm thế nào tôi có thể lấy tên của cá thể Coldfusion (ví dụ: "cfusion") trong ColdFusion 10?Lấy tên mẫu trong ColdFusion 10

Pre-10 bạn có thể làm như vậy bằng cách sử dụng các đối tượng java JRun:

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

#jr.getServerName()# 

Nhưng kể từ Jrun đã được thay thế bởi Tomcat Tôi cần phải tìm một phương pháp mới để nhận tên ví dụ.

Tôi biết nó có thể được thực hiện bằng cách sử dụng api quản trị nhưng điều đó không làm việc cho tôi vì vấn đề an ninh.

+0

Bạn cần nó để làm gì? –

+1

Xác định cá thể nào đang phục vụ yêu cầu của bạn. Chúng tôi có nhiều trường hợp phục vụ cùng một ứng dụng phía sau trình cân bằng tải. Tôi muốn biết trường hợp CF nào đang xử lý yêu cầu của tôi vì nó có thể là instance01, instance02 hoặc instance03. –

+0

Jan, tôi tò mò tại sao bạn nói có "vấn đề bảo mật" giúp bạn sử dụng API quản trị để giải quyết vấn đề này, như Marcin cũng đã cho thấy. Đó là giải pháp sẵn sàng cho CF10, vì bạn nói bạn không thể dựa vào đối tượng JRun nữa. Tôi có thể hiểu nếu bạn nghĩ rằng tất cả các phương pháp API Amin yêu cầu đăng nhập (với phương thức đăng nhập của administrator.cfc trong API quản trị), nhưng có thể thấy trong ví dụ của Marcin, đây không phải là một trong những phương pháp đó. Nó sẽ làm việc cho bất cứ ai. Tôi thực sự chân thành tò mò những gì sẽ làm cho nó "không làm việc" cho bạn. –

Trả lời

5

nhìn trong phạm vi máy chủ. Có một giá trị tại server.coldfusion.rootdir. Trên CF10, đây là thư mục của cá thể. Vì vậy, đối với ví dụ "cfusion" trên máy Mac của tôi chẳng hạn, giá trị này là/Applications/ColdFusion10/cfusion. Bạn có thể lấy tên thư mục cuối cùng trong đường dẫn và đó là tên của cá thể. Không chính xác thanh lịch, nhưng có thể giúp bạn có được những gì bạn cần.

+0

Tôi nghĩ rằng điều này sẽ làm việc, hãy để tôi dùng thử. –

+0

Điều này dường như hoạt động. Đây không phải là thư mục cuối cùng trong quá trình thiết lập nhiều máy chủ nhưng nó ở đó: 'C: \ CF \ servers \ instance01 \ cfusion-tai \ cfusion-war \ WEB-INF \ cfusion' –

+0

thú vị. có thể là một điều mac vs pc –

-5

này nên làm việc:

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

Than ôi, trả về tên của máy, nhưng tôi có nhiều cá thể chạy trên máy _same_. Tôi cần tên của cá thể CF. Nhưng cảm ơn bạn đã trả lời! –

+2

Đó không phải là tên "mẫu" - và mã đó hoạt động trong bất kỳ phiên bản nào để có được tên "thân thiện" của máy đang bật. –

5

Có thành phần "thời gian chạy" trong API quản trị trong CF10. Bạn có thể lấy tên dụ với đoạn mã này:

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

này sẽ trả về giá trị tương tự như getServerName() sử dụng để trong thành phần jrunx.kernel.JRun.

+0

+1 tốt hơn so với lấy tên thư mục cuối cùng của rootdir imho – Seybsen

Các vấn đề liên quan