A recent question on the CF-Talk lists had been asked several times in the past, so I thought I’d post some basic code routines for accessing parts of the Java engine via ColdFusion.

System Properties

<cfscript>
sys = createobject("java", "java.lang.System");

// Set a system property
sys.setProperty('myProperty', 'myPropertyValue');

// Assign local variable to properties structure
props = sys.properties;
</cfscript>


<cfdump var="#props#">

All ColdFusion Sessions

<cfscript>
sessiontrackerObj= createObject("java","coldfusion.runtime.SessionTracker");
activesessions = sessiontrackerObj.getSessionCollection(application.applicationname);
nosessions=ListLen(structkeyList(activeSessions));
</cfscript>
<cfoutput>
<h3>Total Sessions : #nosessions#</h3>
</cfoutput>
<cfdump var="#activesessions#">

* Courtesy of Snake’s Blog

Java Memory Usage

<cfscript>
// Create Java object instances needed for creating memory charts
runtime = createobject("java", "java.lang.Runtime");
mgmtFactory = createobject("java", "java.lang.management.ManagementFactory");
pools = mgmtFactory.getMemoryPoolMXBeans();

maxJVM = runtime.getRuntime().maxMemory();
freeJVM = runtime.getRuntime().freeMemory();

newGeneration = pools[2].getUsage().getUsed();
survivorspace = pools[3].getUsage().getUsed();
tenuredGeneration = pools[4].getUsage().getUsed();
permanentGeneration = pools[5].getUsage().getUsed();
</cfscript>