我正在尝试从我的服务器上获取数据源列表(是的我是服务器所有者......这不是黑客攻击)。
我认为我通过举两个例子来混淆这个问题 - 所以我用一个例子和堆栈跟踪来编辑帖子。
代码
// Create Data Source Object
admin = new cfide.adminapi.Administrator();
admin.login("admin","[password]");
dbserv = createobject("java","coldfusion.server.ServiceFactory").getDatasourceService();
dblist = dbserv.getDatasources();
writedump(dblist);
错误消息
The error occurred in C:\wwwroot\[path]\[file].cfm: line 6
4 :
5 : dbserv = createobject("java","coldfusion.server.ServiceFactory").getDatasourceService();
6 : dblist = dbserv.getDatasources();
7 : writedump(dblist);
8 : </cfscript>
堆栈追踪:
Check the ColdFusion documentation to verify that you are using the correct syntax.
Search the Knowledge Base to find a solution to your problem.
Browser Mozilla/5.0 (Windows NT 5.1; rv:12.0) Gecko/20100101 Firefox/12.0
Remote Address 127.0.0.1
Referrer
Date/Time 17-May-12 09:08 AM
Stack Trace
at cf[file]2ecfm302094979.runPage(C:\wwwroot\[path]\[file].cfm:6)
coldfusion.security.SecurityManager$UnauthenticatedCredentialsException
at coldfusion.security.SecurityManager.authenticateAdmin(SecurityManager.java:1958)
at coldfusion.sql.Executive.getDatasources(Executive.java:96)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at coldfusion.runtime.StructBean.invoke(StructBean.java:508)
at coldfusion.runtime.CfJspPage._invoke(CfJspPage.java:2393)
at cf[file]2ecfm302094979.runPage(C:\wwwroot\[path]\[file].cfm:6)
at coldfusion.runtime.CfJspPage.invoke(CfJspPage.java:231)
at coldfusion.tagext.lang.IncludeTag.doStartTag(IncludeTag.java:416)
at coldfusion.filter.CfincludeFilter.invoke(CfincludeFilter.java:65)
at coldfusion.filter.ApplicationFilter.invoke(ApplicationFilter.java:381)
at coldfusion.filter.RequestMonitorFilter.invoke(RequestMonitorFilter.java:48)
at coldfusion.filter.MonitoringFilter.invoke(MonitoringFilter.java:40)
at coldfusion.filter.PathFilter.invoke(PathFilter.java:94)
at coldfusion.filter.LicenseFilter.invoke(LicenseFilter.java:27)
at coldfusion.filter.ExceptionFilter.invoke(ExceptionFilter.java:70)
at coldfusion.filter.BrowserDebugFilter.invoke(BrowserDebugFilter.java:79)
at coldfusion.filter.ClientScopePersistenceFilter.invoke(ClientScopePersistenceFilter.java:28)
at coldfusion.filter.BrowserFilter.invoke(BrowserFilter.java:38)
at coldfusion.filter.NoCacheFilter.invoke(NoCacheFilter.java:46)
at coldfusion.filter.GlobalsFilter.invoke(GlobalsFilter.java:38)
at coldfusion.filter.DatasourceFilter.invoke(DatasourceFilter.java:22)
at coldfusion.filter.CachingFilter.invoke(CachingFilter.java:62)
at coldfusion.CfmServlet.service(CfmServlet.java:200)
at coldfusion.bootstrap.BootstrapServlet.service(BootstrapServlet.java:89)
at jrun.servlet.FilterChain.doFilter(FilterChain.java:86)
at coldfusion.monitor.event.MonitoringServletFilter.doFilter(MonitoringServletFilter.java:42)
at coldfusion.bootstrap.BootstrapFilter.doFilter(BootstrapFilter.java:46)
at jrun.servlet.FilterChain.doFilter(FilterChain.java:94)
at jrun.servlet.FilterChain.service(FilterChain.java:101)
at jrun.servlet.ServletInvoker.invoke(ServletInvoker.java:106)
at jrun.servlet.JRunInvokerChain.invokeNext(JRunInvokerChain.java:42)
at jrun.servlet.JRunRequestDispatcher.invoke(JRunRequestDispatcher.java:286)
at jrun.servlet.ServletEngineService.dispatch(ServletEngineService.java:543)
at jrun.servlet.jrpp.JRunProxyService.invokeRunnable(JRunProxyService.java:203)
at jrunx.scheduler.ThreadPool$DownstreamMetrics.invokeRunnable(ThreadPool.java:320)
at jrunx.scheduler.ThreadPool$ThreadThrottle.invokeRunnable(ThreadPool.java:428)
at jrunx.scheduler.ThreadPool$UpstreamMetrics.invokeRunnable(ThreadPool.java:266)
at jrunx.scheduler.WorkerThread.run(WorkerThread.java:66)
Debugging Information
ColdFusion Server Developer 9,0,1,274733
Template [path]/[file].cfm
Time Stamp 17-May-12 09:08 AM
Locale English (US)
User Agent Mozilla/5.0 (Windows NT 5.1; rv:12.0) Gecko/20100101 Firefox/12.0
Remote IP 127.0.0.1
Host Name 127.0.0.1
Execution Time
top level (16ms) C:\wwwroot\[path]\[file].cfm
· arrowtop level (0ms) CFC[ C:\wwwroot\CFIDE\adminapi\administrator.cfc | login(admin, [password]) ] from C:\wwwroot\CFIDE\adminapi\administrator.cfc @ line 3
(46 ms) STARTUP, PARSING, COMPILING, LOADING, & SHUTDOWN
(62 ms) TOTAL EXECUTION TIME
red = over 250 ms execution time
Exceptions
09:08:11.011 - coldfusion.security.SecurityManager$UnauthenticatedCredentialsException - in C:\wwwroot\[path]\[file].cfm : line 6
答案 0 :(得分:3)
dbserv = createobject("java","coldfusion.server.ServiceFactory").getDatasourceService();
dblist = dbserv.getDatasources();
writedump(dblist);
这适用于ColdFusion。如果您获得securitycredential异常,则需要以管理员身份登录
admin = new cfide.adminapi.Administrator();
admin.login("password","admin");
以下代码无效
dbserv2 = createobject("java","coldfusion.server.DataSourceService");
dblist2 = dbserv2.getDatasources();
这是正确的投掷方法没有找到。主要是因为DataSourceService是一个java接口,并没有实现这个方法。它由执行班实施。
答案 1 :(得分:1)
如果转储dbserv2变量,您将看到它不是对象,它是Java接口,无法实例化。
要执行您想要的操作,您需要从服务工厂请求数据源服务。
<cfscript>
dbserv2 = createobject("java","coldfusion.server.ServiceFactory").getDataSourceService();
dblist2 = dbserv2.getDatasources();
</cfscript>
答案 2 :(得分:1)
对于可能发生在这篇文章上的其他人,另一种做所需的方法,而不需要使用CF管理员密码进行身份验证是使用DataSourceService的getNames()函数而不是getDatasources。它返回服务器上注册的所有数据源名称的数组。
<cfscript>
dbserv3 = createobject("java","coldfusion.server.ServiceFactory").getDataSourceService();
dblist3 = dbserv3.getNames();
</cfscript>
这适用于CF11