Friday, September 01, 2006

The (Bill) Joy of Technology

As I previously mentioned, we're doing a proof-of-concept with two Content Management System. The idea behind this is to consolidate all of our websites into a single development environment to standardize navigation, look and feel, etc. There was a project to do this two years ago that imploded (I wasn't involved, but if you ask me the vendor sold us fantasyware) so this time around we decided to play with each system for a few weeks to really understand it before we chose one.



We're winding down our work on the first system, and yesterday we showed our work to a panel of department super users (including the Dean of the College of Science and the Assistant Dean of the College of Liberal Arts) to get their feedback. I couldn't have asked for a better reaction, they were very pleased with the due dilligance we had done (we had an answer for every one of their questions) and they loved what we showed them.



With that out of the way, I started working on the installation of the second system. We start the proof-of-concept on that September 18th. This application does templating using XML/XSLT and is build using Enterprise Java Beans (EJB) that run inside JBOSS. Having followed their install instructions, I was immediately greeted by 2MB of thread dumps (which is about 2 billions lines of "go fuck yourself".

09:48:28,581 ERROR [EntityContainer] Starting failed jboss.j2ee:jndiName=ejb/FolderContainedEntity,service=EJB
org.jboss.deployment.DeploymentException: Error while fixing table name; - nested throwable: (org.jboss.util.NestedSQLException: Could not create connection; - nested throwable: (java.sql.SQLException: Unable to connect to any hosts due to exception: java.net.ConnectException: Connection refused); - nested throwable: (org.jboss.resource.JBossResourceException: Could not create connection; - nested throwable: (java.sql.SQLException: Unable to connect to any hosts due to exception: java.net.ConnectException: Connection refused)))
at org.jboss.ejb.plugins.cmp.jdbc.SQLUtil.fixTableName(SQLUtil.java:196)
at org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCEntityBridge.init(JDBCEntityBridge.java:143)


Alright then. I made a few changes (clickity click) and fired it up again, basically the same mess. I dug through the errors a little deeper and found this:

ObjectName: jboss.j2ee:service=EJB,plugin=pool,jndiName=ejb/Page
state: CREATED
I Depend On:
Depends On Me:
ObjectName: jboss.j2ee:service=EJB,plugin=pool,jndiName=ejb/BaseEntity
state: CREATED
I Depend On:
Depends On Me:
ObjectName: jboss.j2ee:service=EJB,plugin=pool,jndiName=ejb/Mail
state: CREATED
I Depend On:
Depends On Me:


::scratches head::

I had a little chat with Will about it:

theAlphaJohn: i already hate [the second CMS system]
Will: uh oh
Will: did they steal your lunch money?
theAlphaJohn: if only
theAlphaJohn: it just shit out like 2MB of error messages (that's like 2 billion lines of text)
Will: yeah
theAlphaJohn: This is what would happen if Java wrote song lyrics:
theAlphaJohn: [sends error]
theAlphaJohn: I DEPEND ON (dot dot dot)
theAlphaJohn: (DOT DOT DOT) depends on me
theAlphaJohn: beep beep *blink* *blink*
Will: haha


This is one of the things I dislike about cutting/bleeding/clotting-edge technology. Make no mistake fuckers, I am a 1337-@ss mofo right up in here, but 2 billion lines of "java.net.io.doucebag exception error: fuckface thread dump unpacking ejb container go fuck yourself......" does not help me find the problem. It's not like I'm stepping through your code in a debugger or working through it in JUnit. And even if I could, why would I then pay you for it if I had to do that?

In the old days (circa 2003), we used to get an exception and the program would abend and leave us a tasty core dump and a stack trace to find our way back to the problem. Most people don't find that helpful, but you can work with it. Volumes of exploding Java methods are not going to lead me back to the missing configuration file the vendor didn't provide me with, now are they?

No comments: