GlassFish 3.1 just shipped with clustering, JBoss AS 6 is everywhere on mailing lists, and Tomcat holds steady for teams that want lean and fast. In the middle of that talk sits Apache Geronimo. We spent real cycles putting it through its paces on a couple of apps and promised…
Category: Software Architecture
System design patterns, architectural decisions, and scalability strategies. Building robust, performant systems that stand the test of time.
JSP Includes and Tag Files: Templating That Works
\n Templating in JSP does not need to hurt.Between includes and tag files you can get clean pages, fast builds, and zero drama. \n\n When people say JSP is messy, they are usually fighting the wrong battle. The quick wins sit right in front of us with JSP includes: the…
Java Collections in Practice: Choosing the Right List or Map
Java Collections in Practice: Choosing the Right List or Map Picking the right collection is not a theory exercise. It decides how many servers you need, how long a page takes to render, and whether a late night pager wakes you up. I keep seeing the same mistakes in code…
Testing OSGi Bundles: Isolation that Helps
Why does testing an OSGi bundle feel trickier than testing a plain JAR? OSGi bundle testing has a reputation for being hard because the thing you ship is not a jar that sits alone. It joins a living world with a service registry, dynamic lifecycle, and class loaders that do…
Versioning and Dependencies in OSGi
New year. Quiet office. The build light was green for days and I thought we were ready to ship our OSGi based app on Monday. I pulled a last minute update for a library that fixed one tiny bug in our billing module. Dropped the new bundle in the Equinox…
Switching Between Embedded and External Databases Seamlessly
Switching between embedded and external databases without drama sounds like a wish. Tonight it was a need. I was helping a team push a small Java app to a staging box while we still had late night coffee and a buzz from new toys like Tomcat 7 and Maven 3….
Scaling Search with Sharding and Caching
Search is eating more of our apps every week. Index sizes grow, queries pile up, and the moment you add faceting, snippets, and sorting by freshness, your single Lucene box starts to sweat. Solr makes a lot of this smoother, and Lucene 3 is a beast in the best sense,…
JSP in Moderation: Keeping Views Thin
Are your JSPs carrying more weight than they should? Do you feel that every small tweak needs a hunt across five files and a guess about what the controller is secretly doing? Are you copy pasting error handling and formatting logic in every view, hoping it will not bite you…
State and Session: Performance Considerations in JSF
JSF is great at hiding plumbing, but it does not hide the bill. The first time you watch a heap chart on a busy JSF app, you can almost hear the memory pressure. Tabs pile up, user flows bounce between forms, and your poor session grows like a backpack filled…
Rapid Application Development without Regret
\n \n\n It was past midnight, the sprint board looked like a graveyard, and a client demo sat on the calendar with a red circle. I hit Rails scaffold, pointed it at the schema, and watched screens appear like popcorn. The room exhaled. A week later the real work began,…