<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>D&#039;Arcy Norman dot net &#187; webobjects</title>
	<atom:link href="http://www.darcynorman.net/tag/webobjects/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.darcynorman.net</link>
	<description>apparently much happier in person</description>
	<lastBuildDate>Fri, 20 Nov 2009 03:52:33 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Debugging WebObjects</title>
		<link>http://www.darcynorman.net/2005/11/30/debugging-webobjects/</link>
		<comments>http://www.darcynorman.net/2005/11/30/debugging-webobjects/#comments</comments>
		<pubDate>Wed, 31 Dec 1969 17:00:00 +0000</pubDate>
		<dc:creator>dnorman</dc:creator>
				<category><![CDATA[debugging]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[pachyderm]]></category>
		<category><![CDATA[webobjects]]></category>

		<guid isPermaLink="false">1869653870</guid>
		<description><![CDATA[I got the chance to play with debugging a running WebObjects app today, with the added fun of having a roomful of 20 users of the app taking turns to mention "did you know that [X&#124;Y&#124;Z] isn't working?"

Long story short, if you need to get the status of threads of a running WebObjects app, <code>jdb</code> provides some great tools. I have only scratched the surface of it, thanks entirely to the <a href="http://homepage.mac.com/andrewlindesay/le/articles/wo-live-debug.pdf">great intro document</a> by <a href="http://homepage.mac.com/andrewlindesay/">Andrew Lindesay</a>. (Andrew recently moved his website to .Mac from some New Zealand host, so I'm linking to help throw some Google Juice his way so others can find his article)

I've put a <a href="http://wiki.ucalgary.ca/page/LearningCommons/PachydermProject/SpontaneousDocumentation#WebObjects_Java_Debugging">wikified crib sheet together</a> to make it easier to get set up.]]></description>
			<content:encoded><![CDATA[<p>I got the chance to play with debugging a running WebObjects app today, with the added fun of having a roomful of 20 users of the app taking turns to mention &#8220;did you know that [X|Y|Z] isn&#8217;t working?&#8221;</p>
<p>Long story short, if you need to get the status of threads of a running WebObjects app, <code>jdb</code> provides some great tools. I have only scratched the surface of it, thanks entirely to the <a href="http://homepage.mac.com/andrewlindesay/le/articles/wo-live-debug.pdf">great intro document</a> by <a href="http://homepage.mac.com/andrewlindesay/">Andrew Lindesay</a>. (Andrew recently moved his website to .Mac from some New Zealand host, so I&#8217;m linking to help throw some Google Juice his way so others can find his article)</p>
<p>I&#8217;ve put a <a href="http://wiki.ucalgary.ca/page/LearningCommons/PachydermProject/SpontaneousDocumentation#WebObjects_Java_Debugging">wikified crib sheet together</a> to make it easier to get set up.</p>
 <img src="http://www.darcynorman.net/wp-content/plugins/feed-statistics.php?view=1&post_id=901" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://www.darcynorman.net/2005/11/30/debugging-webobjects/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>WebObjects officially cross-platform again</title>
		<link>http://www.darcynorman.net/2005/11/10/webobjects-officially-cross-platform-again/</link>
		<comments>http://www.darcynorman.net/2005/11/10/webobjects-officially-cross-platform-again/#comments</comments>
		<pubDate>Wed, 31 Dec 1969 17:00:00 +0000</pubDate>
		<dc:creator>dnorman</dc:creator>
				<category><![CDATA[apple]]></category>
		<category><![CDATA[licensing]]></category>
		<category><![CDATA[webobjects]]></category>

		<guid isPermaLink="false">248409291</guid>
		<description><![CDATA[Apple released an update to WebObjects - <a href="http://docs.info.apple.com/article.html?artnum=302797">WO 5.3.1 Developer</a> - which includes these changes:

<blockquote>This update addresses the issues and adds support for the features listed below: (emphasis mine)

<ul><li><strong>Adds a modified Developer tools license that allows WebObjects applications developed with Xcode 2.2 to be deployed on any compatible platform</strong></li>
<li>Adds better SQL Generation in the EOModeler Plug-in design tool in Xcode</li>
<li>Improved FetchSpecification building in the EOModeler Plugin design tool in Xcode</li>
<li>Adds a "components and elements" window for improved workflow in WebObjects Builder</li>
<li>Addresses incompatibilities with Xcode 2.2 Developer tools on Mac OS X 10.4</li>
<li>Bug fixes</li></ul></blockquote>

Way to go, Apple! You had us all a bit nervous after the switch in licensing scheme at WWDC2005, but it's sooooo good to see the decision come down on the right side of the fence. This will go a <strong>long</strong> way toward helping retain/grow WebObjects usage.

I've personally been asked by several people about WebObjects' cross-platformedness (specifically by people interested in running their own Pachyderm server when it's available), and my previous "well, officially not so much, but technically - it works just fine" response was something less than optimal. Now it's a wholehearted "development is MacOSX (but free), and deployment runs on anything that can handle an app server - even open source stuff is cool"

Downloading the update now...

<strong>Update</strong>: <em>Not</em> downloading now... It's not showing up in Software Update yet, and the link on the Apple downloads site is for Server... Grabbing XCode 2.2 from connect.apple.com now, to see if it's got it included (or triggers a WO update after installing)]]></description>
			<content:encoded><![CDATA[<p>Apple released an update to WebObjects &#8211; <a href="http://docs.info.apple.com/article.html?artnum=302797">WO 5.3.1 Developer</a> &#8211; which includes these changes:</p>
<blockquote><p>This update addresses the issues and adds support for the features listed below: (emphasis mine)</p>
<ul>
<li><strong>Adds a modified Developer tools license that allows WebObjects applications developed with Xcode 2.2 to be deployed on any compatible platform</strong></li>
<li>Adds better SQL Generation in the EOModeler Plug-in design tool in Xcode</li>
<li>Improved FetchSpecification building in the EOModeler Plugin design tool in Xcode</li>
<li>Adds a &#8220;components and elements&#8221; window for improved workflow in WebObjects Builder</li>
<li>Addresses incompatibilities with Xcode 2.2 Developer tools on Mac OS X 10.4</li>
<li>Bug fixes</li>
</ul>
</blockquote>
<p>Way to go, Apple! You had us all a bit nervous after the switch in licensing scheme at WWDC2005, but it&#8217;s sooooo good to see the decision come down on the right side of the fence. This will go a <strong>long</strong> way toward helping retain/grow WebObjects usage.</p>
<p>I&#8217;ve personally been asked by several people about WebObjects&#8217; cross-platformedness (specifically by people interested in running their own Pachyderm server when it&#8217;s available), and my previous &#8220;well, officially not so much, but technically &#8211; it works just fine&#8221; response was something less than optimal. Now it&#8217;s a wholehearted &#8220;development is MacOSX (but free), and deployment runs on anything that can handle an app server &#8211; even open source stuff is cool&#8221;</p>
<p>Downloading the update now&#8230;</p>
<p><strong>Update</strong>: <em>Not</em> downloading now&#8230; It&#8217;s not showing up in Software Update yet, and the link on the Apple downloads site is for Server&#8230; Grabbing XCode 2.2 from connect.apple.com now, to see if it&#8217;s got it included (or triggers a WO update after installing)</p>
 <img src="http://www.darcynorman.net/wp-content/plugins/feed-statistics.php?view=1&post_id=871" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://www.darcynorman.net/2005/11/10/webobjects-officially-cross-platform-again/feed/</wfw:commentRss>
		<slash:comments>22</slash:comments>
		</item>
		<item>
		<title>WOFileUpload may be broken.</title>
		<link>http://www.darcynorman.net/2005/10/27/wofileupload-may-be-broken/</link>
		<comments>http://www.darcynorman.net/2005/10/27/wofileupload-may-be-broken/#comments</comments>
		<pubDate>Wed, 31 Dec 1969 17:00:00 +0000</pubDate>
		<dc:creator>dnorman</dc:creator>
				<category><![CDATA[code]]></category>
		<category><![CDATA[pachyderm]]></category>
		<category><![CDATA[webobjects]]></category>

		<guid isPermaLink="false">914321197</guid>
		<description><![CDATA[<strong>Update</strong>: Nope it ain't broken. It was purely operator error on my part - I missed an "=" sign in the .html for a component, and that was borking file uploads. It was weird, because Safari and IE would upload just fine, but Firefox would barf.

<a href="http://www.joshuaarcher.com">Josh</a> just discovered a weird behaviour in Pachyderm, where uploading files was breaking. But only on Firefox. WTF?

A quick google brought up <a href="http://www.nslog.org/archives/2005/03/wofileupload_pr.html">this post on NSLog.org</a>, via <a href="http://www.ryfar.com/cms/?q=node/39">ryfar.com</a>:

<blockquote><a href="http://www.nslog.org/archives/2005/03/wofileupload_pr.html">NSLog(@"Guido's blog");: WOFileUpload problem</a>
WOFileUpload problem

I implemented today a generic component for file uploads to my application and got "no form data left" errors from WOFileUpload.

To solve this, I added:

<code>System.setProperty("WOUseLegacyMultipartParser", "YES");</code>

to my application constructor. Works, but I'm not happy with it. Have to check back later on that topic.</blockquote>

<strong>Update</strong>: Well, that didn't fix the problem, but it may come in handy some day...

<strong>Update 2</strong>: Looks like the code mentioned above may break things rather than fixing them. We've removed it, and things are sorta working again. And, King found one cause of the exception we were seeing - a missing = sign in the <code>name="myButtonName"</code> for the submit button was causing FF to barf violently. But, we're still seeing a separate upload problem...]]></description>
			<content:encoded><![CDATA[<p><strong>Update</strong>: Nope it ain&#8217;t broken. It was purely operator error on my part &#8211; I missed an &#8220;=&#8221; sign in the .html for a component, and that was borking file uploads. It was weird, because Safari and IE would upload just fine, but Firefox would barf.</p>
<p><a href="http://www.joshuaarcher.com">Josh</a> just discovered a weird behaviour in Pachyderm, where uploading files was breaking. But only on Firefox. WTF?</p>
<p>A quick google brought up <a href="http://www.nslog.org/archives/2005/03/wofileupload_pr.html">this post on NSLog.org</a>, via <a href="http://www.ryfar.com/cms/?q=node/39">ryfar.com</a>:</p>
<blockquote><p><a href="http://www.nslog.org/archives/2005/03/wofileupload_pr.html">NSLog(@&#8221;Guido&#8217;s blog&#8221;);: WOFileUpload problem</a><br />
WOFileUpload problem</p>
<p>I implemented today a generic component for file uploads to my application and got &#8220;no form data left&#8221; errors from WOFileUpload.</p>
<p>To solve this, I added:</p>
<p><code>System.setProperty("WOUseLegacyMultipartParser", "YES");</code></p>
<p>to my application constructor. Works, but I&#8217;m not happy with it. Have to check back later on that topic.</p></blockquote>
<p><strong>Update</strong>: Well, that didn&#8217;t fix the problem, but it may come in handy some day&#8230;</p>
<p><strong>Update 2</strong>: Looks like the code mentioned above may break things rather than fixing them. We&#8217;ve removed it, and things are sorta working again. And, King found one cause of the exception we were seeing &#8211; a missing = sign in the <code>name="myButtonName"</code> for the submit button was causing FF to barf violently. But, we&#8217;re still seeing a separate upload problem&#8230;</p>
 <img src="http://www.darcynorman.net/wp-content/plugins/feed-statistics.php?view=1&post_id=837" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://www.darcynorman.net/2005/10/27/wofileupload-may-be-broken/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tomcat ♥ WebObjects?</title>
		<link>http://www.darcynorman.net/2005/10/12/tomcat-♥-webobjects/</link>
		<comments>http://www.darcynorman.net/2005/10/12/tomcat-♥-webobjects/#comments</comments>
		<pubDate>Wed, 31 Dec 1969 17:00:00 +0000</pubDate>
		<dc:creator>dnorman</dc:creator>
				<category><![CDATA[todo]]></category>
		<category><![CDATA[webobjects]]></category>

		<guid isPermaLink="false">781252847</guid>
		<description><![CDATA[This message from Jeremy Matthews just came across the WO-Deploy list, and I wanted to hurl a copy here to remind me to check it out. Looks like the latest stable build of Tomcat 5.5 may include some love for WebObjects... (emphasis mine)

<blockquote>FYI,

We just released Tomcat 5.5.12 installer for Mac OS X 10.2-10.4.2

What's New:
more than 100+ changes from the apache group; view changelogs at:  
<a href="http://jakarta.apache.org/tomcat/tomcat-5.5-doc/changelog.html">http://jakarta.apache.org/tomcat/tomcat-5.5-doc/changelog.html</a>

Changed to the newest stable distro (5.5.12)
Rewrote everything to work with the newest version (lots o' changes  
here...)
<strong>Updated Autostart script to declare WebObjects variables</strong>
Included JDBC adaptors from: Oracle, MySQL, FrontBase, OpenBase, and  
PostgreSQL
Tons of maintenance changes
Resolved some mis-declared variables

One note: If you are building the app you may need to edit  
permissions (left locked out by default for security), by running:
(I believe)
<code>sudo chmod -R a+rwx /Library/Tomcat/</code>

Download pages:
<a href="http://www.versiontracker.com/dyn/moreinfo/macosx/27151">http://www.versiontracker.com/dyn/moreinfo/macosx/27151</a>
<a href="http://www.macupdate.com/info.php/id/18567">http://www.macupdate.com/info.php/id/18567</a>
<a href="http://mac.softpedia.com/get/Development/Java/Tomcat-by-SW.shtml">http://mac.softpedia.com/get/Development/Java/Tomcat-by-SW.shtml</a>
</blockquote>]]></description>
			<content:encoded><![CDATA[<p>This message from Jeremy Matthews just came across the WO-Deploy list, and I wanted to hurl a copy here to remind me to check it out. Looks like the latest stable build of Tomcat 5.5 may include some love for WebObjects&#8230; (emphasis mine)</p>
<blockquote><p>FYI,</p>
<p>We just released Tomcat 5.5.12 installer for Mac OS X 10.2-10.4.2</p>
<p>What&#8217;s New:<br />
more than 100+ changes from the apache group; view changelogs at:<br />
<a href="http://jakarta.apache.org/tomcat/tomcat-5.5-doc/changelog.html">http://jakarta.apache.org/tomcat/tomcat-5.5-doc/changelog.html</a></p>
<p>Changed to the newest stable distro (5.5.12)<br />
Rewrote everything to work with the newest version (lots o&#8217; changes<br />
here&#8230;)<br />
<strong>Updated Autostart script to declare WebObjects variables</strong><br />
Included JDBC adaptors from: Oracle, MySQL, FrontBase, OpenBase, and<br />
PostgreSQL<br />
Tons of maintenance changes<br />
Resolved some mis-declared variables</p>
<p>One note: If you are building the app you may need to edit<br />
permissions (left locked out by default for security), by running:<br />
(I believe)<br />
<code>sudo chmod -R a+rwx /Library/Tomcat/</code></p>
<p>Download pages:<br />
<a href="http://www.versiontracker.com/dyn/moreinfo/macosx/27151">http://www.versiontracker.com/dyn/moreinfo/macosx/27151</a><br />
<a href="http://www.macupdate.com/info.php/id/18567">http://www.macupdate.com/info.php/id/18567</a><br />
<a href="http://mac.softpedia.com/get/Development/Java/Tomcat-by-SW.shtml">http://mac.softpedia.com/get/Development/Java/Tomcat-by-SW.shtml</a>
</p></blockquote>
 <img src="http://www.darcynorman.net/wp-content/plugins/feed-statistics.php?view=1&post_id=801" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://www.darcynorman.net/2005/10/12/tomcat-♥-webobjects/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Playing with Rails</title>
		<link>http://www.darcynorman.net/2005/10/11/playing-with-rails/</link>
		<comments>http://www.darcynorman.net/2005/10/11/playing-with-rails/#comments</comments>
		<pubDate>Wed, 31 Dec 1969 17:00:00 +0000</pubDate>
		<dc:creator>dnorman</dc:creator>
				<category><![CDATA[development]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[webobjects]]></category>

		<guid isPermaLink="false">685045352</guid>
		<description><![CDATA[I played around with <a href="http://www.rubyonrails.org">Rails</a> a bit today. I contrived an excuse to attempt to create a generic "event management" application. I'm familiar with the <a href="http://commons.ucalgary.ca/cgi-bin/WebObjects/Workshops.woa">basic requirements of the app</a>, and have a need to have a generalizable app available to share with groups and departments on campus. And, I want to play around with Rails and ruby to get a feel for what it can do.

Well, I had better luck than <a href="http://www.downes.ca/cgi-bin/page.cgi?post=31620">Stephen</a> did, but still not quite the magic "30 seconds from concept to production app" wonder that has been whipped up around Rails.  I was following the "<a href="http://manuals.rubyonrails.com/read/chapter/38">ToDo" howto</a> and going off in my own direction. It didn't work too well, and I've just realized that's because the ToDo chapter is written to Rails 0.9, and I've got Rails 0.8.something installed. Apparently, Big Changes were involved going to 0.9. OK - so that should discount some of these issues/hangups.

<img src='http://www.darcynorman.net/images/events_rails_app_directory.png' alt='Events Rails application directory structure' class='right' />At first, I was stumped trying to get Apache 1.3 (the stock install on MacOSX 10.4.2) playing with Rails. Thought I was following the instructions, but no joy. Gave up, and settled for the WEBrick server bundled with Rails. I got hung up for about 20 minutes because I didn't realize that <code>./script/server</code> needs to be run as <code>root</code>. I could have <em>sworn</em> that wasn't required the last time I played with Rails. Once I figured that out, I got the free "hello world" page. Great. On to application creation... It would be cool(er) if the Hello World page gave me an interface to query any models/tables I've got configured. Kinda like D2W does...

I created a simple "event" model, with an "events_controller.rb", and associated "events" views. I used the rails scripts to generate controllers and scaffolds, and ran rake to make sure it all checked out. I spent a lot of time trying to figure out which controllers should be created (Event vs. Events, and Person vs. Persons vs. People) but once I finally got the right controllers and scaffolds set up (and trimmed the excess tests from the various abortive attempts), then it was pretty clear sailing. The scaffolded app isn't extremely high end - and as I've mentioned before, WebObjects DirectToWeb does a better job in some ways. But, the Rails scaffolded app is nice and clean, and looks rather straightforward to customize/extend. "Out of the box," it gives you a barebones index (list all records), an inspect page, an edit page (with appropriate widgets - textfields, textareas, date selectors, checkboxes...), an add/insert page, and a delete function. Pretty straightforward - but still no Search. wtf. D2w does that really <em>really</em> well, even letting you pick which field to search on, and providing the appropriate widgets to help you enter search parameters.

I haven't started looking at relations/joins - tying People to Events as either presenters or attendees - but that shouldn't be <em>too</em> difficult. So far, I haven't had to "write" any code, but invoking the various generation scripts should probably count - I didn't get functionality for free, since I had to teach it via generation. D2W gives you <em>lots</em> "for free" by reverse engineering a database schema automatically. Generated code is still code - it's just written by a script.

I'm going to read up on these before digging back in, though...

<ul>
<li><a href="http://manuals.rubyonrails.com/">manuals.rubyonrails.com</a></li>
<li><a href="http://documentation.rubyonrails.com/">documentation.rubyonrails.com</a></li>
<li><a href="http://manuals.rubyonrails.com/read/chapter/38">Ruby on Rails manual - chapter 38: ToDo App</a></li>
<li><a href="http://raibledesigns.com/page/rd?entry=oscon_monday_afternoon">Raible's notes on the RoR session at OSCON2005</a></li>
<li>... and any others I find...</li>
</ul>

I have to wonder, though... If O'Reilly is such a supporter of Rails, touting it as one of the Next Big Things, wtf isn't there a book in <a href="http://safari.oreilly.com/">The O'Reilly Safari</a>???]]></description>
			<content:encoded><![CDATA[<p>I played around with <a href="http://www.rubyonrails.org">Rails</a> a bit today. I contrived an excuse to attempt to create a generic &#8220;event management&#8221; application. I&#8217;m familiar with the <a href="http://commons.ucalgary.ca/cgi-bin/WebObjects/Workshops.woa">basic requirements of the app</a>, and have a need to have a generalizable app available to share with groups and departments on campus. And, I want to play around with Rails and ruby to get a feel for what it can do.</p>
<p>Well, I had better luck than <a href="http://www.downes.ca/cgi-bin/page.cgi?post=31620">Stephen</a> did, but still not quite the magic &#8220;30 seconds from concept to production app&#8221; wonder that has been whipped up around Rails.  I was following the &#8220;<a href="http://manuals.rubyonrails.com/read/chapter/38">ToDo&#8221; howto</a> and going off in my own direction. It didn&#8217;t work too well, and I&#8217;ve just realized that&#8217;s because the ToDo chapter is written to Rails 0.9, and I&#8217;ve got Rails 0.8.something installed. Apparently, Big Changes were involved going to 0.9. OK &#8211; so that should discount some of these issues/hangups.</p>
<p><img src='http://www.darcynorman.net/images/events_rails_app_directory.png' alt='Events Rails application directory structure' class='right' />At first, I was stumped trying to get Apache 1.3 (the stock install on MacOSX 10.4.2) playing with Rails. Thought I was following the instructions, but no joy. Gave up, and settled for the WEBrick server bundled with Rails. I got hung up for about 20 minutes because I didn&#8217;t realize that <code>./script/server</code> needs to be run as <code>root</code>. I could have <em>sworn</em> that wasn&#8217;t required the last time I played with Rails. Once I figured that out, I got the free &#8220;hello world&#8221; page. Great. On to application creation&#8230; It would be cool(er) if the Hello World page gave me an interface to query any models/tables I&#8217;ve got configured. Kinda like D2W does&#8230;</p>
<p>I created a simple &#8220;event&#8221; model, with an &#8220;events_controller.rb&#8221;, and associated &#8220;events&#8221; views. I used the rails scripts to generate controllers and scaffolds, and ran rake to make sure it all checked out. I spent a lot of time trying to figure out which controllers should be created (Event vs. Events, and Person vs. Persons vs. People) but once I finally got the right controllers and scaffolds set up (and trimmed the excess tests from the various abortive attempts), then it was pretty clear sailing. The scaffolded app isn&#8217;t extremely high end &#8211; and as I&#8217;ve mentioned before, WebObjects DirectToWeb does a better job in some ways. But, the Rails scaffolded app is nice and clean, and looks rather straightforward to customize/extend. &#8220;Out of the box,&#8221; it gives you a barebones index (list all records), an inspect page, an edit page (with appropriate widgets &#8211; textfields, textareas, date selectors, checkboxes&#8230;), an add/insert page, and a delete function. Pretty straightforward &#8211; but still no Search. wtf. D2w does that really <em>really</em> well, even letting you pick which field to search on, and providing the appropriate widgets to help you enter search parameters.</p>
<p>I haven&#8217;t started looking at relations/joins &#8211; tying People to Events as either presenters or attendees &#8211; but that shouldn&#8217;t be <em>too</em> difficult. So far, I haven&#8217;t had to &#8220;write&#8221; any code, but invoking the various generation scripts should probably count &#8211; I didn&#8217;t get functionality for free, since I had to teach it via generation. D2W gives you <em>lots</em> &#8220;for free&#8221; by reverse engineering a database schema automatically. Generated code is still code &#8211; it&#8217;s just written by a script.</p>
<p>I&#8217;m going to read up on these before digging back in, though&#8230;</p>
<ul>
<li><a href="http://manuals.rubyonrails.com/">manuals.rubyonrails.com</a></li>
<li><a href="http://documentation.rubyonrails.com/">documentation.rubyonrails.com</a></li>
<li><a href="http://manuals.rubyonrails.com/read/chapter/38">Ruby on Rails manual &#8211; chapter 38: ToDo App</a></li>
<li><a href="http://raibledesigns.com/page/rd?entry=oscon_monday_afternoon">Raible&#8217;s notes on the RoR session at OSCON2005</a></li>
<li>&#8230; and any others I find&#8230;</li>
</ul>
<p>I have to wonder, though&#8230; If O&#8217;Reilly is such a supporter of Rails, touting it as one of the Next Big Things, wtf isn&#8217;t there a book in <a href="http://safari.oreilly.com/">The O&#8217;Reilly Safari</a>???</p>
 <img src="http://www.darcynorman.net/wp-content/plugins/feed-statistics.php?view=1&post_id=799" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://www.darcynorman.net/2005/10/11/playing-with-rails/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Pachyderm Asset Transformation Dilemma</title>
		<link>http://www.darcynorman.net/2005/09/22/pachyderm-asset-transformation-dilemma/</link>
		<comments>http://www.darcynorman.net/2005/09/22/pachyderm-asset-transformation-dilemma/#comments</comments>
		<pubDate>Wed, 31 Dec 1969 17:00:00 +0000</pubDate>
		<dc:creator>dnorman</dc:creator>
				<category><![CDATA[jgenerator]]></category>
		<category><![CDATA[metadata]]></category>
		<category><![CDATA[pachyderm]]></category>
		<category><![CDATA[webobjects]]></category>

		<guid isPermaLink="false">1716604306</guid>
		<description><![CDATA[The Pachyderm project uses <a href="http://www.flashgap.com/">jGenerator</a> to wrap images in a flash .swf container for display in the final product. That process does a few things that are pretty handy:

<ul>
<li>Makes loading the images into flash easy - it's just loading more flash...</li>
<li>Lets us embed metadata in a "tombstone" display field, much like the cards displayed in a museum. These tombstones travel with the asset, and can be displayed automagically wherever appropriate.</li>
<li>Provides a lightweight DRM - the images are useless outside of the finished Pachyderm presentation (unless you're able to decompile flash, or take screenshots) - it's not an overbearing DRM, just a way to make it easy to be honest.</li>
</ul>

<div align="center"><img src='http://www.darcynorman.net/images/pachyderm_tombstones.jpg' alt='Pachyderm Tombstones' /><p>(left) tombstone in "closed" state. Click the arrow widget dealie to expand it to view the full tombstone (right)</p></div>

But, we've reached a point where a bit of a dilemma has been forced upon it. Josh was describing it as <a href="http://en.wikipedia.org/wiki/Gordian_knot">Gordian</a> today, and I think the solution might be as radical as that.

The jGenerator library that we use to wrap images in .swfs has been acting more and more flakey over the last few weeks. Likely a result of increased load, we're seeing what may be some kind of funky threading or deadlock issues deep in java.awt classes, which are relied upon for jGenerator to do its magic.

So, here's our dilemma:

<ol>
<li>Keep on using jGenerator, Hoping For The Best&#8482; - we'd add some debug/babysitting code to detect the deadlock issue, and attempt to recover from it.</li>
<li>Switch to the <a href="http://www.openlaszlo.org/">OpenLaszlo</a> fork of jGenerator, hoping that they may have resolved whatever issues are plaguing it. That's kind of a blind faith option, since we don't know if/how the Laszlo folks have modified jGenerator in their fork.</li>
<li>Take the sword to the knot, and dump our legacy tombstone/drm/swf-wrapping implementation. Build a new one, from scratch, waaaay past the 11th hour. We know what we would need to do in the authoring application to support a much more robust and flexible metadata-embedding-and-display strategy. The idea that we've come up with is actually more useful in many ways, as it can be applied to any media type - not just .swf-wrapped-images. We could easily create an XML-based lookup table that the flash templates would have to consult to gather metadata about assets in a presentation. That's actually pretty straightforward to do in the authoring app, but every flash template file will need to be modified to teach it about the tombstone xml lookup...</li>
</ol>

I'm leaning quite strongly toward the third option. Let's dump the bottomless pit of jGenerator, and focus on the future. There may be a short-term solution - drop tombstones altogether for awhile, taking some time to design the new solution without rushing it. We'd have to keep a snapshot of Pachyderm running, since Mavericks relies pretty heavily on tombstones - but even that needs to be fixed, since jGenerator barfs on characters like accents...

Basically, nobody's comfortable with the status quo - it's not stable, is unreliable, and can lock up publishing altogether. The Laszlo option might work, or it might not, leaving us no further ahead. The xml-lookup option is the most solid design, but would take more time than we have. Stupid dilemmas...

<strong>Update</strong>: Chatting with Josh last night, and he came up with a potentially simpler solution. No need for a lookup table, just have one xml file per media asset - change the filename from .jpg or .mov or whatever to .xml and you have the xml definition of the tombstone for that asset. No xml file, no tombstone. Actually, that could give us a bunch of flexibility - different types of tombstones for different sizes of an asset, for instance. This would be relatively trivial to implement in the authoring app, but we need to figure out what it would take to implement something like this in the flash templates...]]></description>
			<content:encoded><![CDATA[<p>The Pachyderm project uses <a href="http://www.flashgap.com/">jGenerator</a> to wrap images in a flash .swf container for display in the final product. That process does a few things that are pretty handy:</p>
<ul>
<li>Makes loading the images into flash easy &#8211; it&#8217;s just loading more flash&#8230;</li>
<li>Lets us embed metadata in a &#8220;tombstone&#8221; display field, much like the cards displayed in a museum. These tombstones travel with the asset, and can be displayed automagically wherever appropriate.</li>
<li>Provides a lightweight DRM &#8211; the images are useless outside of the finished Pachyderm presentation (unless you&#8217;re able to decompile flash, or take screenshots) &#8211; it&#8217;s not an overbearing DRM, just a way to make it easy to be honest.</li>
</ul>
<div align="center"><img src='http://www.darcynorman.net/images/pachyderm_tombstones.jpg' alt='Pachyderm Tombstones' />
<p>(left) tombstone in &#8220;closed&#8221; state. Click the arrow widget dealie to expand it to view the full tombstone (right)</p>
</div>
<p>But, we&#8217;ve reached a point where a bit of a dilemma has been forced upon it. Josh was describing it as <a href="http://en.wikipedia.org/wiki/Gordian_knot">Gordian</a> today, and I think the solution might be as radical as that.</p>
<p>The jGenerator library that we use to wrap images in .swfs has been acting more and more flakey over the last few weeks. Likely a result of increased load, we&#8217;re seeing what may be some kind of funky threading or deadlock issues deep in java.awt classes, which are relied upon for jGenerator to do its magic.</p>
<p>So, here&#8217;s our dilemma:</p>
<ol>
<li>Keep on using jGenerator, Hoping For The Best&trade; &#8211; we&#8217;d add some debug/babysitting code to detect the deadlock issue, and attempt to recover from it.</li>
<li>Switch to the <a href="http://www.openlaszlo.org/">OpenLaszlo</a> fork of jGenerator, hoping that they may have resolved whatever issues are plaguing it. That&#8217;s kind of a blind faith option, since we don&#8217;t know if/how the Laszlo folks have modified jGenerator in their fork.</li>
<li>Take the sword to the knot, and dump our legacy tombstone/drm/swf-wrapping implementation. Build a new one, from scratch, waaaay past the 11th hour. We know what we would need to do in the authoring application to support a much more robust and flexible metadata-embedding-and-display strategy. The idea that we&#8217;ve come up with is actually more useful in many ways, as it can be applied to any media type &#8211; not just .swf-wrapped-images. We could easily create an XML-based lookup table that the flash templates would have to consult to gather metadata about assets in a presentation. That&#8217;s actually pretty straightforward to do in the authoring app, but every flash template file will need to be modified to teach it about the tombstone xml lookup&#8230;</li>
</ol>
<p>I&#8217;m leaning quite strongly toward the third option. Let&#8217;s dump the bottomless pit of jGenerator, and focus on the future. There may be a short-term solution &#8211; drop tombstones altogether for awhile, taking some time to design the new solution without rushing it. We&#8217;d have to keep a snapshot of Pachyderm running, since Mavericks relies pretty heavily on tombstones &#8211; but even that needs to be fixed, since jGenerator barfs on characters like accents&#8230;</p>
<p>Basically, nobody&#8217;s comfortable with the status quo &#8211; it&#8217;s not stable, is unreliable, and can lock up publishing altogether. The Laszlo option might work, or it might not, leaving us no further ahead. The xml-lookup option is the most solid design, but would take more time than we have. Stupid dilemmas&#8230;</p>
<p><strong>Update</strong>: Chatting with Josh last night, and he came up with a potentially simpler solution. No need for a lookup table, just have one xml file per media asset &#8211; change the filename from .jpg or .mov or whatever to .xml and you have the xml definition of the tombstone for that asset. No xml file, no tombstone. Actually, that could give us a bunch of flexibility &#8211; different types of tombstones for different sizes of an asset, for instance. This would be relatively trivial to implement in the authoring app, but we need to figure out what it would take to implement something like this in the flash templates&#8230;</p>
 <img src="http://www.darcynorman.net/wp-content/plugins/feed-statistics.php?view=1&post_id=773" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://www.darcynorman.net/2005/09/22/pachyderm-asset-transformation-dilemma/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Fun with jGenerator</title>
		<link>http://www.darcynorman.net/2005/09/19/fun-with-jgenerator/</link>
		<comments>http://www.darcynorman.net/2005/09/19/fun-with-jgenerator/#comments</comments>
		<pubDate>Wed, 31 Dec 1969 17:00:00 +0000</pubDate>
		<dc:creator>dnorman</dc:creator>
				<category><![CDATA[debugging]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[jgenerator]]></category>
		<category><![CDATA[pachyderm]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[webobjects]]></category>

		<guid isPermaLink="false">1552981435</guid>
		<description><![CDATA[We're using <a href="http://www.flashgap.com/">jGenerator</a> for the Pachyderm project - to replace the abandoned Macromedia Generator product - for wrapping images in .swf files for display within Pachyderm presentations. The .swf files provide value-add stuff like "tombstone" data, and a lightweight, unobtrusive form of DRM.

However, jGenerator has been rather neglected for 3 years now, and as a result it's starting to show cobwebs etc... Remember <a href="http://www.darcynorman.net/2005/09/09/murphy-won-this-round">my friend Murphy</a>? Largely a result of these cobwebs.

Today, days after we thought we nuked the jGenerator problem, it came back in full force. Building presentations would occasionally hang (sometimes not reliably, or sometimes very reliably). We tracked down the problem thanks to the handy dandy java debugger jdb (<a href="http://www.lindesay.co.nz/articles/wo-live-debug.pdf">handy document on using jdb in a running WebObjects app</a>), and it was the result of jGenerator using java.awt.Rectangle classes rather than java.awt.geom.Rectangle2D.

The methods had been altered to use Rectangle2D in the signatures, but were actually passing around Rectangle objects instead. This apparently causes problems on MacOSX and other Unix-like systems, as was <a href="http://www.openlaszlo.org/wiki/Feature_Wishlist#JGenerator_2.2">discovered</a> by the <a href="http://www.laszlosystems.com/">OpenLaszlo folks</a>. They had to start <a href="http://svn.openlaszlo.org/openlaszlo/lps/WEB-INF/lps/server/jgenerator-2.2/">their own fork of jGenerator 2.2</a> to <a href="http://svn.openlaszlo.org/openlaszlo/lps/WEB-INF/lps/server/jgenerator-2.2/src/org/openlaszlo/iv/flash/util/GeomHelper.java">fix this</a> (and potentially other) problems. We just did the same.

We had another round of Team Programming at a Distance - the three of us brainstorming and hacking and researching. That is soooo much more fun and rewarding than copying and pasting...]]></description>
			<content:encoded><![CDATA[<p>We&#8217;re using <a href="http://www.flashgap.com/">jGenerator</a> for the Pachyderm project &#8211; to replace the abandoned Macromedia Generator product &#8211; for wrapping images in .swf files for display within Pachyderm presentations. The .swf files provide value-add stuff like &#8220;tombstone&#8221; data, and a lightweight, unobtrusive form of DRM.</p>
<p>However, jGenerator has been rather neglected for 3 years now, and as a result it&#8217;s starting to show cobwebs etc&#8230; Remember <a href="http://www.darcynorman.net/2005/09/09/murphy-won-this-round">my friend Murphy</a>? Largely a result of these cobwebs.</p>
<p>Today, days after we thought we nuked the jGenerator problem, it came back in full force. Building presentations would occasionally hang (sometimes not reliably, or sometimes very reliably). We tracked down the problem thanks to the handy dandy java debugger jdb (<a href="http://www.lindesay.co.nz/articles/wo-live-debug.pdf">handy document on using jdb in a running WebObjects app</a>), and it was the result of jGenerator using java.awt.Rectangle classes rather than java.awt.geom.Rectangle2D.</p>
<p>The methods had been altered to use Rectangle2D in the signatures, but were actually passing around Rectangle objects instead. This apparently causes problems on MacOSX and other Unix-like systems, as was <a href="http://www.openlaszlo.org/wiki/Feature_Wishlist#JGenerator_2.2">discovered</a> by the <a href="http://www.laszlosystems.com/">OpenLaszlo folks</a>. They had to start <a href="http://svn.openlaszlo.org/openlaszlo/lps/WEB-INF/lps/server/jgenerator-2.2/">their own fork of jGenerator 2.2</a> to <a href="http://svn.openlaszlo.org/openlaszlo/lps/WEB-INF/lps/server/jgenerator-2.2/src/org/openlaszlo/iv/flash/util/GeomHelper.java">fix this</a> (and potentially other) problems. We just did the same.</p>
<p>We had another round of Team Programming at a Distance &#8211; the three of us brainstorming and hacking and researching. That is soooo much more fun and rewarding than copying and pasting&#8230;</p>
 <img src="http://www.darcynorman.net/wp-content/plugins/feed-statistics.php?view=1&post_id=770" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://www.darcynorman.net/2005/09/19/fun-with-jgenerator/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Murphy: 1, D&#8217;Arcy: 1</title>
		<link>http://www.darcynorman.net/2005/09/11/murphy-1-darcy-1/</link>
		<comments>http://www.darcynorman.net/2005/09/11/murphy-1-darcy-1/#comments</comments>
		<pubDate>Wed, 31 Dec 1969 17:00:00 +0000</pubDate>
		<dc:creator>dnorman</dc:creator>
				<category><![CDATA[debugging]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[pachyderm]]></category>
		<category><![CDATA[rants]]></category>
		<category><![CDATA[webobjects]]></category>

		<guid isPermaLink="false">1635585624</guid>
		<description><![CDATA[After what felt like a <strong>very</strong> long weekend of debugging jGenerator, I finally figured out what was going wrong, and how to fix it. It didn't make sense at all, which is why I didn't pursue that line of investigation earlier. The library worked fine before. It hadn't changed. Then it didn't work. I was figuring that meant something outside of the library had changed, and had borked something used by jGenerator.

Whatever the cause, I wound up using a java decompiler (jad) to figure out exactly where the problem was, while comparing to the versions of available jGenerator source code. I removed what appeared to be the offending line (calling Log.logRB() - which is a utility log method within jGenerator), and recompiled a fresh copy of jgen.jar using the Ant build script.

Deployed that sucker, restarted the Mavericks instance of the Pachyderm authoring app, and cést voila! I had it working early this morning, then published fresh copies of all of the Mavericks sections for review. *touches wood* It's working great now!

So... in the future, when debugging something that isn't behaving as expected... <strong>throw away all assumptions</strong> - no matter how "sure" you are about something, <strong>test and verify each and every line of investigation</strong>.

OK. Murphy, you can go to hell now...]]></description>
			<content:encoded><![CDATA[<p>After what felt like a <strong>very</strong> long weekend of debugging jGenerator, I finally figured out what was going wrong, and how to fix it. It didn&#8217;t make sense at all, which is why I didn&#8217;t pursue that line of investigation earlier. The library worked fine before. It hadn&#8217;t changed. Then it didn&#8217;t work. I was figuring that meant something outside of the library had changed, and had borked something used by jGenerator.</p>
<p>Whatever the cause, I wound up using a java decompiler (jad) to figure out exactly where the problem was, while comparing to the versions of available jGenerator source code. I removed what appeared to be the offending line (calling Log.logRB() &#8211; which is a utility log method within jGenerator), and recompiled a fresh copy of jgen.jar using the Ant build script.</p>
<p>Deployed that sucker, restarted the Mavericks instance of the Pachyderm authoring app, and cést voila! I had it working early this morning, then published fresh copies of all of the Mavericks sections for review. *touches wood* It&#8217;s working great now!</p>
<p>So&#8230; in the future, when debugging something that isn&#8217;t behaving as expected&#8230; <strong>throw away all assumptions</strong> &#8211; no matter how &#8220;sure&#8221; you are about something, <strong>test and verify each and every line of investigation</strong>.</p>
<p>OK. Murphy, you can go to hell now&#8230;</p>
 <img src="http://www.darcynorman.net/wp-content/plugins/feed-statistics.php?view=1&post_id=760" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://www.darcynorman.net/2005/09/11/murphy-1-darcy-1/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Automator for Deploying WebObjects Application</title>
		<link>http://www.darcynorman.net/2005/08/24/automator-for-deploying-webobjects-application/</link>
		<comments>http://www.darcynorman.net/2005/08/24/automator-for-deploying-webobjects-application/#comments</comments>
		<pubDate>Wed, 31 Dec 1969 17:00:00 +0000</pubDate>
		<dc:creator>dnorman</dc:creator>
				<category><![CDATA[development]]></category>
		<category><![CDATA[developmenttools]]></category>
		<category><![CDATA[pachyderm]]></category>
		<category><![CDATA[projects]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[webobjects]]></category>
		<category><![CDATA[xcode]]></category>

		<guid isPermaLink="false">27039700</guid>
		<description><![CDATA[For the Pachyderm project, we wanted a way to automatically update, build and deploy a WebObjects application and its supporting framework. The initial reaction was to just use a shell script, with <code>xcodebuild</code> running on the server to build the appropriate projects.

That didn't work for us, because our server is still running 10.3 (with the appropriate older XCode dev. kit), while we've moved on to 10.4 and XCode 2.1 for development- so our server can't understand the .xcodeproj files and barfs appropriately. Doh.

So, King and I whipped up an Automator-based workflow that runs on one of our dev. boxes. It first runs a shell script to update the source code from subversion, then builds the framework and application. It then runs a shell script to record the subversion revision number in a file in the compiled application (so we can display the revision number for bug reports etc... and not pollute our source code with revision numbers). Then, it connects to the server over afp, moves the old build products out of the way, and copies the new ones into place. About an hour later, WOMonitor comes through and cycles the app.

Basically, there is one "master" workflow that runs several nested workflows. This "master" is saved as an application, and I've set iCal to launch it every morning at 1:00am.

Yes. Source code management and enterprise application deployment with Automator and iCal :-)

It seems to work well, but we initially had some permissions problems. It will also make it trivial for use to update the app at will.]]></description>
			<content:encoded><![CDATA[<p>For the Pachyderm project, we wanted a way to automatically update, build and deploy a WebObjects application and its supporting framework. The initial reaction was to just use a shell script, with <code>xcodebuild</code> running on the server to build the appropriate projects.</p>
<p>That didn&#8217;t work for us, because our server is still running 10.3 (with the appropriate older XCode dev. kit), while we&#8217;ve moved on to 10.4 and XCode 2.1 for development- so our server can&#8217;t understand the .xcodeproj files and barfs appropriately. Doh.</p>
<p>So, King and I whipped up an Automator-based workflow that runs on one of our dev. boxes. It first runs a shell script to update the source code from subversion, then builds the framework and application. It then runs a shell script to record the subversion revision number in a file in the compiled application (so we can display the revision number for bug reports etc&#8230; and not pollute our source code with revision numbers). Then, it connects to the server over afp, moves the old build products out of the way, and copies the new ones into place. About an hour later, WOMonitor comes through and cycles the app.</p>
<p>Basically, there is one &#8220;master&#8221; workflow that runs several nested workflows. This &#8220;master&#8221; is saved as an application, and I&#8217;ve set iCal to launch it every morning at 1:00am.</p>
<p>Yes. Source code management and enterprise application deployment with Automator and iCal <img src='http://www.darcynorman.net/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>It seems to work well, but we initially had some permissions problems. It will also make it trivial for use to update the app at will.</p>
 <img src="http://www.darcynorman.net/wp-content/plugins/feed-statistics.php?view=1&post_id=750" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://www.darcynorman.net/2005/08/24/automator-for-deploying-webobjects-application/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WebObjects Deployment and Servlet Single Directory</title>
		<link>http://www.darcynorman.net/2005/06/08/webobjects-deployment-and-servlet-single-directory/</link>
		<comments>http://www.darcynorman.net/2005/06/08/webobjects-deployment-and-servlet-single-directory/#comments</comments>
		<pubDate>Wed, 31 Dec 1969 17:00:00 +0000</pubDate>
		<dc:creator>dnorman</dc:creator>
				<category><![CDATA[apple]]></category>
		<category><![CDATA[webobjects]]></category>
		<category><![CDATA[wwdc]]></category>
		<category><![CDATA[wwdc2005]]></category>

		<guid isPermaLink="false">1873253013</guid>
		<description><![CDATA[<strong>Update:</strong> Added some details of the build settings for converting an existing WebObjects Application project to a tidy servlet deployment package.

King, Josh and I spent the morning in the WebObjects lab trying to figure out a way to get Pachyderm deployed on non-MacOSX boxes under the new regime. We've now got a spanky new Tomcat-enabled build, that sucks in all of the supporting WebObjects, APOLLO, and Pachyderm jars into a single .war - topping 112MB of compiled goodness.

The good news is that it works, and seems to work well (once you have identified and addressed the mines laid in your path). The bad news is that form of deployment requires a valid WebObjects deployment license - which is no longer available separately from MacOSX Server 10.4 (for WO 5.3 at least - separate deployment licenses are still available for 5.2.4, but they are refused by apps compiled on 5.3)

A very helpful Apple engineer in the lab (who will remain nameless to protect him/her from any flak for going out on a limb to help us with this) was able to obtain a WO 5.3 deployment license string for us to test our Tomcat deployment. It looks like it worked perfectly. I had to delete the license so this engineer could keep their job, so I can't test again, or on another platform at the moment.

One strategy we may have/get to adopt is to keep a WO 5.2.4 development system around, so that it can compile the .war SSD bundle with a 5.2.4 platform-agnostic deployment license - That's plan B, though, since I'm really (futilely?) hoping that we can convince Apple to reconsider the MacOSX-only licensing. (I'm even 100% OK with non-MacOSX Server deployments being unsupported - just don't make the app refuse to light up  because of a license string!)

I'll post a little write-up on the steps we had to take, and the build settings that need twiddling - and how they differ from the documented bits. That's currently locked on my Powerbook, which is now a paperweight after sucking the life-sustaining juices from 2 separate batteries. I'll plug it in when I get back to the hotel.

Oh, and to the person that IMed me to ask me about this - your timing was absolutely perfect! We were just getting to the solution when your IM came up. I'm very sorry that I was such a rude prick to you, but I didn't want to be distracted right then, and we were using iChat to pass config files and data around.

<strong>Update:</strong> Here's some info about the settings you need to tweak to have a project build as a nice tidy servlet doowackie.

First, you need to add JavaWOJSPServlet.framework to your project. That seems to automagically do some stuff to start building a .war file. Yay.

But, you also need to tell WebObjects more explicitly how you want your servlet compiled. These are the settings that worked for me. No warrantee, no guarantee, YMMV, IANAL, etc... If it borks something for you, well you probably should have backed up first...

<div align="center"><img src='http://www.darcynorman.net/images/webobjects_servlet_build_se.png' alt='WebObjects Servlet Build Settings' /></div>

Replace the fuzzy part with your WebObjects deployment license (5.2.4 would be a good bet, if you're still on it - otherwise, you may want to take a look in <code>/System/Library/Frameworks/JavaWebObjects.framework/Resources/</code> for some random ASCII that might do the trick - just be sure to abide by the EULA, and don't break your license agreement. I'm only mentioning this so you can test on your own machine, and replace the license with one you purchase for deployment), and replace the SERVLET_WEBAPPS_DIR with the path to the directory you want to build this sucker. I just built into a quick/fresh download of Tomcat 3.3.2, still living in my ~/Downloads directory. Not likely the final deployment directory, but you get the idea. Also, this could be any directory you like. It's just the build location - it doesn't talk to the Tomcat installation or anything.

In my case, this built a directory that contained 112MB of our code, as well as the Entire WebObjects System, and any other dependent .jars.

<strong>Update the second:</strong> On a lark, I thought I'd try deploying under Tomcat 5.5.9 - the latest build. Out of the .tar, it requires java 1.5, so until you install the 1.4 compatability stuff it's no joy on MacOSX. But adding the compatability stuff is trivial. But, it still doesn't get my app deployed - as expected, Tomcat 5.x appears to have difficulty hosting a WebObjects application servlet, since it's supporing a newer rev. of the servlet spec (2.4, IIRC), when WO spits out servlets matching version 2.2 of the servlet spec.  Not a critical thing at this point. Just gathering data points for discussions with the PHBs.]]></description>
			<content:encoded><![CDATA[<p><strong>Update:</strong> Added some details of the build settings for converting an existing WebObjects Application project to a tidy servlet deployment package.</p>
<p>King, Josh and I spent the morning in the WebObjects lab trying to figure out a way to get Pachyderm deployed on non-MacOSX boxes under the new regime. We&#8217;ve now got a spanky new Tomcat-enabled build, that sucks in all of the supporting WebObjects, APOLLO, and Pachyderm jars into a single .war &#8211; topping 112MB of compiled goodness.</p>
<p>The good news is that it works, and seems to work well (once you have identified and addressed the mines laid in your path). The bad news is that form of deployment requires a valid WebObjects deployment license &#8211; which is no longer available separately from MacOSX Server 10.4 (for WO 5.3 at least &#8211; separate deployment licenses are still available for 5.2.4, but they are refused by apps compiled on 5.3)</p>
<p>A very helpful Apple engineer in the lab (who will remain nameless to protect him/her from any flak for going out on a limb to help us with this) was able to obtain a WO 5.3 deployment license string for us to test our Tomcat deployment. It looks like it worked perfectly. I had to delete the license so this engineer could keep their job, so I can&#8217;t test again, or on another platform at the moment.</p>
<p>One strategy we may have/get to adopt is to keep a WO 5.2.4 development system around, so that it can compile the .war SSD bundle with a 5.2.4 platform-agnostic deployment license &#8211; That&#8217;s plan B, though, since I&#8217;m really (futilely?) hoping that we can convince Apple to reconsider the MacOSX-only licensing. (I&#8217;m even 100% OK with non-MacOSX Server deployments being unsupported &#8211; just don&#8217;t make the app refuse to light up  because of a license string!)</p>
<p>I&#8217;ll post a little write-up on the steps we had to take, and the build settings that need twiddling &#8211; and how they differ from the documented bits. That&#8217;s currently locked on my Powerbook, which is now a paperweight after sucking the life-sustaining juices from 2 separate batteries. I&#8217;ll plug it in when I get back to the hotel.</p>
<p>Oh, and to the person that IMed me to ask me about this &#8211; your timing was absolutely perfect! We were just getting to the solution when your IM came up. I&#8217;m very sorry that I was such a rude prick to you, but I didn&#8217;t want to be distracted right then, and we were using iChat to pass config files and data around.</p>
<p><strong>Update:</strong> Here&#8217;s some info about the settings you need to tweak to have a project build as a nice tidy servlet doowackie.</p>
<p>First, you need to add JavaWOJSPServlet.framework to your project. That seems to automagically do some stuff to start building a .war file. Yay.</p>
<p>But, you also need to tell WebObjects more explicitly how you want your servlet compiled. These are the settings that worked for me. No warrantee, no guarantee, YMMV, IANAL, etc&#8230; If it borks something for you, well you probably should have backed up first&#8230;</p>
<div align="center"><img src='http://www.darcynorman.net/images/webobjects_servlet_build_se.png' alt='WebObjects Servlet Build Settings' /></div>
<p>Replace the fuzzy part with your WebObjects deployment license (5.2.4 would be a good bet, if you&#8217;re still on it &#8211; otherwise, you may want to take a look in <code>/System/Library/Frameworks/JavaWebObjects.framework/Resources/</code> for some random ASCII that might do the trick &#8211; just be sure to abide by the EULA, and don&#8217;t break your license agreement. I&#8217;m only mentioning this so you can test on your own machine, and replace the license with one you purchase for deployment), and replace the SERVLET_WEBAPPS_DIR with the path to the directory you want to build this sucker. I just built into a quick/fresh download of Tomcat 3.3.2, still living in my ~/Downloads directory. Not likely the final deployment directory, but you get the idea. Also, this could be any directory you like. It&#8217;s just the build location &#8211; it doesn&#8217;t talk to the Tomcat installation or anything.</p>
<p>In my case, this built a directory that contained 112MB of our code, as well as the Entire WebObjects System, and any other dependent .jars.</p>
<p><strong>Update the second:</strong> On a lark, I thought I&#8217;d try deploying under Tomcat 5.5.9 &#8211; the latest build. Out of the .tar, it requires java 1.5, so until you install the 1.4 compatability stuff it&#8217;s no joy on MacOSX. But adding the compatability stuff is trivial. But, it still doesn&#8217;t get my app deployed &#8211; as expected, Tomcat 5.x appears to have difficulty hosting a WebObjects application servlet, since it&#8217;s supporing a newer rev. of the servlet spec (2.4, IIRC), when WO spits out servlets matching version 2.2 of the servlet spec.  Not a critical thing at this point. Just gathering data points for discussions with the PHBs.</p>
 <img src="http://www.darcynorman.net/wp-content/plugins/feed-statistics.php?view=1&post_id=699" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://www.darcynorman.net/2005/06/08/webobjects-deployment-and-servlet-single-directory/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
	</channel>
</rss>
