Getting Java System Properties in ColdFusion

by Pete Freitag

A while back I wrote some CFML code to dump the Java System Properties, the code went something like this:

<cfset system = CreateObject("java", "java.lang.System")>
<!--- properties is a java.util.Properties object --->
<cfset properties = system.getProperties()>

 <!--- propNames is a java.util.Enumeration --->
<cfset propNames = properties.propertyNames()>


<cfoutput>
 <cfloop condition="propNames.hasMoreElements()">
	<cfset propName = propNames.nextElement()>
	<strong>#propName#</strong> = #system.getProperty(propName)#<br /> 
 </cfloop>
</cfoutput>

That works (the code didn't work in until CFMX 6.1, see this post), but I realized today as I wanted to display the results in a table much like the way CFDUMP works - that a java.util.Properties object is a java.util.Dictionary, and a ColdFusion structure is a Dictionary so I can probably CFDUMP a Properties object. And you can infact CFDUMP a Properties object or any Hashtable, and it will output the values in a table just like a structure. So now I can dump the java system properties in a table with only two lines of code:

<cfset system = CreateObject("java", "java.lang.System")>
<cfdump var="#system.getProperties()#">

The Fixinator Code Security Scanner for ColdFusion & CFML is an easy to use security tool that every CF developer can use. It can also easily integrate into CI for automatic scanning on every commit.

Comments

Pete Freitag

Actually you can do this in just one line if you really want to: <cfdump var="#CreateObject("java", "java.lang.System").getProperties()#">

Daniel Plesse

The static method setProperty("jdbc.drivers","org.hsqldb.jdbcDriver") This works however the changes don't stay around. Is there anyway to edit and get CF to see the changes? Thanks D