Comprobar los DSN dados de alta en el servidor de coldfusion

Hace años navegando por internet me encontré estas interesantes funciones que sirven para sacar en una estructura de datos las distintas DSN dadas de alta en el servidor de coldfusion.

<cfset this = StructNew() >
<!--- ************************************************************ ---> 
<!--- ::
Name:	makeFactory
	* make a cffactory object
	* @return boolean of factory status
	:: --->		
	<cffunction name="makeFactory" returntype="boolean" hint="If possible create this.factory for cf service factory">
	     <cftry>
	        <cflock name="serviceFactory" type="exclusive" timeout="10">
                 <cfset this.factory = CreateObject("java", "coldfusion.server.ServiceFactory")>
			</cflock>
		    <cfcatch>
		      <cfthrow message="Could not create service factory object" type="Any" errorcode="0">
			   <cfreturn FALSE > 
		   </cfcatch>
		   </cftry>
            <cfreturn TRUE > 
	</cffunction>
<!--- ************************************************************ ---> 


<!--- ************************************************************ ---> 
<!--- ::
Name:	getAllDataSources
	* Get all the DSN details that CF can use
	* @return 	struct 	a struct of stucts that details the cf dsn
	:: --->		
		
	<cffunction name="getAllDataSources" returntype="boolean" hint="Creates this.datasources of  all data sources">
	    <cfif NOT isDefined("this.factory")>
		   <cfset makeFactory() >
		</cfif>
	      <cftry>
	        <cflock name="serviceFactory" type="exclusive" timeout="10">
                 <!--- factory.DataSourceService.getDatasources()is a struc of stucs that details the cf dsn  --->
				 <cfset this.AllDataSources = this.factory.DataSourceService.getDatasources() >
               </cflock>
		    <cfcatch>
		      <cfthrow message="Could not create data sources structure from factory." type="Any" errorcode="0">
			   <cfreturn FALSE > 
		    </cfcatch>
		    </cftry>
		    <cfreturn TRUE > 
	</cffunction>
<!--- ************************************************************ ---> 

<!--- ************************************************************ ---> 
<!--- ::
Name:	showAllDataSources
	* Shows all cffactory data sources
	* @return 	struct
	:: --->		
		
	<cffunction name="showAllDataSources" returntype="any" hint="Shows all cffactory data sources">
	      <cfset getAllDataSources() >
		  <cfreturn this.AllDataSources > 
	</cffunction>
<!--- ************************************************************ ---> 

<cfdump var="#showAllDataSources()#" label="showAllDataSources" expand="no">

Otra opción bastante más sencilla usando algo de java:

<cfscript>
function getDSNs() {
	var factory = createObject("java","coldfusion.server.ServiceFactory");
	return factory.getDataSourceService().getNames();
}
</cfscript>

<cfdump var="#getDSNs()#">

No es que se use a menudo pero si me sirvió para darle un tirón de orejas a uno de sistemas que decía haber creado una DSN a una base de datos y demostrarle al muy zote no es lo mismo hacerlo desde el administrador de coldfusion que desde DSN de sistema…..

Dejar un comentario?

0 Comentarios.

Deje un comentario


NOTA - Puede usar estosHTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.