<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-10870752</id><updated>2011-07-29T07:44:20.795+02:00</updated><category term='maven'/><category term='scala'/><category term='ws'/><category term='Java'/><category term='ide'/><category term='hivemind'/><category term='tapestry'/><title type='text'>Marcus' notes</title><subtitle type='html'>... mostly on programming, I think.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://marcus-schulte.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10870752/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://marcus-schulte.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Marcus Schulte</name><uri>http://www.blogger.com/profile/13079542031575873570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='23' src='http://bp3.blogger.com/_xZN36SuEcKI/R4iO9yvyo7I/AAAAAAAAAAM/mp2Ru8-hv8Q/S220/foto2.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>34</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-10870752.post-5378414869397369368</id><published>2010-01-17T16:24:00.004+01:00</published><updated>2010-01-17T19:32:24.727+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>Generics Gotcha: Intransitive Inheritance from self-referential types</title><summary type='text'>The setupI was used to the assumption that type inheritance in Java is transitive, that is B extends A and C extends B implies that C is a subtype of A as well as of B. As long as A,B and C denote straight classes, this is true to the best of my knowledge. But as I, admittedly only recently, learned, once generic type expressions come into play it gets a bit more interesting:Let's make A a </summary><link rel='replies' type='application/atom+xml' href='http://marcus-schulte.blogspot.com/feeds/5378414869397369368/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10870752&amp;postID=5378414869397369368' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10870752/posts/default/5378414869397369368'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10870752/posts/default/5378414869397369368'/><link rel='alternate' type='text/html' href='http://marcus-schulte.blogspot.com/2010/01/generics-gotcha-intransitive.html' title='Generics Gotcha: Intransitive Inheritance from self-referential types'/><author><name>Marcus Schulte</name><uri>http://www.blogger.com/profile/13079542031575873570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='23' src='http://bp3.blogger.com/_xZN36SuEcKI/R4iO9yvyo7I/AAAAAAAAAAM/mp2Ru8-hv8Q/S220/foto2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10870752.post-5438333518710827851</id><published>2009-11-14T13:20:00.002+01:00</published><updated>2009-11-14T13:28:29.207+01:00</updated><title type='text'>Spring AOP: Excessive startup time for "perTarget" advice</title><summary type='text'>Well over 300,000 Class.forName calls during context-initialisation were the result of setting up a simple "perTarget" advice for a 400-something beans application. With the standard "per class" instantiation model, the overhead went back to "normal", returning the Hibernate SessionFactory to the top of the list of startup resource-consumers. From a quick look at the profiler output, AspectJ's </summary><link rel='replies' type='application/atom+xml' href='http://marcus-schulte.blogspot.com/feeds/5438333518710827851/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10870752&amp;postID=5438333518710827851' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10870752/posts/default/5438333518710827851'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10870752/posts/default/5438333518710827851'/><link rel='alternate' type='text/html' href='http://marcus-schulte.blogspot.com/2009/11/spring-aop-excessive-startup-time-for.html' title='Spring AOP: Excessive startup time for &quot;perTarget&quot; advice'/><author><name>Marcus Schulte</name><uri>http://www.blogger.com/profile/13079542031575873570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='23' src='http://bp3.blogger.com/_xZN36SuEcKI/R4iO9yvyo7I/AAAAAAAAAAM/mp2Ru8-hv8Q/S220/foto2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10870752.post-1603163265895478702</id><published>2008-02-23T20:36:00.002+01:00</published><updated>2008-02-23T21:12:58.843+01:00</updated><title type='text'>Powerbook survived HD-ectomy</title><summary type='text'>My beloved "old" (3.5 years) powerbook (G4, 15", 1.5 GHz) started to make humming noises, especially when tilted. A couple of weeks later there were sudden hangups, it would only restart after given some cooling time. That it finally survived my amateur-surgery - albeit somewhat battered - let me immediately regret my fancying a new macbook. Some notes:  I followed this guide   I did need to poke</summary><link rel='replies' type='application/atom+xml' href='http://marcus-schulte.blogspot.com/feeds/1603163265895478702/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10870752&amp;postID=1603163265895478702' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10870752/posts/default/1603163265895478702'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10870752/posts/default/1603163265895478702'/><link rel='alternate' type='text/html' href='http://marcus-schulte.blogspot.com/2008/02/powerbook-survived-hd-ectomy.html' title='Powerbook survived HD-ectomy'/><author><name>Marcus Schulte</name><uri>http://www.blogger.com/profile/13079542031575873570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='23' src='http://bp3.blogger.com/_xZN36SuEcKI/R4iO9yvyo7I/AAAAAAAAAAM/mp2Ru8-hv8Q/S220/foto2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10870752.post-6750634644915386905</id><published>2007-06-04T21:42:00.000+02:00</published><updated>2007-06-06T21:27:39.548+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tapestry'/><category scheme='http://www.blogger.com/atom/ns#' term='scala'/><title type='text'>Tapestry Components in Scala</title><summary type='text'>Recently, I became interested in Scala: Multiple inheritance, good support for functional programming, a nice syntax, to mention the greatest highlights.As a first exercise, I tried to write some Tapestry-4 components in Scala to gain some real-world experience, and to see whether Tapestry's pretty extensive use of bytecode-generation would somehow break Scala's Java-compatibility. I was pretty </summary><link rel='replies' type='application/atom+xml' href='http://marcus-schulte.blogspot.com/feeds/6750634644915386905/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10870752&amp;postID=6750634644915386905' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10870752/posts/default/6750634644915386905'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10870752/posts/default/6750634644915386905'/><link rel='alternate' type='text/html' href='http://marcus-schulte.blogspot.com/2007/06/tapestry-components-in-scala.html' title='Tapestry Components in Scala'/><author><name>Marcus Schulte</name><uri>http://www.blogger.com/profile/13079542031575873570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='23' src='http://bp3.blogger.com/_xZN36SuEcKI/R4iO9yvyo7I/AAAAAAAAAAM/mp2Ru8-hv8Q/S220/foto2.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10870752.post-8536733787268112373</id><published>2007-05-12T12:27:00.000+02:00</published><updated>2007-05-14T08:51:50.080+02:00</updated><title type='text'>Clean and Flexible Authorisation for Tapestry Applications</title><summary type='text'>Currently we'r working on an application that will be used by 4 different departments. And I can already anticipate people dropping in to casually remark someting like "Oh, by the way, we've hired this guy who needs Access to module X of the invoicing system, but of course he mustn't be allowed to press button Y, and he needs to be able to change the comment-field. And don't hurry, he'll not </summary><link rel='replies' type='application/atom+xml' href='http://marcus-schulte.blogspot.com/feeds/8536733787268112373/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10870752&amp;postID=8536733787268112373' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10870752/posts/default/8536733787268112373'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10870752/posts/default/8536733787268112373'/><link rel='alternate' type='text/html' href='http://marcus-schulte.blogspot.com/2007/05/clean-and-flexible-authorisation-for.html' title='Clean and Flexible Authorisation for Tapestry Applications'/><author><name>Marcus Schulte</name><uri>http://www.blogger.com/profile/13079542031575873570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='23' src='http://bp3.blogger.com/_xZN36SuEcKI/R4iO9yvyo7I/AAAAAAAAAAM/mp2Ru8-hv8Q/S220/foto2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10870752.post-1648662118435693293</id><published>2007-04-25T20:29:00.001+02:00</published><updated>2008-03-04T18:44:56.817+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ide'/><title type='text'>Subversive beats Subclipse as SVN Plugin for Eclipse</title><summary type='text'>I've switched from subclipse to subversive recently. The former used to annoy me by its inability to handle directory moves/copies. I had to go and delete .svn dirs manuallyThe annoying need to do manual updates after each commitSubversive mostly works in any of these cases. And when it doesn't want to keep track of me moving some directory around, it politely asks me to commit before continuing.</summary><link rel='replies' type='application/atom+xml' href='http://marcus-schulte.blogspot.com/feeds/1648662118435693293/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10870752&amp;postID=1648662118435693293' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10870752/posts/default/1648662118435693293'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10870752/posts/default/1648662118435693293'/><link rel='alternate' type='text/html' href='http://marcus-schulte.blogspot.com/2007/04/subversive-beats-subclipse-as-svn.html' title='Subversive beats Subclipse as SVN Plugin for Eclipse'/><author><name>Marcus Schulte</name><uri>http://www.blogger.com/profile/13079542031575873570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='23' src='http://bp3.blogger.com/_xZN36SuEcKI/R4iO9yvyo7I/AAAAAAAAAAM/mp2Ru8-hv8Q/S220/foto2.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10870752.post-4314287981717328285</id><published>2007-03-08T10:42:00.000+01:00</published><updated>2007-05-12T12:14:04.004+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='maven'/><title type='text'>Maven2: creating JavaDoc links behind a firewall</title><summary type='text'>I just spent the better part of the morning trying to make javadoc links work. In short: configuring the proxy did not work - We have to cope with offline package-lists, not a big problem really. Of course, to configure the maven-javadoc-plugin to do this, reading the source was the quickest way to go. So put something like this in your pom.xml:&lt;reporting&gt;  &lt;plugins&gt;    &lt;plugin&gt;      &lt;artifactId&gt;</summary><link rel='replies' type='application/atom+xml' href='http://marcus-schulte.blogspot.com/feeds/4314287981717328285/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10870752&amp;postID=4314287981717328285' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10870752/posts/default/4314287981717328285'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10870752/posts/default/4314287981717328285'/><link rel='alternate' type='text/html' href='http://marcus-schulte.blogspot.com/2007/03/maven2-creating-javadoc-links-behind.html' title='Maven2: creating JavaDoc links behind a firewall'/><author><name>Marcus Schulte</name><uri>http://www.blogger.com/profile/13079542031575873570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='23' src='http://bp3.blogger.com/_xZN36SuEcKI/R4iO9yvyo7I/AAAAAAAAAAM/mp2Ru8-hv8Q/S220/foto2.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10870752.post-5778584922866024970</id><published>2007-02-15T13:10:00.000+01:00</published><updated>2007-02-16T09:35:35.932+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ws'/><title type='text'>XFire newbie gotcha: use the correct ServiceFactory</title><summary type='text'>If you use the jaxb binding (the default with the Maven-plugin) to generate you client proxies, to actually use your service, you have to instantiate a org.codehaus.xfire.jaxb2.JaxbServiceFactory instead of an org.codehaus.xfire.service.binding.ObjectServiceFactory. Otherwise the parameter names (wsdl:part@name) will be replaced with "in0"-elements by XFire - and the server will complain about an</summary><link rel='replies' type='application/atom+xml' href='http://marcus-schulte.blogspot.com/feeds/5778584922866024970/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10870752&amp;postID=5778584922866024970' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10870752/posts/default/5778584922866024970'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10870752/posts/default/5778584922866024970'/><link rel='alternate' type='text/html' href='http://marcus-schulte.blogspot.com/2007/02/xfire-newbie-gotcha-use-correct.html' title='XFire newbie gotcha: use the correct ServiceFactory'/><author><name>Marcus Schulte</name><uri>http://www.blogger.com/profile/13079542031575873570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='23' src='http://bp3.blogger.com/_xZN36SuEcKI/R4iO9yvyo7I/AAAAAAAAAAM/mp2Ru8-hv8Q/S220/foto2.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10870752.post-9093334783075735421</id><published>2007-02-15T12:54:00.000+01:00</published><updated>2007-02-15T13:09:51.839+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ws'/><category scheme='http://www.blogger.com/atom/ns#' term='maven'/><title type='text'>Quality of Maven integration becomes decisive for OSS adoption - good bye Axis</title><summary type='text'>Today I realised, how important it became for any open-source project to play nicely with the Maven repository and to get its dependencies right in its pom's . When I had to whip up a web-service client yesterday, I started out trying Axis-2 since I knew the server impl was bases on Axis. Quickly I had to decide to either start debugging their maven-plugins dependencies (obviously wsdl4j was lost</summary><link rel='replies' type='application/atom+xml' href='http://marcus-schulte.blogspot.com/feeds/9093334783075735421/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10870752&amp;postID=9093334783075735421' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10870752/posts/default/9093334783075735421'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10870752/posts/default/9093334783075735421'/><link rel='alternate' type='text/html' href='http://marcus-schulte.blogspot.com/2007/02/quality-of-maven-integration-becomes.html' title='Quality of Maven integration becomes decisive for OSS adoption - good bye Axis'/><author><name>Marcus Schulte</name><uri>http://www.blogger.com/profile/13079542031575873570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='23' src='http://bp3.blogger.com/_xZN36SuEcKI/R4iO9yvyo7I/AAAAAAAAAAM/mp2Ru8-hv8Q/S220/foto2.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10870752.post-4692436888063345849</id><published>2007-02-11T17:56:00.000+01:00</published><updated>2007-01-15T06:44:05.262+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='hivemind'/><category scheme='http://www.blogger.com/atom/ns#' term='maven'/><title type='text'>New Version 1.0.2 of hivedoc-plugin for HiveMind /Maven2</title><summary type='text'>Finally, I got around to enhancing the hivedoc-plugin with:  Support for sub-modules  Removal of empty columns in the module-summary table.The new version 1.0.2 should be on the central repo as soon as MAVENUPLOAD-1377 is resolved.</summary><link rel='replies' type='application/atom+xml' href='http://marcus-schulte.blogspot.com/feeds/4692436888063345849/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10870752&amp;postID=4692436888063345849' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10870752/posts/default/4692436888063345849'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10870752/posts/default/4692436888063345849'/><link rel='alternate' type='text/html' href='http://marcus-schulte.blogspot.com/2007/02/new-version-102-of-hivedoc-plugin-for.html' title='New Version 1.0.2 of hivedoc-plugin for HiveMind /Maven2'/><author><name>Marcus Schulte</name><uri>http://www.blogger.com/profile/13079542031575873570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='23' src='http://bp3.blogger.com/_xZN36SuEcKI/R4iO9yvyo7I/AAAAAAAAAAM/mp2Ru8-hv8Q/S220/foto2.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10870752.post-2688963961374541416</id><published>2007-01-08T16:33:00.000+01:00</published><updated>2007-01-09T10:38:58.963+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='maven'/><title type='text'>Half a Year of Maven 2: An experience of the awkward kind</title><summary type='text'>We're using Maven 2 now for all new projects. At the highest level I can summarize our experience as:The concepts behind Maven are sound and amazingly useful.The implementation is just about usable - no show-stoppers anymore, but lots and lots of little, annoying bugs and surprising gotchasThe documentation is sloppy.The really funny thing is, how point 1. still by far outweighs the shortcomings </summary><link rel='replies' type='application/atom+xml' href='http://marcus-schulte.blogspot.com/feeds/2688963961374541416/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10870752&amp;postID=2688963961374541416' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10870752/posts/default/2688963961374541416'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10870752/posts/default/2688963961374541416'/><link rel='alternate' type='text/html' href='http://marcus-schulte.blogspot.com/2007/01/half-year-of-maven-2-experience-of.html' title='Half a Year of Maven 2: An experience of the awkward kind'/><author><name>Marcus Schulte</name><uri>http://www.blogger.com/profile/13079542031575873570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='23' src='http://bp3.blogger.com/_xZN36SuEcKI/R4iO9yvyo7I/AAAAAAAAAAM/mp2Ru8-hv8Q/S220/foto2.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10870752.post-3010061206976264118</id><published>2007-01-05T08:49:00.000+01:00</published><updated>2007-05-12T12:14:04.004+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='hivemind'/><category scheme='http://www.blogger.com/atom/ns#' term='maven'/><title type='text'>New Version of hivedoc-plugin for HiveMind</title><summary type='text'>Since some people seem to use it, I've updated my hivedoc-plugin to version 1.0.1 . Notable changes are:Support for custom resource root directoriesBackport to Java 1.4proper plugin-docsThe new version should show up on the central Maven 2 repo soon. If you need it before that, here's the repo-bundle.</summary><link rel='replies' type='application/atom+xml' href='http://marcus-schulte.blogspot.com/feeds/3010061206976264118/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10870752&amp;postID=3010061206976264118' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10870752/posts/default/3010061206976264118'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10870752/posts/default/3010061206976264118'/><link rel='alternate' type='text/html' href='http://marcus-schulte.blogspot.com/2007/01/new-version-of-hivedoc-plugin-for.html' title='New Version of hivedoc-plugin for HiveMind'/><author><name>Marcus Schulte</name><uri>http://www.blogger.com/profile/13079542031575873570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='23' src='http://bp3.blogger.com/_xZN36SuEcKI/R4iO9yvyo7I/AAAAAAAAAAM/mp2Ru8-hv8Q/S220/foto2.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10870752.post-6702332821057360264</id><published>2007-01-02T10:42:00.000+01:00</published><updated>2007-05-12T12:16:33.355+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='hivemind'/><category scheme='http://www.blogger.com/atom/ns#' term='maven'/><title type='text'>hivedoc-plugin generates Maven 2 docs for HiveMind descriptors</title><summary type='text'>If you're using HiveMind and Maven 2, generating docs for your HiveMind descriptors is now really quick and simple.Find the docs under http://marcus-schulte.ch/hivedoc-plugin/.</summary><link rel='replies' type='application/atom+xml' href='http://marcus-schulte.blogspot.com/feeds/6702332821057360264/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10870752&amp;postID=6702332821057360264' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10870752/posts/default/6702332821057360264'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10870752/posts/default/6702332821057360264'/><link rel='alternate' type='text/html' href='http://marcus-schulte.blogspot.com/2007/01/hivedoc-plugin-generates-maven-2-docs.html' title='hivedoc-plugin generates Maven 2 docs for HiveMind descriptors'/><author><name>Marcus Schulte</name><uri>http://www.blogger.com/profile/13079542031575873570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='23' src='http://bp3.blogger.com/_xZN36SuEcKI/R4iO9yvyo7I/AAAAAAAAAAM/mp2Ru8-hv8Q/S220/foto2.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10870752.post-115834910485777741</id><published>2006-09-15T21:26:00.000+02:00</published><updated>2007-05-12T12:15:12.760+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tapestry'/><title type='text'>Honeycomb now comes with a Maven2 archetype for Tapestry/Hibernate based web-apps.</title><summary type='text'>Version 0.3.3 of Honeycomb is released.Honeycomb provides an easy integration for Tapestry and Hibernate. Its distinguishing key feature is session-per-conversation support.The main changes in this release are:re-structuring into 4 libraries replaced the templates for the Core/Webapp projects with maven archetypes. Maven users get started without manual downloads.Fixed rollback on </summary><link rel='replies' type='application/atom+xml' href='http://marcus-schulte.blogspot.com/feeds/115834910485777741/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10870752&amp;postID=115834910485777741' title='13 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10870752/posts/default/115834910485777741'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10870752/posts/default/115834910485777741'/><link rel='alternate' type='text/html' href='http://marcus-schulte.blogspot.com/2006/09/honeycomb-now-comes-with-maven2.html' title='Honeycomb now comes with a Maven2 archetype for Tapestry/Hibernate based web-apps.'/><author><name>Marcus Schulte</name><uri>http://www.blogger.com/profile/13079542031575873570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='23' src='http://bp3.blogger.com/_xZN36SuEcKI/R4iO9yvyo7I/AAAAAAAAAAM/mp2Ru8-hv8Q/S220/foto2.jpg'/></author><thr:total>13</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10870752.post-115662116256651056</id><published>2006-08-26T21:15:00.000+02:00</published><updated>2006-08-26T21:39:23.053+02:00</updated><title type='text'>The Return of the Database - who needs more "middleware"?</title><summary type='text'>Maybe it's just my organization's policy of giving its developers relatively free access to db's while, at the same time, putting lots of administrative hurdles and hurdle-like administrators between them and the app-server. But it's really amazing how little there is that you can't get done nicely with a sturdy db and a decent servlet-container (at most).Example: For some time I thought a nice </summary><link rel='replies' type='application/atom+xml' href='http://marcus-schulte.blogspot.com/feeds/115662116256651056/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10870752&amp;postID=115662116256651056' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10870752/posts/default/115662116256651056'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10870752/posts/default/115662116256651056'/><link rel='alternate' type='text/html' href='http://marcus-schulte.blogspot.com/2006/08/return-of-database-who-needs-more.html' title='The Return of the Database - who needs more &quot;middleware&quot;?'/><author><name>Marcus Schulte</name><uri>http://www.blogger.com/profile/13079542031575873570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='23' src='http://bp3.blogger.com/_xZN36SuEcKI/R4iO9yvyo7I/AAAAAAAAAAM/mp2Ru8-hv8Q/S220/foto2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10870752.post-114102262191804853</id><published>2006-02-27T07:35:00.000+01:00</published><updated>2007-05-12T12:15:12.761+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tapestry'/><title type='text'>KickStart is now Honeycomb, release 0.3 out</title><summary type='text'>Kickstart has moved from SourceForge to  JavaForge, and it's changed its name to Honeycomb (alluding to the central role that HiveMind plays in it).  Honeycomb integrates Tapestry with Hibernate for painless full-stack web-dev-support.New features comprise   A hibernate DataSqueezer    Pluggable Audit-Trail via hibernate interceptor     Support for session per request pattern via simple config </summary><link rel='replies' type='application/atom+xml' href='http://marcus-schulte.blogspot.com/feeds/114102262191804853/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10870752&amp;postID=114102262191804853' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10870752/posts/default/114102262191804853'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10870752/posts/default/114102262191804853'/><link rel='alternate' type='text/html' href='http://marcus-schulte.blogspot.com/2006/02/kickstart-is-now-honeycomb-release-03.html' title='KickStart is now Honeycomb, release 0.3 out'/><author><name>Marcus Schulte</name><uri>http://www.blogger.com/profile/13079542031575873570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='23' src='http://bp3.blogger.com/_xZN36SuEcKI/R4iO9yvyo7I/AAAAAAAAAAM/mp2Ru8-hv8Q/S220/foto2.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10870752.post-113734854534447715</id><published>2006-01-15T18:58:00.000+01:00</published><updated>2007-05-12T12:16:33.356+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tapestry'/><category scheme='http://www.blogger.com/atom/ns#' term='hivemind'/><title type='text'>With Kickstart 0.2 Tapestry supports the hibernate session-per-conversation pattern out of the box</title><summary type='text'>I've uploaded a new release of KickStart. Improvements are:  Full support for the hibernate-session-per-conversation pattern. See hibernate.org for more.  fixed wrong unsaved-value-mapping</summary><link rel='replies' type='application/atom+xml' href='http://marcus-schulte.blogspot.com/feeds/113734854534447715/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10870752&amp;postID=113734854534447715' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10870752/posts/default/113734854534447715'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10870752/posts/default/113734854534447715'/><link rel='alternate' type='text/html' href='http://marcus-schulte.blogspot.com/2006/01/with-kickstart-02-tapestry-supports.html' title='With Kickstart 0.2 Tapestry supports the hibernate session-per-conversation pattern out of the box'/><author><name>Marcus Schulte</name><uri>http://www.blogger.com/profile/13079542031575873570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='23' src='http://bp3.blogger.com/_xZN36SuEcKI/R4iO9yvyo7I/AAAAAAAAAAM/mp2Ru8-hv8Q/S220/foto2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10870752.post-113666147746295534</id><published>2006-01-07T19:55:00.000+01:00</published><updated>2007-05-12T12:16:33.357+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tapestry'/><category scheme='http://www.blogger.com/atom/ns#' term='hivemind'/><title type='text'>KickStart integrates Tapestry with Hibernate for painless full-stack web-dev-support</title><summary type='text'>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</summary><link rel='replies' type='application/atom+xml' href='http://marcus-schulte.blogspot.com/feeds/113666147746295534/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10870752&amp;postID=113666147746295534' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10870752/posts/default/113666147746295534'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10870752/posts/default/113666147746295534'/><link rel='alternate' type='text/html' href='http://marcus-schulte.blogspot.com/2006/01/kickstart-integrates-tapestry-with.html' title='KickStart integrates Tapestry with Hibernate for painless full-stack web-dev-support'/><author><name>Marcus Schulte</name><uri>http://www.blogger.com/profile/13079542031575873570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='23' src='http://bp3.blogger.com/_xZN36SuEcKI/R4iO9yvyo7I/AAAAAAAAAAM/mp2Ru8-hv8Q/S220/foto2.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10870752.post-113007523726320931</id><published>2005-10-23T15:46:00.000+02:00</published><updated>2005-10-23T15:47:17.270+02:00</updated><title type='text'>Finally no more clob-clipping: Oracle 10g supports standard JDBC CLOB-handling</title><summary type='text'>The new enhancements in Oracle JDBC 10g promises to simplify the insertion and retrieval techniques for the CLOBs using the standard APIs.  Handling Clobs in Oracle 10g 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 </summary><link rel='replies' type='application/atom+xml' href='http://marcus-schulte.blogspot.com/feeds/113007523726320931/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10870752&amp;postID=113007523726320931' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10870752/posts/default/113007523726320931'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10870752/posts/default/113007523726320931'/><link rel='alternate' type='text/html' href='http://marcus-schulte.blogspot.com/2005/10/finally-no-more-clob-clipping-oracle.html' title='Finally no more clob-clipping: Oracle 10g supports standard JDBC CLOB-handling'/><author><name>Marcus Schulte</name><uri>http://www.blogger.com/profile/13079542031575873570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='23' src='http://bp3.blogger.com/_xZN36SuEcKI/R4iO9yvyo7I/AAAAAAAAAAM/mp2Ru8-hv8Q/S220/foto2.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10870752.post-112974174496675371</id><published>2005-10-19T19:00:00.000+02:00</published><updated>2005-10-19T19:09:04.973+02:00</updated><title type='text'>Apache DBCP - never forget maxWait</title><summary type='text'>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.</summary><link rel='replies' type='application/atom+xml' href='http://marcus-schulte.blogspot.com/feeds/112974174496675371/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10870752&amp;postID=112974174496675371' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10870752/posts/default/112974174496675371'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10870752/posts/default/112974174496675371'/><link rel='alternate' type='text/html' href='http://marcus-schulte.blogspot.com/2005/10/apache-dbcp-never-forget-maxwait.html' title='Apache DBCP - never forget maxWait'/><author><name>Marcus Schulte</name><uri>http://www.blogger.com/profile/13079542031575873570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='23' src='http://bp3.blogger.com/_xZN36SuEcKI/R4iO9yvyo7I/AAAAAAAAAAM/mp2Ru8-hv8Q/S220/foto2.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10870752.post-112852493056945047</id><published>2005-10-05T16:56:00.000+02:00</published><updated>2005-10-19T19:26:44.636+02:00</updated><title type='text'>The Scattered State-Machine - An Antipattern for Web-Controllers</title><summary type='text'>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 </summary><link rel='replies' type='application/atom+xml' href='http://marcus-schulte.blogspot.com/feeds/112852493056945047/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10870752&amp;postID=112852493056945047' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10870752/posts/default/112852493056945047'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10870752/posts/default/112852493056945047'/><link rel='alternate' type='text/html' href='http://marcus-schulte.blogspot.com/2005/10/scattered-state-machine-antipattern.html' title='The Scattered State-Machine - An Antipattern for Web-Controllers'/><author><name>Marcus Schulte</name><uri>http://www.blogger.com/profile/13079542031575873570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='23' src='http://bp3.blogger.com/_xZN36SuEcKI/R4iO9yvyo7I/AAAAAAAAAAM/mp2Ru8-hv8Q/S220/foto2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10870752.post-112783930957019047</id><published>2005-09-27T18:27:00.000+02:00</published><updated>2007-05-12T12:16:33.357+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='hivemind'/><title type='text'>Now on the hivemind-wiki: Hivemind support for Hibernate Long-Session-Pattern</title><summary type='text'>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) ...</summary><link rel='replies' type='application/atom+xml' href='http://marcus-schulte.blogspot.com/feeds/112783930957019047/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10870752&amp;postID=112783930957019047' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10870752/posts/default/112783930957019047'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10870752/posts/default/112783930957019047'/><link rel='alternate' type='text/html' href='http://marcus-schulte.blogspot.com/2005/09/now-on-hivemind-wiki-hivemind-support.html' title='Now on the hivemind-wiki: Hivemind support for Hibernate Long-Session-Pattern'/><author><name>Marcus Schulte</name><uri>http://www.blogger.com/profile/13079542031575873570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='23' src='http://bp3.blogger.com/_xZN36SuEcKI/R4iO9yvyo7I/AAAAAAAAAAM/mp2Ru8-hv8Q/S220/foto2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10870752.post-112628986753754303</id><published>2005-09-09T20:05:00.000+02:00</published><updated>2005-09-09T20:17:47.546+02:00</updated><title type='text'>Bye, bye BEA: From Weblogic/EJB/CMP to Tomcat/Hivemind/Hibernate</title><summary type='text'>... 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 </summary><link rel='replies' type='application/atom+xml' href='http://marcus-schulte.blogspot.com/feeds/112628986753754303/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10870752&amp;postID=112628986753754303' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10870752/posts/default/112628986753754303'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10870752/posts/default/112628986753754303'/><link rel='alternate' type='text/html' href='http://marcus-schulte.blogspot.com/2005/09/bye-bye-bea-from-weblogicejbcmp-to.html' title='Bye, bye BEA: From Weblogic/EJB/CMP to Tomcat/Hivemind/Hibernate'/><author><name>Marcus Schulte</name><uri>http://www.blogger.com/profile/13079542031575873570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='23' src='http://bp3.blogger.com/_xZN36SuEcKI/R4iO9yvyo7I/AAAAAAAAAAM/mp2Ru8-hv8Q/S220/foto2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10870752.post-112265815372343166</id><published>2005-07-29T19:07:00.000+02:00</published><updated>2005-07-31T15:05:14.666+02:00</updated><title type='text'>Java AWK - parsing csv-files in Java can be fun</title><summary type='text'>Ever parsed text-files, writing loops and calling indexOf / substr just to get some boring job done? I confess, I did. Today, instead, I sat back and browsed the jdk-JavaDocs. Thinking what it would take to bring some of the simplicity of AWK to Java - and it'really simple - just a few lines of code and you can write things like this:public class JawkSample extends JawkProgram { protected void </summary><link rel='replies' type='application/atom+xml' href='http://marcus-schulte.blogspot.com/feeds/112265815372343166/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10870752&amp;postID=112265815372343166' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10870752/posts/default/112265815372343166'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10870752/posts/default/112265815372343166'/><link rel='alternate' type='text/html' href='http://marcus-schulte.blogspot.com/2005/07/java-awk-parsing-csv-files-in-java-can.html' title='Java AWK - parsing csv-files in Java can be fun'/><author><name>Marcus Schulte</name><uri>http://www.blogger.com/profile/13079542031575873570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='23' src='http://bp3.blogger.com/_xZN36SuEcKI/R4iO9yvyo7I/AAAAAAAAAAM/mp2Ru8-hv8Q/S220/foto2.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10870752.post-112256754039796852</id><published>2005-07-28T18:07:00.000+02:00</published><updated>2007-05-12T12:16:33.358+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='hivemind'/><title type='text'>Unified service lifecyle-interface for different service-models</title><summary type='text'>Hivemind sports a bunch of service-models (singleton, pooled, threaded). After adding "client-session" for my request-spanning, hibernate-sessions, I realised that it's rather unfortunate that each of the service models comes with its own lifecycle-interface (Discardable, PoolManageable,...).  So if you want to be able to switch service-models via configuration in one place, your service has to </summary><link rel='replies' type='application/atom+xml' href='http://marcus-schulte.blogspot.com/feeds/112256754039796852/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10870752&amp;postID=112256754039796852' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10870752/posts/default/112256754039796852'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10870752/posts/default/112256754039796852'/><link rel='alternate' type='text/html' href='http://marcus-schulte.blogspot.com/2005/07/unified-service-lifecyle-interface-for.html' title='Unified service lifecyle-interface for different service-models'/><author><name>Marcus Schulte</name><uri>http://www.blogger.com/profile/13079542031575873570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='23' src='http://bp3.blogger.com/_xZN36SuEcKI/R4iO9yvyo7I/AAAAAAAAAAM/mp2Ru8-hv8Q/S220/foto2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10870752.post-112256684954821764</id><published>2005-07-28T17:59:00.000+02:00</published><updated>2005-07-28T19:36:33.346+02:00</updated><title type='text'>nifty toy = Tomcat + MX4J + hivemind.management + mc4j</title><summary type='text'>Just brought up a managed version of Tomcat 5.5 on j2se 1.4 using mx4j and the hivemind.management module . There are just a few gotchas   put mx4j.jar and mx4j-remote.jar on tomcat's system classpath, along with bootstrap.jar   don't contribute services with performance interceptor to hivemind.management.MBeans  Everything else works cleanly out of the box. It's fun to watch your services </summary><link rel='replies' type='application/atom+xml' href='http://marcus-schulte.blogspot.com/feeds/112256684954821764/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10870752&amp;postID=112256684954821764' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10870752/posts/default/112256684954821764'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10870752/posts/default/112256684954821764'/><link rel='alternate' type='text/html' href='http://marcus-schulte.blogspot.com/2005/07/nifty-toy-tomcat-mx4j.html' title='nifty toy = Tomcat + MX4J + hivemind.management + mc4j'/><author><name>Marcus Schulte</name><uri>http://www.blogger.com/profile/13079542031575873570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='23' src='http://bp3.blogger.com/_xZN36SuEcKI/R4iO9yvyo7I/AAAAAAAAAAM/mp2Ru8-hv8Q/S220/foto2.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10870752.post-111782662507758476</id><published>2005-06-03T20:26:00.000+02:00</published><updated>2007-05-12T12:16:33.358+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='hivemind'/><title type='text'>Hivemind support for Hibernate Long-Session-Pattern</title><summary type='text'>Finally I got around to dig into HiveMind's concept of service-models. Not much digging, actually it's amazingly simple and intuitive. I've implemented a new service-model called "stateful" which attaches service instances to a User-Session. "Stateful" actually is a bit of a misnomer since threaded and pooled services also hold state for the duration of one request.Basically all one needs is   a </summary><link rel='replies' type='application/atom+xml' href='http://marcus-schulte.blogspot.com/feeds/111782662507758476/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10870752&amp;postID=111782662507758476' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10870752/posts/default/111782662507758476'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10870752/posts/default/111782662507758476'/><link rel='alternate' type='text/html' href='http://marcus-schulte.blogspot.com/2005/06/hivemind-support-for-hibernate-long.html' title='Hivemind support for Hibernate Long-Session-Pattern'/><author><name>Marcus Schulte</name><uri>http://www.blogger.com/profile/13079542031575873570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='23' src='http://bp3.blogger.com/_xZN36SuEcKI/R4iO9yvyo7I/AAAAAAAAAAM/mp2Ru8-hv8Q/S220/foto2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10870752.post-111752734577304401</id><published>2005-05-31T10:12:00.000+02:00</published><updated>2005-05-31T10:15:45.776+02:00</updated><title type='text'>Bugfix for Tapestry FCKeditor Component</title><summary type='text'>There were bugs in tapfckconfig.js (absolute URL) and the Readme (missing servlet-mapping in web.xml)  which prevented the filebrowser from working. The new version is (again) available here</summary><link rel='replies' type='application/atom+xml' href='http://marcus-schulte.blogspot.com/feeds/111752734577304401/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10870752&amp;postID=111752734577304401' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10870752/posts/default/111752734577304401'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10870752/posts/default/111752734577304401'/><link rel='alternate' type='text/html' href='http://marcus-schulte.blogspot.com/2005/05/bugfix-for-tapestry-fckeditor.html' title='Bugfix for Tapestry FCKeditor Component'/><author><name>Marcus Schulte</name><uri>http://www.blogger.com/profile/13079542031575873570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='23' src='http://bp3.blogger.com/_xZN36SuEcKI/R4iO9yvyo7I/AAAAAAAAAAM/mp2Ru8-hv8Q/S220/foto2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10870752.post-111722215778465357</id><published>2005-05-27T21:25:00.000+02:00</published><updated>2005-05-28T09:56:46.366+02:00</updated><title type='text'>Tapestry FCKeditor component</title><summary type='text'>I've posted an FCKeditor component. It's a preliminary version - error handling support for File-Upload is still missing.It consists of   a custom config-file tapfckconfig.js   the editor-component itself   a custom engine implementation mapping the filebrowser url's to the filebrowser service.   a filebrowser service which makes use of an ...    ... extension implementing the FileBrowser </summary><link rel='replies' type='application/atom+xml' href='http://marcus-schulte.blogspot.com/feeds/111722215778465357/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10870752&amp;postID=111722215778465357' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10870752/posts/default/111722215778465357'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10870752/posts/default/111722215778465357'/><link rel='alternate' type='text/html' href='http://marcus-schulte.blogspot.com/2005/05/tapestry-fckeditor-component.html' title='Tapestry FCKeditor component'/><author><name>Marcus Schulte</name><uri>http://www.blogger.com/profile/13079542031575873570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='23' src='http://bp3.blogger.com/_xZN36SuEcKI/R4iO9yvyo7I/AAAAAAAAAAM/mp2Ru8-hv8Q/S220/foto2.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10870752.post-111471147599795635</id><published>2005-04-28T19:28:00.000+02:00</published><updated>2005-04-28T20:20:24.823+02:00</updated><title type='text'>Stateful services in IoC Containers</title><summary type='text'>Do HiveMind &amp; Co. provide stateful services? I don't think so. Should they? As I'm growing increasingly fond of the Hibernate long-session-pattern, I do think so. You'd probably need some means of attaching/detaching some client-id to a thread (a servlet-filter, typically), so, after that the container could maintain same (service-id, client-id) to service-implementation map. In the servlet-case </summary><link rel='replies' type='application/atom+xml' href='http://marcus-schulte.blogspot.com/feeds/111471147599795635/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10870752&amp;postID=111471147599795635' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10870752/posts/default/111471147599795635'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10870752/posts/default/111471147599795635'/><link rel='alternate' type='text/html' href='http://marcus-schulte.blogspot.com/2005/04/stateful-services-in-ioc-containers.html' title='Stateful services in IoC Containers'/><author><name>Marcus Schulte</name><uri>http://www.blogger.com/profile/13079542031575873570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='23' src='http://bp3.blogger.com/_xZN36SuEcKI/R4iO9yvyo7I/AAAAAAAAAAM/mp2Ru8-hv8Q/S220/foto2.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10870752.post-111452403277216143</id><published>2005-04-26T15:15:00.000+02:00</published><updated>2005-04-27T12:24:44.976+02:00</updated><title type='text'>Intercepting Exceptions in Tapestry Listeners</title><summary type='text'>While I'm growing increasingly fond of Tapestry, there's one tiny advantage to Struts-like Action-classes over listener-methods. Namely, taking care of (non-technical) user exceptions by converting them to friendly messages. A common base-class for all pages overriding AbstractComponent's getListeners() method does the trick. I made it return a sub-class of the standard ListenerMap, which, in </summary><link rel='replies' type='application/atom+xml' href='http://marcus-schulte.blogspot.com/feeds/111452403277216143/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10870752&amp;postID=111452403277216143' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10870752/posts/default/111452403277216143'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10870752/posts/default/111452403277216143'/><link rel='alternate' type='text/html' href='http://marcus-schulte.blogspot.com/2005/04/intercepting-exceptions-in-tapestry.html' title='Intercepting Exceptions in Tapestry Listeners'/><author><name>Marcus Schulte</name><uri>http://www.blogger.com/profile/13079542031575873570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='23' src='http://bp3.blogger.com/_xZN36SuEcKI/R4iO9yvyo7I/AAAAAAAAAAM/mp2Ru8-hv8Q/S220/foto2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10870752.post-111400534630815020</id><published>2005-04-20T15:44:00.000+02:00</published><updated>2005-04-20T16:31:34.690+02:00</updated><title type='text'>If you can't hide it below, hide it above</title><summary type='text'>In one of the last projects, I was involved in, a Web-Controller accessed business logic through a service facade implemented as a Spring-bean hiding a hibernate-pesisted domain model. Transactions (and hibernate sessions) were controlled declaratively at the service facade. Sounds so nice and clean  - nice layers not allowed to know certain things about fellow layers. Only, it didn't work out </summary><link rel='replies' type='application/atom+xml' href='http://marcus-schulte.blogspot.com/feeds/111400534630815020/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10870752&amp;postID=111400534630815020' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10870752/posts/default/111400534630815020'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10870752/posts/default/111400534630815020'/><link rel='alternate' type='text/html' href='http://marcus-schulte.blogspot.com/2005/04/if-you-cant-hide-it-below-hide-it.html' title='If you can&apos;t hide it below, hide it above'/><author><name>Marcus Schulte</name><uri>http://www.blogger.com/profile/13079542031575873570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='23' src='http://bp3.blogger.com/_xZN36SuEcKI/R4iO9yvyo7I/AAAAAAAAAAM/mp2Ru8-hv8Q/S220/foto2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10870752.post-110875179685766364</id><published>2005-02-18T19:20:00.000+01:00</published><updated>2005-02-21T16:22:43.476+01:00</updated><title type='text'>Web Services with Axis</title><summary type='text'>I'm currently thinking about using Web Services as a more robust (i.e. more tolerant to changes, compared to RMI) protocol for widely re-used services. Two days of fiddling with Axis 1.2 RC2 make me doubt whether that's a good idea. At least the jax-rpc stuff seems still quite brittle, especially on the client-side. Maybe, using WSDL2Java to generate stubs is not a good idea at all. One more </summary><link rel='replies' type='application/atom+xml' href='http://marcus-schulte.blogspot.com/feeds/110875179685766364/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10870752&amp;postID=110875179685766364' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10870752/posts/default/110875179685766364'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10870752/posts/default/110875179685766364'/><link rel='alternate' type='text/html' href='http://marcus-schulte.blogspot.com/2005/02/web-services-with-axis.html' title='Web Services with Axis'/><author><name>Marcus Schulte</name><uri>http://www.blogger.com/profile/13079542031575873570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='23' src='http://bp3.blogger.com/_xZN36SuEcKI/R4iO9yvyo7I/AAAAAAAAAAM/mp2Ru8-hv8Q/S220/foto2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10870752.post-110854694462819768</id><published>2005-02-16T10:34:00.000+01:00</published><updated>2005-02-16T10:42:24.630+01:00</updated><title type='text'>captatio benvolentiae</title><summary type='text'>So now I'm starting my random notes with a completely pointless one, just to test it. Hoping, of course, that some of the seemingly interesting thoughts that made me start this thing might come back later.</summary><link rel='replies' type='application/atom+xml' href='http://marcus-schulte.blogspot.com/feeds/110854694462819768/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10870752&amp;postID=110854694462819768' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10870752/posts/default/110854694462819768'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10870752/posts/default/110854694462819768'/><link rel='alternate' type='text/html' href='http://marcus-schulte.blogspot.com/2005/02/captatio-benvolentiae.html' title='captatio benvolentiae'/><author><name>Marcus Schulte</name><uri>http://www.blogger.com/profile/13079542031575873570</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='23' src='http://bp3.blogger.com/_xZN36SuEcKI/R4iO9yvyo7I/AAAAAAAAAAM/mp2Ru8-hv8Q/S220/foto2.jpg'/></author><thr:total>0</thr:total></entry></feed>
