<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;CEAEQHc7fip7ImA9WhRWFUw.&quot;"><id>tag:blogger.com,1999:blog-2123901513613960343</id><updated>2012-01-02T14:58:21.906+01:00</updated><category term="OTD" /><category term="clustering" /><category term="design patterns" /><category term="Fuji" /><category term="collaboration" /><category term="ESB" /><category term="macosx" /><category term="OpenESB" /><category term="IT" /><category term="partition tolerance" /><category term="strategy" /><category term="Alfresco" /><category term="SOA" /><category term="Quality" /><category term="OpenMQ" /><category term="EJB" /><category term="MDA" /><category term="test" /><category term="SAP" /><category term="WSDL" /><category term="transactions" /><category term="agile" /><category term="consulting" /><category term="EDA" /><category term="video" /><category term="email" /><category term="JMS" /><category term="EAI" /><category term="Spring" /><category term="JUnit" /><category term="POJO" /><category term="Activiti" /><category term="review" /><category term="PLM" /><category term="JEE" /><category term="rant" /><category term="Fluxology" /><category term="database" /><category term="scripting" /><category term="eInsight" /><category term="distributed" /><category term="business" /><category term="OSGi" /><category term="mysql" /><category term="java" /><category term="REST" /><category term="JBI" /><category term="security" /><category term="Web Services" /><category term="CamelSE" /><category term="tutorial" /><category term="Google peopleware" /><category term="IMAP" /><category term="high availability" /><category term="WebDAV" /><category term="XML" /><category term="Mural" /><category term="BPM" /><category term="cloud" /><category term="jvm" /><category term="gigaspaces" /><category term="book" /><category term="BPEL" /><category term="Groovy" /><category term="eventdriven" /><category term="SeeBeyond" /><category term="JDBC" /><category term="SOAP" /><category term="Netbeans" /><category term="Sun" /><category term="consistency" /><category term="jcaps" /><category term="GlassfishESB" /><category term="JMX" /><category term="Ruby" /><category term="ICAN" /><category term="Weblogic" /><category term="governance" /><category term="project management" /><category term="parser" /><category term="Glassfish" /><category term="Methodology" /><category term="architecture" /><category term="Mockrunner" /><category term="management" /><category term="Object Oriented" /><title>CamelCase</title><subtitle type="html">About software stuff. Mostly.</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://camelcase.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://camelcase.blogspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/2123901513613960343/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>Maurizio Turatti</name><uri>https://profiles.google.com/102438417486767972026</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-IvJqcUeK3po/AAAAAAAAAAI/AAAAAAAAAPk/SaoRD_FN2xc/s512-c/photo.jpg" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>71</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/blogspot/HtDir" /><feedburner:info uri="blogspot/htdir" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;D0QHQnw7eyp7ImA9Wx9aFEQ.&quot;"><id>tag:blogger.com,1999:blog-2123901513613960343.post-838829864938019951</id><published>2011-03-04T11:54:00.004+01:00</published><updated>2011-03-07T11:55:33.203+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-03-07T11:55:33.203+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Alfresco" /><title>Purge Alfresco archived nodes</title><content type="html">I was looking for a way to&amp;nbsp;automatically purge the Alfresco trashcan and, after a while I think I came out to what looks like a decent solution.&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;&lt;b&gt;DISCLAIMER&lt;/b&gt;: The procedure described in this article has not been tested intensively and comes without any implied warranty of fitness for a particular purpose. You should check the code, test it and decide yourself if fits your needs, saving all your data before any experiment.&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: large;"&gt;The problem&lt;/span&gt;&lt;br /&gt;
After some time, deleting contents can fill the Alfresco's trashcan and removing nodes manually with the UI can be&amp;nbsp;unpractical (users always forget about this). Alfresco does not actually delete content, but moves deleted nodes into the archive store, which is like a trashcan. Deleted contents can stay there forever, until users decide to clean-up the trashcan. In a big repository this could lead to a huge waste of resources.&lt;br /&gt;
&lt;br /&gt;
I need a service I can invoke programmatically to empty the trashcan, for example by scheduling a task with an external job. I don't like to deploy into Alfresco a scheduled task controlled by the embedded Quartz, I think it's cleaner to move the scheduling outside and deploy into Alfresco always the bare minimum.&lt;br /&gt;
&lt;br /&gt;
Even after the trashcan has been emptied, this just means nodes are only marked as "orphans", moved into &lt;code&gt;alf_data/contentstore.deleted&lt;/code&gt; and can be phisically removed by a &lt;a href="http://dev.alfresco.com/resource/docs/java/repository/org/alfresco/repo/content/cleanup/ContentStoreCleaner.html"&gt;contentStoreCleaner&lt;/a&gt;&amp;nbsp;asynchronous task. So there is a safety net in Alfresco to avoid at all costs accidental deletions.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh6.googleusercontent.com/-qbFghMC26xw/TW0Z4iHKhyI/AAAAAAAAAMM/zI17KoBKW3I/s1600/2011-03-01+04.15.27+pm.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="482" src="https://lh6.googleusercontent.com/-qbFghMC26xw/TW0Z4iHKhyI/AAAAAAAAAMM/zI17KoBKW3I/s640/2011-03-01+04.15.27+pm.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: large;"&gt;Cleaning-up archived nodes&lt;/span&gt;&lt;br /&gt;
I have developed a simple &lt;a href="http://wiki.alfresco.com/wiki/Java-backed_Web_Scripts_Samples"&gt;Java-backed Web Script&lt;/a&gt; for Alfresco 3.4 (It should work with Alfresco 3.2+) which can be invoked to clean-up the archived nodes. Below its major components:&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;purge.get.desc.xml&lt;/b&gt;&lt;br /&gt;
Web Script descriptor&lt;br /&gt;
&lt;pre class="brush:xml"&gt;&lt;webscript&gt;
    &lt;shortname&gt;Purge all&lt;/shortname&gt;
    &lt;description&gt;Purge all archived nodes&lt;/description&gt;
    &lt;url&gt;/purge&lt;/url&gt;
    &lt;authentication&gt;user&lt;/authentication&gt;
    &lt;transaction&gt;none&lt;/transaction&gt;
&lt;/webscript&gt;
&lt;/pre&gt;&lt;b&gt;purge.get.html.ftl&lt;/b&gt;&lt;br /&gt;
Freemarker template&lt;br /&gt;
&lt;script class="brush:html" type="syntaxhighlighter"&gt;
&lt;![CDATA[
&lt;html&gt; 
    &lt;head&gt;
        &lt;title&gt;Purge all&lt;/title&gt;
    &lt;/head&gt;
    &lt;body&gt;
Alfresco ${server.edition} Edition v${server.version} :
&lt;p&gt;Purged all archived nodes. Elapsed time: ${elapsed} ms.&lt;/p&gt;&lt;/body&gt;
&lt;/html&gt;
]]&gt;
&lt;/script&gt;&lt;br /&gt;
&lt;b&gt;purge-context.xml&lt;/b&gt;&lt;br /&gt;
Spring bean's configuration&lt;br /&gt;
&lt;script class="brush:xml" type="syntaxhighlighter"&gt;
&lt;![CDATA[
&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd"&gt;
&lt;beans&gt;
    &lt;bean id="webscript.it.alfresco.util.purge.get"
          class="it.alfresco.util.Purge" parent="webscript"&gt;
        &lt;property name="nodeArchiveService" ref="nodeArchiveService"/&gt;
    &lt;/bean&gt;
&lt;/beans&gt;
]]&gt;
&lt;/script&gt;&lt;br /&gt;
I created &lt;code&gt;it/alfresco/utils&lt;/code&gt; folders under &lt;code&gt;/Company Home/Data Dictionary/Web Scripts Extensions&lt;/code&gt; where I created both &lt;code&gt;purge.get.desc.xml&lt;/code&gt; and &lt;code&gt;purge.get.html.ftl&lt;/code&gt;. &lt;br /&gt;
&lt;br /&gt;
The Spring context file &lt;code&gt;purge-context.xml&lt;/code&gt; goes under &lt;code&gt;/tomcat/shared/classes/alfresco/extension&lt;/code&gt; in the main alfresco installation folder.&lt;br /&gt;
&lt;br /&gt;
Our bean makes use of &lt;a href="http://dev.alfresco.com/resource/docs/java/repository/org/alfresco/repo/node/archive/NodeArchiveService.html"&gt;&lt;code&gt;nodeArchiveService&lt;/code&gt;&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Here's the Java Code:&lt;br /&gt;
&lt;br /&gt;
&lt;script class="brush:java" type="syntaxhighlighter"&gt;
&lt;![CDATA[
package it.alfresco.util;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.util.HashMap;
import java.util.Map;

import org.alfresco.repo.node.archive.NodeArchiveService;
import org.springframework.extensions.webscripts.Cache;
import org.springframework.extensions.webscripts.Status;
import org.springframework.extensions.webscripts.DeclarativeWebScript;
import org.springframework.extensions.webscripts.WebScriptRequest;
import org.alfresco.service.cmr.repository.StoreRef;

/**
 *
 * @author mturatti
 */
public class Purge extends DeclarativeWebScript {

    final Logger logger = LoggerFactory.getLogger(Purge.class);
    private NodeArchiveService nodeArchiveService;

    public void setNodeArchiveService(NodeArchiveService nodeArchiveService) {
        this.nodeArchiveService = nodeArchiveService;
    }

    @Override
    protected Map&lt;String, Object&gt; executeImpl(WebScriptRequest req, Status status, Cache cache) {
        logger.info("@@@ Purging all archived nodes... ");
        final long start = System.currentTimeMillis();
        try {
            this.nodeArchiveService.purgeAllArchivedNodes(StoreRef.STORE_REF_WORKSPACE_SPACESSTORE);
        } catch (Throwable t) {
            logger.error("@@@ Error executing purge ", t);
            errorMessage(status, Status.STATUS_INTERNAL_SERVER_ERROR,
                    "Runtime error: " + t.getMessage() + ". Cause: " + t.getCause());
            return null;
        }
        final long elapsed = System.currentTimeMillis() - start;
        Map&lt;String, Object&gt; model = new HashMap&lt;String, Object&gt;();
        model.put("elapsed", elapsed);
        logger.info("@@@ Elapsed time (ms): " + elapsed);
        return model;
    }

    private void errorMessage(Status status, int code, final String message) {
        status.setCode(code);
        status.setMessage(message);
        status.setRedirect(true);
    }
}
]]&gt;
&lt;/script&gt;&lt;br /&gt;
The Purge project under &lt;a href="http://netbeans.org/"&gt;Netbeans&lt;/a&gt; 6.9.1&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-k6I6956QhAw/TW0lrt0qCiI/AAAAAAAAAMQ/sFafXhuCadI/s1600/2011-03-01%2B05.55.21%2Bpm.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="451" src="http://4.bp.blogspot.com/-k6I6956QhAw/TW0lrt0qCiI/AAAAAAAAAMQ/sFafXhuCadI/s640/2011-03-01%2B05.55.21%2Bpm.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
The bean is injected with nodeArchiveService and calls method &lt;a href="http://dev.alfresco.com/resource/docs/java/repository/org/alfresco/repo/node/archive/NodeArchiveService.html#purgeAllArchivedNodes(org.alfresco.service.cmr.repository.StoreRef)"&gt;&lt;code&gt;purgeAllArchivedNodes&lt;/code&gt;&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
The single most important line of code is:&lt;br /&gt;
&lt;pre&gt;this.nodeArchiveService.purgeAllArchivedNodes(StoreRef.STORE_REF_WORKSPACE_SPACESSTORE);
&lt;/pre&gt;&lt;br /&gt;
We are passing the &lt;code&gt;STORE_REF_WORKSPACE_SPACESSTORE&lt;/code&gt; constant, which is "&lt;i&gt;the store that the items originally came from&lt;/i&gt;", as per JavaDocs:&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;purgeAllArchivedNodes&lt;/h3&gt;&lt;pre&gt;void &lt;b&gt;purgeAllArchivedNodes&lt;/b&gt;(org.alfresco.service.cmr.repository.StoreRef&amp;nbsp;originalStoreRef)&lt;/pre&gt;&lt;dl&gt;&lt;dd&gt;Permanently delete all archived nodes.&lt;/dd&gt;&lt;dd&gt;
&lt;dl&gt;&lt;dt&gt;&lt;b&gt;Parameters:&lt;/b&gt;&lt;/dt&gt;
&lt;dd&gt;&lt;code&gt;originalStoreRef&lt;/code&gt;&amp;nbsp;- the store that the items originally came from&lt;/dd&gt;&lt;/dl&gt;&lt;/dd&gt;&lt;/dl&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Calling the WebScript&lt;/span&gt;&lt;br /&gt;
After starting Alfresco, to get a list of available &lt;a href="http://wiki.alfresco.com/wiki/Web_Scripts"&gt;Web Scripts&lt;/a&gt; and check if this new one has been installed correctly, point the browser to&amp;nbsp;&lt;a href="http://localhost:8080/alfresco/service/index"&gt;http://localhost:8080/alfresco/service/index&lt;/a&gt;&amp;nbsp;and then press link "Browse all Web Scripts". &lt;b&gt;Remember to authenticate as admin&lt;/b&gt;, so that the Web Script can be ran with administrator privileges.&lt;br /&gt;
&lt;br /&gt;
The "Purge" Web Script should be the first one&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-5Si2BbHP4wQ/TW0p1ecV8wI/AAAAAAAAAMY/r3fWmz4hpI4/s1600/2011-03-01%2B06.14.41%2Bpm.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="328" src="http://2.bp.blogspot.com/-5Si2BbHP4wQ/TW0p1ecV8wI/AAAAAAAAAMY/r3fWmz4hpI4/s640/2011-03-01%2B06.14.41%2Bpm.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;To invoke its execution and clean-up the trashcan you can call:&lt;br /&gt;
&lt;a href="http://localhost:8080/alfresco/service/purge"&gt;http://localhost:8080/alfresco/service/purge&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
If everything went fine you should see the following response page:&lt;br /&gt;
&lt;blockquote&gt;&lt;span class="Apple-style-span" style="background-color: yellow;"&gt;Alfresco Community Edition v3.4.0 (c 3335) :&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-style-span" style="background-color: yellow;"&gt;Purged all archived nodes. Elapsed time: 438 ms.&lt;/span&gt;&lt;/blockquote&gt;Then verify all users' trashcans are now empty:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh6.googleusercontent.com/-qME0YiDD1zs/TW0q7kWO2FI/AAAAAAAAAMg/mZOduYox-YA/s1600/2011-03-01+06.20.32+pm.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="482" src="https://lh6.googleusercontent.com/-qME0YiDD1zs/TW0q7kWO2FI/AAAAAAAAAMg/mZOduYox-YA/s640/2011-03-01+06.20.32+pm.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
As we now have our RESTful purge Web Script in place, it's easy to call it from an external script, maybe scheduled via a cron job for a periodical clean-up. In alternative it's possible to use the Quartz engine embedded into Alfresco, but my personal preference is to avoid putting into Alfresco too many responsibilities: if you need to change the scheduling it's easier for maintenance to have an external scheduler.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2123901513613960343-838829864938019951?l=camelcase.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/HtDir/~4/feIchPeylZM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://camelcase.blogspot.com/feeds/838829864938019951/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://camelcase.blogspot.com/2011/03/purge-alfresco-archived-nodes.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2123901513613960343/posts/default/838829864938019951?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2123901513613960343/posts/default/838829864938019951?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/HtDir/~3/feIchPeylZM/purge-alfresco-archived-nodes.html" title="Purge Alfresco archived nodes" /><author><name>Maurizio Turatti</name><uri>https://profiles.google.com/102438417486767972026</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-IvJqcUeK3po/AAAAAAAAAAI/AAAAAAAAAPk/SaoRD_FN2xc/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://lh6.googleusercontent.com/-qbFghMC26xw/TW0Z4iHKhyI/AAAAAAAAAMM/zI17KoBKW3I/s72-c/2011-03-01+04.15.27+pm.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://camelcase.blogspot.com/2011/03/purge-alfresco-archived-nodes.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUMFRXoycSp7ImA9WhdUFEs.&quot;"><id>tag:blogger.com,1999:blog-2123901513613960343.post-3998513903241842921</id><published>2011-02-10T16:01:00.001+01:00</published><updated>2011-10-01T13:10:14.499+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-01T13:10:14.499+02:00</app:edited><title>My Career Path</title><content type="html">At least twice a &lt;strike&gt;year&lt;/strike&gt;&amp;nbsp;day I'm thinking about my career path, I know it's a masochist attitude I can't prevent. I have changed many companies in the last few years and I have spent a lot of time traveling and consulting abroad, somehow until complete exhaustion. This year I'm settling down a little and this can help thinking clearly and planning for the next move.&lt;br /&gt;
&lt;br /&gt;
However, you don't have many options if you leave in a mid-technical environment like Italy, where my natural attitude for freelance consulting is not easily sustainable. On the other hand, taking an airplane each Monday morning and sleeping in hotels five days out of seven is no more in my top list of wet dreams... I realized that after suddenly awaking in the middle of the night without knowing in what city or even nation I was: if you did consulting for more than few weeks per year, you know what I mean.&lt;br /&gt;
&lt;br /&gt;
At the end, even if one is in the middle of a transition, the most important thing is to know who you are and where you want to go in the next following years. I then was re-reading an &lt;a href="http://dannorth.net/classic-soa/"&gt;old, beautiful article&lt;/a&gt; from Dan North when, in his blog, I have found the &lt;a href="http://dannorth.net/2010/02/06/time-for-a-change/"&gt;best possibile definition&lt;/a&gt; for what I want to go (back) next:&lt;br /&gt;
&lt;blockquote&gt;
&lt;span class="Apple-style-span" style="color: #555555; font-family: Verdana, 'BitStream vera Sans', Helvetica, sans-serif; font-size: 12px; line-height: 17px;"&gt;[...] In particular I found I had moved away from the things I really enjoyed – writing software that matters and building high-performing software teams – more towards big organisational change, which, while it arguably has a bigger impact on an organisation, isn’t really where I wanted to be. So my criteria for what to do next came down to: &lt;b&gt;writing business-critical software in a small, high-performing team, in an organisation that trusts its people and encourages them to excel. Having a great relationship with the consumers of that software and having them closely engaged with its delivery would be a huge plus&lt;/b&gt;.&lt;/span&gt;&lt;/blockquote&gt;
The above bold sentence should fly into my CV under the section "Career Objectives".&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2123901513613960343-3998513903241842921?l=camelcase.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/HtDir/~4/43s56L0rYN4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://camelcase.blogspot.com/feeds/3998513903241842921/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://camelcase.blogspot.com/2011/02/my-career-path.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2123901513613960343/posts/default/3998513903241842921?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2123901513613960343/posts/default/3998513903241842921?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/HtDir/~3/43s56L0rYN4/my-career-path.html" title="My Career Path" /><author><name>Maurizio Turatti</name><uri>https://profiles.google.com/102438417486767972026</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-IvJqcUeK3po/AAAAAAAAAAI/AAAAAAAAAPk/SaoRD_FN2xc/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://camelcase.blogspot.com/2011/02/my-career-path.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DE8MQnY-fCp7ImA9Wx9WFUw.&quot;"><id>tag:blogger.com,1999:blog-2123901513613960343.post-387169161666879078</id><published>2011-01-16T14:02:00.002+01:00</published><updated>2011-01-20T10:48:03.854+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-01-20T10:48:03.854+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="cloud" /><category scheme="http://www.blogger.com/atom/ns#" term="business" /><title>It's time to apply consumer's design models to Enterprise systems</title><content type="html">I'm an happy Apple Mac user since one year now. I have never used a Mac before one year ago, when I decided to make the &lt;i&gt;quantum leap&lt;/i&gt;, also because most of my &lt;a href="http://www.alfresco.com/"&gt;Alfresco&lt;/a&gt; colleagues run a Mac and I have been always curious to try it. Before my idea was that Macs were cool but too much of a closed platform, now I think Macs are just the best way to have my work done. I do not want to judge some Apple's very&amp;nbsp;restrictive&amp;nbsp;policies here, everybody has a different opinion (I think the idea of forcing Objective-C on the iPhone is moving millions of Java developers toward Google Android, for example).&lt;br /&gt;
&lt;br /&gt;
I had my MacBook Pro stolen few months ago but I also have an older PC-compatible laptop as a backup: after two days using it I felt the urgency to run to the very first Apple store to buy a new Mac. Back home, I opened the box, switch on it and after a few seconds it was able to recognize there is a NAS with &lt;a href="http://www.apple.com/macosx/what-is-macosx/time-machine.html"&gt;Time-Machine&lt;/a&gt; backups: it offered me to restore the last backup and, after few hours, it was like my previous Mac was never stolen, as every piece of software was in its place, even the same desktop wallpaper and icons.&lt;br /&gt;
&lt;br /&gt;
I never have to run anti-virus software, I never have to run any disk defragmentation or registry maintenance. I do not waste time in maintenance of hardware drivers: Apple design both hardware and software to work together, so that the user experience is always the smoothest. I'm also an happy user of &lt;a href="http://www.ubuntu.com/"&gt;Ubuntu&lt;/a&gt; Linux, which in my opinion is by far the best desktop Linux distribution. Ubuntu also runs daily in my Mac through a &lt;a href="http://www.virtualbox.org/"&gt;VirtualBox&lt;/a&gt; image, when I have to run some Linux software for my work. Despite the fact Ubuntu software is (almost) as easy as a Mac to install, configure and run, the fact is that Canonical - the company behind Ubuntu - is a software firm only, so they have to run their beautiful O.S. on a&amp;nbsp;multitude&amp;nbsp;of different hardware devices and software device drivers. This is the same problem Windows has. Each computer comes with different internal devices (motherboard, CPU, hard disk, network cards, Wifi cards, graphic card, ....), so there always a combination of hardware devices and software drivers which could cause a compatibility issue. It is always a race for Canonical, Microsoft and the others to prove their software on a plethora of hardware and sometimes broken drivers. So, when we put the blame on Microsoft in cases when Windows can be occasionally unstable, actually we should blame the real source, which usually is some sub-component of our PC and quite always a buggy software driver, which is out of control of Microsoft and others.&lt;br /&gt;
&lt;br /&gt;
Of course, the above was especially true in the early days of personal computing, when enthusiasts like me were used to assemble their PC by hand. Now, if you buy especially a laptop from, say, Dell, HP, IBM, etc... you can be pretty sure all components are pre-tested, so everything will (almost) work just fine. However, nobody designs and produces beautiful hardware and client software like Apple does so, despite all competitors' efforts, my position is that the overall &lt;a href="http://designshack.co.uk/articles/inspiration/15-design-tips-to-learn-from-apple"&gt;Apple user experience&lt;/a&gt; is still by far superior, exactly because every single component, together with communication, is designed with integration and user's experience in mind. It is &lt;a href="http://www.cooper.com/#about:books"&gt;interaction design&lt;/a&gt; at its best.&lt;br /&gt;
&lt;br /&gt;
This positive and viable integration, by contrast, is very hard to be experienced when moving from consumer computing to Enterprise systems nowadays. Let's be honest:&lt;i&gt;&amp;nbsp;distributed enterprise systems are a total mess of hardware and software combinations&lt;/i&gt;. The level of&amp;nbsp;incompatibility&amp;nbsp;that we could have in a single consumer devices is multiplied by a magnitude factor. The major problems with Enterprise systems implemented, for example, in JEE or .NET, are due to inter-application and external systems integration issues. The applicative layer usually runs into different application servers, which runs over different operating systems and usually must connect to different relational databases, external information systems (ERP, CRM, ECM, etc....) and messaging systems. There is an explosive combinatorial matrix of configurations in need for testing and QA. At the end each customer needs to run on the existing infrastructure with few variations, so most of the time spent maintaining enterprise applications is actually spent trying to force a software into a specific and unique infrastructure: pitfalls are everywhere. Support centers spend most of their time just running after specific software + hardware configuration issues. No wonder if today some crucial business processes are still running into very old but well HW + SW integrated mainframes.&lt;br /&gt;
&lt;br /&gt;
The positive Apple's integration model should work also for enterprise-class solutions. In my mind Sun Microsystems was one of the companies going closer to applying the Apple's consumer integrated design model to the enterprise world. Sun designed both hardware and software (Solaris O.S., Java, etc were tuned to specific Sun's servers and components). Buying a Sun server was usually a positive integrated experience, running Oracle on Sun servers was a rock-solid decision. The main problem, in my humble opinion, is that Sun was not ready or not willing to go the extra mile: moving the software stack up to applicative layer and moving their business out of the commoditized server business. I mean, Sun's management perceived they had to, as the late open-source initiatives testifies,&amp;nbsp;but the company has never been structured to make this vital step forward executing the process in the right way (McNealy &lt;a href="http://www.theregister.co.uk/2010/12/07/mcnealy_sun_and_open_source/"&gt;almost&amp;nbsp;acknowledges&lt;/a&gt;&amp;nbsp;this), so most of the ideas remained on paper or stuck without execution until Oracle's acquisition was the only way to save the company.&lt;br /&gt;
&lt;br /&gt;
I think strong infrastructural integration is now not enough for a vendor to exit from commoditization trends and for a customer to solve integration's madeness. Some Cloud Computing initiatives are a clear step in the direction of moving the stack up from Infrastructure as a Service to actual Software as a Service. At the end, moving in the cloud the infrastructure only is not going to solve most of the applicative-level problems of moder enterprise solutions: if, for example, I run my software into Amazon EC2, I can solve many infrastructural provisioning problems in a row, but at the applicative layer my J2EE solution is still running into different O.S and application servers which need to be integrated and tested for compatibility and performances.&lt;br /&gt;
&lt;br /&gt;
I guess, even if existing platforms are maybe too young and still immature to move all solutions there, the right direction for better isolating applications and application development from infrastructural problems will be to provide a complete, uniform applicative platform where most reliability and scalability problems are solved by model's definition. I think initiatives like the &lt;a href="http://code.google.com/appengine/"&gt;Google App Engine&lt;/a&gt;,&amp;nbsp;VMWare's &lt;a href="http://www.springsource.com/products"&gt;Cloud Application Framework&lt;/a&gt;, &lt;a href="http://www.salesforce.com/platform/"&gt;Salesforce Platfom&lt;/a&gt; are good examples of what could bring Apple's consumer-side positive experience into the enterprise applications ecosystem soon. Companies should eventually show some perspective,&amp;nbsp;intelligence&amp;nbsp;and courage and&amp;nbsp;&lt;a href="http://www.networkworld.com/news/2008/102908-bechtel.html"&gt;start experimenting&lt;/a&gt; as soon as possible.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Update&lt;/b&gt; (20 Jan 2011): Amazon has just announced the new &lt;a href="http://aws.typepad.com/aws/2011/01/introducing-elastic-beanstalk.html"&gt;AWS Elastic Beanstalk&lt;/a&gt;, which I think should be included in the above list of advanced PaaS solution. It looks much like &lt;a href="http://code.google.com/appengine/"&gt;GAP&lt;/a&gt; and at first sight &lt;a href="http://aws.amazon.com/elasticbeanstalk/"&gt;Amazon's new platform&lt;/a&gt; shows an interesting degree of flexibility for developers. First released version is for Java.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2123901513613960343-387169161666879078?l=camelcase.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/HtDir/~4/7Eqk8DfGYf4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://camelcase.blogspot.com/feeds/387169161666879078/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://camelcase.blogspot.com/2011/01/its-time-to-apply-consumers-design.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2123901513613960343/posts/default/387169161666879078?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2123901513613960343/posts/default/387169161666879078?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/HtDir/~3/7Eqk8DfGYf4/its-time-to-apply-consumers-design.html" title="It's time to apply consumer's design models to Enterprise systems" /><author><name>Maurizio Turatti</name><uri>https://profiles.google.com/102438417486767972026</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-IvJqcUeK3po/AAAAAAAAAAI/AAAAAAAAAPk/SaoRD_FN2xc/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://camelcase.blogspot.com/2011/01/its-time-to-apply-consumers-design.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkUERHoycCp7ImA9Wx9RFUw.&quot;"><id>tag:blogger.com,1999:blog-2123901513613960343.post-3491313570858690582</id><published>2010-12-16T15:36:00.000+01:00</published><updated>2010-12-16T15:36:45.498+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-12-16T15:36:45.498+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="rant" /><title>Do you mean I should work for free?</title><content type="html">Ok, so you want to drive a luxurious BMW, because it's charming, fast and reliable. But then you want to pay the same price of a Fiat Panda, asking to have same maintenance costs and fuel consumption. Are you kidding?&lt;br /&gt;
&lt;br /&gt;
Not really, this is what happens daily in the software industry. Customers want the same level of services, regardless of the price. So they buy a cheaper, open-source solution from an emerging technology shop, but then they ask for a free PoC, like they are used to get from big vendors.&lt;br /&gt;
&lt;br /&gt;
In terms of consulting, it's more or less the same (or even worst). You should have years of experience, able to manage a team and drive the development of a project from its foundations to the end. But your rates should be the same as those of a kid just out of college.&lt;br /&gt;
&lt;br /&gt;
This policy has almost destroyed the freelance market in Italy, but I can see the symptoms in other countries.&lt;br /&gt;
&lt;br /&gt;
Somebody once wrote: "&lt;i&gt;if you pay peanuts you'll get monkeys&lt;/i&gt;". That's valid for both software products and developers.&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.dump.com/2010/12/13/the-vendor-client-relationship-in-real-world-situations-video/"&gt;The Vendor Client Relationship In Real World Situations [VIDEO]&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Good luck.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2123901513613960343-3491313570858690582?l=camelcase.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/HtDir/~4/qZgqyj1EU-E" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://camelcase.blogspot.com/feeds/3491313570858690582/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://camelcase.blogspot.com/2010/12/do-you-mean-i-should-work-for-free.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2123901513613960343/posts/default/3491313570858690582?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2123901513613960343/posts/default/3491313570858690582?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/HtDir/~3/qZgqyj1EU-E/do-you-mean-i-should-work-for-free.html" title="Do you mean I should work for free?" /><author><name>Maurizio Turatti</name><uri>https://profiles.google.com/102438417486767972026</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-IvJqcUeK3po/AAAAAAAAAAI/AAAAAAAAAPk/SaoRD_FN2xc/s512-c/photo.jpg" /></author><thr:total>1</thr:total><feedburner:origLink>http://camelcase.blogspot.com/2010/12/do-you-mean-i-should-work-for-free.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0YGRX0zeSp7ImA9Wx5UFkk.&quot;"><id>tag:blogger.com,1999:blog-2123901513613960343.post-7931423452650116950</id><published>2010-10-21T10:18:00.000+02:00</published><updated>2010-10-21T10:18:44.381+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-10-21T10:18:44.381+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="transactions" /><category scheme="http://www.blogger.com/atom/ns#" term="distributed" /><title>XA Transactions</title><content type="html">Reading &lt;a href="http://dev.mysql.com/doc/refman/5.0/en/xa.html"&gt;MySQL documentation&lt;/a&gt; I have found a good description of how &lt;a href="http://en.wikipedia.org/wiki/X/Open_XA"&gt;XA distributed transactions&lt;/a&gt; and two-phases commit work. I like to share it because it's short, clear and applies in general situations. It also teaches us why distributed transaction, being much more complex, should be managed very carefully to avoid severe&amp;nbsp;performance penalties.&lt;br /&gt;
&lt;blockquote&gt;Applications that use global transactions involve one or more &lt;b&gt;Resource Managers&lt;/b&gt; and a &lt;b&gt;Transaction Manager&lt;/b&gt;:&lt;br /&gt;
&lt;br /&gt;
A &lt;b&gt;Resource Manager&lt;/b&gt; (RM) provides access to transactional resources. A database server is one kind of resource manager. It must be possible to either commit or roll back transactions managed by the RM.&lt;br /&gt;
&lt;br /&gt;
A &lt;b&gt;Transaction Manager&lt;/b&gt; (TM) coordinates the transactions that are part of a global transaction. It communicates with the RMs that handle each of these transactions. The individual transactions within a global transaction are “branches” of the global transaction. Global transactions and their branches are identified by a naming scheme described later.&lt;br /&gt;
&lt;br /&gt;
The MySQL implementation of XA MySQL enables a MySQL server to act as a Resource Manager that handles XA transactions within a global transaction. A client program that connects to the MySQL server acts as the Transaction Manager.&lt;br /&gt;
&lt;br /&gt;
To carry out a global transaction, it is necessary to know which components are involved, and bring each component to a point when it can be committed or rolled back. Depending on what each component reports about its ability to succeed, they must all commit or roll back as an atomic group. That is, either all components must commit, or all components musts roll back. To manage a global transaction, it is necessary to take into account that any component or the connecting network might fail.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;The process for executing a global transaction uses two-phase commit&lt;/b&gt; (2PC). This takes place after the actions performed by the branches of the global transaction have been executed.&lt;br /&gt;
&lt;br /&gt;
In the &lt;b&gt;first phase&lt;/b&gt;, all branches are prepared. That is, they are told by the TM to get ready to commit. Typically, this means each RM that manages a branch records the actions for the branch in stable storage. The branches indicate whether they are able to do this, and these results are used for the second phase.&lt;br /&gt;
&lt;br /&gt;
In the &lt;b&gt;second phase&lt;/b&gt;, the TM tells the RMs whether to commit or roll back. If all branches indicated when they were prepared that they will be able to commit, all branches are told to commit. If any branch indicated when it was prepared that it will not be able to commit, all branches are told to roll back.&lt;br /&gt;
&lt;br /&gt;
In some cases, a global transaction might use one-phase commit (1PC). For example, when a Transaction Manager finds that a global transaction consists of only one transactional resource (that is, a single branch), that resource can be told to prepare and commit at the same time.&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2123901513613960343-7931423452650116950?l=camelcase.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/HtDir/~4/484nCfzkyJw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://camelcase.blogspot.com/feeds/7931423452650116950/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://camelcase.blogspot.com/2010/10/xa-transactions.html#comment-form" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2123901513613960343/posts/default/7931423452650116950?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2123901513613960343/posts/default/7931423452650116950?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/HtDir/~3/484nCfzkyJw/xa-transactions.html" title="XA Transactions" /><author><name>Maurizio Turatti</name><uri>https://profiles.google.com/102438417486767972026</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-IvJqcUeK3po/AAAAAAAAAAI/AAAAAAAAAPk/SaoRD_FN2xc/s512-c/photo.jpg" /></author><thr:total>2</thr:total><feedburner:origLink>http://camelcase.blogspot.com/2010/10/xa-transactions.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkEFRXs4eyp7ImA9Wx5UF0g.&quot;"><id>tag:blogger.com,1999:blog-2123901513613960343.post-1349079407096567614</id><published>2010-10-03T10:32:00.002+02:00</published><updated>2010-10-22T14:30:14.533+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-10-22T14:30:14.533+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Alfresco" /><category scheme="http://www.blogger.com/atom/ns#" term="WebDAV" /><category scheme="http://www.blogger.com/atom/ns#" term="macosx" /><title>Mounting Alfresco as a WebDAV Network Folder</title><content type="html">I like &lt;a href="http://www.alfresco.com/products/collaboration/"&gt;Alfresco Share&lt;/a&gt;'s beautiful UI and I like Alfresco's &lt;a href="http://wiki.alfresco.com/wiki/CIFS_Windows"&gt;CIFS&lt;/a&gt; capability of being mounted as a remote SMB/CIFS network drive. Anyway, one of the few shortcomings of Share is that you cannot download multiple files from the Web UI (you can upload multiple files), something you can easily do by mounting Alfresco as a SMB/CIFS drive, dragging &amp;amp; dropping files in and out.&lt;br /&gt;
&lt;br /&gt;
Note: &lt;i&gt;I think one of the coolest features we should add to Share's UI would be the ability to download a selection of folders as a ZIP file in one shot.&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
CIFS is not enabled by default, so there are Alfresco deployments where you cannot mount it locally on your workstation, for security reasons or because of a lazy sys admin. However, to interact with Alfresco easily you always have an option: mount it as a &lt;a href="http://en.wikipedia.org/wiki/Webdav"&gt;WebDAV&lt;/a&gt; network folder, which is easy to do from any operating system and it's enabled by default in Alfresco (unless your sys admin disabled it on purpose).&lt;br /&gt;
&lt;br /&gt;
On the Alfresco Wiki you can find &lt;a href="http://wiki.alfresco.com/wiki/Client_WebDAV"&gt;instructions for mounting WebDAV on Windows&lt;/a&gt;. Here I want to quickly show you the same thing on  Mac OSX and Finder, which is even easier (of course, it's a Mac....).&lt;br /&gt;
&lt;br /&gt;
First of all, Alfresco's WebDAV is available from address: http(s)://&lt;i&gt;hostname&lt;/i&gt;:&lt;i&gt;port&lt;/i&gt;/alfresco/webdav/&lt;br /&gt;
in my case I'm using a local Alfresco server, within my home network, so it is: http://myalfresco.it:8080/alfresco/webdav&lt;br /&gt;
Beware that in most cases Alfresco is configured to be accessible to the external world via HTTPS and not plain HTTP, so write your URL accordingly.&lt;br /&gt;
&lt;br /&gt;
Now open the Finder and press ⌘K to open the server connection dialog, adding you Alfresco's WebDAV URL like this:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_w_2W4fwPu2g/TKg71kF3FkI/AAAAAAAAAKc/MOnR41CWUYg/s1600/Schermata+2010-10-03+a+10.15.42.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="175" src="http://1.bp.blogspot.com/_w_2W4fwPu2g/TKg71kF3FkI/AAAAAAAAAKc/MOnR41CWUYg/s320/Schermata+2010-10-03+a+10.15.42.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
After pressing "connect" (sorry, my screenshots are in Italian....) and entering your own Alfresco's username and password, you'll get this:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_w_2W4fwPu2g/TKg8-S-jkxI/AAAAAAAAAKg/7JjtviI5jI4/s1600/Schermata+2010-10-03+a+10.17.29.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="197" src="http://1.bp.blogspot.com/_w_2W4fwPu2g/TKg8-S-jkxI/AAAAAAAAAKg/7JjtviI5jI4/s320/Schermata+2010-10-03+a+10.17.29.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Now you could go to your Alfresco's User Home, in my case it's mturatti, and start dragging and dropping file into Alfresco, or from Alfresco into your desktop.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_w_2W4fwPu2g/TKg9j1xkkfI/AAAAAAAAAKk/yfl2b5VD4wI/s1600/Schermata+2010-10-03+a+10.22.29.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="188" src="http://3.bp.blogspot.com/_w_2W4fwPu2g/TKg9j1xkkfI/AAAAAAAAAKk/yfl2b5VD4wI/s320/Schermata+2010-10-03+a+10.22.29.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2123901513613960343-1349079407096567614?l=camelcase.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/HtDir/~4/BwGk6niWmZo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://camelcase.blogspot.com/feeds/1349079407096567614/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://camelcase.blogspot.com/2010/10/mounting-alfresco-as-webdav-network.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2123901513613960343/posts/default/1349079407096567614?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2123901513613960343/posts/default/1349079407096567614?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/HtDir/~3/BwGk6niWmZo/mounting-alfresco-as-webdav-network.html" title="Mounting Alfresco as a WebDAV Network Folder" /><author><name>Maurizio Turatti</name><uri>https://profiles.google.com/102438417486767972026</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-IvJqcUeK3po/AAAAAAAAAAI/AAAAAAAAAPk/SaoRD_FN2xc/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_w_2W4fwPu2g/TKg71kF3FkI/AAAAAAAAAKc/MOnR41CWUYg/s72-c/Schermata+2010-10-03+a+10.15.42.png" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://camelcase.blogspot.com/2010/10/mounting-alfresco-as-webdav-network.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0UFRHc5fSp7ImA9Wx5WEkk.&quot;"><id>tag:blogger.com,1999:blog-2123901513613960343.post-8911966502323456618</id><published>2010-09-23T15:39:00.001+02:00</published><updated>2010-09-23T15:40:15.925+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-09-23T15:40:15.925+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Activiti" /><category scheme="http://www.blogger.com/atom/ns#" term="BPM" /><title>BPMN 2.0 process modeling on the iPad</title><content type="html">Have a look at &lt;a href="http://www.jorambarrez.be/blog/2010/09/22/bpmn-2-0-process-modeling-on-the-ipad/"&gt;this blog post and video&lt;/a&gt;, &lt;a href="http://signavio.com/"&gt;Signavio&lt;/a&gt; BPMN modeler can be used from iPad as well. The modeler works with &lt;a href="http://www.activiti.org/"&gt;Activiti&lt;/a&gt;, as Signavio donated it to the open source project.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2123901513613960343-8911966502323456618?l=camelcase.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/HtDir/~4/5Nf0-688Vls" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://camelcase.blogspot.com/feeds/8911966502323456618/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://camelcase.blogspot.com/2010/09/bpmn-20-process-modeling-on-ipad.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2123901513613960343/posts/default/8911966502323456618?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2123901513613960343/posts/default/8911966502323456618?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/HtDir/~3/5Nf0-688Vls/bpmn-20-process-modeling-on-ipad.html" title="BPMN 2.0 process modeling on the iPad" /><author><name>Maurizio Turatti</name><uri>https://profiles.google.com/102438417486767972026</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-IvJqcUeK3po/AAAAAAAAAAI/AAAAAAAAAPk/SaoRD_FN2xc/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://camelcase.blogspot.com/2010/09/bpmn-20-process-modeling-on-ipad.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUQCSHg-eyp7ImA9Wx5WEU4.&quot;"><id>tag:blogger.com,1999:blog-2123901513613960343.post-8333902419812841581</id><published>2010-09-22T08:36:00.000+02:00</published><updated>2010-09-22T08:36:09.653+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-09-22T08:36:09.653+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Glassfish" /><category scheme="http://www.blogger.com/atom/ns#" term="Netbeans" /><title>JavaOne 2010, Glassfish and Netbeans</title><content type="html">Despite the rumors and my own pessimism, it looks like there are plenty of &lt;a href="http://goo.gl/tMdD"&gt;Netbeans&lt;/a&gt;&amp;nbsp;and &lt;a href="http://blogs.sun.com/arungupta/entry/javaone_2010_is_right_here"&gt;Glassfish&lt;/a&gt; sessions at &lt;a href="http://www.oracle.com/us/javaonedevelop/index.html"&gt;JavaOne 2010&lt;/a&gt;. From my point of view the combination of Netbeans + Glassfish and &lt;a href="http://blog.springsource.com/2007/07/03/java-ee-6-gets-it-right/"&gt;Java EE 6&lt;/a&gt; is the easiest and quickest way to develop and deploy Enterprise-class Java (and &lt;a href="http://groovy.codehaus.org/"&gt;Groovy&lt;/a&gt;) applications, without all &lt;a href="http://java.dzone.com/news/draft-spring-xml-hell"&gt;those boring xml configuration files&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
As reported by &lt;a href="http://blogs.sun.com/theaquarium/entry/report_from_glassfish_community_event"&gt;many observers&lt;/a&gt;, if we look at the apparently outstanding number of people trying to attend Gf and Nb sessions at Javaone, I think nobody can deny the fact that,&amp;nbsp;contrarily&amp;nbsp;to previsions, interest around both &lt;a href="https://glassfish.dev.java.net/"&gt;Glassfish&lt;/a&gt; and Netbeans is growing at great speed in the Java community.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2123901513613960343-8333902419812841581?l=camelcase.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/HtDir/~4/OcJ07O4uBPo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://camelcase.blogspot.com/feeds/8333902419812841581/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://camelcase.blogspot.com/2010/09/javaone-2010-glassfish-and-netbeans.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2123901513613960343/posts/default/8333902419812841581?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2123901513613960343/posts/default/8333902419812841581?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/HtDir/~3/OcJ07O4uBPo/javaone-2010-glassfish-and-netbeans.html" title="JavaOne 2010, Glassfish and Netbeans" /><author><name>Maurizio Turatti</name><uri>https://profiles.google.com/102438417486767972026</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-IvJqcUeK3po/AAAAAAAAAAI/AAAAAAAAAPk/SaoRD_FN2xc/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://camelcase.blogspot.com/2010/09/javaone-2010-glassfish-and-netbeans.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DE8NQHY4eyp7ImA9Wx5SGE8.&quot;"><id>tag:blogger.com,1999:blog-2123901513613960343.post-8124662802953875086</id><published>2010-08-11T11:13:00.002+02:00</published><updated>2010-08-15T01:01:31.833+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-08-15T01:01:31.833+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="video" /><category scheme="http://www.blogger.com/atom/ns#" term="email" /><category scheme="http://www.blogger.com/atom/ns#" term="Alfresco" /><category scheme="http://www.blogger.com/atom/ns#" term="IMAP" /><title>A short video demonstrating Alfresco IMAP integration</title><content type="html">A short video from &lt;a href="http://www.alfresco.com/"&gt;Alfresco&lt;/a&gt;'s partner &lt;a href="http://www.ziaconsulting.com/"&gt;Zia Consulting&lt;/a&gt; demonstrating how IMAP integration works in Alfresco. You can access and iteract the whole document repository from a regular email client, like Outlook, Thunderbird or Apple Mail. This opens a set of possible interesting use cases within a company, and doesn't force some employees to learn a new tool to effectively use the document management system.&lt;br /&gt;
&lt;br /&gt;
Some more links about email management with Alfresco:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="http://wiki.alfresco.com/wiki/IMAP"&gt;IMAP on Alfresco Wiki&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://keytocontent.blogspot.com/2010/05/mounting-alfresco-as-imap-mount-point.html"&gt;Mounting Alfresco as IMAP mount point&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://keytocontent.blogspot.com/2010/05/upload-files-to-alfresco-via-email.html"&gt;Upload files to Alfresco via email&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;object height="385" width="480"&gt;&lt;param name="movie" value="http://www.youtube.com/v/BsYFs-Nb-gE&amp;amp;hl=it_IT&amp;amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="al
ways"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/BsYFs-Nb-gE&amp;amp;hl=it_IT&amp;amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2123901513613960343-8124662802953875086?l=camelcase.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/HtDir/~4/JscCiU8zwBw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://camelcase.blogspot.com/feeds/8124662802953875086/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://camelcase.blogspot.com/2010/08/short-video-from-alfresco-s-partner-zia.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2123901513613960343/posts/default/8124662802953875086?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2123901513613960343/posts/default/8124662802953875086?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/HtDir/~3/JscCiU8zwBw/short-video-from-alfresco-s-partner-zia.html" title="A short video demonstrating Alfresco IMAP integration" /><author><name>Maurizio Turatti</name><uri>https://profiles.google.com/102438417486767972026</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-IvJqcUeK3po/AAAAAAAAAAI/AAAAAAAAAPk/SaoRD_FN2xc/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://camelcase.blogspot.com/2010/08/short-video-from-alfresco-s-partner-zia.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CU8MQnw9eCp7ImA9Wx5TE00.&quot;"><id>tag:blogger.com,1999:blog-2123901513613960343.post-8012434870200927436</id><published>2010-07-28T09:58:00.000+02:00</published><updated>2010-07-28T09:58:03.260+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-07-28T09:58:03.260+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="OpenESB" /><title>OpenESB Summit 2010 in Brussels</title><content type="html">The OpenESB community now has a new web site:&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.openesb-community.org/"&gt;http://www.openesb-community.org/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Authors write:&lt;br /&gt;
"&lt;i&gt;This site is dedicated to the OpenESB community. The aim of this site is not to to create a substitute to the previous sites dedicated to OpenESB. We simply try to fuel up the community with news, papers, blogs users feedback about OpenESB&lt;/i&gt;."&lt;br /&gt;
&lt;br /&gt;
The OpenESB community is trying hard to survive the impact of Oracle's acquisition, which has stopped most of &lt;a href="https://open-esb.dev.java.net/"&gt;OpenESB&lt;/a&gt; development and practically killed &lt;a href="https://fuji.dev.java.net/"&gt;Project Fuji&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
To revamp OpenESB is now mandatory creating a bigger and stronger open community around the product. Some companies seems the most active at present, the ones I know are: &lt;a href="http://logicoy.com/"&gt;Logicoy&lt;/a&gt;, &lt;a href="http://forgerock.com/"&gt;ForgeRock&lt;/a&gt; and &lt;a href="http://pymma.com/"&gt;Pymma&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
This effort will be illustrated in the forthcoming &lt;a href="http://www.openesb-community.org/ezpublish/index.php/eng/OpenESB-Summits-2010-2011"&gt;OpenESB Summit 2010&lt;/a&gt;, Brussels (Belgium) Monday 4th and Tuesday 5th of October 2010.&lt;br /&gt;
&lt;br /&gt;
On the other hand, I think the OpenESB (and &lt;a href="http://en.wikipedia.org/wiki/Java_Business_Integration"&gt;JBI&lt;/a&gt;, as Oracle has never been committed to JBI) communities needs to connect to the wider &lt;a href="http://netbeans.org/community/index.html"&gt;Netbeans community&lt;/a&gt;, to join forces, as OpenESB to survive without Sun needs to keep the pace with newer Netbeans releases much better than what has been achieved so far.&lt;br /&gt;
&lt;br /&gt;
Personally, as from the beginning of this year I'm fully employed with &lt;a href="http://www.alfresco.com/"&gt;Alfresco Software&lt;/a&gt;, I will keep following the OpenESB evolution and experiment with Alfresco integration.&lt;br /&gt;
&lt;br /&gt;
Good luck to all former colleagues involved with this project.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2123901513613960343-8012434870200927436?l=camelcase.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/HtDir/~4/5nWgcEe-OUE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://camelcase.blogspot.com/feeds/8012434870200927436/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://camelcase.blogspot.com/2010/07/openesb-summit-2010-in-brussels.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2123901513613960343/posts/default/8012434870200927436?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2123901513613960343/posts/default/8012434870200927436?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/HtDir/~3/5nWgcEe-OUE/openesb-summit-2010-in-brussels.html" title="OpenESB Summit 2010 in Brussels" /><author><name>Maurizio Turatti</name><uri>https://profiles.google.com/102438417486767972026</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-IvJqcUeK3po/AAAAAAAAAAI/AAAAAAAAAPk/SaoRD_FN2xc/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://camelcase.blogspot.com/2010/07/openesb-summit-2010-in-brussels.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUUHQXw8cCp7ImA9Wx9QEk0.&quot;"><id>tag:blogger.com,1999:blog-2123901513613960343.post-5840328147770030750</id><published>2010-07-27T12:46:00.013+02:00</published><updated>2010-12-24T17:13:50.278+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-12-24T17:13:50.278+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="XML" /><category scheme="http://www.blogger.com/atom/ns#" term="WSDL" /><category scheme="http://www.blogger.com/atom/ns#" term="Netbeans" /><title>XML Schema and WSDL modules for Netbeans 6.9</title><content type="html">In the latest Netbeans releases, for some reason I can't understand, they removed the XML and WSDL plugin from the list of default available. This plugin is one of the best tools you have in Netbeans, as it allows to create and modify XML files, XML Schemas and WSDL files easily and graphically. It is a reduced version of what you get with Altova's XML Spy.&lt;br /&gt;
&lt;br /&gt;
Browsing the Internet I have found a Netbeans repository from which I can install this plugin for Netbeans 6.9 also, what I did is to add a new Plugin download URL:&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://dlc.sun.com.edgesuite.net/netbeans/updates/6.9/uc/m1/dev/catalog.xml.gz"&gt;http://dlc.sun.com.edgesuite.net/netbeans/updates/6.9/uc/m1/dev/catalog.xml.gz&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Then I added the new plugin center:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_w_2W4fwPu2g/TE62mQ8aUXI/AAAAAAAAAJY/VxvA-BxyWbg/s1600/Schermata+2010-07-27+a+12.26.20.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="187" src="http://4.bp.blogspot.com/_w_2W4fwPu2g/TE62mQ8aUXI/AAAAAAAAAJY/VxvA-BxyWbg/s400/Schermata+2010-07-27+a+12.26.20.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
From where I can install some development plugins:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_w_2W4fwPu2g/TE62YLl_xHI/AAAAAAAAAJQ/_TYpulo6nTs/s1600/Schermata+2010-07-27+a+12.32.49.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="408" src="http://4.bp.blogspot.com/_w_2W4fwPu2g/TE62YLl_xHI/AAAAAAAAAJQ/_TYpulo6nTs/s640/Schermata+2010-07-27+a+12.32.49.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
To know what it's possible with this plugin, have a look at:&amp;nbsp;&lt;a href="http://xml.netbeans.org/"&gt;http://xml.netbeans.org/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
I'd like to now if the URL above is the right one or there are different places from where it is possible to download updated releases of this.&lt;br /&gt;
&lt;br /&gt;
&lt;span class="Apple-style-span" style="font-size: large;"&gt;*** UPDATE ***&lt;/span&gt;&lt;br /&gt;
December 24, 2010 - I have tried with Netbeans 7.0 beta and found the below plugin catalog:&lt;br /&gt;
&lt;a href="http://dlc.sun.com.edgesuite.net/netbeans/updates/7.0/uc/m2/dev/catalog.xml.gz"&gt;http://dlc.sun.com.edgesuite.net/netbeans/updates/7.0/uc/m2/dev/catalog.xml.gz&lt;/a&gt;&lt;br /&gt;
Not tested that much, so please report any &lt;a href="http://netbeans.org/projects/xml/lists/issues/archive"&gt;issue&lt;/a&gt; to xml.netbeans.org&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2123901513613960343-5840328147770030750?l=camelcase.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/HtDir/~4/kPpBFqTUzUI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://camelcase.blogspot.com/feeds/5840328147770030750/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://camelcase.blogspot.com/2010/07/xml-schema-and-wsdl-modules-for.html#comment-form" title="4 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2123901513613960343/posts/default/5840328147770030750?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2123901513613960343/posts/default/5840328147770030750?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/HtDir/~3/kPpBFqTUzUI/xml-schema-and-wsdl-modules-for.html" title="XML Schema and WSDL modules for Netbeans 6.9" /><author><name>Maurizio Turatti</name><uri>https://profiles.google.com/102438417486767972026</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-IvJqcUeK3po/AAAAAAAAAAI/AAAAAAAAAPk/SaoRD_FN2xc/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_w_2W4fwPu2g/TE62mQ8aUXI/AAAAAAAAAJY/VxvA-BxyWbg/s72-c/Schermata+2010-07-27+a+12.26.20.png" height="72" width="72" /><thr:total>4</thr:total><feedburner:origLink>http://camelcase.blogspot.com/2010/07/xml-schema-and-wsdl-modules-for.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0cGRXg7fCp7ImA9WxFUE04.&quot;"><id>tag:blogger.com,1999:blog-2123901513613960343.post-8745988751816436833</id><published>2010-05-17T11:19:00.009+02:00</published><updated>2010-06-24T02:23:44.604+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-06-24T02:23:44.604+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Alfresco" /><category scheme="http://www.blogger.com/atom/ns#" term="BPM" /><title>Alfresco launches Activiti BPMN 2.0 business process engine</title><content type="html">&lt;a href="http://www.alfresco.com/"&gt;Alfresco&lt;/a&gt; today announced the &lt;a href="http://www.activiti.org/"&gt;Activiti Business Process Management&lt;/a&gt; (BPM) open source project and the addition of leading BPM expert &lt;a href="http://processdevelopments.blogspot.com/"&gt;Tom Baeyens&lt;/a&gt; as Chief Architect, BPM. The Activiti project is a new Apache-licensed open source BPM platform designed from a blank slate to implement the new &lt;a href="http://en.wikipedia.org/wiki/Business_Process_Modeling_Notation"&gt;BPMN&lt;/a&gt; 2.0 standard from the Object Management Group (OMG) and to support new technology challenges such as interoperability and the Cloud. Tom Baeyens, founder and architect of the JBoss &lt;a href="http://www.jboss.org/jbpm"&gt;jBPM&lt;/a&gt; project, and fellow architect &lt;a href="http://www.jorambarrez.be/blog/"&gt;Joram Barrez&lt;/a&gt;, join Alfresco to create the first Apache-licensed BPMN 2.0 engine.&lt;br /&gt;
&lt;div&gt;&lt;ul&gt;&lt;li&gt;Official Alfresco's &lt;a href="http://www.alfresco.com/media/releases/2010/05/activiti_bpm/"&gt;press release&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.activiti.org/"&gt;Activiti BPM site&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://processdevelopments.blogspot.com/"&gt;Tom Baeyens' Blog&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.jorambarrez.be/blog/"&gt;Joram Barrez's Blog&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.activiti.org/images/screenshots/activiti-modeler.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="186" src="http://www.activiti.org/images/screenshots/activiti-modeler.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2123901513613960343-8745988751816436833?l=camelcase.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/HtDir/~4/Jgid3L1PrWA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://camelcase.blogspot.com/feeds/8745988751816436833/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://camelcase.blogspot.com/2010/05/alfresco-launches-activiti-bpmn-20.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2123901513613960343/posts/default/8745988751816436833?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2123901513613960343/posts/default/8745988751816436833?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/HtDir/~3/Jgid3L1PrWA/alfresco-launches-activiti-bpmn-20.html" title="Alfresco launches Activiti BPMN 2.0 business process engine" /><author><name>Maurizio Turatti</name><uri>https://profiles.google.com/102438417486767972026</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-IvJqcUeK3po/AAAAAAAAAAI/AAAAAAAAAPk/SaoRD_FN2xc/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://camelcase.blogspot.com/2010/05/alfresco-launches-activiti-bpmn-20.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkUMQnc7fip7ImA9WxFUFk4.&quot;"><id>tag:blogger.com,1999:blog-2123901513613960343.post-7366315458660157595</id><published>2010-05-09T14:37:00.001+02:00</published><updated>2010-06-27T13:31:23.906+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-06-27T13:31:23.906+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="JEE" /><title>Java EE6 Overview</title><content type="html">Check out this SlideShare Presentation: &lt;div style="width:425px" id="__ss_857405"&gt;&lt;strong style="display:block;margin:12px 0 4px"&gt;&lt;a href="http://www.slideshare.net/pelegri/java-ee6-overview-presentation" title="Java EE6 Overview"&gt;Java EE6 Overview&lt;/a&gt;&lt;/strong&gt;&lt;object id="__sse857405" width="425" height="355"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=javaee620081218-1229624411746376-1&amp;stripped_title=java-ee6-overview-presentation" /&gt;&lt;param name="allowFullScreen" value="true"/&gt;&lt;param name="allowScriptAccess" value="always"/&gt;&lt;embed name="__sse857405" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=javaee620081218-1229624411746376-1&amp;stripped_title=java-ee6-overview-presentation" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div style="padding:5px 0 12px"&gt;View more &lt;a href="http://www.slideshare.net/"&gt;presentations&lt;/a&gt; from &lt;a href="http://www.slideshare.net/pelegri"&gt;pelegri&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2123901513613960343-7366315458660157595?l=camelcase.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/HtDir/~4/N_VqL9-x7OI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://camelcase.blogspot.com/feeds/7366315458660157595/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://camelcase.blogspot.com/2010/05/java-ee6-overview.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2123901513613960343/posts/default/7366315458660157595?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2123901513613960343/posts/default/7366315458660157595?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/HtDir/~3/N_VqL9-x7OI/java-ee6-overview.html" title="Java EE6 Overview" /><author><name>Maurizio Turatti</name><uri>https://profiles.google.com/102438417486767972026</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-IvJqcUeK3po/AAAAAAAAAAI/AAAAAAAAAPk/SaoRD_FN2xc/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://camelcase.blogspot.com/2010/05/java-ee6-overview.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0YAQ3k_eSp7ImA9WxFQEkk.&quot;"><id>tag:blogger.com,1999:blog-2123901513613960343.post-676904835060625797</id><published>2010-05-07T18:12:00.003+02:00</published><updated>2010-05-07T18:19:02.741+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-05-07T18:19:02.741+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="BPEL" /><category scheme="http://www.blogger.com/atom/ns#" term="OpenESB" /><title>Pymma about BPEL Compensation</title><content type="html">Another great technical paper from &lt;a href="http://www.pymma.com/eng"&gt;Pymma Consulting&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.pymma.com/eng/IT-Tech-Papers/Pdf-folder/BPEL-Compensation-complet-guide"&gt;http://www.pymma.com/eng/IT-Tech-Papers/Pdf-folder/BPEL-Compensation-complet-guide&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;"&lt;i&gt;&lt;b&gt;Every Thing You Always Wanted to Know About BPEL Compensation But Were Afraid to Ask ;-)&lt;/b&gt;.&lt;br /&gt;BPEL compensation is one of the main feature used to provide consistency in a business process. Unfortunately, BPEL tutorials often skip this part of Oasis specifications. Even if on Internet you can find papers on that topic, few propose a complete and progressive explanation with simple exercises. It is the reason why we decided to write a complete tutorial which covers all the features defined in BPEL Specifications. We hope that this paper will be useful for you. Please send us your feedback and your comment.&lt;/i&gt;"&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Download from &lt;a href="http://www.pymma.com/eng/content/download/4388/22449/file/Compensation%20with%20Glassfish%20ESB%20V1.pdf"&gt;here&lt;/a&gt;.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2123901513613960343-676904835060625797?l=camelcase.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/HtDir/~4/-ig0gcIwNL4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://camelcase.blogspot.com/feeds/676904835060625797/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://camelcase.blogspot.com/2010/05/pymma-about-bpel-compensation.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2123901513613960343/posts/default/676904835060625797?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2123901513613960343/posts/default/676904835060625797?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/HtDir/~3/-ig0gcIwNL4/pymma-about-bpel-compensation.html" title="Pymma about BPEL Compensation" /><author><name>Maurizio Turatti</name><uri>https://profiles.google.com/102438417486767972026</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-IvJqcUeK3po/AAAAAAAAAAI/AAAAAAAAAPk/SaoRD_FN2xc/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://camelcase.blogspot.com/2010/05/pymma-about-bpel-compensation.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0YHQHc9fyp7ImA9WxBaGU4.&quot;"><id>tag:blogger.com,1999:blog-2123901513613960343.post-5057442192525874934</id><published>2010-03-30T10:38:00.007+02:00</published><updated>2010-03-30T10:52:11.967+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-03-30T10:52:11.967+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="mysql" /><category scheme="http://www.blogger.com/atom/ns#" term="Groovy" /><title>From database table to Excel with Groovy</title><content type="html">I have a MySQL table with customers data and I want to select records and create an Excel &lt;a href="http://en.wikipedia.org/wiki/Comma-separated_values"&gt;CSV&lt;/a&gt; file from them. This can be easily done in Groovy with few lines of code:&lt;br /&gt;&lt;br /&gt;&lt;pre style="font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; border: 1px dashed rgb(153, 153, 153); line-height: 14px; padding: 5px; overflow: auto; width: 100%;"&gt;&lt;code&gt;package it.alfresco.groovy&lt;br /&gt;&lt;br /&gt;import groovy.sql.Sql&lt;br /&gt;&lt;br /&gt;def sql = Sql.newInstance("jdbc:mysql://localhost:3306/test",&lt;br /&gt; "root", "******", "com.mysql.jdbc.Driver")&lt;br /&gt;&lt;br /&gt;def query = "select * from webinar order by company"&lt;br /&gt;&lt;br /&gt;outFile = new File("/Users/mturatti/Desktop/Roadshow.csv")&lt;br /&gt;appendFlag = false&lt;br /&gt;outStream = new FileOutputStream(outFile, appendFlag)&lt;br /&gt;writer = new FileWriter(outFile, appendFlag)&lt;br /&gt;outChannel = outStream.channel&lt;br /&gt;&lt;br /&gt;outFile &amp;lt;&amp;lt; "Firstname; Lastname; Email; Company; Job Title; Process\r\n"&lt;br /&gt;sql.eachRow(query, { outFile &amp;lt;&amp;lt; "${it.firstname}; ${it.lastname}; ${it.email}; ${it.company}; ${it.title}; 1\r" });&lt;br /&gt;&lt;br /&gt;println outFile.text.size()&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;The table contains the following columns: firstname, lastname, email, company, title.&lt;br /&gt;The resulting CSV file can be opened by Excel and Openoffice.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2123901513613960343-5057442192525874934?l=camelcase.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/HtDir/~4/ieJ60kWI0Bk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://camelcase.blogspot.com/feeds/5057442192525874934/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://camelcase.blogspot.com/2010/03/from-database-table-to-excel-with.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2123901513613960343/posts/default/5057442192525874934?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2123901513613960343/posts/default/5057442192525874934?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/HtDir/~3/ieJ60kWI0Bk/from-database-table-to-excel-with.html" title="From database table to Excel with Groovy" /><author><name>Maurizio Turatti</name><uri>https://profiles.google.com/102438417486767972026</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-IvJqcUeK3po/AAAAAAAAAAI/AAAAAAAAAPk/SaoRD_FN2xc/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://camelcase.blogspot.com/2010/03/from-database-table-to-excel-with.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkMCSHY7fSp7ImA9WxBSE0w.&quot;"><id>tag:blogger.com,1999:blog-2123901513613960343.post-5914521847573481322</id><published>2009-12-20T13:56:00.004+01:00</published><updated>2009-12-20T14:07:49.805+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-12-20T14:07:49.805+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="JEE" /><category scheme="http://www.blogger.com/atom/ns#" term="Spring" /><title>Spring 3.0 GA</title><content type="html">Spring 3.0 &lt;a href="http://blog.springsource.com/2009/12/16/spring-framework-3-0-goes-ga/"&gt;is now GA&lt;/a&gt;. Spring has already fully demonstrated to be a successful alternative to EJB development. JEE 6 has learnt from Spring and simplified a lot enterprise Java development, becoming much more lightweight and usable. It shows that some good degree of competition can improve the market, but I hope Spring will keep following its own philosophy instead of trying too much to compete with JEE. the risk I see is that Spring could become too wide and difficult to understand.&lt;br /&gt;Spring has demonstrated that the open community can produce better products than vendors' committees, so keep doing the good job of simplifying enterprise development.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2123901513613960343-5914521847573481322?l=camelcase.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/HtDir/~4/CBREFGj_ejE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://camelcase.blogspot.com/feeds/5914521847573481322/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://camelcase.blogspot.com/2009/12/spring-30-ga.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2123901513613960343/posts/default/5914521847573481322?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2123901513613960343/posts/default/5914521847573481322?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/HtDir/~3/CBREFGj_ejE/spring-30-ga.html" title="Spring 3.0 GA" /><author><name>Maurizio Turatti</name><uri>https://profiles.google.com/102438417486767972026</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-IvJqcUeK3po/AAAAAAAAAAI/AAAAAAAAAPk/SaoRD_FN2xc/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://camelcase.blogspot.com/2009/12/spring-30-ga.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkEMQH84eyp7ImA9WxBTFU4.&quot;"><id>tag:blogger.com,1999:blog-2123901513613960343.post-8653574047169449981</id><published>2009-12-11T12:16:00.004+01:00</published><updated>2009-12-11T12:24:41.133+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-12-11T12:24:41.133+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="strategy" /><category scheme="http://www.blogger.com/atom/ns#" term="management" /><title>Competitive Strategies</title><content type="html">If you want to learn and discuss about &lt;a href="http://en.wikipedia.org/wiki/Competitive_strategy"&gt;competitive strategy&lt;/a&gt;, my friend &lt;a href="http://www.linkedin.com/in/marcoterribile"&gt;Marco&lt;/a&gt; has started a very interesting &lt;a href="http://marcoterribile.blogspot.com/"&gt;blog&lt;/a&gt; on the subject. As an expert manager and consultant, Marco collects is thoughts and discuss books and articles about strategic management. Sometime we need to stop, exit from day by day activities and think out of the box to evaluate whether we are following a strategic path or just following short-term tactics.&lt;br /&gt;&lt;br /&gt;Somebody once wrote: &lt;span style="font-style:italic;"&gt;Strategy without tactic is a dream. Tactic without strategy is a nightmare.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2123901513613960343-8653574047169449981?l=camelcase.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/HtDir/~4/4lzZhBuyl6U" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://camelcase.blogspot.com/feeds/8653574047169449981/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://camelcase.blogspot.com/2009/12/competitive-strategies.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2123901513613960343/posts/default/8653574047169449981?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2123901513613960343/posts/default/8653574047169449981?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/HtDir/~3/4lzZhBuyl6U/competitive-strategies.html" title="Competitive Strategies" /><author><name>Maurizio Turatti</name><uri>https://profiles.google.com/102438417486767972026</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-IvJqcUeK3po/AAAAAAAAAAI/AAAAAAAAAPk/SaoRD_FN2xc/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://camelcase.blogspot.com/2009/12/competitive-strategies.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0QHQn05cCp7ImA9Wx9VEEQ.&quot;"><id>tag:blogger.com,1999:blog-2123901513613960343.post-8961246529033356240</id><published>2009-11-22T15:04:00.020+01:00</published><updated>2011-01-27T02:22:13.328+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-01-27T02:22:13.328+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Groovy" /><category scheme="http://www.blogger.com/atom/ns#" term="scripting" /><title>Groovy for quick text clean-up</title><content type="html">Having some XML files to clean-up and transform, I was looking for a script-based solution, so that I don't have to go through the Java edit-build-run cycle. Usually I would think to &lt;a href="http://www.python.org/"&gt;Python&lt;/a&gt;, but it's a long time since I have touched it and then I wanted to try some &lt;a href="http://groovy.codehaus.org/"&gt;Groovy&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
The file I have to transform is an automatically generated XML, like this:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush:html"&gt;&amp;lt;_pdl&amp;gt;&amp;lt;/_pdl&amp;gt;
&amp;lt;_tkn&amp;gt;&amp;lt;/_tkn&amp;gt;
&amp;lt;_out&amp;gt;&amp;lt;/_out&amp;gt;
&amp;lt;_tds&amp;gt;&amp;lt;/_tds&amp;gt;
&amp;lt;_evt&amp;gt;&amp;lt;/_evt&amp;gt;
&amp;lt;_lfn&amp;gt;&amp;lt;/_lfn&amp;gt;
&amp;lt;tc&amp;gt;&amp;lt;/tc&amp;gt;
&amp;lt;fc&amp;gt;&amp;lt;/fc&amp;gt;
&lt;/pre&gt;&lt;br /&gt;
I want to strip things out to get only the start elements, like this:&lt;br /&gt;
&lt;pre class="brush:html"&gt;&amp;lt;_pdl&amp;gt;
&amp;lt;_tkn&amp;gt;
&amp;lt;_out&amp;gt;
&amp;lt;_tds&amp;gt;
&amp;lt;_evt&amp;gt;
&amp;lt;_lfn&amp;gt;
&amp;lt;tc&amp;gt;
&amp;lt;fc&amp;gt;
&lt;/pre&gt;&lt;br /&gt;
A quick and dirty Groovy solution can be something like:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush:java"&gt;def file = "C:\\Users\\mauri\\Desktop\\mapping.txt"

StringBuffer dest = new StringBuffer();
new File(file).eachLine{ line -&amp;gt; line = line.trim()
   if (line.equals("")) {}
      else if (line.indexOf("/") &amp;gt; -1) {
      dest.append(line.substring(0, line.indexOf("/")-1))
      dest.append("\n")
   } else {
      dest.append(line)
      dest.append("\n")
   }
}

print dest.toString()
&lt;/pre&gt;&lt;br /&gt;
Probably there are much better ways to do that in Groovy (I'm a rookie here), but I can recycle most of my Java skills and well known Java syntax, which saves me a lot of time. Especially, even if I have to learn new interesting things like &lt;a href="http://groovy.codehaus.org/Closures"&gt;closures&lt;/a&gt;, I can re-use years of knowledge about the Java API, which from my point of view makes Groovy a winning tool in the JVM world.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2123901513613960343-8961246529033356240?l=camelcase.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/HtDir/~4/4adcHZiE_X4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://camelcase.blogspot.com/feeds/8961246529033356240/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://camelcase.blogspot.com/2009/11/groovy-for-quick-text-clean-up.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2123901513613960343/posts/default/8961246529033356240?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2123901513613960343/posts/default/8961246529033356240?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/HtDir/~3/4adcHZiE_X4/groovy-for-quick-text-clean-up.html" title="Groovy for quick text clean-up" /><author><name>Maurizio Turatti</name><uri>https://profiles.google.com/102438417486767972026</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-IvJqcUeK3po/AAAAAAAAAAI/AAAAAAAAAPk/SaoRD_FN2xc/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://camelcase.blogspot.com/2009/11/groovy-for-quick-text-clean-up.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEcBRn89fyp7ImA9WxNUEk4.&quot;"><id>tag:blogger.com,1999:blog-2123901513613960343.post-1807682270294319</id><published>2009-11-03T07:50:00.011+01:00</published><updated>2009-11-03T08:07:37.167+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-03T08:07:37.167+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="java" /><category scheme="http://www.blogger.com/atom/ns#" term="OSGi" /><category scheme="http://www.blogger.com/atom/ns#" term="JBI" /><category scheme="http://www.blogger.com/atom/ns#" term="Fuji" /><category scheme="http://www.blogger.com/atom/ns#" term="POJO" /><category scheme="http://www.blogger.com/atom/ns#" term="OpenESB" /><title>Fuji Simple Service API, SpringDM and OSGi Integration with JBI</title><content type="html">Sujit Biswas wrote an &lt;a href="http://blogs.sun.com/sujit/entry/fuji_simple_service_api_and"&gt;interesting article&lt;/a&gt; which:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;"[...] shows how to integrate &lt;a href="https://fuji.dev.java.net/"&gt;Fuji &lt;/a&gt;simple service api with &lt;a href="http://www.springsource.org/osgi"&gt;spring/springDM&lt;/a&gt;  application, We will create a springDM application which instantiates the above provider Implementation , based on spring-config and spring-osgi-config files.&lt;/span&gt;"&lt;br /&gt;&lt;br /&gt;Fuji allows for &lt;a href="http://wiki.open-esb.java.net/Wiki.jsp?page=Fuji.spring.and.osgi.services.integration"&gt;Spring and OSGi services integration&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;"The simple service provides the capability to invoke/interact with JAVA code outside of JBI, i.e Service API provides a bridge between code that is hosted outside of a JBI component and service endpoints available on the NMR."&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This enables integration of OSGI/POJO services with JBI. Read &lt;a href="http://blogs.sun.com/sujit/entry/fuji_simple_service_api_and"&gt;Sujit's article&lt;/a&gt; for more.&lt;br /&gt;&lt;br /&gt;&lt;a style="font-weight: bold;" href="http://wiki.open-esb.java.net/Wiki.jsp?page=FujiAbout"&gt;About Fuji&lt;/a&gt;&lt;span style="font-weight: bold;"&gt;:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;"Project Fuji forms the core component of &lt;span style="font-weight: bold;"&gt;Open ESB v3&lt;/span&gt; effort and represents Sun's next generation open source integration runtime, focused on providing a lightweight, developer-friendly, and extensible platform for composite application development.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;At the core of Project Fuji is a lightweight micro-kernel based on JBI (JSR 208) and OSGi. Packaged as an OSGi bundle, the micro-kernel can be installed in any OSGi R4 compliant runtime (such as &lt;/span&gt;&lt;a style="font-style: italic;" class="external" href="http://felix.apache.org/"&gt;Felix&lt;/a&gt;&lt;img style="font-style: italic;" class="outlink" src="http://wiki.open-esb.java.net/images/out.png" alt="" /&gt;&lt;span style="font-style: italic;"&gt;, &lt;/span&gt;&lt;a style="font-style: italic;" class="external" href="http://www.knopflerfish.org/"&gt;Knopflerfish&lt;/a&gt;&lt;img style="font-style: italic;" class="outlink" src="http://wiki.open-esb.java.net/images/out.png" alt="" /&gt;&lt;span style="font-style: italic;"&gt; or &lt;/span&gt;&lt;a style="font-style: italic;" class="external" href="http://www.eclipse.org/equinox"&gt;Equinox&lt;/a&gt;&lt;img style="font-style: italic;" class="outlink" src="http://wiki.open-esb.java.net/images/out.png" alt="" /&gt;&lt;span style="font-style: italic;"&gt;), including &lt;/span&gt;&lt;a style="font-style: italic;" class="external" href="https://glassfish.dev.java.net/"&gt;GlassFish v3&lt;/a&gt;&lt;img style="font-style: italic;" class="outlink" src="http://wiki.open-esb.java.net/images/out.png" alt="" /&gt;&lt;span style="font-style: italic;"&gt;. JSR 208 support introduces a robust, message-based service bus to the OSGi environment and allows the wide range of existing JBI "components" (adapters and containers) to run in Fuji.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;Developer experience is a primary focal point in Fuji as evidenced by the level of flexibility and accessibility offered in the platform. Starting with a rapid, top-down development language, IFL (Integration Flow Language), developers can quickly and easily generate an integration application using a domain-specific grammar. The service development model favors convention and configuration over boilerplate code and framework APIs, allowing integration developers to focus on the code that matters. "&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2123901513613960343-1807682270294319?l=camelcase.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/HtDir/~4/4gnsOOrJwNI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://camelcase.blogspot.com/feeds/1807682270294319/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://camelcase.blogspot.com/2009/11/fuji-simple-service-api-springdm-and.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2123901513613960343/posts/default/1807682270294319?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2123901513613960343/posts/default/1807682270294319?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/HtDir/~3/4gnsOOrJwNI/fuji-simple-service-api-springdm-and.html" title="Fuji Simple Service API, SpringDM and OSGi Integration with JBI" /><author><name>Maurizio Turatti</name><uri>https://profiles.google.com/102438417486767972026</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-IvJqcUeK3po/AAAAAAAAAAI/AAAAAAAAAPk/SaoRD_FN2xc/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://camelcase.blogspot.com/2009/11/fuji-simple-service-api-springdm-and.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkABQX4-eyp7ImA9WxNWEks.&quot;"><id>tag:blogger.com,1999:blog-2123901513613960343.post-2228781364624883208</id><published>2009-10-11T13:29:00.003+02:00</published><updated>2009-10-11T13:32:30.053+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-11T13:32:30.053+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="jcaps" /><title>Link to Java CAPS Release 6.2 Documentation Center</title><content type="html">The Java CAPS Release &lt;span style="font-weight: bold;"&gt;6.2&lt;/span&gt; Documentation Center is already available at:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://docs.sun.com/app/docs/doc/821-0538"&gt;http://docs.sun.com/app/docs/doc/821-0538&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2123901513613960343-2228781364624883208?l=camelcase.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/HtDir/~4/7ZakqC9f--0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://camelcase.blogspot.com/feeds/2228781364624883208/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://camelcase.blogspot.com/2009/10/link-to-java-caps-release-62.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2123901513613960343/posts/default/2228781364624883208?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2123901513613960343/posts/default/2228781364624883208?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/HtDir/~3/7ZakqC9f--0/link-to-java-caps-release-62.html" title="Link to Java CAPS Release 6.2 Documentation Center" /><author><name>Maurizio Turatti</name><uri>https://profiles.google.com/102438417486767972026</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-IvJqcUeK3po/AAAAAAAAAAI/AAAAAAAAAPk/SaoRD_FN2xc/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://camelcase.blogspot.com/2009/10/link-to-java-caps-release-62.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkYHQnY4fCp7ImA9WxNXGU8.&quot;"><id>tag:blogger.com,1999:blog-2123901513613960343.post-8203517910493449806</id><published>2009-10-07T16:55:00.008+02:00</published><updated>2009-10-07T17:08:53.834+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-07T17:08:53.834+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="jcaps" /><title>Java CAPS 6.2 to be released</title><content type="html">There are rumours that the latest &lt;a href="http://www.sun.com/software/javaenterprisesystem/javacaps/index.jsp"&gt;Java CAPS&lt;/a&gt; &lt;span style="font-weight: bold;"&gt;6.2&lt;/span&gt; will be released within end of this month. So far Sun has already published the &lt;a href="http://wikis.sun.com/display/JavaCAPS/Java+CAPS+6.2"&gt;release notes&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;In summary, from the release notes:&lt;br /&gt;&lt;p&gt;This release of Java CAPS uses the following versions of &lt;a href="http://www.netbeans.org/"&gt;NetBeans &lt;/a&gt;and &lt;a href="https://glassfish.dev.java.net/"&gt;GlassFish&lt;/a&gt;:&lt;/p&gt; &lt;ul&gt;&lt;li&gt;NetBeans IDE 6.5.1 &lt;br /&gt;&lt;/li&gt;&lt;li&gt;GlassFish Enterprise Server 2.1 patch 2 &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;This release of Java CAPS provides new support for the following operating systems:&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;Design-Time&lt;/b&gt; &lt;br /&gt;&lt;/p&gt; &lt;ul&gt;&lt;li&gt;Windows Server 2008 &lt;br /&gt;&lt;/li&gt;&lt;li&gt;Red Hat Enterprise Linux AS 5.3 (64 bit) &lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;   &lt;p&gt;&lt;b&gt;Runtime&lt;/b&gt; &lt;br /&gt;&lt;/p&gt; &lt;ul&gt;&lt;li&gt;Windows Server 2008 (OS: 32 bit; JVM: 32 bit) &lt;br /&gt;&lt;/li&gt;&lt;li&gt;OpenSolaris 2008.11 (OS: 32 bit; JVM: 32 bit) &lt;br /&gt;&lt;/li&gt;&lt;li&gt;Red Hat Enterprise Linux Server 5.3 (OS: 32 bit; JVM: 32 bit) &lt;br /&gt;&lt;/li&gt;&lt;li&gt;Red Hat Enterprise Linux Server 5.3 (OS: 64 bit; JVM: 32 bit) &lt;br /&gt;&lt;/li&gt;&lt;li&gt;IBM AIX 5L 5.3 (OS: 64 bit; JVM: 32 bit) &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;This release of Java CAPS adds support for the following &lt;span style="font-weight: bold;"&gt;browsers &lt;/span&gt;and &lt;span style="font-weight: bold;"&gt;external systems&lt;/span&gt;:&lt;/p&gt; &lt;ul&gt;&lt;li&gt;Firefox 3.5.2 for accessing all Java CAPS browser components &lt;br /&gt;&lt;/li&gt;&lt;li&gt;OpenSSO Web Services Security (WSS) Agent for the HTTP Adapter &lt;br /&gt;&lt;/li&gt;&lt;li&gt;SWIFT 2009 messages and SWIFT 2009 certification &lt;br /&gt;&lt;/li&gt;&lt;li&gt;SAP JCo 3 for the SAP BAPI Adapte&lt;/li&gt;&lt;/ul&gt;My comments:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;It is a bit disappointing that the IDE is not Netbeans 6.7. I have experienced JAX-WS Web Services deployment issues with Netbeans 6.5 and the suggested solution has been to upgrade to Nb 6.7 (!?!) so I really hope Sun has fixed some bugs in Nb 6.5 before packaging it with JCAPS. It would be annoying to start patching the stuff the day after downloading it.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Finally Java CAPS has an understandable version numbering convention: this release will be called 6.2 and not "6 update 2", which meant nothing unless you want to remember customers a sound close to the Windows service packs...&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2123901513613960343-8203517910493449806?l=camelcase.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/HtDir/~4/TsOpPq3C8AE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://camelcase.blogspot.com/feeds/8203517910493449806/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://camelcase.blogspot.com/2009/10/java-caps-62-to-be-released.html#comment-form" title="4 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2123901513613960343/posts/default/8203517910493449806?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2123901513613960343/posts/default/8203517910493449806?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/HtDir/~3/TsOpPq3C8AE/java-caps-62-to-be-released.html" title="Java CAPS 6.2 to be released" /><author><name>Maurizio Turatti</name><uri>https://profiles.google.com/102438417486767972026</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-IvJqcUeK3po/AAAAAAAAAAI/AAAAAAAAAPk/SaoRD_FN2xc/s512-c/photo.jpg" /></author><thr:total>4</thr:total><feedburner:origLink>http://camelcase.blogspot.com/2009/10/java-caps-62-to-be-released.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUACR3o9eSp7ImA9WxNXEUw.&quot;"><id>tag:blogger.com,1999:blog-2123901513613960343.post-2865974398395438044</id><published>2009-09-28T04:23:00.005+02:00</published><updated>2009-09-28T08:02:46.461+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-28T08:02:46.461+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="JDBC" /><category scheme="http://www.blogger.com/atom/ns#" term="clustering" /><category scheme="http://www.blogger.com/atom/ns#" term="database" /><title>Tungsten</title><content type="html">It seems there is a fork of the old &lt;a href="http://c-jdbc.ow2.org/"&gt;C-JDBC&lt;/a&gt; project that I was not aware of:&lt;br /&gt;&lt;p&gt;&lt;a href="http://www.continuent.com/community/tungsten-overview"&gt;Tungsten&lt;/a&gt; &lt;span style="font-style: italic;"&gt;is an open source stack for deploying and operating horizontally scaled database clusters, also known as database scale-out.  Scale-out works by spreading data across multiple, independent database servers connected through a network. The model offers an intuitive, incremental approach to solving the following important database problems:&lt;/span&gt;&lt;/p&gt; &lt;ul style="font-style: italic;"&gt;&lt;li&gt;Preventing data loss though up-to-date replica databases and coordinated backups&lt;/li&gt;&lt;li&gt;Increasing overall application availability by providing rapid database failover&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Raising performance and through-put by dispatching read traffic to replicas&lt;/li&gt;&lt;li&gt;Integrating data between heterogenous systems, for example to support scaling of commercial databases using low-cost open source databases. &lt;/li&gt;&lt;/ul&gt;C-JDBC is:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;span style="font-style: italic;"&gt;an open source (LGPL) database cluster middleware that allows          any Java application (standalone application, servlet or EJB container,          ...) to transparently access a cluster of databases through JDBC(tm).          The database is distributed and replicated among several nodes and          C-JDBC balances the queries among these nodes. C-JDBC handles node          failures and provides support for checkpointing and hot recovery.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2123901513613960343-2865974398395438044?l=camelcase.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/HtDir/~4/Ft1IZLwORyE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://camelcase.blogspot.com/feeds/2865974398395438044/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://camelcase.blogspot.com/2009/09/tungsten.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2123901513613960343/posts/default/2865974398395438044?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2123901513613960343/posts/default/2865974398395438044?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/HtDir/~3/Ft1IZLwORyE/tungsten.html" title="Tungsten" /><author><name>Maurizio Turatti</name><uri>https://profiles.google.com/102438417486767972026</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-IvJqcUeK3po/AAAAAAAAAAI/AAAAAAAAAPk/SaoRD_FN2xc/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://camelcase.blogspot.com/2009/09/tungsten.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Dk4ASXs5eCp7ImA9WxJVEEs.&quot;"><id>tag:blogger.com,1999:blog-2123901513613960343.post-2598085464844513684</id><published>2009-06-27T02:37:00.011+02:00</published><updated>2009-06-27T03:09:08.520+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-27T03:09:08.520+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="JEE" /><category scheme="http://www.blogger.com/atom/ns#" term="EJB" /><title>EJB 3.1 specs heading in the right direction</title><content type="html">Since a long time EJB were loosing ground in favour of simpler and more effective programming models. specifically, &lt;a href="http://www.springsource.org/"&gt;Spring&lt;/a&gt; has become the leading framework to develop and deploy JEE applications.&lt;br /&gt;&lt;br /&gt;&lt;div style="width: 540px;"&gt;&lt;br /&gt;&lt;a href="http://www.indeed.com/jobtrends?q=%28spring+AND+java%29%2C+%28ejb+AND+java%29" title="(spring AND java), (ejb AND java) Job Trends"&gt;&lt;br /&gt;&lt;img src="http://www.indeed.com/trendgraph/jobgraph.png?q=%28spring+AND+java%29%2C+%28ejb+AND+java%29" alt="(spring AND java), (ejb AND java) Job Trends graph" width="540" border="0" height="300" /&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;table style="font-size: 80%;" width="100%" border="0" cellpadding="6" cellspacing="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;&lt;a href="http://www.indeed.com/jobtrends?q=%28spring+AND+java%29%2C+%28ejb+AND+java%29"&gt;(spring AND java), (ejb AND java) Job Trends&lt;/a&gt;&lt;/td&gt;&lt;br /&gt;&lt;td align="right"&gt;&lt;a href="http://www.indeed.com/q-%28spring-AND-java%29-jobs.html"&gt;(spring AND java) jobs&lt;/a&gt; - &lt;a href="http://www.indeed.com/q-%28ejb-AND-java%29-jobs.html"&gt;(ejb AND java) jobs&lt;/a&gt;&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;For these reasons, a sense of urgency is pushing the new EJB specifications toward a massive simplification. This trend was clearly significant when the EJB 3.0 were introduced, and it is continuing now with the latest EJB 3.1.&lt;br /&gt;&lt;br /&gt;Ken Saks, the Specification Lead for EJB 3.1, has written a nice summary of the hottest features. "&lt;span class="entrytitle"&gt;&lt;a href="http://blogs.sun.com/enterprisetechtips/entry/a_sampling_of_ejb_3"&gt;A Sampling of EJB 3.1&lt;/a&gt;" shows you the most interesting news. Together with the upcoming &lt;a href="https://glassfish.dev.java.net/downloads/v3-preview.html"&gt;Glassfish V3&lt;/a&gt; &lt;/span&gt;, which is a very &lt;a href="http://developers.sun.com/appserver/reference/techart/glassfishv3prelude/index.html"&gt;lightweight&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/wiki/OSGi"&gt;OSGi&lt;/a&gt; based application server, the new specs can represent a quantum leap in terms of productivity and win back some developers.&lt;br /&gt;&lt;br /&gt;It is difficult to predict if it is too late to regain developers' confidence and market quotas, but the combination of JEE 6 + EJB 3.1 + Glassfish V3 seems to be heading in the right direction: no overload of features but simplification.&lt;br /&gt;&lt;br /&gt;Specifically, Ken Saks mentions:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Ease of Development: the ability to package enterprise bean classes directly in a .war file, without the need for an ejb-jar&lt;/li&gt;&lt;li&gt;No-interface View: you don't have to write interfaces if you don't need it&lt;/li&gt;&lt;li&gt;Simplified Packaging: You now have the option of placing EJB classes directly in the .war file, using the same packaging guidelines that apply to web application classes.&lt;/li&gt;&lt;li&gt;Singletons: A singleton is a new kind of session bean that is guaranteed to be instantiated once for an application in a particular Java Virtual Machine&lt;/li&gt;&lt;li&gt;Application Startup/Shutdown Callbacks: The introduction of singletons also provides a convenient way for EJB applications to receive callbacks during application initialization or shutdown&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Simplification, is the way to go.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2123901513613960343-2598085464844513684?l=camelcase.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/HtDir/~4/Ox899m9pChg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://camelcase.blogspot.com/feeds/2598085464844513684/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://camelcase.blogspot.com/2009/06/ejb-31-specs-heading-in-right-direction.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2123901513613960343/posts/default/2598085464844513684?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2123901513613960343/posts/default/2598085464844513684?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/HtDir/~3/Ox899m9pChg/ejb-31-specs-heading-in-right-direction.html" title="EJB 3.1 specs heading in the right direction" /><author><name>Maurizio Turatti</name><uri>https://profiles.google.com/102438417486767972026</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-IvJqcUeK3po/AAAAAAAAAAI/AAAAAAAAAPk/SaoRD_FN2xc/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://camelcase.blogspot.com/2009/06/ejb-31-specs-heading-in-right-direction.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUMHQXwzfCp7ImA9WxJWF00.&quot;"><id>tag:blogger.com,1999:blog-2123901513613960343.post-6033582899493150148</id><published>2009-06-22T23:45:00.003+02:00</published><updated>2009-06-22T23:50:30.284+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-22T23:50:30.284+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="OpenMQ" /><category scheme="http://www.blogger.com/atom/ns#" term="JMS" /><category scheme="http://www.blogger.com/atom/ns#" term="REST" /><title>JMS Over HTTP Using OpenMQ</title><content type="html">&lt;a href="http://www.dzone.com/links/index.html"&gt;DZone &lt;/a&gt;has an interesting article about new OpenMQ's features:&lt;br /&gt;&lt;br /&gt;"&lt;a style="font-style: italic;" href="http://mq.dev.java.net/" target="_blank"&gt;OpenMQ&lt;/a&gt;&lt;span style="font-style: italic;"&gt; provide different transport protocol and access channels to access OpenMQ functionalities from different prgramming . One of the access channels which involve HTTP is named &lt;/span&gt;&lt;a style="font-style: italic;" href="https://mq.dev.java.net/4.3-content/ums/umsIntro.html" target="_blank"&gt;Universal Message Service (UMS)&lt;/a&gt;&lt;span style="font-style: italic;"&gt; which provide a simple REST interaction template to place messages and consume them from any programming language and device which can interact with a network server. UMS has some limitations which is simply understandable based on the RESTful nature of UMS. For current version of OpenMQ, it only supports Message Queues as destinations so there is no publish-subscribe functionality available.&lt;/span&gt;"&lt;br /&gt;&lt;br /&gt;&lt;a href="http://java.dzone.com/news/jms-over-http-using-openmq-sun"&gt;Read the full article&lt;/a&gt;.&lt;br /&gt;&lt;a href="https://mq.dev.java.net/"&gt;About OpenMQ&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2123901513613960343-6033582899493150148?l=camelcase.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/HtDir/~4/GcYlu9-id20" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://camelcase.blogspot.com/feeds/6033582899493150148/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://camelcase.blogspot.com/2009/06/jms-over-http-using-openmq.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2123901513613960343/posts/default/6033582899493150148?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2123901513613960343/posts/default/6033582899493150148?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/HtDir/~3/GcYlu9-id20/jms-over-http-using-openmq.html" title="JMS Over HTTP Using OpenMQ" /><author><name>Maurizio Turatti</name><uri>https://profiles.google.com/102438417486767972026</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-IvJqcUeK3po/AAAAAAAAAAI/AAAAAAAAAPk/SaoRD_FN2xc/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://camelcase.blogspot.com/2009/06/jms-over-http-using-openmq.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0YFSHk4eyp7ImA9WxJWE00.&quot;"><id>tag:blogger.com,1999:blog-2123901513613960343.post-9107334154976133447</id><published>2009-06-18T09:09:00.001+02:00</published><updated>2009-06-18T09:11:59.733+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-18T09:11:59.733+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="GlassfishESB" /><category scheme="http://www.blogger.com/atom/ns#" term="OpenESB" /><title>GlassFish ESB v2.1 has been released</title><content type="html">"&lt;span style="font-style: italic;"&gt;New in GlassFish ESB v2.1 is &lt;span style="font-weight: bold;"&gt;clustering&lt;/span&gt; for all components, a great number of bug fixes, the inclusion of the &lt;span style="font-weight: bold;"&gt;IEP SE&lt;/span&gt; and &lt;span style="font-weight: bold;"&gt;Scheduler BC&lt;/span&gt; (a new component!), several component enhancements, inclusion of the latest &lt;span style="font-weight: bold;"&gt;NetBeans 6.5.1&lt;/span&gt; IDE and the latest &lt;span style="font-weight: bold;"&gt;GlassFish v2.1&lt;/span&gt; application server, and support for AIX 5.3&lt;/span&gt;. "&lt;br /&gt;&lt;br /&gt;Look at the &lt;a href="http://wiki.open-esb.java.net/Wiki.jsp?page=GFESBReleaseNotesv2.1"&gt;release notes&lt;/a&gt; for more.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2123901513613960343-9107334154976133447?l=camelcase.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/HtDir/~4/WJQu19hhtdM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://camelcase.blogspot.com/feeds/9107334154976133447/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://camelcase.blogspot.com/2009/06/glassfish-esb-v21-has-been-released.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2123901513613960343/posts/default/9107334154976133447?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2123901513613960343/posts/default/9107334154976133447?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/HtDir/~3/WJQu19hhtdM/glassfish-esb-v21-has-been-released.html" title="GlassFish ESB v2.1 has been released" /><author><name>Maurizio Turatti</name><uri>https://profiles.google.com/102438417486767972026</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-IvJqcUeK3po/AAAAAAAAAAI/AAAAAAAAAPk/SaoRD_FN2xc/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://camelcase.blogspot.com/2009/06/glassfish-esb-v21-has-been-released.html</feedburner:origLink></entry></feed>

