- Full support for the hibernate-session-per-conversation pattern. See hibernate.org for more.
- fixed wrong unsaved-value-mapping
Sunday, January 15, 2006
With Kickstart 0.2 Tapestry supports the hibernate session-per-conversation pattern out of the box
I've uploaded a new release of KickStart. Improvements are:
Saturday, January 07, 2006
KickStart integrates Tapestry with Hibernate for painless full-stack web-dev-support
While Web-Development with Java is supported by a variety of great frameworks it is still not easy (even tedious) to, firstly, choose the right ones for a given problem and, secondly, make them work together. (needless to refer to all the envious appraisals of RoR and, yes, even Visual-Studio by Java-developers).
I've set up a Sourceforge project, called KickStart, (first download available right now!). It's goal is to get newbies started with the most cutting edge JEE-stuff immediately, and even more important, to provide a platform to discuss the non-trivial task of glueing together the most powerful of the existing Java-frameworks into something that "just works". I believe that all the interesting problems (and solution-patterns) of framework integration patterns recurring in mailing lists and wikis deserve being collected and made available in the form of preconfigured templates for whole applications.
Kickstart strives to provide a selection of integration-patterns with well defined domains of application. Each pattern comes with a complete template application getting you kickstarted with your application in minutes.
For the time being, Kickstart is based on Tapestry, Hivemind and Hibernate. Also, Kickstart is in an early state. While it works, there's only one application pattern and template supported right now. But nevertheless, please try it and tell me whether it works for you.
I've set up a Sourceforge project, called KickStart, (first download available right now!). It's goal is to get newbies started with the most cutting edge JEE-stuff immediately, and even more important, to provide a platform to discuss the non-trivial task of glueing together the most powerful of the existing Java-frameworks into something that "just works". I believe that all the interesting problems (and solution-patterns) of framework integration patterns recurring in mailing lists and wikis deserve being collected and made available in the form of preconfigured templates for whole applications.
Kickstart strives to provide a selection of integration-patterns with well defined domains of application. Each pattern comes with a complete template application getting you kickstarted with your application in minutes.
For the time being, Kickstart is based on Tapestry, Hivemind and Hibernate. Also, Kickstart is in an early state. While it works, there's only one application pattern and template supported right now. But nevertheless, please try it and tell me whether it works for you.
Sunday, October 23, 2005
Finally no more clob-clipping: Oracle 10g supports standard JDBC CLOB-handling
The new enhancements in Oracle JDBC 10g promises to simplify the insertion and retrieval techniques for the CLOBs using the standard APIs.
Just discovered the above link after trying to use Oracle's thin JDBC-Driver with Hibernate to save CLOB-data ... This automatically and silently nullifies the CLOB-field when you try to save more then 4k to it which you are likely to do -- after all it's called a cLob.
Now, finally this seems to be fixed in the 10g-JDBC driver. Up to now, it seems to work fine with our somewhat dated 8i installation. Keep my fingers crossed that it stays that way. I'd hate having to resort to the fat oci-driver ...
Wednesday, October 19, 2005
Apache DBCP - never forget maxWait
Had some not so cozy hours debugging a productive app on Tomcat. The thing would spontaneously hang about once a day (The whole of Tomcat, apart from JMX was completely hung). It hung in an infinite wait in the Database-Pool. Funnily the default of the maxWait-Param is "-1", i.e. infinitely. Now, after I fixed this it runs nicely.
But it's still not clear to me, where the total deadlock came from... Maybe some thread which would not release it's connection before it got another one (to a different DB).
But it's still not clear to me, where the total deadlock came from... Maybe some thread which would not release it's connection before it got another one (to a different DB).
Wednesday, October 05, 2005
The Scattered State-Machine - An Antipattern for Web-Controllers
Like a lot of popular anti-patterns the scattered controller stems from the naive implementation of a seemingly obvious abstraction. The reasoning goes like this: Web-Apps show some html-page, each user event (http-request) triggers an action which, in turn, results in an event determining the next state which is either an action or a an html-page transferred back to the user's browser. So, use the old recipe for desaster: Make each noun of your problem description a class, let the resulting "state-machine" be "declaratively" defined using obscure tables or, more fashionable, xml (ok, luckily, xml is not that fashionable anymore). - And voila, you did it. You've polluted your whole controller with a verbose, scattered "state-machine", the internal workings of which are distributed across a host of artifacts: page-template, action-classes, state-machine-spec, events. And most of the time, all you want to do is: Just call a method and display the results ...
Struts apps are particularly notorious for this Anti-Pattern. If you want to know just how complicated you can make the good old library-search scattering your event-urls not only throughout jsp, java-code and struts-config but also through a spring context, see this ibm-dev-works article
Struts apps are particularly notorious for this Anti-Pattern. If you want to know just how complicated you can make the good old library-search scattering your event-urls not only throughout jsp, java-code and struts-config but also through a spring context, see this ibm-dev-works article
Tuesday, September 27, 2005
Now on the hivemind-wiki: Hivemind support for Hibernate Long-Session-Pattern
Handling Hibernate-Sessions is a recurrent topic on the Tapestry users mailing list. Still, long sessions seem to be surprisingly unknown, once one considers the fact that Gavin King advocates its use in "Hibernate in Action".
So, I've posted some code implementing the Long-Session-Pattern in Hivemind on the Hivemind-Wiki.
I'd be curious to hear whether it worked for anyone (or why it didn't) ...
So, I've posted some code implementing the Long-Session-Pattern in Hivemind on the Hivemind-Wiki.
I'd be curious to hear whether it worked for anyone (or why it didn't) ...
Friday, September 09, 2005
Bye, bye BEA: From Weblogic/EJB/CMP to Tomcat/Hivemind/Hibernate
... and loosing some 1700 loc on the way (counting only Java, disregarding evil xml-deployment-descriptors). Our first non-trivial App on Hivemind/Hibernate is now productive for 5 weeks. No technical problems so far, just the usual buggies associated with cleaning up only part of a design-mess. The whole thing was never really performance-critical (only some 2000 transactions per workday), but only reducing db-hits dramatically using hibernates 2nd level cache made it at all possible to move the app some 400 km away from its underlying database.
Subscribe to:
Posts (Atom)