2011-08-09 42 views
0

我有一个ColdFusion实例正在企业运行,但由于某种原因,它忽略了本地数据源。只有将数据源放在企业级时,它才会连接。 我甚至试过下面的代码,它只返回在实例管理器中声明的数据源,而不是实例本身。ColdFusion 9数据源默认企业

<cfset factory = createObject("java", "coldfusion.server.ServiceFactory")> 
<cfset datasources = factory.getDataSourceService().getDatasources()> 
<cfloop collection="#datasources#" item="dsnName"> 
     #dsnName#<br> 
</cfloop> 

任何帮助将不胜感激。

+0

您是否完全确定您正在运行代码的网站与您期望获取数据源的实例相关联?如果你去http:// thesiteyouwant/cfide /管理员,它是你期望它的实例吗?我的假设是,您的网站实际上是在默认'cfusion'实例下运行的,而不是您期望的子实例。 –

回答

0

这些应该可以帮助你找出你是在哪一个实例:

<cfscript> 
loc = {}; 
loc.machineName = createObject('java','java.net.InetAddress').localhost.getCanonicalHostName(); 
loc.machineName2 = createObject('java','java.net.InetAddress').localhost.getHostName(); 
loc.hostAddress = createObject('java','java.net.InetAddress').localhost.getHostAddress(); 
loc.instanceName = createObject('java','jrunx.kernel.JRun').getServerName(); 
writeDump(var: loc); 
</cfscript> 

如果您有获取数据源的问题,你可能需要与你的CF管理员密码,像这样首先验证:

createObject('component','CFIDE.adminapi.administrator').login('your-password'); 

数据源服务上有一个datasourceExists(),verifyDatasource()和getDatasource()方法,您可能会发现它很方便:

<cfscript> 
loc = {}; 
loc.dss = createObject('java','coldfusion.server.ServiceFactory').getDataSourceService(); 
loc.datasources = loc.dss.getDatasources(); 
loc.exists = loc.dss.datasourceExists('your-dsn'); 
loc.verified = loc.dss.verifyDatasource('your-dsn'); 
loc.datasource = loc.dss.getDatasource('your-dsn'); 
writeDump(var: loc); 
</cfscript>