Sam Javanrouh posts a photo a day, mostly of Toronto, where he lives. A nice daily dose of imagery.
![]() |
![]() |
Sam Javanrouh posts a photo a day, mostly of Toronto, where he lives. A nice daily dose of imagery.
![]() |
![]() |
Mark Petrovic asks: “Can you say a bit about why you are using Spring in this overall context?”—referring to my earlier post on configuring JXTA with Spring.
I suppose the reason is that over the last few years I have written several servers, mostly experimental prototypes. I quickly got tired of writing and maintaining the large amounts of “glue” code needed in almost every situation: where and how to get application configuration constants and preferences; where and how to specify which implementations of an interface to use in some particular case; etc. Then one day I picked up Rod Johnson’s Expert One-on-One J2EE Development without EJB which, in addition to being a thoughtful critique of Java architecture-as-usual is also a good introduction to Spring.
I built my next server with Spring and have never looked back. In fact, it’s so useful that I don’t consider it only for servers anymore. It’s lightweight enough to use for just about any purpose. Also, if I have to write a web application, I prefer the design of Spring MVC to Struts. And when you throw in the fact that you get declarative transactions and aspects, caching with EHCache, and countless other goodies with virtually no effort, it’s almost too good to be true.
So…I’m writing a fairly complex JXTA application (not a prototype this time) and Spring was the natural choice to make that as pain-free as possible. I hope that answers the question. I’m not by any means a Spring expert. It solves a lot of problems I encounter again and again, but it does a lot more that I haven’t even discovered yet. I will also add that it’s the best designed and written piece of code I’ve seen in many years. Just reading through the source you can learn a lot about how to craft great software.
Important update: This article is old and out of date. This method will no longer work with the current version of the JXTA platform. I am looking into what changes might be required to the platform and/or the example. I’ll post the results in a new entry and link to it here when it’s ready. I notice many people searching for JXTA+Spring configuration and landing here. Sorry for the inconvenience. VW, 23/07/2008
The new net.jxta.platform.NetworkConfigurator class provides a clean and straightforward way to configure an instance of the JXTA platform without a UI. It can be used programmatically (see the main() method for an example of stand-alone use) or—because it is a Java Bean—declaratively deployed inside containers like Spring.
Here is a simple example of a Spring context file, applicationContext-rdv.xml, which configures a Rendezvous Server:
.jxta
2752
urn:jxta:uuid-XXXXXXXXXXXXXXXXXXXXXXXXXX...
uuid-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
MyNetPG
My Infrastructure Group
com.mycompany RDV1
Rendezvous Node
user
pwd
9700
9701
And here’s what MyJxtaBean.java might look like, in part:
public class MyJxtaBean {
private NetworkConfigurator netConfig;
private PeerGroup infrastructureGroup;
public MyJxtaBean() {}
public setNetConfig(NetworkConfigurator netConfig) {
this.netConfig = netConfig;
}
public synchronized void start() {
/*
* Simplest case, we don't overwrite an existing configuration, nor
* do we load and alter/ammend it. Only if there is no PlatformConfig
* available, construct a new one using the bean's properties.
*/
if (!netConfig.exists()) {
try {
netConfig.save();
} catch (IOException io) {
System.out.println("Error saving PlatformConfig");
}
}
try {
infrastructureGroup = PeerGroupFactory.newNetPeerGroup();
} catch (PeerGroupException pge) {
System.out.println("Couldn't create NetPeerGroup");
System.exit(1);
}
}
}
Now all your applicaton has to do is get the MyJxtaBean from the context and call start() to start the JXTA platform.
applicationContext =
new ClassPathXmlApplicationContext("applicationContext-rdv.xml");
myPlatform = (MyJxtaBean)applicationContext.getBean("myJxtaBean");
myPlatform.start();
There’s more to writing a JXTA application, of course, but I hope this example demonstrates how NetworkConfigurator takes some of the mystery out of JXTA plaform configuration, while making it easy to combine JXTA and Spring.
Update: April 10, 2007 Christopher Marsh-Bourdon points out a flaw in this example when used with Spring 2.0.1. It’s related to the specification of the JXTA home directory. You can read Christopher’s analysis of Spring’s FileEditor Anomaly and solution to the probelm here. Thanks, Christopher.
“For a minute there, I lost myself…”
The second show at the Hummingbird re-affirmed my belief that Radiohead is a drug. To be taken live. As frequently as possible.
The setlist hardly matters, since last night was not just a bunch of songs strung together, but the creation of texture and atmosphere. Which is what Radiohead does best.
In contrast to Wednesday’s show, the sound was better, the band tighter and more focussed. They seemed to be in more of a mood to rock, and blessedly this time Jonny Greenwood was anything but restrained! My inner headbanger enjoyed every second of the guitar-heavy and anthemic tunes: 2+2=5, Fake Plastic Trees, Climbing Up The Walls, Karma Police, Myxomatosis, Spooks, Paranoid Android, and Just. Even the new songs sounded more aggressive than the night before, and I was reminded that despite the usual emphasis on melody, Radiohead is all about percussion.
Spine-tingling moments:
Now it’s Montreal’s turn. Lucky bastards.
It’s not that often (actually, it’s pretty much never) that your favourite live act of all times plays two shows literally across the street from where you live. Here’s my capsule review of the first show. (Stay tuned for Take 2, tomorrow night.)
First of all, I’ve never seen them in as small a venue as the Hummingbird (or the O’Keefe Centre for you old fogies). It suited them. The human scale was a nice change from the last show at the SkyDome. This time out, they seemed a lot more like a rock band and a lot less like a super-human machine. Their perfectionism can occassionally be painful, but this time they were pleasantly less rehearsed.
And more relaxed. Thom Yorke actually laughed out loud. Several times. At the audience being goofy. At himself, even—for completely flubbing the start of a song. Most Toronto fans still remember the tantrum he threw over forgetting the lyrics to Talk Show Host at Maple Leaf Gardens a few years ago.
The crowd was…enthusiastic. To the point that Yorke had to ask the audience to settle down so he could sing Exit Music. It was pretty funny listening to the crowd shushing and yelling at each other to shut up. Everyone was on their feet the entire night, and I’ve heard less cheering volume from much larger crowds.
As for the music…well, I don’t have a good enough memory to give a full set list. They opened with You And Whose Army, followed by National Anthem and Morning Bell. I sorta lost track after that. There were a lot of new songs, none of whose titles I can tell you, but several of them were great ensemble tunes. Jonny Greenwood is my guitar hero, so the feedback frenzy on Airbag was highly appreciated, as were those lovely god-awful crunches on Morning Bell. Jonny seemed a bit restrained tonight. He had some equipment problems, but made up for it by playing his guitar like a cello (yeah, with a bow) on Pyramid Song. Some of the other things he did with his guitar I can’t even describe. :-} Thom Yorke’s voice was in fine form as usual. For the first time ever, he played a drum kit along with Phil on one of the new songs. And his crazy stage dancing gets better every year…
They did a lot of old standby live favourites, as well as some odd ones, like a hyped up version of The Gloaming, and the ballad How To Disappear Completely. At least one old tune they rarely play, Street Spirit, was a 12-string treat. About the only thing I regret not hearing was My Iron Lung, because I love Jonny going wild on that one. They did two encores and closed with Everything In It’s Right Place. I’ve heard them do that tune much better, but it’s still a great way to end a show.
Well, I’m looking forward to doing that all over again tomorrow night. If they follow the pattern of the previous shows in Boston and Philadelphia, the set list will be completely different, and there should be fewer equipment glitches. If you’ve got a ticket, you’re gonna love it.
As the name of this blog suggests*, low-frequency machine noise drives me bug-fucking mad. Well, now I’m in (silent) heaven, having just bought a pair of Bose QuietComfort 2 noise-cancelling headphones.
If low frequency background noise stresses you out, I highly recommend these gadgets. They’re designed to eliminate engine noise in aircraft cabins, but they also cancel things like: idling busses, trucks, and generators; a fair bit of machine fan noise (not all); and of course…fridge compressors. You can still hear people talking and the phone ringing and all that other stuff you don’t want blocked out (unless you’ve got them plugged into your iPod, that is.) For city-dwellers, they’re a must-have. Possibly the best—and healthiest—toy I’ve ever bought myself.
*And you thought it was a reference to Radiohead, didn’t you? Well, even though it isn’t, I am definitely a fan. See you at the Hummingbird Centre Thursday night!