G'day:
Just before I commence a discussion on the Lucee Language Forum, I thought I'd do a code sample and ask what people think.
The question is stated in the subject line: "what manner of object should an Exception be?"
Showing posts with label Micha Offner-Streit. Show all posts
Showing posts with label Micha Offner-Streit. Show all posts
Tuesday, 12 May 2015
Lucee 5: using a Java class file
G'day:
Here's one that bit me on the bum with Lucee, and took me a while to sort out. Not least of all because of some... err... communication challenges I had along the way trying to get help on the issue. I'll get to that.
One of the most convenient features of ColdFusion for me - a dedicated CFML programmer and only an occasional Java hacker - is that on those rare occasions I do need to knock together some quick Java functionality, all I need to do is to write a quick class (although there's nothing quick about me and "writing Java classes"), sling it into the
Easy. Oh, and this gives stuff like this:
(full output in this Gist: https://gist.github.com/adamcameron/fd5ab8db7c534acc68ac).
It's just easy. And has always "just worked".
Until Lucee 5, that is.
For reasons as yet unexplained coherently & honestly by Lucee, this functionality no longer works.
Fortunately the solution is easy... one just needs to stick the class in a JAR file and pop it in the
Sad admissions indeed! Well I knew the rudimentaries of both, but had never needed to put them into practice, so didn't know the details.
Just in case you're as thick as me when it comes to Java, here's what I learned. Firstly a baseline:
If I compile that, I can just stick Greeter.class file into
And we get:
G'day Zachary
Next... namespacing it...
And now this class needs to go in
Note how the package needs to be expressed everywhere.
Finally, making it into a JAR instead. This uses the same code, but I needed to home Greeter.java in the correct subdirectory structure (me\adamcameron\miscellany\Greeter.java), recompile it, then run it through JAR:
This creates miscellany.jar, and to use that, I pop it into
That was all pretty easy. However note that whilst the class-based solutions (both non-packaged and packaged versions) work A-OK on ColdFusion (all versions), Railo (all versions), and Lucee 4.5; they do not work on Lucee 5. On Lucee 5 the only option that works is the JAR version. This is not exactly a hardship, but it's worth knowing.
I tried to get some sort of acknowledgement of there being an issue here from Lucee, but that didn't pan out. Micha's dismissive, excuse-making, unhelpful attitude really irked me here: LDEV-315. He's basically blamed me, Tomcat, all other CFML engines (including Lucee 4.5 I guess) but not any action on his part which might have caused this regression. According to him Lucee 5 is working correctly, and all the other ones are behaving the way they do purely by coincidence (and different vendors implementing the same coincidence). At the same time, inferentially suggesting to Tomcat and Servlet docs have it wrong. He's beginning to sound like Rupesh from the Adobe ColdFusion Team in his excuse-making squirming.
I can surmise that the way the Lucee classloader has been rewritten for OSGi support either necessitates this change, or there's a glitch in it which causes it. I could not find OSGi docs making any claims one way or the other, unfortunately.
As I say on the ticket, at the very least Lucee need to document this change, but Micha - who's generally a bit averse to appropriate levels of documentation in the first place - didn't even accept that. The ticket is closed with the familar (from the Adobe bug tracker, anyhow) "Closed/Won't Fixed/Can't be arsed". This is a pity.
Anyway, at least I know about packaging and JARing in Java now. Win!
--
Adam
Here's one that bit me on the bum with Lucee, and took me a while to sort out. Not least of all because of some... err... communication challenges I had along the way trying to get help on the issue. I'll get to that.
One of the most convenient features of ColdFusion for me - a dedicated CFML programmer and only an occasional Java hacker - is that on those rare occasions I do need to knock together some quick Java functionality, all I need to do is to write a quick class (although there's nothing quick about me and "writing Java classes"), sling it into the
/WEB-INF/classes
directory, and then I could just create instances of said class from CFML. I use this for "my" ClassViewer class which has proven invaluable to me over the last decade or so when trying to work out WTF is going on with CFML's interaction with Java. On any of my CFML servers one of the first things I do is chuck a copy of that ClassViewer.class into /WEB-INF/classes
, and then it's there when I'm shufti-ing around:// cv.cfm
cv = createObject("java", "ClassViewer");
try {
1/0;
}catch (any e){
writeOutput("<pre>#cv.viewObject(e)#</pre>");
}
Easy. Oh, and this gives stuff like this:
public class coldfusion.runtime.DivideByZeroException
extends coldfusion.runtime.ExpressionException
extends coldfusion.runtime.NeoException
extends java.lang.RuntimeException
extends java.lang.Exception
extends java.lang.Throwable
extends java.lang.Object
extends {
/*** CONSTRUCTORS ***/
public coldfusion.runtime.DivideByZeroException()
/*** METHODS ***/
public int getErrNumber()
public final void setLocale(java.util.Locale)
public java.lang.String getMessage()
// [...]
(full output in this Gist: https://gist.github.com/adamcameron/fd5ab8db7c534acc68ac).
It's just easy. And has always "just worked".
Until Lucee 5, that is.
For reasons as yet unexplained coherently & honestly by Lucee, this functionality no longer works.
Fortunately the solution is easy... one just needs to stick the class in a JAR file and pop it in the
/WEB-INF/lib
directory instead. I have to admit I actually didn't know how to do two things regarding Java up until trying to work around this exercise:- how to implement namespacing;
- how to make a JAR
Sad admissions indeed! Well I knew the rudimentaries of both, but had never needed to put them into practice, so didn't know the details.
Just in case you're as thick as me when it comes to Java, here's what I learned. Firstly a baseline:
class Greeter {
public static String gday(String who){
return "G'day " + who;
}
}
If I compile that, I can just stick Greeter.class file into
/WEB-INF/classes
, and use it in my CFML, eg:// sampleBasic.cfm
greeter = createObject("java", "Greeter");
writeOutput(greeter.gday("Zachary"));
And we get:
G'day Zachary
Next... namespacing it...
package me.adamcameron.miscellany;
class Greeter {
public static String gday(String who){
return "G'day " + who;
}
}
And now this class needs to go in
/WEB-INF/classes/me/adamcameron/miscellany
before we can use it:greeter = createObject("java", "me.adamcameron.miscellany.Greeter");
Note how the package needs to be expressed everywhere.
Finally, making it into a JAR instead. This uses the same code, but I needed to home Greeter.java in the correct subdirectory structure (me\adamcameron\miscellany\Greeter.java), recompile it, then run it through JAR:
C:\src\java>jar cf miscellany.jar me\adamcameron\miscellany\Greeter.class
C:\src\java>
C:\src\java>
This creates miscellany.jar, and to use that, I pop it into
/WEB-INF/lib
(not /WEB-INF/classes
, nor /WEB-INF/lib/me/adamcameron/miscellany
).That was all pretty easy. However note that whilst the class-based solutions (both non-packaged and packaged versions) work A-OK on ColdFusion (all versions), Railo (all versions), and Lucee 4.5; they do not work on Lucee 5. On Lucee 5 the only option that works is the JAR version. This is not exactly a hardship, but it's worth knowing.
I tried to get some sort of acknowledgement of there being an issue here from Lucee, but that didn't pan out. Micha's dismissive, excuse-making, unhelpful attitude really irked me here: LDEV-315. He's basically blamed me, Tomcat, all other CFML engines (including Lucee 4.5 I guess) but not any action on his part which might have caused this regression. According to him Lucee 5 is working correctly, and all the other ones are behaving the way they do purely by coincidence (and different vendors implementing the same coincidence). At the same time, inferentially suggesting to Tomcat and Servlet docs have it wrong. He's beginning to sound like Rupesh from the Adobe ColdFusion Team in his excuse-making squirming.
I can surmise that the way the Lucee classloader has been rewritten for OSGi support either necessitates this change, or there's a glitch in it which causes it. I could not find OSGi docs making any claims one way or the other, unfortunately.
As I say on the ticket, at the very least Lucee need to document this change, but Micha - who's generally a bit averse to appropriate levels of documentation in the first place - didn't even accept that. The ticket is closed with the familar (from the Adobe bug tracker, anyhow) "Closed/Won't Fixed/Can't be arsed". This is a pity.
Anyway, at least I know about packaging and JARing in Java now. Win!
--
Adam
Labels:
Java,
Lucee,
Micha Offner-Streit
Monday, 20 April 2015
Lucee 5 beta: Follow-up to a direct question about createObject()
G'day:
This is still going 'round the houses: "Lucee 5 beta: a direct question about
This is still going 'round the houses: "Lucee 5 beta: a direct question about
createObject()
". Here's my latest follow-up, just FYI.
Labels:
Lucee,
Micha Offner-Streit
Saturday, 18 April 2015
Lucee 5 beta: a direct question about createObject()
G'day:
In an attempt to get a direct straight answer out of Micha regarding
In an attempt to get a direct straight answer out of Micha regarding
createObject()
and loadComponent()
, I have posed a very direct question about it on the Lucee Google Group:
Labels:
Lucee,
Micha Offner-Streit
Saturday, 7 February 2015
Lucee: does its future include CFML?
G'day:
There's a lively thread on the Lucee Google Group at the moment: "Outsider Perspective". There's a fair bit of cruft in there... OK, it's mostly cruft... but there was one very interesting comment from Micha:
Hmmmm. I tried to get Micha to elaborate for a public audience, but he hasn't been forthcoming yet, leaving it up to community speculation. Most of the speculation thusfar has been around what the file extension should be (yes, really), and no real grist. I've been holding off on that thread until Micha antes-up a bit.
However, on this blog... I'll allow myself to speculate away like nobody's business...
There's a lively thread on the Lucee Google Group at the moment: "Outsider Perspective". There's a fair bit of cruft in there... OK, it's mostly cruft... but there was one very interesting comment from Micha:
ACF compatibilityMy emphasis, obviously.
[...]
So what could be the medium for Lucee, that is very simple, the medium are templates (.cfc,.cfm).
What if Lucee acts different depending on the file extension.
So all templates with .cfm and .cfc extensions are still handled the old way, but files with the extension .lucee are handled in a modern way. this gives you the opportunity to still use your old code but you can extend it with new one and you have no confuguration nightmare anymore!
Hmmmm. I tried to get Micha to elaborate for a public audience, but he hasn't been forthcoming yet, leaving it up to community speculation. Most of the speculation thusfar has been around what the file extension should be (yes, really), and no real grist. I've been holding off on that thread until Micha antes-up a bit.
However, on this blog... I'll allow myself to speculate away like nobody's business...
Labels:
CFML,
Lucee,
Micha Offner-Streit,
Rhetoric
Thursday, 29 January 2015
Lucee launch: thanks
G'day:
I was just thinking about this evening's Lucee launch. I'd just like to say that Micha gave an excellent presentation this evening, especially for a fella who was giving his first presentation ever. And also in a language that isn't his primary one. And not just some flippant "I fancy giving a presentation at a conference" sort of affair, but annoucing the release of something quite significant and controversial in our wee community, and career defining for him personally. No pressure then, eh?
Also I'd like to say thanks to Alex for providing the venue, beer, and general logistics for the thing. Nice one mate.
And to Mark Drew who sat there in the front row fielding all the questions coming in from a variety of online channels - the online meeting message feed, Twitter, IRC and my blog, and relaying them to Micha so he could answer them all.
I was out of the loop for a while during the presentation - unavoidable family stuff - and Brad stepped up and also fielded all the questions coming into my blog, interpreting, relaying, and intuiting answers on the fly.
Sean also fielded questions on IRC.
And other people helping out with the launch of Lucee this evening, including the meatspace attendees who also gave the thing a vibe and kept Micha honest.
Good work everyone.
--
Adam
I was just thinking about this evening's Lucee launch. I'd just like to say that Micha gave an excellent presentation this evening, especially for a fella who was giving his first presentation ever. And also in a language that isn't his primary one. And not just some flippant "I fancy giving a presentation at a conference" sort of affair, but annoucing the release of something quite significant and controversial in our wee community, and career defining for him personally. No pressure then, eh?
Also I'd like to say thanks to Alex for providing the venue, beer, and general logistics for the thing. Nice one mate.
And to Mark Drew who sat there in the front row fielding all the questions coming in from a variety of online channels - the online meeting message feed, Twitter, IRC and my blog, and relaying them to Micha so he could answer them all.
I was out of the loop for a while during the presentation - unavoidable family stuff - and Brad stepped up and also fielded all the questions coming into my blog, interpreting, relaying, and intuiting answers on the fly.
Sean also fielded questions on IRC.
And other people helping out with the launch of Lucee this evening, including the meatspace attendees who also gave the thing a vibe and kept Micha honest.
Good work everyone.
--
Adam
Tuesday, 9 December 2014
"George", eh?
G'day:
So I heard the first mention of Railo 5 in quite a while from the Railo guys today, an oblique reference from Micha:
Two things interest me:
Anyway, it's jolly good to hear mention of it. I just bloody wish they'd hurry up and release the damned thing. At least to a public beta or something! It sounds like it's really going to be a great step forward for CFML, and will probably give Adobe a bit of a fright, I reckon.
Can't wait!
--
Adam
PS: thanks to John Whish for helping me get this article up onto coldfusionbloggers.org, which I cannot access from this machine @ present, for some reason.
So I heard the first mention of Railo 5 in quite a while from the Railo guys today, an oblique reference from Micha:
In George (Railo 4.2 successor) the release date is set by the build process in the default.properties file, the location for this information has moved because this file is common practice with OSGi.
Two things interest me:
- things have been very quiet re
Railo 5George recently, after a lot of initial chatter about it; - odd to describe it as "Railo 4.2 successor" when previously they've been very open about referring to it as "Railo 5". Dunno what to make of that. I might just be reading too much into casual words on a Google group.
Anyway, it's jolly good to hear mention of it. I just bloody wish they'd hurry up and release the damned thing. At least to a public beta or something! It sounds like it's really going to be a great step forward for CFML, and will probably give Adobe a bit of a fright, I reckon.
Can't wait!
--
Adam
PS: thanks to John Whish for helping me get this article up onto coldfusionbloggers.org, which I cannot access from this machine @ present, for some reason.
Labels:
John Whish,
Micha Offner-Streit,
Railo,
Railo 5
Tuesday, 22 July 2014
I'm sick of vendors screwing up CFML
G'day:
AAARRRGGGGHHHH!!!
How hard does any of this need to be? I'm posting this here and against the Railo bug report I started typing it into "CFHTTP accept callback UDF to report progress" (RAILO-3131). As it's stroppy, Micha should feel welcome to delete it from Jira. However it's staying here.
AAARRRGGGGHHHH!!!
How hard does any of this need to be? I'm posting this here and against the Railo bug report I started typing it into "CFHTTP accept callback UDF to report progress" (RAILO-3131). As it's stroppy, Micha should feel welcome to delete it from Jira. However it's staying here.
Labels:
Brad Wood,
CFML,
Micha Offner-Streit,
Railo,
Railo 5
Tuesday, 15 July 2014
2
G'day:
I'm frickin' lousy with dates (as in "calendar", not as in "romance". Although the same applies, from memory ;-). Well: remembering dates is never a problem, but remembering what the current date is is something I'm not so good at. I forgot to touch base with my big sister on her birthday over the weekend... and there's another anniversary on the same day.
I've been doing this bloody blog for two years now. Which is approximately 23 months longer than I expected it to last.
Last year I gave you some stats ("1"). I'll try to do the same now.
I battered Adobe a lot about how they (don't) handle their bugs. I will continue to do this. They're long overdue for an updater to ColdFusion 10, for one thing; plus we should have had at least a coupla small updates to ColdFusion 11 by now.
The biggest shift in my coding practices in the last year has been down to reading Clean Code, and adopting a lot of its suggestions. My code is better for it. I've got my colleagues Chris and Brian to thank for this... both the encouragement to read the book, but also keeping at me about it. Sometimes to great irritation on my part. If you have not read that book: do so. Especially if you're either of the two members of our team who still haven't read it. Ahem.
Another thing I've been fascinated with this year gone is TestBox. I love it. I am looking forward to shifting off ColdFusion 9 at work so we can start converting our MXUnit styled tests to BDD ones. Brad and Luis are dudes.
I've bitched a lot about Stack Overflow, but contrary to what I threatened ("Not that it will really matter in the bigger scheme of things..."), I still answer questions there every day (if I can find questions I can answer, that is).
Railo continues to rock. As do Gert, Micha, Igal from Railo. They really have done brilliant work keeping CFML alive and interesting.
A bunch of people have motivated me to write this year... it's too difficult to pull out a list of the main miscreants, but Sean would be the top. And the list of my various muses (or adversaries!) is - as always - on the right hand side of the screen, over there.
Gavin deserves special mention, as he very kindly tried to raise money to get me across to CF.Objective() ("Shamelessful plug"), but we had to kill that plan just as it was getting started ("Do not sponsor me to go to CF.Objective()"). But happily Gert stumped up with a ticket at the last minute ("Well that was unexpected"), so I made it anyhow. I really am taken aback by you guys. Seriously.
And of course Mike from CFCamp paid for my entire conference last year too ("CFCamp 2013"). That was amazing. And I mean both Mike's generousity, and the conference itself. Go to it this year if you can: CFCamp.
Ray's done most of the work for ColdFusion UI the Right Way, but I've helped out a bit. I'm glad we got going with that project.
Thanks for your participation in this blog, everyone. If you weren't reading it or commenting on it, I'd've chucked it in. But you keep coming back. Cheers.
Oh and let's not forget:
--
Adam
I'm frickin' lousy with dates (as in "calendar", not as in "romance". Although the same applies, from memory ;-). Well: remembering dates is never a problem, but remembering what the current date is is something I'm not so good at. I forgot to touch base with my big sister on her birthday over the weekend... and there's another anniversary on the same day.
I've been doing this bloody blog for two years now. Which is approximately 23 months longer than I expected it to last.
Last year I gave you some stats ("1"). I'll try to do the same now.
- I've now published 750 (this'll be the 751st) articles. I still have about a dozen in progress. The same ones as last year, funnily enough. The topics just don't have legs, I think.
- And the word tally is now up around 600000 words. So in the second year I didn't write quite as much as the first year (350000), but spread over more articles (428 in the last 12 months vs 322 in the first year).
- I've had another 3000 comments since the previous year's 2000. That's pretty cool. Thanks for the contributions everyone. Often the comments are more interesting than the articles, I find.
- Google Analytics claims I've had 86000 visitors over the last year (up from 25k in the first year). So this thing is getting more popular. The average per day is 230-odd. It was around 120/day in year one. It's still not a huge amount of traffic, but I guess my potential audience is pretty small too.
- The busiest day in the last 12 months was 5 March 2014, with 593 visitors. That was towards the end of the
isValid()
saga, with this article: "ColdFusion 11: Thank-you Carl, Mary-Jo, many other community members and indeed Rupesh", and a click-chasing one entitled "CFML is dying. Let's drop it off at Dignitas". Looking at the analytics, that was the bulk of it, plus I was writing a lot about new features in ColdFusion 11 around about then, which boosted things. That was also my biggest week ever, by quite a margin. - The most popular article last year was the one about me migrating from "ColdFusion Builder to Sublime Text 2". That's had 2200 visitors. The next most popular were as follows:
- The most +1'ed article was "I am one step closer to being unshackled from ColdFusion". It's interesting that that was the one that people liked the most. It had 13 +1s. Most articles get none or maybe one, so that's quite a lot.
- Last year I worked out which article had the most comments. I have no idea how I did that, and I can't be bothered working it out again. So erm... that'll remain a mystery.
I battered Adobe a lot about how they (don't) handle their bugs. I will continue to do this. They're long overdue for an updater to ColdFusion 10, for one thing; plus we should have had at least a coupla small updates to ColdFusion 11 by now.
The biggest shift in my coding practices in the last year has been down to reading Clean Code, and adopting a lot of its suggestions. My code is better for it. I've got my colleagues Chris and Brian to thank for this... both the encouragement to read the book, but also keeping at me about it. Sometimes to great irritation on my part. If you have not read that book: do so. Especially if you're either of the two members of our team who still haven't read it. Ahem.
Another thing I've been fascinated with this year gone is TestBox. I love it. I am looking forward to shifting off ColdFusion 9 at work so we can start converting our MXUnit styled tests to BDD ones. Brad and Luis are dudes.
I've bitched a lot about Stack Overflow, but contrary to what I threatened ("Not that it will really matter in the bigger scheme of things..."), I still answer questions there every day (if I can find questions I can answer, that is).
Railo continues to rock. As do Gert, Micha, Igal from Railo. They really have done brilliant work keeping CFML alive and interesting.
A bunch of people have motivated me to write this year... it's too difficult to pull out a list of the main miscreants, but Sean would be the top. And the list of my various muses (or adversaries!) is - as always - on the right hand side of the screen, over there.
Gavin deserves special mention, as he very kindly tried to raise money to get me across to CF.Objective() ("Shame
And of course Mike from CFCamp paid for my entire conference last year too ("CFCamp 2013"). That was amazing. And I mean both Mike's generousity, and the conference itself. Go to it this year if you can: CFCamp.
Ray's done most of the work for ColdFusion UI the Right Way, but I've helped out a bit. I'm glad we got going with that project.
Thanks for your participation in this blog, everyone. If you weren't reading it or commenting on it, I'd've chucked it in. But you keep coming back. Cheers.
Oh and let's not forget:
<cfclient>
sucks arse. And I can tell that without using it, Dave Ferguson ;-)
--
Adam
Monday, 9 June 2014
CFML enhancement: alternate function expression syntax; "lambda expressions"
G'day:
In this article I just want to - hopefully - extend the audience of a conversation taking place on the Railo Google Group ("Railo 5 lambda expressions"). Even if you're a ColdFusion developer (ie: only use the Adobe product, not the Railo one), this will still be relevant to you as Railo generally leads CFML development these days, so innovations they make will - perhaps some time in 2016 - make it into ColdFusion's dialect of CFML.
There are a lot of good brains in the CFML community, and I hope to encourage some more of them to join this discussion.
In this article I just want to - hopefully - extend the audience of a conversation taking place on the Railo Google Group ("Railo 5 lambda expressions"). Even if you're a ColdFusion developer (ie: only use the Adobe product, not the Railo one), this will still be relevant to you as Railo generally leads CFML development these days, so innovations they make will - perhaps some time in 2016 - make it into ColdFusion's dialect of CFML.
There are a lot of good brains in the CFML community, and I hope to encourage some more of them to join this discussion.
Labels:
CFML,
Closure,
Micha Offner-Streit,
Railo,
Railo 5,
Sean Corfield
Friday, 7 March 2014
Railo: small new feature I didn't catch making it into the language
G'day:
This is a minor but handy feature in Railo 4.2 that Micha just gave me a heads-up on. One can treat a string as an array:
Output:
Not very exciting, but makes sense, and saves a call to
--
Adam
This is a minor but handy feature in Railo 4.2 that Micha just gave me a heads-up on. One can treat a string as an array:
s = "G'day world";
for (i=1; i <= s.length(); i++){
writeOutput(s[i]);
}
writeOutput("<hr>");
charAfterApostrophe = s[find("'", s)+1];
writeOutput("charAfterApostrophe: #charAfterApostrophe#");
Output:
G'day world
charAfterApostrophe: d
Not very exciting, but makes sense, and saves a call to
mid()
if needing to extract characters from the string.--
Adam
Labels:
Micha Offner-Streit,
Railo
Tuesday, 17 December 2013
Micha offers Railo-centric feedback on Adobe's CFSummit ColdFusion 2016 promises
G'day:
I meant to post this ages ago when it was more relevant, but it got buried in my in box.
Back when I posted the article "CFSummit: interesting ColdFusion 2016 stuff " (whilst CFSummit was actually on!), Micha from Railo responded with his own thoughts on what Adobe had said.
I really appreciate how much time Micha puts over to helping me on this blog by following up various things I raise or wonder about. His community approach is definitely something the guys from Adobe could take note of.
In this case I think it's pretty interesting stuff, so I'm going to reproduce his comment here, in case people missed it the first time.
Again, sorry to not do this straight away when it was more fresh.
I've adjusted this slightly for formatting, but otherwise it's the same copy as per Micha's original comment:
I meant to post this ages ago when it was more relevant, but it got buried in my in box.
Back when I posted the article "CFSummit: interesting ColdFusion 2016 stuff " (whilst CFSummit was actually on!), Micha from Railo responded with his own thoughts on what Adobe had said.
I really appreciate how much time Micha puts over to helping me on this blog by following up various things I raise or wonder about. His community approach is definitely something the guys from Adobe could take note of.
In this case I think it's pretty interesting stuff, so I'm going to reproduce his comment here, in case people missed it the first time.
Again, sorry to not do this straight away when it was more fresh.
I've adjusted this slightly for formatting, but otherwise it's the same copy as per Micha's original comment:
Friday, 11 October 2013
Server.cfc and onServerStart()
G'day:
Another interesting thread cropped up on the Railo Google Group today: Micha was asking about Server.cfc, and how people use it (if at all).
This is not very widely used code, so I'll link to the docs for onServerStart() and quote a para from it:
Another interesting thread cropped up on the Railo Google Group today: Micha was asking about Server.cfc, and how people use it (if at all).
This is not very widely used code, so I'll link to the docs for onServerStart() and quote a para from it:
ColdFusion now supports a CFC with an onServerStart method that runs only when the server starts. The onServerStart method takes no parameters, and is the only function in the CFC. The function is useful for application-independent tasks, such as instantiating the applications, configuring logging, or setting up the scheduler.Apparently Railo does not offer this functionality. But also have never had anyone notice this.
By default, ColdFusion looks for the onServerStart method in cf_webroot/Server.cfc.
Labels:
CFML,
Micha Offner-Streit,
Railo
Wednesday, 25 September 2013
CFML: Things I do like: contrasts
G'day:
This is a follow-up from yesterday's article "Things I dislike: jobsworths". In this article we see the constrast between how Adobe conduct themselves, and how Railo do in a similar (well, hey, identical) situation. The very same situation.
Yesterday I observed that the blameshifting and general work-avoidance tactics from elements of the Adobe ColdFusion Team is very bloody slack, and really not acceptable. This is in the context of an - admittedly minor / edge case - issue with how some methods within the ServletRequest implementation (or usage, not sure) seem to work. The issue itself is - as I say - inconsequential, but Adobe's antics of excusing themselves from doing anything about it were lamentable.
In the course of troubleshooting / reproducing / investigating this issue, I noticed the same behaviour seemed to be occurring on Railo. In the spirit of fair play, I hit Railo up about it as well to see how they'd deal with it (and expecting some technical guidance which I was unlikely to get from Adobe).
The contrast in reaction could not be more profound. Just to give the executive summary before I start copying and pasting material you could have already read elsewhere: Railo technical support rocks. And in particular Micha goes above and beyond what I'd expect from any vendor's engineers. At this really really puts to shame how Adobe's team conduct themselves.
This is a follow-up from yesterday's article "Things I dislike: jobsworths". In this article we see the constrast between how Adobe conduct themselves, and how Railo do in a similar (well, hey, identical) situation. The very same situation.
Yesterday I observed that the blameshifting and general work-avoidance tactics from elements of the Adobe ColdFusion Team is very bloody slack, and really not acceptable. This is in the context of an - admittedly minor / edge case - issue with how some methods within the ServletRequest implementation (or usage, not sure) seem to work. The issue itself is - as I say - inconsequential, but Adobe's antics of excusing themselves from doing anything about it were lamentable.
In the course of troubleshooting / reproducing / investigating this issue, I noticed the same behaviour seemed to be occurring on Railo. In the spirit of fair play, I hit Railo up about it as well to see how they'd deal with it (and expecting some technical guidance which I was unlikely to get from Adobe).
The contrast in reaction could not be more profound. Just to give the executive summary before I start copying and pasting material you could have already read elsewhere: Railo technical support rocks. And in particular Micha goes above and beyond what I'd expect from any vendor's engineers. At this really really puts to shame how Adobe's team conduct themselves.
Labels:
Adobe,
Micha Offner-Streit,
Railo
Tuesday, 24 September 2013
Things I dislike: jobsworths
G'day:
I started to have a quick look at ColdFusion 10's new ESAPI functions this morning... I'd give you a link for those, but they don't seem to be categorised in the docs (and I can't annotate the docs accordingly, cos the site is still broken since it was "upgraded" to use the new wiki)... and quickly got deviated onto the bug tracker.
Update:
For non-UK-English-speakers, from Wikipedia:
For non-UK-English-speakers, from Wikipedia:
A jobsworth is a person who uses their job description in a deliberately uncooperative way, or who seemingly delights in acting in an obstructive or unhelpful manner.
I started to have a quick look at ColdFusion 10's new ESAPI functions this morning... I'd give you a link for those, but they don't seem to be categorised in the docs (and I can't annotate the docs accordingly, cos the site is still broken since it was "upgraded" to use the new wiki)... and quickly got deviated onto the bug tracker.
Saturday, 27 July 2013
toScript()? New to me. New bugs to me, too
G'day:
I'm in Portumna visiting my boy... well not right now, I'm in the pub starting my second pint of Guinness, but the point is I'm away from home and am on my baby netbook rather than my usual rig, so blogging / coding / internet access / my-ability-to-do-useful-things are all severely curtailed today.
That said, to kill time, I'm writing a coupla articles.
I'm in Portumna visiting my boy... well not right now, I'm in the pub starting my second pint of Guinness, but the point is I'm away from home and am on my baby netbook rather than my usual rig, so blogging / coding / internet access / my-ability-to-do-useful-things are all severely curtailed today.
That said, to kill time, I'm writing a coupla articles.
Labels:
Bugs,
CFML,
Micha Offner-Streit
Thursday, 4 April 2013
OpenBD's attitude disappoints me sometimes
G'day:
This is not the article I was thinking of writing today. But this is just too daft not to repeat.
The other day there was some discussion on the Railo Google group about some weirdness with JSON validation, which is worth a quick read. In summary, it seemed to the original poster that there was some false positives coming through. Being a literalist I observed that none of the examples were actually JSON according to JSON's own spec, as well as the RFC. Micha and I agreed to disagree - kinda... I'm sure Micha doesn't care about my opinion ;-) - as to whether Railo should stick to the spec at the expense of breaking existing code. He suggested the more moderate route.
This is not the article I was thinking of writing today. But this is just too daft not to repeat.
The other day there was some discussion on the Railo Google group about some weirdness with JSON validation, which is worth a quick read. In summary, it seemed to the original poster that there was some false positives coming through. Being a literalist I observed that none of the examples were actually JSON according to JSON's own spec, as well as the RFC. Micha and I agreed to disagree - kinda... I'm sure Micha doesn't care about my opinion ;-) - as to whether Railo should stick to the spec at the expense of breaking existing code. He suggested the more moderate route.
Friday, 18 January 2013
How cool are the Railo guys?
G'day:
Just a quick one. Check this out. I was chatting with Adam Tuttle last night about some differences we'd noted in how ColdFusion and Railo seem to implement the hashCode() method for their respective struct implementations. Here's some code (as per the thread I link to above):
Just a quick one. Check this out. I was chatting with Adam Tuttle last night about some differences we'd noted in how ColdFusion and Railo seem to implement the hashCode() method for their respective struct implementations. Here's some code (as per the thread I link to above):
Subscribe to:
Posts (Atom)