CF Admin glitch while Updating Scheduled tasks?

I faced an issue while working with scheduled tasks long back but though of blogging this now. If the interval specified while creating the task was more than 24 hours then we will not be able to update the task from Coldfusion Administrator.

So here we are creating the schedule task through code. Take a note of the interval.

<cfschedule action = “update”
task = “TaskName”
operation = “HTTPRequest”
startDate = “8/7/98”
startTime = “12:25 PM”
interval = “360000”
resolveURL = “Yes”
publish = “Yes”
file = “sample.html”
path = “c:\inetpub\wwwroot\playpen”
requestTimeOut = “600”>

The interval 360000 is like 100 hours.

Now log into the CF Administrator and try to update the task by changing the frequency to One Time.

The Admin throws error message saying that the interval must be less than one day.

The only way i see to update this schedule task is through code.

Is this a glitch of CF admin? I don’t know.

Advertisements

Security update for ColdFusion versions 9, 8.0.1, and 8 and a word of caution

A new security update for ColdFusion versions 9, 8.0.1, and 8 is available now. Important vulnerabilities have been identified for these versions that could lead to cross-site scripting and information disclosure. So an update is highly recommended.

http://www.adobe.com/support/security/bulletins/apsb10-11.html

But after taking updates it was reported that the update killed the datasources in the CF admin. After deleting shf8010001.jar from {CF_HOME}/lib/updates/ and restarting the ColdFusion service CF is up and running again. We are still waiting for Adobe to resolve this issue.

Ajax call in ModelGlue without rendering a view

Making an Ajax call is simple and straight forward in ModelGlue.  The concept is simple and is given in detail in Doug’s blog. Read the full tutorial.

In ModelGlue(2) to call the Ajax call we need to have a view. i.e a page needs to be created to act as the view. This is in need if we are using the Ajax call to dynamically load HTML content. The Javascript receives the rendered view and does whatever it was told to do with it. But however there are times when we do not want to have a view rendered for our event(i.e our Ajax call). We simply want to return a value from server(it can even be a mere checking..!!) and assign it to a Javascript variable. For this simple purpose we do not want to create a new page/view.

In order to accomplish this we will have to break the ModelGlue architecture (till now..i couldn’t find any other suitable methods). Anyone who is familiar to ModelGlue architecture will find it easy to understand the below code.

My ModelGlue event:

<event-handler name="test.testFunction">          
     <broadcasts>
          <message name="testFunction" />
     </broadcasts>
</event-handler>                    

Please note that i am not using a view in this event.

And my controller function:-

<cffunction name="testFunction" returnType="any" output="true" >    
<cfargument name="event" type="any" required="true">        

<cfset justtest = 1>

<CFCONTENT TYPE="text" RESET="Yes"><CFOUTPUT>#serializeJSON(justTest)#
<cfset request.modelGlueSuppressDebugging = true />
<cfsetting showdebugoutput="false" /></CFOUTPUT><cfabort>

</cffunction>

Here we are converting the justtest variable in JSON format and outputting via cfcontent. Here cfcontent acts as the rendered view and returns justtest in JSON format. Here aborting at the end of controller function can be considered as breaking the ModelGlue archi , but this is one way around to solve the problem.

By the way here is my Ajax call:-

new Ajax.Request(root+'test.testFunction',{
  method: 'post',
  parameters: {param1:paramval},
  onSuccess: function(response){
    alert(response.responseText);
    var myresult = response.responseText;
  }
});

I am making use of prototype library for this.

We will get 1 if we alert the responseText call back from the server.

This is only applicable to ModelGlue2. If you are using ModelGlue3 then you would also need to check out how to use fomats in MG3. Thanks Ray Camdon for sharing this link.

Removing viewstate values in ModelGlue

A quick blog post on removing viewstate values in Model Glue…everyone knows  about this, but i didn’t find any useful reference while googling this…also for my reference as well just in case i forget…

Removing a value from the viewstate:

<!--- Here key is the name of the value you want to remove--->
viewstate.removeValue('key')

Reading Schedule task details from neo-cron.xml

I found  this code helpful while working with schedule tasks(i’ve been working with it for a while now ;-)).

Schedule tasks that are created in the Coldfusion Administrator can be accessed as structure programatically. This is particularly in need when we need to check through code whether a schedule task has been executed or not. We can also get the details of the existing schedule tasks that are in the Coldfusion administrator.

<!--- Get the scheduler xml file.  It's stored as WDDX in CFroot dir--->
<cffile action="Read"
          file="#Server.ColdFusion.RootDir#/lib/neo-cron.xml"
          variable="TaskXML">

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

<!--- Dump all the schedule tasks in CF Admin in Struct format. ---> 
<cfdump var="#GetTasks#">

The Scheduler configuration file neo-cron.xml stores all the schedule task details in the CF Admin in xml format. We are simply reading the file and converting the WDDX into an array of structs.

The output should look something like this:

scheduletaskdump

CF9 out in the wild…

Adobe Labs just released the much anticipated public beta versions of ColdFusion 9(Centaur) and ColdFusion Builder(BOLT). Adobe went for three simple categories of improvement with this release: Increase user productivity, improve integration with popular enterprise software, and simplify the workflow between Adobe products.

Top 10 ColdFusion 9 Features to lookout for:-

1.Adobe AIR database synchronization
By enabling this feature in your AIR application (both on the server and in the client app), the application syncs the data from a ColdFusion datasource to a local SQLite database. To support offline AIR data access, you code ActionScript elements on the client side and CFML on the server side.
Read More

1.Adobe AIR database synchronization

By enabling this feature in your AIR application (both on the server and in the client app), the application syncs the data from a ColdFusion datasource to a local SQLite database. To support offline AIR data access, you code ActionScript elements on the client side and CFML on the server side.

Read More

http://help.adobe.com/en_US/ColdFusion/9.0/Developing/WSAFE323E5-CA8B-429e-BC1C-450DA839D705.html

http://askjayvir.blogspot.com/2009/07/coldfusion-9-air-sqlite-offline-support.html

2.Object Relational Mapping (ORM)

ORM allows you to do complex database calls without writing a single SQL query thus making your code a lot cleaner and more manageable. This helps save lot of time and your apps will even run faster because of the built-in ORM optimizations in CF9.

Read More

http://help.adobe.com/en_US/ColdFusion/9.0/Developing/WSD628ADC4-A5F7-4079-99E0-FD725BE9B4BD.html

http://forta.com/blog/index.cfm/2009/7/7/ORM-Rethinking-ColdFusion-Database-Integration

3.Flex integration

By using the ColdFusion proxy ActionScript classes, you can access several ColdFusion services without actually writing any ColdFusion code for Flex-based applications that run on Flash and AIR . You just call the ColdFusion service straight from your Flex code. ColdFusion 9 now uses Blaze DS to power Flex remoting and messaging.

Read More

http://help.adobe.com/en_US/ColdFusion/9.0/Developing/WS45F7E41F-825B-4fcd-B96D-D5B7E2107E7E.html

http://www.mischefamily.com/nathan/index.cfm/2009/7/15/ColdFusion-9-Flex-Improvements

4.ColdFusion as a service

ColdFusion 9 has an exposed service layer that lets you to have direct access to a bunch of CF9 services from any server language you use. You can even call them using SOAP or Flash Remoting without writing a single line of CFML. These services include charting, document services, PDF utilities, image manipulation and email. Also these web services can be sandboxed, permitting access only to authorized applications.

Read More

http://forta.com/blog/index.cfm/2009/6/19/ColdFusion-Functionality-Exposed-As-Services

5.New Enhancements in <cfscript>

You can now build CFCs entirely in CFSCRIPT, including Application.cfc. You can invoke any tags and functions in cfscript. You can use new operators like abort, exit, include, and throw, to simplify your cfscript. WriteDump() is the equivalent of <CFDUMP>, WriteLog()is the equivalent of <CFLOG> (both of these are named similarly to the existing WriteOutput() function), Trace() is the equivalent of <CFTRACE>, Location() is the equivalent of <CFLOCATION>, and Throw() is the equivalent of <CFTHROW>.

Read More

http://help.adobe.com/en_US/ColdFusion/9.0/CFMLRef/WSc3ff6d0ea77859461172e0811cbec22c24-7ebf.html

6.Office application integration

ColdFusion 9 extends its reach into .NET based technologies like Microsoft SharePoint and MSOffice.The <cfpresentation> tag allows you to create, convert and read presentation files with just a few lines of code.The same thing goes for documents and spreadsheets.

Read More

http://help.adobe.com/en_US/ColdFusion/9.0/Developing/WS56EA2935-FBD2-4089-8402-FDDA2BAF55FB.html

7.Server manager

Server Manager is an AIR-based desktop application that allows you to centrally manage multiple ColdFusion servers from one location. We can apply hot fixes, change configs, create data sources etc to all servers at once. We can also clear caches across a cluster of ColdFusion servers.

Read More

http://help.adobe.com/en_US/ColdFusion/9.0/Developing/WS3D7763CA-4F04-4376-BF4C-9232C87C409F.html

8.PDF integration

With the enhanced PDF support in CF9, you can extract all the content form a PDF file. You can also update PDFs and even optimize them on the server .

Read More

http://help.adobe.com/en_US/ColdFusion/9.0/Developing/WSc3ff6d0ea77859461172e0811cdd76f064-8000.html

9.Dynamic UI Controls

ColdFusion 9 provides access to a broader set of AJAX controls that  use the new Ext JS 3.0 library via easy to use CFML tags and attributes. New controls include mapping, Video Player, multi-file upload, enhanced data grid, accordion navigation, progress indicator, confirmations and alerts as well as customizable buttons and sliders.

Read More

http://help.adobe.com/en_US/ColdFusion/9.0/Developing/WSe9cbe5cf462523a06a6137d81220767786c-8000.html

10.ColdFusion Builder (BOLT)

ColdFusion Builder is an Eclipse based IDE for CF development that is deeply integrated with CF9. With just a few clicks, you can create all the necessary CRUD code to use in your CF application or your Flex application. We can also extend ColdFusion Builder with our own extensions using CFML.

Read More

http://labs.adobe.com/technologies/coldfusionbuilder/

Playing SWF files using cfcontent

Playing swf files using cfcontent is very simple.

The video will not play when we call only the HTML page in which the flash video is embedded. Instead we also need to call the swf file using cfcontent to play the video files.

Playing flash files embedded in HTML can be done by the following code snippet:-

<cfcontent type=”application/x-shockwave-flash;” file=”#FilePathandFileNameOfSWFFile#” deletefile=”no”>

<cfcontent type=”text/html” file=”#FilePathandFileNameOfHTMLFile#” deletefile=”no”>

Previous Older Entries