Tedious Spring error message, and its solution

This is a public information broadcast for the benefit of developers using Spring MVC with annotation-driven configuration.

I was a bit stumped earlier by this error on startup of my web application:

java.lang.IllegalStateException: Annotation-specified bean name ‘enterOrderNumberController’ for bean class [uk.ac.bham.ework.eb.controllers.EnterOrderNumberController] conflicts with existing, non-compatible bean definition of same name and class [uk.ac.bham.ework.eb.controllers.bookingoperations.EnterOrderNumberController]

followed by a lovely stack trace. The webapp had been running fine locally, but died as soon as I copied it across to the test server. Here is the explanation. Look carefully at those two class names in the first line again:

  • uk.ac.bham.ework.eb.controllers.EnterOrderNumberController
  • uk.ac.bham.ework.eb.controllers.bookingoperations.EnterOrderNumberController

Not the same, are they? I had been doing a little neatening-up, moving EnterOrderNumberController into a different package. On my local box, the IDE had kindly deleted the compiled version of uk.ac.bham.ework.eb.controllers.EnterOrderNumberController from WEB-INF/classes. On the test server, I had done an svn update and then just run the Ant build script, and my not-very-well-written build.xml had not cleaned up the debris from previous builds.

So I had two classes called EnterOrderNumberController in my classpath, and Spring was trying to instantiate both, but finding they both needed the same bean name, which wasn’t allowed. The solution was to get rid of the old, now-superfluous one.

The build script has now been modified.

Thank you for listening to this public information broadcast.

Unsubscribing

Well, back in February I blogged about using the RSS feed of the ESV Daily Reading Bible, and the interesting graph they have on the ESV Bible Blog of how many people are using the feed.

I am about to unsubscribe from the feed! Why? Well, some time ago I ended up buying the (real, paper-based) ESV Daily Reading Bible from Amazon. Somehow paper just works better for me for this. But I kept the RSS subscription going so the ESV folks wouldn’t think I’d given up on the daily Bible readings.

But then I noticed they say that they read nearly every blog post they can find that mentions the ESV, so thought if they read this it’s probably safe to unsubscribe.

I notice that Amazon UK now has the Daily Reading Bible listed – at the time, I had to order from Amazon.com which took nearly two months. There’s some sort of complication with selling US editions of the ESV in the UK, something to do with Harper Collins having the publishing rights to the Anglicised version. There doesn’t seem to be an Anglicised ESV Daily Reading Bible, which is a shame as the format works really well (except in a very few cases where the little notes in the margins telling you what to read each day are in slightly the wrong places).

I do hope that the ESV Study Bible will be available in UK bookshops in due course.

Favourite songs (3): The Power of the Cross

I’ve been meaning to write this one for ages. The Power of the Cross is a very powerful hymn by Keith Getty and Stuart Townend that takes us back to Good Friday and to remember how Christ “became sin for us” (2 Corinthians 5:21).

Oh, to see the dawn
of the darkest day:
Christ on the road to Calvary.
Tried by sinful men,
torn and beaten, then
nailed to a cross of wood.

This, the pow’r of the cross:
Christ became sin for us;
took the blame, bore the wrath—
we stand forgiven at the cross.

More…

Keith Getty & Stuart Townend
Copyright © 2005 Thankyou Music

The reason this post has been sitting unwritten for so long is that half of me loves this hymn and half of me finds it just too much to bear. There is a part of me that doesn’t want to see the dawn of the darkest day. I like to think I can avail of the cross of Christ whilst walking quickly by without thinking too deeply about exactly what was involved.

There is a wonderful little booklet by John Richardson, “The Eternal Cross“, reflecting on the sufferings of Christ and the place of suffering at the heart of God. He points us to John 14:8-9, “Whoever has seen me has seen the Father”, and says:

Of course, these words are also comforting to the armchair theologian who looks at Jesus healing the sick or raising the dead. It is easy to see the Father there, if we have already decided that the Father is the one who always delivers when he is called upon. But the cross confronts that illusion by saying, “Look, here is also the Father. He who sees this Christ, the Christ on the cross, has also seen the Father.” Yet crucifixion is an unpalatable sight, from which human instinct turns away. Trying to look at this to see God is like trying to look at the sun. We must force ourselves into the confrontation.

And so I sing this wonderful hymn.

On the Athanasian Creed

Until today, I don’t believe I have ever had a phrase from the Athanasian Creed pop into my head while walking through a shopping centre with my children. I don’t think I have ever actually been to a church service where the Athanasian Creed was recited, come to that.

We were returning to our car after shopping at the farmer’s market in Solihull, and had stopped for a chat with Stephen Dancer and his bookstall from Solihull Presbyterian Church. We got talking about Pierced for our Transgressions, and the importance of the doctrine of the Trinity for correctly understanding penal substitution. We must not, in our thinking about the atonement, set the persons of the Trinity at odds with each other, as if the Father were demanding blood from an uninvolved, unwilling Son. The distinct persons act together to bring about the common will of God. One purpose, yet distinct persons carrying out their different aspects of the one plan of redemption.

And then, walking along through the shopping centre as you do, a phrase from the Athanasian Creed just popped into my head: “Neither confounding the Persons : nor dividing the Substance”. Exactly.

I want a reverse Lectionary index

OK, so I’m starting work a bit early on the sermon for the Sunday after Ascension Day (4th May). The Gospel reading, this being Year A, is John 17:1-11, the first chunk of Jesus’ high priestly prayer. The question in my mind was, when does the rest of this prayer occur in the Common Worship principal service lectionary? Does it occur at all? (Some bits are notably left out of the three-year lectionary, such as Revelation 22:19.)

In the end I searched through the PDF version of Common Worship for the phrase “John 17”, which turned up the answer fairly quickly. (The answer is that John 17.6-19 is read in year B and John 17.20-26 in year C.) But before that I had tried the Index of Biblical References at the back of Common Worship (pages 823-836). I’m sure it’s a very nice index, but all it gives are the page numbers. I think what I need is some sort of Biblical index to the Lectionary that tells me where each chunk of Scripture occurs – which Sunday of the year and which year of the cycle.

Of course, all my faithful readers (ha!) from non-lectionary-compliant churches will now be wondering what on earth I’m on about.

WordPress 2.5

Fr. Gareth asks asks how people are finding the new and shiny WordPress 2.5. Basically I like it. I’ve managed to find everything I need so far. The new Media Library thingy and the the “Add media” buttons in the editor are a big plus. The visual editor feels rather more solid than before.

I duly upgraded The Parish of Elmdon. In fact, I decided to be very brave and used the WordPress Automatic Upgrade plugin to do the needful. A few minutes later everything was shiny and new, and (so far as I have been able to tell so far…) working just fine.

For the record, the parish site is currently using the following plugins:

  • Add meta tags 1.6
  • Akismet 2.1.4
  • cformsII 8.02
  • FAlbum 0.7.1
  • FeedBurner FeedSmith 2.3
  • Flickr Manager 1.5.5
  • My own Forthcoming Events widget
  • Google XML Sitemaps 3.0.3.1
  • iCal Events 1.12
  • WordPress Admin Bar 2.0.5
  • WordPress Automatic Upgrade 1.1

which is more than enough for one site.

    I must patent this idea, or something

    This evening I came up with a great idea for a web app: a site where you can key in the details of all the Lego(TM) sets you own, declare any bits you know you have lost, and it suggests new things for you to build with the bits from those combined sets. Simple!

    Now I just need to come up with an idea for actually making money doing this without getting sued by Lego(TM)…