
Panther Server comes with JBoss already installed, but buried in a FAQ on Apple's developer site is the fact that you can install the same JBoss environment in a non-server Panther environment (such as my PowerBook) by checking the "Java Application Servers Development" option under "Customize" in the Xcode Tools installer. JBoss gets installed under /Library/JBoss.
See also: "Developer Tools JBoss and Tomcat Do Not Start After Installing Java 1.4.2 Update". I followed these instructions before even attempting to start JBoss, and encountered no problems.
But what about Tomcat 5?
If you happen to be playing with the examples from Hans Bergsten's JavaServer Pages, 3rd Edition, you're probably wondering (like I did for the last half hour) why the /ora/ch5/easy.jsp example kept bombing out with an error about the uri http://java.sun.com/jsp/jstl/core.
It's a JSTL 1.0 vs JSTL 2.0 (and therefore a Tomcat 4 vs Tomcat 5 thing), and although there's not official Apple installer for Tomcat 5 Elizabeth Lane Lawley has graciously posted excellent instructions for installing Tomcat 5 on OS X on her site. Thanks, Elizabeth.
Finally, after finding fragments of the necessary code hither and yon across the aether, I pieced together the steps necessary to kill duplicate messages in Mail.app. I keep winding up with multiple copies of old messages in Mac OS X (Panther) Mail when, for some reason, either the server or the mail app itself decides it's time to re-download hundreds of previous emails every month or so.
The example here partially fixes a broken script in a comment on Macosxhints.com, but I was still having trouble with it. Finally, this is what I came up with that seemed to work.
(For the love of pete, back up all of your mail before doing anything like this. Attempt this at your own risk, I disavow all responsibility for lost data, et cetera.)
Create a shell script wherever it is you like to put shell scripts, say /usr/local/bin, and name it something like maildedupe.sh. Be sure to chmod so as to be executable. In the script, put the following:
#!/bin/sh echo "Deduping $1..." formail -D 1000000 idcache '$1.ztmp' && mv '$1.ztmp' '$1' rm idcache
This is basically the same as Jeremy's script linked above, with a couple of improvements:
To auto-run this script an all of your mailboxes automagically (You did back them up, right?), go to the terminal, and type
cd ~/Library/Mail
Then type:
find . -name 'mbox' -exec /usr/local/bin/maildedupe.sh {} \;
All of the affected messages will suddenly appear as being unread, but at least you won't have more than one copy of each any more.