有没有办法获得在同一网络中的不同Web服务器上运行的所有coldfusion计划任务的列表?

时间:2011-02-07 19:01:28

标签: coldfusion scheduled-tasks coldfusion-8

我想了解在5或6个coldfusion网络服务器上运行的计划任务的详细信息,只需在其中一个上写一页。有什么办法吗? 可以通过在所有这些上读取cron.xml来完成。

我遇到了以下代码

<cflock name="alltasks" type="exclusive" timeout="10">
<cfscript>
    factory = CreateObject("java","coldfusion.server.ServiceFactory");
    cron_service = factory.CronService;
    services = cron_service.listALL();
</cfscript>

此代码适用于查找将在其上执行的Web服务器的详细信息。

我正在寻找类似于此的内容,这将为我提供在同一网络中的所有Web服务器上运行的计划任务的详细信息。谢谢!

4 个答案:

答案 0 :(得分:2)

您可以使用cfschedule tag,并在每台服务器上放置一个页面,以输出该计算机的计划任务。然后,您可以使用HTTP请求到每个服务器来获取它负责的任务,并将它们输出到监控服务器上的页面。

答案 1 :(得分:2)

<!--- ServerList contains all server's(7,8,9) ipaddress,,,  --->

    <cfset serverList = 'a.b.c.d, p.q.r.s, ....... , u.v.w.x'>
    <cfoutput>

        Searched In: #serverList#<br>

        <Cfloop list="#serverList#" index="s">
            <cfif FileExists('\\#s#\C$\ColdFusion8\lib\neo-cron.xml')>
                <cfset pathToFindNeo = '\\#s#\C$\ColdFusion8\lib\neo-cron.xml'>
            <cfelseif FileExists('\\#s#\C$\CFusionMX7\lib\neo-cron.xml') >
                <cfset pathToFindNeo = '\\#s#\C$\CFusionMX7\lib\neo-cron.xml'>
            <cfelseif FileExists('\\#s#\C$\ColdFusion9\lib\neo-cron.xml')>
                <cfset pathToFindNeo = '\\#s#\C$\ColdFusion9\lib\neo-cron.xml'>
            <cfelseif FileExists('\\#s#\ColdFusion\lib\neo-cron.xml')>
                <cfset pathToFindNeo = '\\#s#\ColdFusion\lib\neo-cron.xml'>
            <cfelse>
                <cfset pathToFindNeo = 0>    
            </cfif>
            <h3>#s# [#pathToFindNeo#]</h3>

            <!--- Get the scheduler xml file.  It's stored as WDDX in CFroot dir--->
            <cfif pathToFindNeo neq 0>
                <cffile action="Read" file="#pathToFindNeo#" variable="TaskXML">

                <!--- Convert the WDDX to CFML - and array of structs --->  
                <cfwddx action="WDDX2CFML" input="#TaskXML#" output="GetTasks">

                <table border="1" width="100%">
                    <tr>
                        <td><strong>Name</strong></td>
                        <Td><strong>URL</strong></Td>
                        <td><strong>Interval</strong></td>
                        <Td><strong>Disabled</strong></Td>
                        <td><strong>Start Date</strong></td>
                        <td><strong>Start Time</strong></td>
                        <td><strong>End Time</strong></td>
                        <td><strong>Operation</strong></td>
                    </tr>
                    <cfloop collection="#GetTasks[1]#" item="key">
                        <cfif GetTasks[1][key]['disabled'] eq 'NO'>
                            <tr>
                        <cfelse>
                            <tr style="background-color:##CCC">         
                        </cfif>
                            <td>#key#</td>
                            <td>#GetTasks[1][key]['url']#</td>
                            <td>#GetTasks[1][key]['interval']#</td>
                            <td>#GetTasks[1][key]['disabled']#</td>
                            <td>#GetTasks[1][key]['start_date']#</td>
                            <td>#GetTasks[1][key]['start_time']#</td>
                            <td>
                                <cfif StructKeyExists(GetTasks[1][key], "end_time")> 
                                    #GetTasks[1][key]['end_time']# 
                                <cfelse>
                                    -
                                </Cfif> 
                            </td>
                            <td>#GetTasks[1][key]['operation']#</td>
                         </tr> 
                    </cfloop>
                </TABLE>
            <CFELSE>
                FILE 'neo-cron.xml' NOT FOUND    
            </cfif>        
        </Cfloop>

    </cfoutput>

答案 2 :(得分:1)

我可能会做的是在目标服务器上创建一个cfc,它会将查找计划任务的结果返回到某种类型的json,xml或查询中,这些json,xml或查询可以通过set username&amp;密码,根据需要从1台服务器获取数据....

答案 3 :(得分:0)

我们处理此问题的方法是使用任务的URL向数据库表添加一行。如果您在一个目录中拥有所有任务,那么最好的方法是使用可用的CGI变量在Application.cfc中添加数据库日志。

然后可以根据您预期的运行情况对此进行检查。

希望有所帮助!