<?xml version="1.0"?>
<!-- RSS generated by Radio UserLand v8.0.8 on Thu, 23 Jan 2003 09:11:21 GMT -->
<rss version="2.0">
	<channel>
		<title>Patrick Lightbody: Java</title>
		<link>http://radio.weblogs.com/0108886/categories/java/</link>
		<description>News about anything java, but probably mostly related to server-side java, since that&apos;s what I do for a living!</description>
		<language>en</language>
		<copyright>Copyright 2003 Patrick Lightbody</copyright>
		<lastBuildDate>Thu, 23 Jan 2003 09:11:21 GMT</lastBuildDate>
		<docs>http://backend.userland.com/rss</docs>
		<generator>Radio UserLand v8.0.8</generator>
		<managingEditor>plightbo@hotmail.com</managingEditor>
		<webMaster>plightbo@hotmail.com</webMaster>
		<category domain="http://www.weblogs.com/rssUpdates/changes.xml">rssUpdates</category> 
		<skipHours>
			<hour>2</hour>
			<hour>3</hour>
			<hour>4</hour>
			<hour>5</hour>
			<hour>6</hour>
			<hour>7</hour>
			<hour>12</hour>
			<hour>1</hour>
			</skipHours>
		<cloud domain="radio.xmlstoragesystem.com" port="80" path="/RPC2" registerProcedure="xmlStorageSystem.rssPleaseNotify" protocol="xml-rpc"/>
		<ttl>60</ttl>
		<item>
			<title>WebWork 2.0 Coming Along</title>
			<link>http://radio.weblogs.com/0108886/categories/java/2003/01/23.html#a81</link>
			<description>&lt;P&gt;So everyone has decided on the &lt;A href=&quot;http://www.opensymphony.com:8668/space/WebWork+2.0+Mission+Statement&quot;&gt;WebWork 2.0 Mission Statement&lt;/A&gt; and the &lt;A href=&quot;http://www.opensymphony.com:8668/space/XWork+1.0+Mission+Statement&quot;&gt;XWork 1.0 Mission Statement&lt;/A&gt;&amp;nbsp;(thanks to Jason Carreira for wording these statements so nicely). This means that development on both platforms will now begin to roll ahead. In fact, just tonight I did a few things for WebWork:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Added simple PropertyTag and PushTag implementations&lt;/LI&gt;
&lt;LI&gt;Added a FilterDispatcher that allows you to access a &lt;STRONG&gt;view&lt;/STRONG&gt; of the action and have the &lt;STRONG&gt;action itself&lt;/STRONG&gt; execute. This means that &lt;STRONG&gt;SimpleCounter.action&lt;/STRONG&gt;&amp;nbsp;and &lt;STRONG&gt;success.jsp&lt;/STRONG&gt;&amp;nbsp; will have the &lt;STRONG&gt;same effect&lt;/STRONG&gt; when accessed from the browser. They can both be running in your web app together, or you can choose to use only the *.action way, or the view way. Whatever you want!&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Jason has also put in some nice validation stuff in to XWork that is worth checking out. We&apos;re going to see if FormProc would be a good fit here as well.&lt;/P&gt;</description>
			<guid>http://radio.weblogs.com/0108886/categories/java/2003/01/23.html#a81</guid>
			<pubDate>Thu, 23 Jan 2003 09:11:19 GMT</pubDate>
			<comments>http://radiocomments.userland.com/comments?u=108886&amp;amp;p=81&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0108886%2F2003%2F01%2F23.html%23a81</comments>
			</item>
		<item>
			<title>WebWork 2.0 and SiteMesh</title>
			<link>http://radio.weblogs.com/0108886/categories/java/2003/01/15.html#a80</link>
			<description>&lt;P&gt;Now that I&apos;m toying with the idea of WebWork 2.0 &lt;STRONG&gt;and&lt;/STRONG&gt; XWork, I&apos;d like to mention that I&apos;ve been thinking about using SiteMesh to replace the IncludeTag stuff in WebWork 1.x. They have a very strong overlap, but SiteMesh is a bit more powerful and it&apos;d be great to make use of SiteMesh in an area other than what it&apos;s famous for (the PageFilter). Don&apos;t have time for an example of the overlap, but maybe later I&apos;ll put one up if someone asks.&lt;/P&gt;</description>
			<guid>http://radio.weblogs.com/0108886/categories/java/2003/01/15.html#a80</guid>
			<pubDate>Thu, 16 Jan 2003 07:37:23 GMT</pubDate>
			<comments>http://radiocomments.userland.com/comments?u=108886&amp;amp;p=80&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0108886%2F2003%2F01%2F15.html%23a80</comments>
			</item>
		<item>
			<title>What about XWork AND WebWork</title>
			<link>http://radio.weblogs.com/0108886/categories/java/2003/01/15.html#a79</link>
			<description>&lt;P&gt;I got an idea today (it was entirely my idea, no one else suggested it first -- hehe, J.O.): What if XWork &lt;STRONG&gt;and&lt;/STRONG&gt; WebWork were both developed actively and released as seperate projects? XWork would be the &quot;kernel&quot; for WebWork and would focus entirely on non-web-related stuff. Essentially, it would be be nothing more than a generic command pattern framework as well as a nice lifecycle/IoC system (thanks again, JoeW) similar to Avalon. But the point is that it&apos;d be &lt;STRONG&gt;small&lt;/STRONG&gt;. In fact, I built this in sandbox and it came out to 1500 lines of code and only 32KB as a jar file.&lt;/P&gt;
&lt;P&gt;Then there would be WebWork, which would include a ServletDispatcher, better configuration settings for the web, and a huge amount of focus on the the taglibs and macros for JSP and Velocity. This would include Jasper Reports stuff as well, and all that jazz. And of course, WebWork 2.0 would depend on XWork 1.0 (which, as stated above, would be a tiny jar file)&lt;/P&gt;
&lt;P&gt;I think that this would solve the complaints of both parties (&quot;it won&apos;t be web-specific enough&quot; and &quot;it won&apos;t be generic enough&quot;) and would allow for both projects to bloom in the direction that they should. I don&apos;t think that this is a far-fetched idea. In fact, I know it&apos;s possible and I think it&apos;ll work out well. I&apos;ve already made a &quot;webwork&quot; subdirectory in the sandbox CVS module and moved the web-specific stuff of XWork in there. &lt;/P&gt;
&lt;P&gt;Any thoughts?&lt;/P&gt;</description>
			<guid>http://radio.weblogs.com/0108886/categories/java/2003/01/15.html#a79</guid>
			<pubDate>Thu, 16 Jan 2003 07:34:14 GMT</pubDate>
			<comments>http://radiocomments.userland.com/comments?u=108886&amp;amp;p=79&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0108886%2F2003%2F01%2F15.html%23a79</comments>
			</item>
		<item>
			<title>Ant console</title>
			<link>http://radio.weblogs.com/0108886/categories/java/2003/01/15.html#a78</link>
			<description>Anyone know why there hasn&apos;t been a nice ant task that essentially gives the user a little text input field where they can type in task names and have them executed? This would be just like the maven console, but of course for ant. Would make building apps even quicker, since we could keep the ant process running and just press &quot;[up-arrow] [enter]&quot; to rebuild. Of course, this is for when you aren&apos;t using it with IDEA... you ARE doing that, right?</description>
			<guid>http://radio.weblogs.com/0108886/categories/java/2003/01/15.html#a78</guid>
			<pubDate>Thu, 16 Jan 2003 07:24:45 GMT</pubDate>
			<comments>http://radiocomments.userland.com/comments?u=108886&amp;amp;p=78&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0108886%2F2003%2F01%2F15.html%23a78</comments>
			</item>
		<item>
			<title>Setting it straight: What is XWork?</title>
			<link>http://radio.weblogs.com/0108886/categories/java/2003/01/14.html#a76</link>
			<description>&lt;P&gt;So I saw today that there was a blog entry discussing XWork and that it might be less powerful for the web... or less powerful as a command framework. And I&apos;m not saying &lt;A href=&quot;http://www.javablogs.com/Jump.jspa?id=16841&quot;&gt;David&lt;/A&gt;&amp;nbsp;is the one who things this, he&apos;s meerly interpreting the nonsense that is going on the WebWork mailing list. About a month ago I emailed the &quot;OpenSymphony&quot; mailing lists stating that I would no longer participate in the flamefests that so often appear on the list. Of course, I still continue to developer for a ton of the projects there and I respond to all the emails as possible (as long as they aren&apos;t pointless flames).&lt;/P&gt;
&lt;P&gt;With that said, you may or may not know that I&apos;m the main driver of XWork right now. I&apos;ve been the one who&apos;s been mucking around in the sandbox CVS module and making lots of changes. Some have been controversial (like switching the action context from ThreadLocal to a simple Map), but the point I&apos;ve made all along is that this is a play pen. A place for various developers (such as Rickard and Jason) to toy with as well. It&apos;s a very loose process that I think can work very well if the damn idiots would stop screaming and just let things play out. Once we&apos;re ready to present something, if it sitll sucks, then bitching and moaning is acceptable. Anyway, enough about the sandbox module politics, now on to what XWork is all about...&lt;/P&gt;
&lt;P&gt;As nice as WebWork is, it has a lot of problems. In many cases, it&apos;s over engineered (just look at BeanUtil). The configuration scheme used in it can be clearly seen as one that started simple and slowly evolved but never quite grew up. What I wanted to do with XWork was start with a clean slate in terms of code, and then re-build the great ideas in WebWork, but this time go through and do it in a manner that was a much cleaner implementation. Yes, it will be a great command framework, similar to Avalon, in fact. But let me make this next part clear: it will work &lt;STRONG&gt;better&lt;/STRONG&gt; for the web than WebWork does as well. &lt;/P&gt;
&lt;P&gt;The code in CVS currently behaves just like WebWork and has all the web-based features WebWork had. But right off the bat it does one thing better: type conversion. Since the web uses Strings for inputs of all forms, inputting &quot;YYYY/mm/DD&quot; and having it converted to a Date object in your Action is a nice feature. WebWork did this, and it was nice. WebWork even (after my constant badgering, Matt was kind enough to get this in even during his busy sschedule) could &lt;STRONG&gt;get&lt;/STRONG&gt; the Date object as a String value of &quot;YYYY/mm/DD&quot;. But the problem here is that you couldn&apos;t customize type conversion on a per-Action or per-Attribute level. Type conversion was very static and limited. So what I did in XWork was include type conversion in the very core: The Configuration object.&lt;/P&gt;
&lt;P&gt;But type conversion by itself is a weak argument. I know. If that was it, I would have just proposed we fix up WebWork&apos;s type conversion and possible configuration and that&apos;s it. But XWork is so much more. There are now Interceptor and Inversion of Control patterns represented (thanks Jason and JoeW!). The expression language uses Ognl, which is (arguably) much better than the old WW EL. The dispatcher code has been simplified down to the point that all you need to do is the following to have an action invocation execute:&lt;/P&gt;&lt;PRE&gt;Dispatcher d = new Dispatcher(&quot;FooAction&quot;);&lt;BR&gt;&lt;a href=&quot;//&quot;&gt;//&lt;/a&gt; the action has already executed at this point, &lt;BR&gt;&lt;a href=&quot;//&quot;&gt;//&lt;/a&gt; including the View, such as an action chain&lt;BR&gt;&lt;a href=&quot;//&quot;&gt;//&lt;/a&gt; or HttpServlet request dispatcher or redirect&lt;BR&gt;String result = d.getResult(); &lt;a href=&quot;//&quot;&gt;//&lt;/a&gt; might be &quot;success&quot;&lt;BR&gt;FooAction foo = (FooAction) d.getAction();&lt;BR&gt;OgnlValueStack vs = d.getStack();&lt;/PRE&gt;
&lt;P&gt;So what this means is that in order to execute an action, all you really need to do is &quot;new Dispatch()&quot; and that&apos;s it. This makes using actions in a generic framework very easy. But it &lt;STRONG&gt;doesn&apos;t&lt;/STRONG&gt; hurt XWork from being fantastic in the Web context. While I haven&apos;t written any taglibs yet, I have made sure that an example WAR will be part of the main deployment. So please, please, don&apos;t think that XWork is ditching the web, or that XWork won&apos;t be generic enough to justify a name change from WebWork 2.0. It&apos;s possible to achieve both goals. &lt;/P&gt;
&lt;P&gt;And if you don&apos;t believe me, instead of sending out some flaming email to the list, I suggest you download the sources, and try to write up some use cases that won&apos;t work with the current source. Then email the list with your findings and we&apos;ll address it, because &lt;STRONG&gt;that&apos;s&lt;/STRONG&gt; what we&apos;re looking for with this sandbox approach. I don&apos;t really want to hear from people that won&apos;t take at least a fraction of the time I&apos;ve invested. That&apos;s not to say that I won&apos;t address their concerns, but their concerns won&apos;t take a priority &lt;STRONG&gt;at this stage.&lt;/STRONG&gt; And for anyone who hasn&apos;t figured it out yet, this stage is considered &lt;EM&gt;exploratory&lt;/EM&gt;.&lt;/P&gt;
&lt;P&gt;So please... I ask anyone that cares... remember, actions speak much louder than words. And even louder than flamefests. This is sandbox, go make a mess, that&apos;s what it&apos;s there for.&lt;/P&gt;</description>
			<guid>http://radio.weblogs.com/0108886/categories/java/2003/01/14.html#a76</guid>
			<pubDate>Tue, 14 Jan 2003 23:18:17 GMT</pubDate>
			<comments>http://radiocomments.userland.com/comments?u=108886&amp;amp;p=76&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0108886%2F2003%2F01%2F14.html%23a76</comments>
			</item>
		<item>
			<title>OSUser - Overhaul</title>
			<link>http://radio.weblogs.com/0108886/categories/java/2003/01/08.html#a75</link>
			<description>So work has finally begun on the real OSUser overhaul -- it&apos;s going to rule! David Smiley and Phillip Mudd have started some serious work. You can find it in the CVS module &quot;sandbox&quot; in the subdirection &quot;osuser&quot;. I&apos;m VERY excited about this!</description>
			<guid>http://radio.weblogs.com/0108886/categories/java/2003/01/08.html#a75</guid>
			<pubDate>Thu, 09 Jan 2003 04:09:57 GMT</pubDate>
			<comments>http://radiocomments.userland.com/comments?u=108886&amp;amp;p=75&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0108886%2F2003%2F01%2F08.html%23a75</comments>
			</item>
		<item>
			<title>Commons Digester</title>
			<link>http://radio.weblogs.com/0108886/categories/java/2003/01/06.html#a74</link>
			<description>Just saw what Digester is all about... damn it&apos;s cool. I&apos;ll make sure that all my &quot;OpenSymphony&quot; configs switch to using it (unless it has like a million dependencies).</description>
			<guid>http://radio.weblogs.com/0108886/categories/java/2003/01/06.html#a74</guid>
			<pubDate>Tue, 07 Jan 2003 04:45:58 GMT</pubDate>
			<comments>http://radiocomments.userland.com/comments?u=108886&amp;amp;p=74&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0108886%2F2003%2F01%2F06.html%23a74</comments>
			</item>
		<item>
			<title>Calling all Orion users</title>
			<link>http://radio.weblogs.com/0108886/categories/java/2003/01/06.html#a73</link>
			<description>Anyone actually ever get Orion to auto-compile sources? Can it see when sources change, then compile and redeploy?</description>
			<guid>http://radio.weblogs.com/0108886/categories/java/2003/01/06.html#a73</guid>
			<pubDate>Tue, 07 Jan 2003 04:45:12 GMT</pubDate>
			<comments>http://radiocomments.userland.com/comments?u=108886&amp;amp;p=73&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0108886%2F2003%2F01%2F06.html%23a73</comments>
			</item>
		<item>
			<title>OSWorkflow query support</title>
			<link>http://radio.weblogs.com/0108886/categories/java/2003/01/04.html#a72</link>
			<description>&lt;P&gt;OSWorkflow 2.5 is coming right along. The biggest thing that will be in this release will be query support. I&apos;ve already got it implemented in the MemoryWorkflowStore and it is demonstrated in the example web app (which btw, will also be beefed up in the next release). I&apos;m not entirely sure how dynamic queries can be implemented in EJB -- this is a tough problem. JDBC and Ofbiz won&apos;t be very hard at all, however.&lt;/P&gt;
&lt;P&gt;This brings me to another idea: what about using Lucene for workflow queries? Is that even possible? Could a query like, &quot;find me all workflows where bob is the owner of the current step &apos;Review&apos;&quot;? My main problem is the relationship between a Workflow entry and it&apos;s steps might be hard to feed to Lucene:&lt;/P&gt;
&lt;P&gt;One WorkflowEntry has many CurrentSteps and also has many HistorySteps. Not sure how Lucene could handle this... or maybe I&apos;m asking too much.&lt;/P&gt;</description>
			<guid>http://radio.weblogs.com/0108886/categories/java/2003/01/04.html#a72</guid>
			<pubDate>Sat, 04 Jan 2003 20:58:51 GMT</pubDate>
			<comments>http://radiocomments.userland.com/comments?u=108886&amp;amp;p=72&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0108886%2F2003%2F01%2F04.html%23a72</comments>
			</item>
		<item>
			<title>Resin sorta works</title>
			<link>http://radio.weblogs.com/0108886/categories/java/2002/12/31.html#a71</link>
			<description>&lt;P&gt;An ugly hack that can still let me get almost what I want with quick development was to make a proxy to transactions and then turn them off for Resin. Ugly, not production quality, but lets me get almost all of what I need. Still not very happy about the sad state of app servers, especially Orion since it offers features that don&apos;t seem to work and otherwise would be everything I need. But I guess that&apos;s the story of Orion... it&apos;s always just &quot;almost perfect&quot;.&lt;/P&gt;</description>
			<guid>http://radio.weblogs.com/0108886/categories/java/2002/12/31.html#a71</guid>
			<pubDate>Tue, 31 Dec 2002 18:38:04 GMT</pubDate>
			<comments>http://radiocomments.userland.com/comments?u=108886&amp;amp;p=71&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0108886%2F2002%2F12%2F31.html%23a71</comments>
			</item>
		<item>
			<title>Why do all app servers suck?</title>
			<link>http://radio.weblogs.com/0108886/categories/java/2002/12/31.html#a70</link>
			<description>&lt;P&gt;OK, after thinking I&apos;d found the holy grail of super quick webapp development (see previous story), I found that Resin&apos;s JTA implementation is the pits. Great. So I tried to apply the same technique to Orion. Except that Orion doesn&apos;t have any feature in orion-web.xml to let it deploy from my src structure (outlined below). Specifically, it can&apos;t be told where WEB-INF/lib is, where-as Resin and Jetty can. Also, Orion (even though the options are there in orion-web.xml) doesn&apos;t seem to see my source changes (or class changes even!) and redeploy the webapp. Great.&lt;/P&gt;
&lt;P&gt;Jetty and Tomcat&amp;nbsp;are a no-go, because that would mean I have to use Tyrex, which I refuse to do. JBoss+Jetty might work, but is hard to get working inside of IDEA and also still doesn&apos;t solve the redeploy issue I&apos;m trying to address.&lt;/P&gt;
&lt;P&gt;So here&apos;s by directory structure:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;build/java (IDEA compiles classes here)&lt;/LI&gt;
&lt;LI&gt;src/java (sources)&lt;/LI&gt;
&lt;LI&gt;src/webapp (complete webapp, minus WEB-INF/classes and WEB-INF/lib)&lt;/LI&gt;
&lt;LI&gt;lib/core (what will become WEB-INF/lib)&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;I&apos;m sure a lot of you see a familiar structure here (a la maven, but not quite maven). Any thoughts of how I can get a good app server (say, Orion) to quickly redeploy (I&apos;m fine if I having to touch web.xml, I can automate this with an ant task that automatically runs after compile) while also running within IDEA (that&apos;s key for me)? Another problem with Orion was that the classpaths that IDEA sets up when running Orion inside of IDEA screw up Orions ClassLoaders, and so touching web.xml has no effect. Sigh, I give up. &lt;/P&gt;
&lt;P&gt;Anyone got any tips to share?&lt;BR&gt;&lt;/P&gt;</description>
			<guid>http://radio.weblogs.com/0108886/categories/java/2002/12/31.html#a70</guid>
			<pubDate>Tue, 31 Dec 2002 18:29:03 GMT</pubDate>
			<comments>http://radiocomments.userland.com/comments?u=108886&amp;amp;p=70&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0108886%2F2002%2F12%2F31.html%23a70</comments>
			</item>
		<item>
			<title>More on Resin + IDEA</title>
			<link>http://radio.weblogs.com/0108886/categories/java/2002/12/30.html#a69</link>
			<description>I was pointed to check out the Resin plugin for IDEA, but I found that it still wasn&apos;t as nice as launching Resin from within IDEA using the technique I described in my last post. Basically, using the plugin gets you JSP debugging, but the debugger and overall integration (especially in terms of libraries and classpath stuff) is not as tight as it is in the way I described. Either way is great though and totally speeds up development. If you&apos;re still running ant or maven targets that build a war file and then redeploying that each time, you need to move in to the 21st century ;)</description>
			<guid>http://radio.weblogs.com/0108886/categories/java/2002/12/30.html#a69</guid>
			<pubDate>Mon, 30 Dec 2002 19:58:00 GMT</pubDate>
			<comments>http://radiocomments.userland.com/comments?u=108886&amp;amp;p=69&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0108886%2F2002%2F12%2F30.html%23a69</comments>
			</item>
		<item>
			<title>Resin Speeds up Web Development!</title>
			<link>http://radio.weblogs.com/0108886/categories/java/2002/12/29.html#a68</link>
			<description>&lt;P&gt;During the last couple of weeks I&apos;ve been playing with news ways to speed up development on webapps, and through a tip by Joe Walnes, I found that using Resin speeds up development by a great deal! Basically, here&apos;s what I&apos;ve done:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Using IDEA, I placed all the resin libraries in my classpath (make a Library called Resin so you can use it in all your projects)&lt;/LI&gt;
&lt;LI&gt;Then make a local application configuration inside of IDEA called &quot;Resin&quot; with the following settings:&lt;/LI&gt;
&lt;UL&gt;
&lt;LI&gt;class - com.caucho.server.http.HttpServer&lt;/LI&gt;
&lt;LI&gt;VM params - -Dresin.home=.&lt;/LI&gt;
&lt;LI&gt;program params - -conf resin.conf&lt;/LI&gt;&lt;/UL&gt;
&lt;LI&gt;Lastly, you need a resin.conf file in your root project directory. You can take the default resin.conf file and trim it down, but some key settings you need are:&lt;/LI&gt;
&lt;UL&gt;
&lt;LI&gt;servlet-classloader-hack - true&lt;/LI&gt;
&lt;LI&gt;doc-dir - src/webapp&lt;/LI&gt;
&lt;LI&gt;make your webapp id be &quot;/&quot; (the root)&lt;/LI&gt;
&lt;LI&gt;classpath id=&apos;../../build/java&apos;,&amp;nbsp;source=&apos;../java&apos;, compile=&apos;true&apos; (inside of webapp)&lt;/LI&gt;
&lt;LI&gt;place extra classpath elements to where your settings, such as osworkflow.xml, might be&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;
&lt;P&gt;That&apos;s it! Fire up resin and if all goes well it&apos;ll automatically recompile your sources every time you make a change and then redeploy the app. The end result is that working on your java classes becomes as simple to work with as JSPs are, especially since IDEA saves the files when you switch to your browser, and Resin reloads the classes on the next HTTP request. &lt;/P&gt;
&lt;P&gt;The only problem I ran in to is if a third party libary (say, WebWork) is invoking one of your classes, after a reload you might start getting ClassCastExceptions. To get around that you need to add a classpath entry to the jar file (webwork.jar, for instance) in resin.conf. &lt;BR&gt;&lt;/P&gt;</description>
			<guid>http://radio.weblogs.com/0108886/categories/java/2002/12/29.html#a68</guid>
			<pubDate>Mon, 30 Dec 2002 06:35:46 GMT</pubDate>
			<comments>http://radiocomments.userland.com/comments?u=108886&amp;amp;p=68&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0108886%2F2002%2F12%2F29.html%23a68</comments>
			</item>
		<item>
			<title>AOP - A simple tutorial</title>
			<link>http://radio.weblogs.com/0108886/categories/java/2002/11/22.html#a67</link>
			<description>&lt;P&gt;I&apos;ve taken absolutely zero time to learn about AOP, but since it seems to be one of the latest buzzwords in BlogLand (along with Maven and Jelly), I wonder if anyone is willing to provide a VERY simple tutorial/description of AOP, with maybe a few simple code examples. Or got any place where I can read up on this? I guess my lazziness is getting the best of me.&lt;/P&gt;</description>
			<guid>http://radio.weblogs.com/0108886/categories/java/2002/11/22.html#a67</guid>
			<pubDate>Fri, 22 Nov 2002 08:07:45 GMT</pubDate>
			<comments>http://radiocomments.userland.com/comments?u=108886&amp;amp;p=67&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0108886%2F2002%2F11%2F22.html%23a67</comments>
			</item>
		<item>
			<title>FreeRoller acting up?</title>
			<link>http://radio.weblogs.com/0108886/categories/java/2002/11/22.html#a66</link>
			<description>&lt;P&gt;Maybe it&apos;s just me, put are all the blogs that are using FreeRoller totally screwing up with their RSS feeds? I get the strangest RSS behavior from folks like Rickard, Ara, and Anthony. Makes it hard to see what&apos;s new and what is from October. I believe Mike just commented on a FreeRoller post from October, maybe he is having the same trouble?&lt;/P&gt;</description>
			<guid>http://radio.weblogs.com/0108886/categories/java/2002/11/22.html#a66</guid>
			<pubDate>Fri, 22 Nov 2002 08:06:08 GMT</pubDate>
			<comments>http://radiocomments.userland.com/comments?u=108886&amp;amp;p=66&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0108886%2F2002%2F11%2F22.html%23a66</comments>
			</item>
		<item>
			<title>JIRA 2.0 EAP</title>
			<link>http://www.atlassian.com/software/jira/eap/</link>
			<description>&lt;P&gt;Awesome, JIRA 2.0 EAP release #1 is out, get it while it&apos;s hot! The biggest feature (for me, but of course, I&apos;m biased) is the addition of workflow :)&lt;/P&gt;
&lt;P&gt;&lt;A href=&quot;http://www.atlassian.com/software/jira/eap/&quot;&gt;&lt;a href=&quot;http://www.atlassian.com/software/jira/eap/&quot;&gt;http://www.atlassian.com/software/jira/eap/&lt;/a&gt;&lt;/A&gt;&lt;/P&gt;</description>
			<guid>http://radio.weblogs.com/0108886/categories/java/2002/11/14.html#a65</guid>
			<pubDate>Fri, 15 Nov 2002 07:51:53 GMT</pubDate>
			<comments>http://radiocomments.userland.com/comments?u=108886&amp;amp;p=65&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0108886%2F2002%2F11%2F14.html%23a65</comments>
			</item>
		<item>
			<title>More on Ognl, XWork</title>
			<link>http://radio.weblogs.com/0108886/categories/java/2002/11/01.html#a62</link>
			<description>&lt;P&gt;So Drew Davidson (one of the &quot;Ognl&quot; guys) is going to be releasing version 2.3.0 very soon (possibly today) which will include type conversion both to and from beans. This is great news, and means that Ognl will be the first such tool to support this kind of feature. I personally find it odd that no one else had thought of this before! Jason Carriera mentioned that I check out &lt;A href=&quot;www.jbeans.org&quot;&gt;JBeans&lt;/A&gt;&amp;nbsp;and while it supported most of the type conversion I&apos;d want, it had no concept of type conversion going the other way. In thea meantime, Drew is working on Ognl to have even better performance, so I think Ognl will be what I&apos;ll end up recommending for XWork.&lt;/P&gt;</description>
			<guid>http://radio.weblogs.com/0108886/categories/java/2002/11/01.html#a62</guid>
			<pubDate>Fri, 01 Nov 2002 17:16:53 GMT</pubDate>
			<comments>http://radiocomments.userland.com/comments?u=108886&amp;amp;p=62&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0108886%2F2002%2F11%2F01.html%23a62</comments>
			</item>
		<item>
			<link>http://radio.weblogs.com/0108886/categories/java/2002/10/31.html#a60</link>
			<description>&lt;A href=&quot;http://radio.weblogs.com/0112098/2002/10/31.html#a221&quot;&gt;Why stateful session beans suck...&lt;/A&gt;. 
&lt;P&gt;An interesting &lt;A href=&quot;http://dev2dev.bea.com/articlesnews/discussion/thread.jsp?thread=tyler_001&quot;&gt;article&lt;/A&gt; by Tyler Jewel on why stateful session beans should typically be avoided if you&apos;re using a Servlet engine. Here&apos;s another &lt;A href=&quot;http://dev2dev.bea.com/articlesnews/discussion/thread.jsp?thread=zadrozny&quot;&gt;article&lt;/A&gt; that shows that using them is more trouble than its worth and typically have zero performance benefit.&lt;/P&gt;
&lt;P&gt;So if entity beans suck, and stateful session beans suck, all thats left of EJB thats of any real value is stateless session beans. Which is kinda like RMI with a simple transactional interceptor.&lt;/P&gt;
&lt;P&gt;Its no suprise to see that all the EJB vendors have been quietly de-emphasizing EJB and talking up web servies instead for quite some time.&lt;/P&gt;[&lt;A href=&quot;http://radio.weblogs.com/0112098/&quot;&gt;James Strachan&apos;s Radio Weblog&lt;/A&gt;]</description>
			<guid>http://radio.weblogs.com/0108886/categories/java/2002/10/31.html#a60</guid>
			<pubDate>Thu, 31 Oct 2002 17:41:34 GMT</pubDate>
			<source url="http://radio.weblogs.com/0112098/rss.xml">James Strachan&apos;s Radio Weblog</source>
			<comments>http://radiocomments.userland.com/comments?u=108886&amp;amp;p=60&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0108886%2F2002%2F10%2F31.html%23a60</comments>
			</item>
		<item>
			<title>eee jay bees suck?</title>
			<link>http://radio.weblogs.com/0108886/categories/java/2002/10/31.html#a59</link>
			<description>&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;A href=&quot;http://radio.weblogs.com/0109827/2002/10/19.html#a1156&quot;&gt;&lt;EM&gt;Another Blogger, Another EJB naysayer&lt;/EM&gt;&lt;/A&gt;&lt;EM&gt;. &lt;/EM&gt;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;&lt;A href=&quot;http://www.x180.net/Blog/2002/10/17#Computers/Java/EJBGoPop&quot;&gt;&lt;EM&gt;Listen to the EJB&apos;s go Pop&lt;/EM&gt;&lt;/A&gt;&lt;EM&gt;. &lt;/EM&gt;
&lt;P&gt;&lt;EM&gt;My friends who still work in the J2EE group at Sun that are charged with telling people how to write enterprise applications are now muttering about how there&apos;s a sudden demphasis on EJB&apos;s. Everyone is talking about other solutions now. Servlets (and tech built on top of them) and JDBC. Hell of a combo. Hey, I think I said that about 5 years ago while wandering the halls of CUP02. Course, not many people were listening back then. But a few were... &lt;/EM&gt;&lt;/P&gt;&lt;EM&gt;[&lt;/EM&gt;&lt;A href=&quot;http://www.x180.net/Blog&quot;&gt;&lt;EM&gt;James Duncan Davidson&lt;/EM&gt;&lt;/A&gt;&lt;EM&gt;] &lt;/EM&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;EM&gt;Hmmm. Cool. Another RSS feed subscribed. And another person making me really ponder the truth usefulness of EJBs. Having had a wonderful run down today by Mike on Sitemesh/Webwork/OFBiz EE I can honestly say that I can&apos;t see EJB&apos;s value proposition. Apart from buzzword compliance.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;Which, from my understanding, is still about 80% of most funding decisions ... ;-)&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;[&lt;/EM&gt;&lt;A href=&quot;http://radio.weblogs.com/0109827/&quot;&gt;&lt;EM&gt;Brett Morgan&apos;s &lt;STRIKE&gt;Insanity Weblog&lt;/STRIKE&gt; Zilla&lt;/EM&gt;&lt;/A&gt;&lt;EM&gt;]&lt;/EM&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;Well, I haven&apos;t been saying it for five years, but I did give a talk on why EJBs aren&apos;t exactly needed to my local San Diego Java Users Group early this year. I haven&apos;t been back to another JUG meeting since, maybe I should and try to stir up more controversy. Although it appears that it isn&apos;t controversy anymore, it&apos;s actually starting to be somewhat widely accepted. Anyway, my JUG talk was turned in to an article by &quot;Mike&quot; and can be found &lt;A href=&quot;http://radio.weblogs.com/0107789/stories/2002/09/02/theNecessityOfEjb.html&quot;&gt;here&lt;/A&gt;.&lt;/P&gt;</description>
			<guid>http://radio.weblogs.com/0108886/categories/java/2002/10/31.html#a59</guid>
			<pubDate>Thu, 31 Oct 2002 17:41:01 GMT</pubDate>
			<source url="http://radio.weblogs.com/0109827/rss.xml">Brett Morgan&apos;s &lt;Strike&gt;Insanity Weblog&lt;/Strike&gt; Zilla</source>
			<comments>http://radiocomments.userland.com/comments?u=108886&amp;amp;p=59&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0108886%2F2002%2F10%2F31.html%23a59</comments>
			</item>
		<item>
			<title>Jumping on the bandwagon</title>
			<link>http://radio.weblogs.com/0108886/categories/java/2002/10/31.html#a58</link>
			<description>&lt;BLOCKQUOTE&gt;
&lt;P&gt;Look at &lt;A href=&quot;http://roller.anthonyeden.com/page/tirsen/20021029&quot;&gt;Nanning&lt;/A&gt;. Nice one!&lt;/P&gt;
&lt;P&gt;[&lt;A href=&quot;http://radio.weblogs.com/0108103/&quot;&gt;Joe&apos;s Jelly&lt;/A&gt;]&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;OK, I guess it&apos;s time I too hop on the AOP bandwagon. Basically, I know nothing about AOP save a few of Rickard&apos;s ramblings I&apos;ve read and a couple web pages I read back when AspectJ was being heavily promoted (I hear AspectJ is dead now, is that right? A professor of mine worked on AspectJ when he was at Xerox Parc, maybe I should talk to him about all this AOP magic).&lt;/P&gt;</description>
			<guid>http://radio.weblogs.com/0108886/categories/java/2002/10/31.html#a58</guid>
			<pubDate>Thu, 31 Oct 2002 17:37:08 GMT</pubDate>
			<source url="http://radio.weblogs.com/0108103/rss.xml">Joe&apos;s Jelly</source>
			<comments>http://radiocomments.userland.com/comments?u=108886&amp;amp;p=58&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0108886%2F2002%2F10%2F31.html%23a58</comments>
			</item>
		<item>
			<title>Petriwhat?</title>
			<link>http://radio.weblogs.com/0108886/categories/java/2002/10/31.html#a57</link>
			<description>&lt;BLOCKQUOTE dir=ltr style=&quot;MARGIN-RIGHT: 0px&quot;&gt;
&lt;P&gt;&lt;A href=&quot;http://blogs.werken.com/people/bob/archives/000104.html&quot;&gt;Petri Net Reading&lt;/A&gt;. The Application of Petri Nets to Workflow Management - van der Aalst (ResearchIndex) is probably what I&apos;d call the starting-point in your journey through CiteSeer to accumulate knowledge of Petri nets. Brett Morgan had asked that I produce references to the papers I read to go from zero to Petri in 2 days. Overall, W.M.P. van der Aalst seems to be the shinig light in the world of Petri nets for workflow systems. For what it&apos;s worth, petridish supports coloured petrinets, but werkflow does not take advantage of them. Werkflow has exactly one colour of token flowing through the network:... [&lt;A href=&quot;http://blogs.werken.com/people/bob/&quot;&gt;bob mcwhirter&lt;/A&gt;]&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P dir=ltr&gt;Man, I really should go read up on this stuff when I get a chance, though I&apos;m sure most of it will be well over my head :)&lt;/P&gt;</description>
			<guid>http://radio.weblogs.com/0108886/categories/java/2002/10/31.html#a57</guid>
			<pubDate>Thu, 31 Oct 2002 17:33:40 GMT</pubDate>
			<source url="http://blogs.werken.com/people/bob/index.rdf">bob mcwhirter</source>
			<comments>http://radiocomments.userland.com/comments?u=108886&amp;amp;p=57&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0108886%2F2002%2F10%2F31.html%23a57</comments>
			</item>
		<item>
			<title>Jakarta-BeanUtils... no dice</title>
			<link>http://radio.weblogs.com/0108886/categories/java/2002/10/31.html#a56</link>
			<description>&lt;BLOCKQUOTE dir=ltr style=&quot;MARGIN-RIGHT: 0px&quot;&gt;&lt;A title=&quot;Jakarta Commons BeanUtils&quot; href=&quot;http://jakarta.apache.org/commons/beanutils.html&quot;&gt;&lt;EM&gt;commons-beanutils&lt;/EM&gt;&lt;/A&gt;&lt;EM&gt; comes with a ConverterUtils helper class for performing type conversions if you need it, which can work both directions.&lt;/EM&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;EM&gt;However&amp;nbsp; it sounds like what you really want to do is to use internationalization to convert the value into a localised String representation? If its any help, there&apos;s various JSP custom tags in JSTL for doing this kinda thing.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;[&lt;/EM&gt;&lt;A href=&quot;http://radio.weblogs.com/0112098/&quot;&gt;&lt;EM&gt;James Strachan&apos;s Radio Weblog&lt;/EM&gt;&lt;/A&gt;&lt;EM&gt;]&lt;/EM&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;Well I gave commons-beanutils another shot (I looked at it about 6 months ago) and I&apos;m still running in to two major problems:&lt;/P&gt;&lt;PRE&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ConvertUtils.register(new DateConverter(), Date.class);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; BeanUtils.copyProperty(o, &quot;blah&quot;, &quot;02/12/1982&quot;);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println(o.getBlah());&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println(PropertyUtils.getProperty(o, &quot;blah&quot;));&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println(BeanUtils.getProperty(o, &quot;blah&quot;));&lt;/PRE&gt;
&lt;P&gt;1) I don&apos;t see any way for conversion to work the other way around. I want the String value of the the date to come back as &quot;MM/dd/yyyy&quot; and currently the above code seems to just be calling Date.toString() on the Date object being returned, so the output for all three lines is: &quot;Fri Feb 12 00:00:00 PST 1982&quot;, which is not what I want.&lt;/P&gt;
&lt;P&gt;2) Converters need to be registered globally. I believe converters should be registered globally (for defaults), but also be allowed to be specified &lt;STRONG&gt;per bean&lt;/STRONG&gt; as well as &lt;STRONG&gt;per property&lt;/STRONG&gt;.&lt;/P&gt;
&lt;P&gt;So, still no dice... I&apos;d rather not write my own stuff since 90% of what I need is already here or in OSCore&apos;s BeanUtils or in Ognl. But without solutions to the above two issues, sticking with WebWork&apos;s BeanUtil class would offer the same benefit.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
			<guid>http://radio.weblogs.com/0108886/categories/java/2002/10/31.html#a56</guid>
			<pubDate>Thu, 31 Oct 2002 08:47:41 GMT</pubDate>
			<source url="http://radio.weblogs.com/0112098/rss.xml">James Strachan&apos;s Radio Weblog</source>
			<comments>http://radiocomments.userland.com/comments?u=108886&amp;amp;p=56&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0108886%2F2002%2F10%2F31.html%23a56</comments>
			</item>
		<item>
			<title>OpenSymphony Guideline Document</title>
			<link>http://radio.weblogs.com/0108886/categories/java/2002/10/30.html#a55</link>
			<description>&lt;P&gt;A long time ago I promised I&apos;d get a &quot;guideline&quot; document for &quot;OpenSymphony&quot;. Well that item is still on my task list and it doesn&apos;t appear to be getting done. But I think I&apos;m going to actually focus on getting this done. Joe Ottinger is also going to be helping me out, so hopefully in the not-too-distant future a concrete guideline covering everything from a high mission statement to low level details like logging and third party libraries will be covered. &lt;/P&gt;</description>
			<guid>http://radio.weblogs.com/0108886/categories/java/2002/10/30.html#a55</guid>
			<pubDate>Thu, 31 Oct 2002 01:51:25 GMT</pubDate>
			<comments>http://radiocomments.userland.com/comments?u=108886&amp;amp;p=55&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0108886%2F2002%2F10%2F30.html%23a55</comments>
			</item>
		<item>
			<title>XWork, Ognl, and type conversion</title>
			<link>http://radio.weblogs.com/0108886/categories/java/2002/10/30.html#a54</link>
			<description>&lt;P&gt;Today I spent some time on seeing if &lt;A href=&quot;http://www.ognl.org&quot;&gt;Ognl&lt;/A&gt;&amp;nbsp;would be a good choice for bean manipulation in XWork. Well, things were running well until I hit two very large snags&lt;/P&gt;
&lt;P&gt;1) Performance is the pits. I mean, Ognl is literally 25X slower than WebWork&apos;s BeanUtil method.&lt;/P&gt;
&lt;P&gt;2) Ognl, like BeanUtil, OSCore BeanUtils, and Jakarta Commons-BeanUtils, has no way to &lt;STRONG&gt;get&lt;/STRONG&gt; data in a type-specific way. This is actually more important than people tend to think. Sure, converting from input is important (setValue in all the above implementations has a way to convert data), but getting the data back in the same way we set it is equally important. Example:&lt;/P&gt;
&lt;P&gt;User inputs a date as &quot;02/12/1982&quot;. This should be calling FooAction.setBar(Date). FooAction also has a method &quot;Date getBar()&quot;. But when we display the data &lt;STRONG&gt;back&lt;/STRONG&gt; to the user, we want to display it as &quot;02/12/1982&quot; or &quot;12/02/1982&quot; or however the user first entered it. This means that type conversion needs to happen both ways, not just for setting values. So I think I&apos;ll write my own code that does this and is tuned specifically for XWork (Ognl has too much other stuff going on, which is probably why it&apos;s so much slower).&lt;/P&gt;</description>
			<guid>http://radio.weblogs.com/0108886/categories/java/2002/10/30.html#a54</guid>
			<pubDate>Thu, 31 Oct 2002 01:27:54 GMT</pubDate>
			<comments>http://radiocomments.userland.com/comments?u=108886&amp;amp;p=54&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0108886%2F2002%2F10%2F30.html%23a54</comments>
			</item>
		<item>
			<title>XWork in the works? Maybe.</title>
			<link>http://radio.weblogs.com/0108886/categories/java/2002/10/26.html#a51</link>
			<description>&lt;A href=&quot;http://radio.weblogs.com/0107789/2002/10/26.html#a993&quot;&gt;it&apos;s actually really simple&lt;/A&gt;. 
&lt;P&gt;&lt;A href=&quot;http://radio.weblogs.com/0111784/2002/10/24.html#a132&quot;&gt;Web-the_simplest_thing_that_can_possibly-Work&lt;/A&gt;. I get WebWork. Finally. For some reason I&apos;ve had a mental block on it up until now. Every time I sat down to explore it something came up, or I got bored. Finally cracked it this afternoon. Turns it I was expecting something complex, and it&apos;s actually really simple. This appeared to cause me as much (or more) mental discontinuity as when I&apos;m expecting something to be trivial, and it turns out to be much more complex. WW really is very simple, but it lacks an &apos;idiots guide&apos; which would have been very helpful to me. I&apos;ll see if I can retrace my steps and post my experiences up sometime. [&lt;A href=&quot;http://radio.weblogs.com/0111784/&quot;&gt;Pushing the envelope&lt;/A&gt;]&lt;/P&gt;
&lt;P&gt;Great! A WW idiots guide would be fantastic. Did you read Joseph Ottinger&apos;s tutorial? Maybe that would be a good starting point to collaborate on?&lt;/P&gt;
&lt;P&gt;[&lt;A href=&quot;http://radio.weblogs.com/0107789/&quot;&gt;rebelutionary&lt;/A&gt;]&lt;/P&gt;
&lt;P&gt;Yup, it&apos;s simple indeed! I&apos;ll be starting work on XWork soon (think of it as WebWork 2.0, but geared for more generic usage). Keep posted, it&apos;s going to rock!&lt;/P&gt;</description>
			<guid>http://radio.weblogs.com/0108886/categories/java/2002/10/26.html#a51</guid>
			<pubDate>Sun, 27 Oct 2002 02:05:08 GMT</pubDate>
			<source url="http://radio.weblogs.com/0107789/rss.xml">rebelutionary</source>
			<comments>http://radiocomments.userland.com/comments?u=108886&amp;amp;p=51&amp;amp;link=http%3A%2F%2Fradio.weblogs.com%2F0108886%2F2002%2F10%2F26.html%23a51</comments>
			</item>
		</channel>
	</rss>
