This is my first post since moving to Los Angeles. It's been a busy couple of months to say the least. That's why I haven't posted in a while in case you were wondering. I'm currently working at a cloud computing consulting company. However I'm mostly working on java applications including a JBoss application server. My previous job back in Virginia where I worked on flight aviation software also required me to work with a JBoss application server. To be honest, even though I worked on it for over a year I never really understood JBoss really. Ok I know there is an ApplicationContext, and that there are components like JMS, JMX, etc. I understood the basic concept of an application server but I never really had to setup one up before or deal with any of the configuration of it. Usually I just modify some code, replace the war file on the server, and then kill the java process with the good old fashioned:

> ps -ef | grep java

and then kill that JBoss java process. After that just use some JBoss start up script that someone has already wrote for me. But for my current job now I actually needed to modify some actual JBoss configuration files and understand how to setup a JBoss server. All I can say that I thought I was a big fan of application servers but after going through that I now hate them with a passion. Application servers are great, if everything is already setup for you and you only add or modify current functionality.

Very easy, everything is abstracted for you since you can use Spring to do dependency injection. Oh also there's Apache Axis to abstract web service modules. Oh yeah also there's JNDI to make configuration easier. Oh yeah there's JMS to make communicating between components easy, they have an interface for that. Oh yeah there's an ORM database framework like Hibernate that way you can use DAOs instead of using that evil horrific SQL language. You just need to use the JDBC template with the EntityManager and make sure all your config files are setup correctly.

JBoss sounds nice in theory and a one size fits all package where it's basically all you need to create a web application. I'm not very old so it's going to sound strange saying this but I miss the old days where I can understand what an application is doing by reading code. But with JBoss or any application server for that matter it feels like reading code is only the beginning. The real battle is crawling your way though XML files trying to find what the heck is going on. And you can't hook up a debugger to XML files. I don't know maybe call me old school but I don't like too much abstraction. What usually happens with these application servers is that feature after feature is added like Spring, Axis, JMS, JNDI what have you, and then the application becomes bloated with ridiculous amounts of configuration files. Getting Hiberante to work with Spring JDBC templates is probably the most confusing thing in the world. Why can't I just do

SELECT * FROM MY_TABLE

Nope gotta abstract that, and make you jump through lots of hoops to get there because ABSTRACTION, have to be ABSTRACT or else we might as well go back to the caveman time and drive our car with our feet.

Even to this day, I worked on a JBoss application server for almost two years, I still don't really understand what was actually happening. I could get things do what I wanted after a while but still never understood why it was working. I hate that.

Maybe I'm just too angry right now and that JBoss, Spring, Application servers are the greatest things in the world and I'm just a bitter old man.