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…..
0 Comentarios.