<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss'><id>tag:blogger.com,1999:blog-2123901513613960343</id><updated>2009-11-25T06:58:34.975+01:00</updated><title type='text'>CamelCase</title><subtitle type='html'>SOA, BPM, Business Integration, Enterprise Architecture, Software Design Patterns and Methodologies.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://camelcase.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2123901513613960343/posts/default'/><link rel='alternate' type='text/html' href='http://camelcase.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/2123901513613960343/posts/default?start-index=26&amp;max-results=25'/><author><name>Maurizio</name><uri>http://www.blogger.com/profile/14483021801536852402</uri><email>noreply@blogger.com</email></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>80</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2123901513613960343.post-8961246529033356240</id><published>2009-11-22T15:04:00.016+01:00</published><updated>2009-11-22T15:28:23.768+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Groovy'/><category scheme='http://www.blogger.com/atom/ns#' term='scripting'/><title type='text'>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;pre&gt;&lt;br /&gt;       &amp;lt;_pdl&amp;gt;&amp;lt;/_pdl&amp;gt;&lt;br /&gt;&lt;br /&gt;       &amp;lt;_tkn&amp;gt;&amp;lt;/_tkn&amp;gt;&lt;br /&gt;&lt;br /&gt;       &amp;lt;_out&amp;gt;&amp;lt;/_out&amp;gt;&lt;br /&gt;&lt;br /&gt;       &amp;lt;_tds&amp;gt;&amp;lt;/_tds&amp;gt;&lt;br /&gt;&lt;br /&gt;       &amp;lt;_evt&amp;gt;&amp;lt;/_evt&amp;gt;&lt;br /&gt;&lt;br /&gt;       &amp;lt;_lfn&amp;gt;&amp;lt;/_lfn&amp;gt;&lt;br /&gt;&lt;br /&gt;       &amp;lt;tc&amp;gt;&amp;lt;/tc&amp;gt;&lt;br /&gt;&lt;br /&gt;       &amp;lt;fc&amp;gt;&amp;lt;/fc&amp;gt;&lt;br /&gt;&lt;br /&gt;       &amp;lt;dkey-protected&amp;gt;&amp;lt;/DKEY-PROTECTED&amp;gt;&lt;br /&gt;&lt;br /&gt;       ....&lt;br /&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&gt;&lt;br /&gt;&amp;lt;_pdl&amp;gt;&lt;br /&gt;&amp;lt;_tkn&amp;gt;&lt;br /&gt;&amp;lt;_out&amp;gt;&lt;br /&gt;&amp;lt;_tds&amp;gt;&lt;br /&gt;&amp;lt;_evt&amp;gt;&lt;br /&gt;&amp;lt;_lfn&amp;gt;&lt;br /&gt;&amp;lt;tc&amp;gt;&lt;br /&gt;&amp;lt;fc&amp;gt;&lt;br /&gt;&amp;lt;dkey-protected&amp;gt;&lt;br /&gt;....&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;A quick and dirty Groovy solution can be something like:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;def file = "C:\\Users\\mauri\\Desktop\\mapping.txt"&lt;br /&gt;&lt;br /&gt;StringBuffer dest = new StringBuffer();&lt;br /&gt;&lt;br /&gt;new File(file).eachLine{ line -&gt; &lt;br /&gt;        line = line.trim()&lt;br /&gt;        if (line.equals("")) {&lt;br /&gt;        } else if (line.indexOf("/") &gt; -1) {&lt;br /&gt;            dest.append(line.substring(0, line.indexOf("/")-1))&lt;br /&gt;            dest.append("\n")&lt;br /&gt;        } else {&lt;br /&gt;            dest.append(line)&lt;br /&gt;            dest.append("\n")&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;print dest.toString()&lt;br /&gt;&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;</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='https://www.blogger.com/comment.g?blogID=2123901513613960343&amp;postID=8961246529033356240' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2123901513613960343/posts/default/8961246529033356240'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2123901513613960343/posts/default/8961246529033356240'/><link rel='alternate' type='text/html' href='http://camelcase.blogspot.com/2009/11/groovy-for-quick-text-clean-up.html' title='Groovy for quick text clean-up'/><author><name>Maurizio</name><uri>http://www.blogger.com/profile/14483021801536852402</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='02696119582207331080'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2123901513613960343.post-6243250907445407426</id><published>2009-11-13T07:56:00.004+01:00</published><updated>2009-11-13T08:00:48.232+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JEE'/><category scheme='http://www.blogger.com/atom/ns#' term='Netbeans'/><title type='text'>NetBeans IDE 6.8 Beta</title><content type='html'>&lt;a href="http://netbeans.org/community/releases/68/"&gt;NetBeans IDE 6.8&lt;/a&gt; Beta is available for download. This release is especially targeted on providing support for the new JEE 6 specifications, which represent a major evolution of the JEE platform toward simplicity:&lt;br /&gt;&lt;p&gt;&lt;b&gt;Java Enterprise Edition 6 support in NetBeans:&lt;br /&gt;&lt;/b&gt;&lt;/p&gt;       &lt;ul&gt;&lt;li&gt;Web Projects with Java EE 6 and Java EE 6 Web profiles, EJBs in web applications         &lt;/li&gt;&lt;li&gt;EJB 3.1 support, EJB project file wizard also supports Singleton session type         &lt;/li&gt;&lt;li&gt;RESTful web services (JAX-RS 1.1), GlassFish Metro 2.0 web services (JAX-WS 2.2),  JAXB 2.2         &lt;/li&gt;&lt;li&gt;Java Persistence JPA 2.0, deployment, debugging and profiling with GlassFish v3 application server&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-6243250907445407426?l=camelcase.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://camelcase.blogspot.com/feeds/6243250907445407426/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=2123901513613960343&amp;postID=6243250907445407426' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2123901513613960343/posts/default/6243250907445407426'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2123901513613960343/posts/default/6243250907445407426'/><link rel='alternate' type='text/html' href='http://camelcase.blogspot.com/2009/11/netbeans-ide-68-beta.html' title='NetBeans IDE 6.8 Beta'/><author><name>Maurizio</name><uri>http://www.blogger.com/profile/14483021801536852402</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='02696119582207331080'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2123901513613960343.post-1938849663133333421</id><published>2009-11-05T22:10:00.034+01:00</published><updated>2009-11-05T23:01:27.272+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sun'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle'/><title type='text'>The delay of Oracle - Sun deal</title><content type='html'>In FT.com I read: &lt;a href="http://www.ft.com/cms/s/0/653e8e88-c8ba-11de-8f9d-00144feabdc0.html?nclick_check=1"&gt;Oracle braced for EU objection on Sun deal&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a style="font-style: italic;" class="bodystrong" title="Financial Times - Brussels v Oracle" href="http://www.ft.com/cms/s/3/3e9a5aca-9b04-11de-a3a1-00144feabdc0.html"&gt;"Brussels’ concerns&lt;/a&gt;&lt;span style="font-style: italic;"&gt; centre on Oracle’s assumption of &lt;a href="http://www.mysql.com/"&gt;MySQL&lt;/a&gt;, an open source software company that Sun acquired in 2008. Opponents of the deal claim MySQL could become a serious competitor to Oracle’s own core business in the long term.&lt;/span&gt;"&lt;br /&gt;&lt;br /&gt;Maybe Oracle is not too worried about the delay: what if in the meanwhile Oracle tries to push Sun customers to Oracle database and middle-ware? Money lost today can be recovered tomorrow... The apparent lack of urgency from Oracle, despite their complaints about "Sun loosing 100$ millions a month" could be a signal they just want to let the Sun's ship sinking?&lt;br /&gt;&lt;br /&gt;At present some of the new &lt;a href="https://glassfish.dev.java.net/downloads/v3-preview.html"&gt;open-source software technologies&lt;/a&gt; Sun is developing are very smart, lightweight and cheap, especially cheaper than Oracle's. Just try yourself to install and setup the &lt;a href="http://www.oracle.com/technologies/soa/soa-suite.html"&gt;Oracle SOA suite&lt;/a&gt; and then try the same experience with &lt;a href="http://open-esb.org/"&gt;Glassfish ESB&lt;/a&gt;. Why should Oracle let live a potentially disruptive competitor to its present product line? Well, if only Sun were &lt;span style="font-style: italic;"&gt;aware&lt;/span&gt; of its own middle-ware technologies and, especially, actually &lt;span style="font-style: italic;"&gt;&lt;/span&gt;able to &lt;span style="font-style: italic;"&gt;sell &lt;/span&gt;them...&lt;br /&gt;&lt;br /&gt;Sun top management unfortunately has done a great job disrupting, wasting and disbanding all the &lt;a href="http://en.wikipedia.org/wiki/SeeBeyond"&gt;SeeBeyond&lt;/a&gt; technical and commercial knowledge in the SOA / EAI field, with a series of totally bad organizational and operational decisions. Especially, they disbanded the Professional Services teams they have inherited from SeeBeyond, leaving the field almost totally naked and unable to provide high level consultancy services. Exactly that same SeeBeyond team that before was able to compete and deliver against all the software giants, despite the fact that, to be honest, ICAN 5 was initially a terribly broken and unstable product. Here we are now, easy to predict when I left Sun in 2007: "I told you, guys".&lt;br /&gt;&lt;br /&gt;I admit the EU's objection about MySQL is not without foundations, but while political games are running, thousands of Sun employees, partners and customer are facing hard times.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;"A good plan violently executed now is better than a perfect plan executed next week."&lt;/span&gt;&lt;br /&gt;-- George S. Patton&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2123901513613960343-1938849663133333421?l=camelcase.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://camelcase.blogspot.com/feeds/1938849663133333421/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=2123901513613960343&amp;postID=1938849663133333421' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2123901513613960343/posts/default/1938849663133333421'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2123901513613960343/posts/default/1938849663133333421'/><link rel='alternate' type='text/html' href='http://camelcase.blogspot.com/2009/11/delay-of-oracle-sun-deal.html' title='The delay of Oracle - Sun deal'/><author><name>Maurizio</name><uri>http://www.blogger.com/profile/14483021801536852402</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='02696119582207331080'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><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><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 type='text'>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;</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='https://www.blogger.com/comment.g?blogID=2123901513613960343&amp;postID=1807682270294319' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2123901513613960343/posts/default/1807682270294319'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2123901513613960343/posts/default/1807682270294319'/><link rel='alternate' type='text/html' href='http://camelcase.blogspot.com/2009/11/fuji-simple-service-api-springdm-and.html' title='Fuji Simple Service API, SpringDM and OSGi Integration with JBI'/><author><name>Maurizio</name><uri>http://www.blogger.com/profile/14483021801536852402</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='02696119582207331080'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><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><category scheme='http://www.blogger.com/atom/ns#' term='jcaps'/><title type='text'>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;</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='https://www.blogger.com/comment.g?blogID=2123901513613960343&amp;postID=2228781364624883208' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2123901513613960343/posts/default/2228781364624883208'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2123901513613960343/posts/default/2228781364624883208'/><link rel='alternate' type='text/html' href='http://camelcase.blogspot.com/2009/10/link-to-java-caps-release-62.html' title='Link to Java CAPS Release 6.2 Documentation Center'/><author><name>Maurizio</name><uri>http://www.blogger.com/profile/14483021801536852402</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='02696119582207331080'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><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><category scheme='http://www.blogger.com/atom/ns#' term='jcaps'/><title type='text'>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;</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='https://www.blogger.com/comment.g?blogID=2123901513613960343&amp;postID=8203517910493449806' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2123901513613960343/posts/default/8203517910493449806'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2123901513613960343/posts/default/8203517910493449806'/><link rel='alternate' type='text/html' href='http://camelcase.blogspot.com/2009/10/java-caps-62-to-be-released.html' title='Java CAPS 6.2 to be released'/><author><name>Maurizio</name><uri>http://www.blogger.com/profile/14483021801536852402</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='02696119582207331080'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>4</thr:total></entry><entry><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><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 type='text'>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;</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='https://www.blogger.com/comment.g?blogID=2123901513613960343&amp;postID=2865974398395438044' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2123901513613960343/posts/default/2865974398395438044'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2123901513613960343/posts/default/2865974398395438044'/><link rel='alternate' type='text/html' href='http://camelcase.blogspot.com/2009/09/tungsten.html' title='Tungsten'/><author><name>Maurizio</name><uri>http://www.blogger.com/profile/14483021801536852402</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='02696119582207331080'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><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><category scheme='http://www.blogger.com/atom/ns#' term='JEE'/><category scheme='http://www.blogger.com/atom/ns#' term='EJB'/><title type='text'>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;</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='https://www.blogger.com/comment.g?blogID=2123901513613960343&amp;postID=2598085464844513684' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2123901513613960343/posts/default/2598085464844513684'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2123901513613960343/posts/default/2598085464844513684'/><link rel='alternate' type='text/html' href='http://camelcase.blogspot.com/2009/06/ejb-31-specs-heading-in-right-direction.html' title='EJB 3.1 specs heading in the right direction'/><author><name>Maurizio</name><uri>http://www.blogger.com/profile/14483021801536852402</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='02696119582207331080'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><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><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 type='text'>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;</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='https://www.blogger.com/comment.g?blogID=2123901513613960343&amp;postID=6033582899493150148' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2123901513613960343/posts/default/6033582899493150148'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2123901513613960343/posts/default/6033582899493150148'/><link rel='alternate' type='text/html' href='http://camelcase.blogspot.com/2009/06/jms-over-http-using-openmq.html' title='JMS Over HTTP Using OpenMQ'/><author><name>Maurizio</name><uri>http://www.blogger.com/profile/14483021801536852402</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='02696119582207331080'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2123901513613960343.post-888861566842841357</id><published>2009-06-18T09:46:00.019+02:00</published><updated>2009-06-18T11:45:50.722+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='consulting'/><category scheme='http://www.blogger.com/atom/ns#' term='business'/><title type='text'>The end of the body-shopping model</title><content type='html'>In the very last few years in Italy I have seen many system integrators undertaking what I have always seen as a dangerous path: progressively moving toward low-valued body-shopping. Healthy companies, with a good track of high-level consultancy and custom product development, decided it was more lucrative to only hire inexperienced kids just out of Universities and send them to customers. Two years of experience was enough to classify those kids as "senior developers" and make good margins out of them.&lt;br /&gt;&lt;br /&gt;The mixture looked good: horde of young people, rich of enthusiasm and open to accept ridiculously low salaries have been sent to final customers, where the only selection criteria has been: very low daily rates, please. Really, most customers do not even look at resumes, they just want to keep a pressure on daily rates. On the other hands, it happens to read ridiculous job posts here in Italy, for example "A junior developer with at least 5 years of Java experience and 3 years of SAP". And the proposed salary, of course, even more ridiculous.&lt;br /&gt;&lt;br /&gt;A lot of consulting companies have seen only one direction: grow the number of employees, grow sales figures, making margins by selling a lot of very junior developers for low daily rates. This has been perceived as an easy path for growth, less risky than investing in new technologies and growing an high-level consulting profile. On the other side, customers only devoted on reducing visible costs, without any kind of  performance monitoring, created a bid competition on the lowest rates, regardless of effectiveness. Now they get what they deserve.&lt;br /&gt;&lt;br /&gt;One bad day, the financial crisis comes.... One bad, black day, that big customer tells you he doesn't need your 50 kids anymore, because there is no more budget for that project. And the day after, another customer tells you that the expected budget for that new project has been cancelled, so you don't know where to collocate those 30 kids you have just hired. The game is over, as you have to pay salaries for people hanging around your offices without anything to do. You have to start firing people and fighting with unions (Italy and usually Europe is not US, you can't just kick people out of their cubicles and make your employees paying the bill for your lack of strategy). You don't really know the people you hired, because you have parked them to a customer for the last few years and forgot about them. Maybe now it could be time to invest into quality, but it is difficult and a bit late: you realized that you best people left the company a while ago, now you are full of developers with bad habits - they growth without guidance, they never took any good training. Suddenly your revenues disappear, your margins are red and your credit is over.&lt;br /&gt;&lt;br /&gt;However, I rarely encounter other kinds of companies, those who are less greedy, have planned to grow at a sustainable rate, invested in less but more skilled people, train their junior developers and discuss reasonable rates with their customers. Those who think about IT in terms of solutions (quality) instead of man-days (quantity) and reward their own people with challenging jobs and decent salaries. Very often, this smaller companies are the ones surviving better to crisis, because they are in control of their business.&lt;br /&gt;&lt;br /&gt;Usually, in a free market quality of supply is driven by quality of demand, so I guess customers need to change their purchase habits soon if they want to shape the IT market differently. Quality pays for itself, sooner or later.&lt;br /&gt;&lt;br /&gt;"&lt;span style="font-style: italic;"&gt;My personal feeling is that this is how any further improvement of the world will be done: by individuals making Quality decisions and that's all. God, I don't want to have any more enthusiasm for big programs full of social planning for big masses of people that leave individual Quality out. These can be left alone for a while. There's a place for them but they've got to be built on a foundation of Quality within the individuals involved. We've had that individual Quality in the past, exploited it as a natural resource without knowing it, and now it's just about depleted. Everyone's just about out of gumption. And I think it's about time to return to the rebuilding of this American resource -- individual worth.&lt;/span&gt;"&lt;br /&gt;&lt;br /&gt;Quote from Robert M. Pirsig,  Author "Zen and the Art of Motorcycle Maintenance"&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2123901513613960343-888861566842841357?l=camelcase.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://camelcase.blogspot.com/feeds/888861566842841357/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=2123901513613960343&amp;postID=888861566842841357' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2123901513613960343/posts/default/888861566842841357'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2123901513613960343/posts/default/888861566842841357'/><link rel='alternate' type='text/html' href='http://camelcase.blogspot.com/2009/06/end-of-body-shopping-model.html' title='The end of the body-shopping model'/><author><name>Maurizio</name><uri>http://www.blogger.com/profile/14483021801536852402</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='02696119582207331080'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><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><category scheme='http://www.blogger.com/atom/ns#' term='GlassfishESB'/><category scheme='http://www.blogger.com/atom/ns#' term='OpenESB'/><title type='text'>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;</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='https://www.blogger.com/comment.g?blogID=2123901513613960343&amp;postID=9107334154976133447' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2123901513613960343/posts/default/9107334154976133447'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2123901513613960343/posts/default/9107334154976133447'/><link rel='alternate' type='text/html' href='http://camelcase.blogspot.com/2009/06/glassfish-esb-v21-has-been-released.html' title='GlassFish ESB v2.1 has been released'/><author><name>Maurizio</name><uri>http://www.blogger.com/profile/14483021801536852402</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='02696119582207331080'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2123901513613960343.post-6499256379693730281</id><published>2009-05-24T12:25:00.003+02:00</published><updated>2009-05-24T12:31:40.779+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GlassfishESB'/><category scheme='http://www.blogger.com/atom/ns#' term='correlation'/><category scheme='http://www.blogger.com/atom/ns#' term='clustering'/><category scheme='http://www.blogger.com/atom/ns#' term='BPEL'/><category scheme='http://www.blogger.com/atom/ns#' term='OpenESB'/><title type='text'>dutchman's log: GlassFish ESB BPEL cluster with correlation</title><content type='html'>&lt;a href="http://blogs.sun.com/dutchman/"&gt;Marjo&lt;/a&gt; wrote an interesting article about "&lt;a href="http://blogs.sun.com/dutchman/entry/glassfish_esb_bpel_cluster_with"&gt;GlassFish ESB BPEL cluster with correlation&lt;/a&gt;".&lt;br /&gt;&lt;br /&gt;He wrote:&lt;br /&gt;&lt;br /&gt;"&lt;span style="font-style: italic;"&gt;GlassFish ESB 2.1 will support GlassFish cluster. BPEL will also run clustered. Cluster support includes support for BPEL processes with correlations.&lt;/span&gt; &lt;p style="font-style: italic;"&gt;Once a BPEL process instance starts to wait for a correlated receive activity, the instance will be passivated. If the correlated input comes in to any instance of the cluster, the passivated process instance will be re-activated on that appserver instance, also if it is not the appserver instance where the original process was running, and continue where it left off when it was passivated.&lt;/p&gt; &lt;p&gt;&lt;span style="font-style: italic;"&gt;To make this work, BPEL persistence must be enabled, and the BPEL engine must be running in a cluster in an appserver domain set up with the cluster profile&lt;/span&gt;."&lt;/p&gt;&lt;p&gt;This feature was missing since a long time. Read &lt;a href="http://blogs.sun.com/dutchman/entry/glassfish_esb_bpel_cluster_with"&gt;Dutchman's full article&lt;/a&gt; to learn all details.&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2123901513613960343-6499256379693730281?l=camelcase.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://camelcase.blogspot.com/feeds/6499256379693730281/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=2123901513613960343&amp;postID=6499256379693730281' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2123901513613960343/posts/default/6499256379693730281'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2123901513613960343/posts/default/6499256379693730281'/><link rel='alternate' type='text/html' href='http://camelcase.blogspot.com/2009/05/dutchmans-log-glassfish-esb-bpel.html' title='dutchman&apos;s log: GlassFish ESB BPEL cluster with correlation'/><author><name>Maurizio</name><uri>http://www.blogger.com/profile/14483021801536852402</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='02696119582207331080'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2123901513613960343.post-142668431354105955</id><published>2009-04-28T11:54:00.026+02:00</published><updated>2009-04-28T12:53:26.067+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='consistency'/><category scheme='http://www.blogger.com/atom/ns#' term='consulting'/><title type='text'>Surviving the economical climate as a consultant</title><content type='html'>These are hard times, but there are in my opinion some healthy rules one should remember to survive in this difficult economical climate. Those are only nine, not to be blaspheme...&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Be prepared&lt;/span&gt;. It sounds obvious, but you need to know your stuff very well. For example, JEE is not about knowing many different application servers (I don't even understand what it means to "know an application server"), it is about "how to design that process so that I am in control of the distributed transactional context". Something like this. Filling your CV with buzzwords and acronyms can lead you to get interviewed by superficial recruiters, but then you are naked if you don't have concrete skills.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Be versatile&lt;/span&gt;. You have to be mentally prepared on how to deal with unforeseen environments, technologies and unknown situations. Be prepared to work abroad and to get a flight early on Monday mornings. This is quite usual for US consultants, but young consultants and consulting companies in Europe should start thinking at the whole Europe as a huge market. Exit your comfort zone.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Be consistent&lt;/span&gt;. Deliver quality and think on how to solve your customer's business needs, IT issues can't be your only priority. Do not think on how to consume hours and days, instead focus on delivering useful stuff. Be prepared to suggest fixed-price packages: if you really know your stuff you can make good estimations and take the risk, you cannot just move the deadline's responsibility into your customer's shoulders and throw out a timesheet each Friday, it is no more enough.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Improve your skills&lt;/span&gt;. Take time to revitalize some old skills and to learn something new. Buy books and study, but expecially experiment on your own.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Accept short terms activities&lt;/span&gt;. Learn to live in a world where things change daily, if you are flexible you will have more chances. Being squeamish about a five days assignment don't provide you with a good credit nowadays.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Do not undersell yourself&lt;/span&gt;. Flexibility doesn't mean you have to drastically reduce your consulting rates only because a couple of recruiters tell you to do so, it is easier to negotiate discounts before than to increase rates afterwards.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Be business-oriented&lt;/span&gt;. Knowing your IT stuff is no longer enough, try to understand and study basic economy, marketing and generally speaking how your customers make their money. Your salary or your consulting fees don't come from magic, there should be a sustainable business and usually has nothing to do with the latest Linux distribution or that cool scripting language that you are so eager to learn.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Learn foreign languages&lt;/span&gt;. I wish I studied another language in addition to English when I was at school. Decent English in IT is of course mandatory, French, German and Spanish can open a wide set of new opportunities. Of course you need to always remember point #1, you need to be technically prepared: a silly thing in seven different languages is still a silly thing.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Sell&lt;/span&gt;. Work is no more jumping into our head, it is necessary to go out and find it. Garden your network, market your skills and then be ready to sell them more often than usual, as assignments and contracts are getting shorter. Presentation skills, technical writing abilities and speech skills in front of an audience are the main sales tools of a freelance consultant, being the best hacker is no more enough.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;By the way, I think most of these rules apply to both individuals and organizations. I see many consulting companies reacting to the crisis by just enforcing their usual behaviours and keep on providing exactly the same set of services of their competition. Differentiation is key.&lt;br /&gt;&lt;br /&gt;Good luck, we need it anyway.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2123901513613960343-142668431354105955?l=camelcase.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://camelcase.blogspot.com/feeds/142668431354105955/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=2123901513613960343&amp;postID=142668431354105955' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2123901513613960343/posts/default/142668431354105955'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2123901513613960343/posts/default/142668431354105955'/><link rel='alternate' type='text/html' href='http://camelcase.blogspot.com/2009/04/surving-economical-climate-as.html' title='Surviving the economical climate as a consultant'/><author><name>Maurizio</name><uri>http://www.blogger.com/profile/14483021801536852402</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='02696119582207331080'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2123901513613960343.post-6661413055804597179</id><published>2009-04-15T16:02:00.032+02:00</published><updated>2009-04-16T20:49:12.507+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JEE'/><category scheme='http://www.blogger.com/atom/ns#' term='EJB'/><category scheme='http://www.blogger.com/atom/ns#' term='transactions'/><category scheme='http://www.blogger.com/atom/ns#' term='Weblogic'/><title type='text'>How to call a remote transactional Weblogic EJB from a Java client</title><content type='html'>My objective here is to show how to call a remote Weblogic stateless EJB from a Java client, then adding the ability to invoke multiple EJBs in a client-controlled transaction.&lt;br /&gt;&lt;br /&gt;The code below is very simple and has been tested with &lt;a href="http://www.oracle.com/appserver/index.html"&gt;BEA Weblogic Application Server&lt;/a&gt; 10.0 and developed with the &lt;a href="http://www.netbeans.org/"&gt;Netbeans&lt;/a&gt; 6.1 IDE. The original requirement was to call Weblogic EJBs from &lt;a href="https://glassfish.dev.java.net/"&gt;Glassfish&lt;/a&gt;, using the Weblogic user transactions from the client code. Let's say there is the need to call several EJBs and to make it in a single unit of work, this is not usually a best practice, as client-controlled transactions are usually slower and lead to bad design. &lt;span style="font-weight: bold; font-style: italic;"&gt;The best would be to expose a transactional service from Weblogic which wraps all the calls in one server-side unit of work&lt;/span&gt;, but it is not always feasible if we are not in control of the other side and this is also an example how to call a remote EJB from Java, if one removes the transactional code.&lt;br /&gt;&lt;br /&gt;Anyway, let's have a look at our sample JEE 5 service (EJB 3), which is deployed in Weblogic:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;package com.mt.ejb;&lt;br /&gt;&lt;br /&gt;import javax.ejb.Stateless;&lt;br /&gt;&lt;br /&gt;@Stateless(mappedName = "CalculatorBean")&lt;br /&gt;public class CalculatorBean implements CalculatorRemote {&lt;br /&gt;&lt;br /&gt;    public int add(int a, int b) {&lt;br /&gt;        return a + b;&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_w_2W4fwPu2g/SeX0IC6K9gI/AAAAAAAAAIY/NJh_JDJWNAI/s1600-h/Immagine.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 220px; height: 255px;" src="http://2.bp.blogspot.com/_w_2W4fwPu2g/SeX0IC6K9gI/AAAAAAAAAIY/NJh_JDJWNAI/s400/Immagine.jpg" alt="" id="BLOGGER_PHOTO_ID_5324930553492469250" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Above is a trivial "hello world" EJB, implementing a Remote interface. The mappedName = "CalculatorBean" is a mandatory parameter for the @Stateless annotation if one wants the EJB to be remotely callable.&lt;br /&gt;&lt;br /&gt;I deployed in Weblogic, Netbeans offers the ability to connect to a Weblogic server, even if the plugin has limited functionalities it gives me what I need and allows me to work from my favourite IDE and deploy from there.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_w_2W4fwPu2g/SeX09pV-poI/AAAAAAAAAIg/G5GbSYqqLOc/s1600-h/Immagine.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 275px; height: 169px;" src="http://4.bp.blogspot.com/_w_2W4fwPu2g/SeX09pV-poI/AAAAAAAAAIg/G5GbSYqqLOc/s400/Immagine.jpg" alt="" id="BLOGGER_PHOTO_ID_5324931474342717058" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Here comes the client code, which is more interesting:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;package com.mt.client;&lt;br /&gt;&lt;br /&gt;import com.mt.ejb.CalculatorRemote;&lt;br /&gt;import java.util.Hashtable;&lt;br /&gt;import java.util.logging.Level;&lt;br /&gt;import java.util.logging.Logger;&lt;br /&gt;import javax.naming.Context;&lt;br /&gt;import javax.naming.InitialContext;&lt;br /&gt;import javax.naming.NamingException;&lt;br /&gt;import javax.transaction.UserTransaction;&lt;br /&gt;&lt;br /&gt;public class WeblogicTest {&lt;br /&gt;&lt;br /&gt;    private final Logger log = Logger.getLogger(WeblogicTest.class.getName());&lt;br /&gt;&lt;br /&gt;    public WeblogicTest() {&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public void callRemoteEJB() {&lt;br /&gt;        InitialContext context = null;&lt;br /&gt;        UserTransaction transaction = null;&lt;br /&gt;&lt;br /&gt;        Hashtable env = new Hashtable();&lt;br /&gt;        env.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");&lt;br /&gt;        env.put(Context.PROVIDER_URL, "t3://localhost:7001");&lt;br /&gt;        env.put(Context.SECURITY_PRINCIPAL, "weblogic");&lt;br /&gt;        env.put(Context.SECURITY_CREDENTIALS, "weblogic");&lt;br /&gt;&lt;br /&gt;        try {&lt;br /&gt;            context = new InitialContext(env);&lt;br /&gt;            transaction = (UserTransaction) context.lookup("javax.transaction.UserTransaction");&lt;br /&gt;            if (transaction != null) {&lt;br /&gt;                log.info("in transaction context.");&lt;br /&gt;                try {&lt;br /&gt;                    CalculatorRemote calculator = (CalculatorRemote) context.lookup("CalculatorBean#com.mt.ejb.CalculatorRemote");&lt;br /&gt;                    transaction.begin();&lt;br /&gt;                    int result = calculator.add(3, 5);&lt;br /&gt;                    transaction.commit();&lt;br /&gt;                    log.info("add=" + result);&lt;br /&gt;                } catch (Exception ex) {&lt;br /&gt;                    ex.printStackTrace();&lt;br /&gt;                    try {&lt;br /&gt;                        transaction.rollback();&lt;br /&gt;                    } catch (Exception ex1) {&lt;br /&gt;                        log.log(Level.SEVERE, "Can't rollback transaction.", ex1);&lt;br /&gt;                    }&lt;br /&gt;                }&lt;br /&gt;            } else {&lt;br /&gt;                log.info("transaction context is null.");&lt;br /&gt;            }&lt;br /&gt;        } catch (NamingException e) {&lt;br /&gt;            e.printStackTrace();&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public static void main(String[] args) {&lt;br /&gt;        WeblogicTest test = new WeblogicTest();&lt;br /&gt;        test.callRemoteEJB();&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;It is necessary to add the CalculatorBean EJB jar file and the &lt;span style="font-weight: bold;"&gt;wlclient.jar&lt;/span&gt; to build the above client code. The wlclient.jar can be usually found into folder \server\lib of our Weblogic server.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_w_2W4fwPu2g/SeXzgySdSpI/AAAAAAAAAIQ/uD9HZpsNfwg/s1600-h/Immagine.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 212px; height: 180px;" src="http://4.bp.blogspot.com/_w_2W4fwPu2g/SeXzgySdSpI/AAAAAAAAAIQ/uD9HZpsNfwg/s400/Immagine.jpg" alt="" id="BLOGGER_PHOTO_ID_5324929879016032914" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Let's comment the main code sections.&lt;br /&gt;&lt;br /&gt;First, I populate the connection properties:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;Hashtable env = new Hashtable();&lt;br /&gt;env.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");&lt;br /&gt;env.put(Context.PROVIDER_URL, "t3://localhost:7001");&lt;br /&gt;env.put(Context.SECURITY_PRINCIPAL, "weblogic");&lt;br /&gt;env.put(Context.SECURITY_CREDENTIALS, "weblogic");&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;I look-up the initial context and get the UserTransaction from Weblogic's JTS:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;context = new InitialContext(env);&lt;br /&gt;transaction = (UserTransaction) context.lookup("javax.transaction.UserTransaction");&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;I lookup and call the remote EJB by enclosing the method invocation in transaction:&lt;br /&gt;&lt;pre&gt;CalculatorRemote calculator = (CalculatorRemote) context.lookup("CalculatorBean#com.mt.ejb.CalculatorRemote");&lt;br /&gt;transaction.begin();&lt;br /&gt;int result = calculator.add(3, 5);&lt;br /&gt;transaction.commit();&lt;br /&gt;&lt;/pre&gt;The lookup string &lt;span style="font-weight: bold;"&gt;"CalculatorBean#com.mt.ejb.CalculatorRemote"&lt;/span&gt; makes the trick, it is the Weblogic syntax to identify the Bean and its Remote interface.&lt;br /&gt;&lt;br /&gt;Of course, in this trivial case there are not any transactions, but I wanted to keep the example very simple. If the EJB was transactional, the call made use of the transactional context, while in this case it is simply ignored.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2123901513613960343-6661413055804597179?l=camelcase.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://camelcase.blogspot.com/feeds/6661413055804597179/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=2123901513613960343&amp;postID=6661413055804597179' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2123901513613960343/posts/default/6661413055804597179'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2123901513613960343/posts/default/6661413055804597179'/><link rel='alternate' type='text/html' href='http://camelcase.blogspot.com/2009/04/how-to-call-remote-transactional.html' title='How to call a remote transactional Weblogic EJB from a Java client'/><author><name>Maurizio</name><uri>http://www.blogger.com/profile/14483021801536852402</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='02696119582207331080'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_w_2W4fwPu2g/SeX0IC6K9gI/AAAAAAAAAIY/NJh_JDJWNAI/s72-c/Immagine.jpg' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2123901513613960343.post-2872558127386310369</id><published>2009-04-03T10:47:00.005+02:00</published><updated>2009-04-03T11:04:41.311+02:00</updated><title type='text'>Farewell SGI</title><content type='html'>The glorious SGI, after being close to bankruptcy and going for chapter 11, has been &lt;a href="http://www.sgi.com/company_info/newsroom/press_releases/2009/april/rackable.html"&gt;bought by Rackable&lt;/a&gt; for mere $25 millions plus the assurance to pay its debts. I learned 3D computer graphics and &lt;a href="http://www.opengl.org/"&gt;OpenGL&lt;/a&gt; programming in the late 90s on SGI's Indigo and &lt;a href="http://en.wikipedia.org/wiki/SGI_Octane"&gt;Octane&lt;/a&gt; workstations, beautiful pieces of hardware and software but already feeling the price pressure coming from much cheaper Windows workstations. It is a piece of the Silicon Valley computing history which was hit by the post New Economy bubble crisis and has never really recovered from that point.&lt;br /&gt;Farewell, SGI.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_w_2W4fwPu2g/SdXQ7zAeOuI/AAAAAAAAAII/hXuC-HGG17E/s1600-h/SgiOctane.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 384px; height: 400px;" src="http://1.bp.blogspot.com/_w_2W4fwPu2g/SdXQ7zAeOuI/AAAAAAAAAII/hXuC-HGG17E/s400/SgiOctane.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5320388260531157730" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2123901513613960343-2872558127386310369?l=camelcase.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://camelcase.blogspot.com/feeds/2872558127386310369/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=2123901513613960343&amp;postID=2872558127386310369' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2123901513613960343/posts/default/2872558127386310369'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2123901513613960343/posts/default/2872558127386310369'/><link rel='alternate' type='text/html' href='http://camelcase.blogspot.com/2009/04/farewell-sgi.html' title='Farewell SGI'/><author><name>Maurizio</name><uri>http://www.blogger.com/profile/14483021801536852402</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='02696119582207331080'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_w_2W4fwPu2g/SdXQ7zAeOuI/AAAAAAAAAII/hXuC-HGG17E/s72-c/SgiOctane.jpg' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2123901513613960343.post-3274389769488396774</id><published>2009-03-29T14:16:00.007+02:00</published><updated>2009-03-29T15:02:50.401+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='jcaps'/><category scheme='http://www.blogger.com/atom/ns#' term='Sun'/><category scheme='http://www.blogger.com/atom/ns#' term='opensource'/><category scheme='http://www.blogger.com/atom/ns#' term='Fluxology'/><category scheme='http://www.blogger.com/atom/ns#' term='business'/><title type='text'>Fluxology Alliance</title><content type='html'>The Fluxology Alliance is a network of companies, from large to small, and independent consultants. The Alliance is committed to work together with Sun to build successful implementations with JavaCAPS and OpenESB, but also to spread the knowledge and awareness about other Sun's opensource solutions (Opensolaris, MySQL, Glassfish, Netbeans, ...). There are hundreds of former SeeBeyond customers out there and many of those are looking for migration path from eGate 4.x, ICAN 5.0, JavaCAPS 5.1 to JavaCAPS 6 and the new opensource Sun's offering.&lt;br /&gt;&lt;br /&gt;The Alliance is mainly focused on the EMEA market. The idea was born because Sun needed more expert partners to help its customers dealing with large SOA / EAI implementations. Partners are distributed quite everywhere from Southern to Northern Europe, most of them are composed by former SeeBeyond and Sun employees with a long term experience around Java enterprise technologies and a deep knowledge of Sun's business. The membership is mainly about fair cooperation and exchange of information.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;"Fluxology facilitates two cooperative global partner networks around OpenESB, JavaCAPS, its SeeBeyond predecessors, enveloping the Sun Java Enterprise System and complementary technology partners, to pave a pathway into the future towards "the adjacent possible" in both business relations and information technology." &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;On my side I'm a member of the Alliance as an independent consultant and already a Sun external contractor. If you want to learn more please point your browser to &lt;a href="http://www.fluxology.net/"&gt;Fluxology.Net&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.fluxology.net/"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 200px; height: 126px;" src="http://www.fluxology.net/Fluxology_files/FluxO-medium.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2123901513613960343-3274389769488396774?l=camelcase.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://camelcase.blogspot.com/feeds/3274389769488396774/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=2123901513613960343&amp;postID=3274389769488396774' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2123901513613960343/posts/default/3274389769488396774'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2123901513613960343/posts/default/3274389769488396774'/><link rel='alternate' type='text/html' href='http://camelcase.blogspot.com/2009/03/fluxology-alliance_29.html' title='Fluxology Alliance'/><author><name>Maurizio</name><uri>http://www.blogger.com/profile/14483021801536852402</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='02696119582207331080'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2123901513613960343.post-2352437706101336094</id><published>2009-03-17T14:20:00.009+01:00</published><updated>2009-03-17T14:53:27.824+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='jcaps'/><category scheme='http://www.blogger.com/atom/ns#' term='OpenESB'/><title type='text'>Frank Kieviet interview on OpenESB at DZone</title><content type='html'>&lt;a href="http://www.dzone.com/"&gt;Dzone &lt;/a&gt;hosts an &lt;a href="http://soa.dzone.com/articles/qa-interview-frank-kieviet"&gt;interview to Frank Kieviet&lt;/a&gt;, OpenESB Community Manager, about &lt;a href="http://open-esb.org/"&gt;OpenESB&lt;/a&gt;, Java CAPS, Glassfish and future directions. It is a good summary of the present status, how difficult has been to get the former SeeBeyond suite as opensource and where it aims to go in the next few months.&lt;br /&gt;&lt;br /&gt;From my point of view the OpenESB suite still lacks two major components:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;A SOA Governance solution&lt;/span&gt;. A good registry / repository is an important side component of any ESB, at present Sun should at least establish a commercial partnership with other vendors about that, the strategy here seems a bit confusing and no clear message is available for consulting partners and end customers. My opinion is that OpenESB needs to partner with solutions having a similar dual opensource / commercial license, a closed-source only registry product could lead to difficult sales propositions.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;A &lt;span style="font-weight: bold;"&gt;ESB management and monitoring console&lt;/span&gt;. The &lt;a href="http://wiki.open-esb.java.net/Wiki.jsp?page=ESBConsoleProject"&gt;ESB Console&lt;/a&gt; project is very late, even if it seems a version 1.0 will be released within this year. Any ESB needs robust and easy monitoring and this can't be sold by suggesting users to build their own through JMX or other APIs.&lt;/li&gt;&lt;/ol&gt;A good SOA Governance suite should allow for easy monitoring and management, repository and versioning of files (for example, versioning WSDL is not enough, the imported XML messages need versioning). Then it should be a single place to apply orthogonal policies for security, auditing, billing, ... The model should be of a policies gateway, working in combination with the ESB as a services proxy.&lt;br /&gt;&lt;br /&gt;So far, lacking an integrate offering from Sun, I am evaluating myself some third parties Governance solutions to suggest to my customers, some are quite nice and works well with OpenESB and Java CAPS.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2123901513613960343-2352437706101336094?l=camelcase.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://camelcase.blogspot.com/feeds/2352437706101336094/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=2123901513613960343&amp;postID=2352437706101336094' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2123901513613960343/posts/default/2352437706101336094'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2123901513613960343/posts/default/2352437706101336094'/><link rel='alternate' type='text/html' href='http://camelcase.blogspot.com/2009/03/frank-kieviet-interview-on-openesb-at.html' title='Frank Kieviet interview on OpenESB at DZone'/><author><name>Maurizio</name><uri>http://www.blogger.com/profile/14483021801536852402</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='02696119582207331080'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2123901513613960343.post-4222685684107096558</id><published>2009-03-10T02:45:00.005+01:00</published><updated>2009-03-10T02:57:02.538+01:00</updated><title type='text'>The Crisis of Credit Visualized</title><content type='html'>The &lt;a href="http://www.vimeo.com/3261363"&gt;Crisis of Credit Visualized&lt;/a&gt; by &lt;a href="http://jonathanjarvis.com/"&gt;Jonathan Jarvis&lt;/a&gt;, an interaction and media designer, is one of the best explanation of the present credit crisis I have found on the Internet. It also a wonderful example on how to create a beautiful visual presentation.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://jonathanjarvis.com/crisis-of-credit"&gt;&lt;br /&gt;&lt;img src="http://jonathanjarvis.com/wp-content/uploads/2009/03/cocv_header_012.jpg" /&gt;&lt;br /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2123901513613960343-4222685684107096558?l=camelcase.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://camelcase.blogspot.com/feeds/4222685684107096558/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=2123901513613960343&amp;postID=4222685684107096558' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2123901513613960343/posts/default/4222685684107096558'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2123901513613960343/posts/default/4222685684107096558'/><link rel='alternate' type='text/html' href='http://camelcase.blogspot.com/2009/03/crisis-of-credit-visualized.html' title='The Crisis of Credit Visualized'/><author><name>Maurizio</name><uri>http://www.blogger.com/profile/14483021801536852402</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='02696119582207331080'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2123901513613960343.post-2073254504674762518</id><published>2009-03-07T11:41:00.003+01:00</published><updated>2009-03-07T12:02:29.927+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GlassfishESB'/><title type='text'>GlassFish ESB Roadmap</title><content type='html'>The OpenESB community just released a &lt;a href="https://open-esb.dev.java.net/Roadmap.html"&gt;roadmap&lt;/a&gt; for this year. Things are accelerating.&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;GlassFish ESB v2.1&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Scope:&lt;br /&gt;&lt;br /&gt;  * NetBeans 6.5&lt;br /&gt;  * GlassFish 2.1&lt;br /&gt;  * Full support for GlassFish clustering&lt;br /&gt;  * Scheduler BC&lt;br /&gt;  * Misc. performance enhancements&lt;br /&gt;  * Bug fixes&lt;br /&gt;&lt;br /&gt;Target date: &lt;span style="font-weight: bold;"&gt;Mid May 2009&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;GlassFish ESB v3&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Scope:&lt;br /&gt;&lt;br /&gt;   * NetBeans 6.7&lt;br /&gt;   * &lt;a href="http://wiki.glassfish.java.net/Wiki.jsp?page=PlanForGlassFishV3"&gt;GlassFish 3&lt;/a&gt;&lt;br /&gt;   * Light weight composition&lt;br /&gt;   * &lt;a href="http://wiki.open-esb.java.net/Wiki.jsp?page=IntegrationFlowLanguageOverview"&gt;IFL&lt;/a&gt;&lt;br /&gt;   * Maven Support&lt;br /&gt;   * &lt;a href="http://en.wikipedia.org/wiki/Osgi"&gt;OSGi&lt;/a&gt;&lt;br /&gt;   * &lt;a href="http://wiki.open-esb.java.net/Wiki.jsp?page=FujiInterceptorsInfo"&gt;Interceptors&lt;/a&gt;&lt;br /&gt;   * ...&lt;br /&gt;&lt;br /&gt;Target date: &lt;span style="font-weight: bold;"&gt;Sept 2009&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;So the most interesting will be GF ESB v3 scheduled for September 2009. Glassfish V3 is a micro-kernel based app server running on a OGSi platform. The IFL language is an effort to simplify common ESB tasks and implementing a domain specific language, much like Apache Camel, to implement common enterprise integration patterns and messages manipulation (routing, filtering, splitting, pipelining, ...).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2123901513613960343-2073254504674762518?l=camelcase.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://camelcase.blogspot.com/feeds/2073254504674762518/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=2123901513613960343&amp;postID=2073254504674762518' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2123901513613960343/posts/default/2073254504674762518'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2123901513613960343/posts/default/2073254504674762518'/><link rel='alternate' type='text/html' href='http://camelcase.blogspot.com/2009/03/glassfish-esb-roadmap.html' title='GlassFish ESB Roadmap'/><author><name>Maurizio</name><uri>http://www.blogger.com/profile/14483021801536852402</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='02696119582207331080'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2123901513613960343.post-6223707859494535253</id><published>2009-03-06T13:21:00.024+01:00</published><updated>2009-03-06T15:17:25.108+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='jcaps'/><category scheme='http://www.blogger.com/atom/ns#' term='OpenESB'/><category scheme='http://www.blogger.com/atom/ns#' term='consulting'/><title type='text'>The OpenESB and Java CAPS consulting ecosystem</title><content type='html'>Sun's new open-source strategy offers interesting consulting opportunities. In the last months I have worked closely with former SeeBeyond and Sun colleagues to build a network of partners able to independently support the free &lt;a href="https://open-esb.dev.java.net/"&gt;OpenESB&lt;/a&gt; and commercial &lt;a href="http://www.sun.com/software/javaenterprisesystem/javacaps/"&gt;Java CAPS&lt;/a&gt; platforms at all levels. A set of very skilled professional left Sun recently and joined the freelance market or started new companies. Most of these expert people were actually also in charge of developing core aspects of the &lt;a href="http://www.sun.com/software/javaenterprisesystem/javacaps/glassfish_esb.jsp"&gt;Glassfish ESB&lt;/a&gt;, &lt;a href="http://www.sun.com/software/javaenterprisesystem/javacaps/"&gt;Java CAPS&lt;/a&gt; and &lt;a href="http://www.sun.com/software/javaenterprisesystem/javacaps/mdm_suite.jsp"&gt;MDM&lt;/a&gt; suites, so it is possible to even offer product's enhancements and customizations. Sun is supporting this effort, so we are more and more closely coordinating activities with Sun Services in US and EMEA.&lt;br /&gt;&lt;br /&gt;It is a huge paradigm shift from SeeBeyond. When I was in SeeBeyond everything was closed and even secret, while Sun is now growing as an open company embracing open-source as a way to tackle the market from a very different angle than its competitors. At the beginning many Sun employees were doubtful about new Sun strategy, it is so distant from the company's culture. Sun was, and partially still is, an hardware and infrastructural software vendor, a company built by engineers for engineers, with a technology language and culture. Integration and SOA are much more related to pure business aspects, customer's expectation are very different because they take for granted that the technological problems are solved, what they want is business integration, which requires a lot of consulting expertise. This kind of combination of technical and business expertise is exactly in the DNA of former SeeBeyond consultants.&lt;br /&gt;&lt;br /&gt;The network of partners is growing and able to fill the business gap. SOA is not much related to technologies, it is about designing and fitting an &lt;a href="http://en.wikipedia.org/wiki/Enterprise_architecture"&gt;Enterprise Architecture&lt;/a&gt;, it requires first to understand customer's business needs. The OpenESB ecosystem is made of a set of commercially supported open-source tools which provides the possible best value for money. Now there exists also a worldwide consulting services offering able to put this software effectively in production.&lt;br /&gt;&lt;br /&gt;OpenESB is an open community, where Sun, its partners and customer can collaborate to create the best set of features, pro-actively suggesting functionalities and corrections. In which ways OpenESB offering is different from both big vendors and other similar open-source products?&lt;br /&gt;&lt;ul&gt;&lt;li&gt;It is fully open-source and supporting open standards, so you can really avoid any vendor lock-in&lt;/li&gt;&lt;li&gt;Full commercial support and indemnification is optionally provided by Sun at much cheaper prices than any other big vendor&lt;/li&gt;&lt;li&gt;You can download the suite, develop your solution and then decide if and when buy commercial support&lt;/li&gt;&lt;li&gt;Comparing to other open-source ESB, support is provided by a much bigger company, the one who invented Java&lt;/li&gt;&lt;li&gt;The set of development and runtime environments (&lt;a href="http://www.netbeans.org/"&gt;Netbeans&lt;/a&gt;, &lt;a href="https://glassfish.dev.java.net/"&gt;Glassfish&lt;/a&gt;, &lt;a href="https://mq.dev.java.net/"&gt;OpenMQ&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/JBI"&gt;JBI&lt;/a&gt;) is very mature and allows for better developers productivity than other open-source ESB&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Netbeans make a big difference: this is a great IDE and the company behind it is the same building OpenESB, so you get a closer integration between the IDE and the ESB in the whole development cycle. Other products require you to edit by hand lot of configuration files, IDE integration is weak and often provided by third parties, unless you decide to buy a much more expensive commercial ESB from any other big vendor. Glassfish V2 is now a great JEE 5 application server, &lt;a href="http://developers.sun.com/appserver/reference/techart/glassfishv3prelude/"&gt;Glassfish V3&lt;/a&gt; is going to be the market leader in terms of features.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_w_2W4fwPu2g/SbEq46p7BII/AAAAAAAAAHU/1CfkF01j5DI/s1600-h/Immagine.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 221px;" src="http://2.bp.blogspot.com/_w_2W4fwPu2g/SbEq46p7BII/AAAAAAAAAHU/1CfkF01j5DI/s400/Immagine.jpg" alt="Glassfish ESB IDE, based on Netbeans 6.1" id="BLOGGER_PHOTO_ID_5310072592952657026" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;So, what are the real services a customer can expect from the network of professional OpenESB partners?&lt;br /&gt;&lt;ul&gt;&lt;li&gt;High level consulting expertise, most consultants are former SeeBeyond and Sun professional services. No kids, senior people only with up to 25 years experience&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Possibility to leverage both Sun's technical support and the open-source community, to get independent advices&lt;/li&gt;&lt;li&gt;Ability to modify or create custom JBI adapters, as many companies in the network are OpenESB code committers and some were even Sun product managers (can you really ask your Big Vendor to create a custom adapter for you?)&lt;/li&gt;&lt;li&gt;For previous SeeBeyond customers there is also a lot of added value, as the network can offer tailored migration plans from DataGate, eGate 4.x, ICAN 5.0, JCAPS 5.1 to OpenESB and Java CAPS 6&lt;/li&gt;&lt;li&gt;Ability to support big enterprises worldwide. I'm in touch with partners from Israel to Scandinavia, and in US also. We are looking for partners in Australia and New Zealand shortly.&lt;/li&gt;&lt;li&gt;Any vertical market: retail, healthcare, telecommunications, finance, energy, ...&lt;/li&gt;&lt;li&gt;Any EAI experience: SAP, Siebel, Oracle, CICS, SWIFT, Microsoft, ...&lt;/li&gt;&lt;li&gt;Identity management, Role management &amp;amp; provisioning, Security, Master Data Indexes, federated SSO, SOA Governance, Business Process Management, Rule Engines.&lt;/li&gt;&lt;li&gt;On going partnership discussions with &lt;a href="http://www.savvion.com/"&gt;Savvion&lt;/a&gt;, &lt;a href="http://www.fairisaac.com/"&gt;Fair Isaac&lt;/a&gt;, &lt;a href="http://www.autonomy.com/"&gt;Autonomy&lt;/a&gt; and other specialized vendors.&lt;/li&gt;&lt;/ul&gt;An independent and comprehensive &lt;span style="font-weight: bold;"&gt;review of Glassfish ESB&lt;/span&gt; can be read &lt;a href="http://www.developer.com/java/ent/article.php/3799641"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;For more information about the "unit-42" partnership network, please drop an email to &lt;a href="mailto://maurizio@maurizioturatti.com"&gt;me&lt;/a&gt; or my &lt;a href="mailto://Paul@Fluxology.Net"&gt;business partner&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2123901513613960343-6223707859494535253?l=camelcase.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://camelcase.blogspot.com/feeds/6223707859494535253/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=2123901513613960343&amp;postID=6223707859494535253' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2123901513613960343/posts/default/6223707859494535253'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2123901513613960343/posts/default/6223707859494535253'/><link rel='alternate' type='text/html' href='http://camelcase.blogspot.com/2009/03/openesb-and-java-caps-consulting.html' title='The OpenESB and Java CAPS consulting ecosystem'/><author><name>Maurizio</name><uri>http://www.blogger.com/profile/14483021801536852402</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='02696119582207331080'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_w_2W4fwPu2g/SbEq46p7BII/AAAAAAAAAHU/1CfkF01j5DI/s72-c/Immagine.jpg' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2123901513613960343.post-8263163533408704922</id><published>2009-02-10T23:19:00.007+01:00</published><updated>2009-02-10T23:34:58.350+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GlassfishESB'/><title type='text'>New Sun Glassfish Portfolio</title><content type='html'>Sun has announced the new &lt;a href="http://www.sun.com/software/products/glassfish_portfolio/"&gt;Glassfish Portfolio&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Finally Sun seems is learning something from &lt;a href="http://www.mysql.com/"&gt;MySQL&lt;/a&gt;, they are selling &lt;a href="http://www.sun.com/software/products/appsrvr/features_glassfish.xml"&gt;added-value tools&lt;/a&gt; for paying customers.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;"GlassFish Enterprise Server subscribers are entitled to &lt;a href="http://www.sun.com/software/products/appsrvr/features_glassfish.xml"&gt;Enterprise Manager&lt;/a&gt;, which delivers improved management and performance monitoring features."&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Before the Enterprise Manager was available only for Java CAPS. The new version seems to be a lot improved anyway:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;SNMP monitoring: Leverages existing SNMP infrastructure to monitor GlassFish&lt;/li&gt;&lt;li&gt;Performance Advisor: Proactively monitors key performance indicators and automatically tunes JDBC connection pools.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Performance Monitor: Diagnoses performance bottlenecks with visibility into key GlassFish performance metrics.&lt;/li&gt;&lt;/ul&gt;This was a much needed tool for enterprise customers, as monitoring and management is one of the primary features of any ESB, by definition.&lt;br /&gt;&lt;br /&gt;From my point of view Glassfish ESB is not an opensource product with optional commercial support, it is a commercial product with the &lt;span style="font-weight: bold;"&gt;additional benefit&lt;/span&gt; of being opensource. Putting words in the right order makes a lot of difference sometimes.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2123901513613960343-8263163533408704922?l=camelcase.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://camelcase.blogspot.com/feeds/8263163533408704922/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=2123901513613960343&amp;postID=8263163533408704922' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2123901513613960343/posts/default/8263163533408704922'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2123901513613960343/posts/default/8263163533408704922'/><link rel='alternate' type='text/html' href='http://camelcase.blogspot.com/2009/02/new-sun-glassfish-portfolio.html' title='New Sun Glassfish Portfolio'/><author><name>Maurizio</name><uri>http://www.blogger.com/profile/14483021801536852402</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='02696119582207331080'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2123901513613960343.post-448571127563388741</id><published>2009-01-28T03:37:00.021+01:00</published><updated>2009-01-28T04:15:27.413+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SOAP'/><category scheme='http://www.blogger.com/atom/ns#' term='REST'/><category scheme='http://www.blogger.com/atom/ns#' term='Web Services'/><category scheme='http://www.blogger.com/atom/ns#' term='architecture'/><category scheme='http://www.blogger.com/atom/ns#' term='security'/><category scheme='http://www.blogger.com/atom/ns#' term='Object Oriented'/><title type='text'>The Growing of REST</title><content type='html'>Here I try to give my point of view on why &lt;a href="http://en.wikipedia.org/wiki/REST"&gt;REST&lt;/a&gt; is gaining a lot of traction against &lt;a href="http://en.wikipedia.org/wiki/SOAP_%28protocol%29"&gt;SOAP&lt;/a&gt; in the Webservices world.&lt;br /&gt;&lt;br /&gt;First, I have to explain that  REST is an architectural style while SOAP-based WS are just a way to implement &lt;a href="http://en.wikipedia.org/wiki/Remote_procedure_call"&gt;RPC&lt;/a&gt;, which is the most basic inter-communication style. Even &lt;a href="http://en.wikipedia.org/wiki/Corba"&gt;Corba&lt;/a&gt; one day went to the point of being very mature an stable, but how many new projects are now started with it? A technology should demonstrate itself within a reasonable time window, otherwise people get tired. My first SOAP implementation, I think it was 2000, was with Axis's ancestor Apache SOAP: I still feel the headache.&lt;br /&gt;&lt;br /&gt;My opinion is that most self-proclaimed RESTful implementations are not really so, because REST is not just XML over HTTP (it can use JSON, plain text, Atom, binary streams, or a combination of all) but it is a way to implement an &lt;a href="http://en.wikipedia.org/wiki/Object-oriented_programming"&gt;Object-Oriented&lt;/a&gt; architectural approach on top of Web resources (the data is the resource itself, the methods are the HTTP operations get, put, post delete, etc...). SOAP WS instead, as said, is plain, old RPC and it does not mandate to use HTTP only, but also works with other protocols such as &lt;a href="http://java.sun.com/products/jms/"&gt;JMS&lt;/a&gt;, etc.&lt;br /&gt;&lt;br /&gt;Now I hope we agree programming languages evolved from procedural to OO, so I'd say the REST paradigm is more &lt;span style="font-style: italic;"&gt;modern&lt;/span&gt; than RPC one, but we know that good OO is actually &lt;span style="font-style: italic;"&gt;harder&lt;/span&gt; than procedural (and I mean &lt;span style="font-style: italic;"&gt;good&lt;/span&gt; OO). So, IMHO, the traction REST is gaining is not due to the fact that it is conceptually simpler (as OO is not, if compared to procedural programming) but instead to the fact that REST is based on a simpler implementation, robust protocol (HTTP), few consistent operations (HTTP methods), a proven architecture (The World Wide Web, not a tiny one really...), a set of extremely tested technologies (Web servers, Web proxy and caches) and a long track of true interoperability and security (again, the WWW and SSL). Honestly I am very happy that I still access my on-line banking through  HTTP + SSL and not any WS-Security......&lt;br /&gt;&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/Resource_oriented_architecture"&gt;Resource Oriented Architecture&lt;/a&gt;, implemented through REST, is actually conceptually harder than RPC style for the same reasons that proper Object Oriented modelling is conceptually harder than plain &lt;a href="http://en.wikipedia.org/wiki/Imperative_programming"&gt;procedural programming&lt;/a&gt;. But a lot more rewarding, if we compare the final outcomes. And that's why, by the way, also good stuff like &lt;a href="http://www.springsource.org/"&gt;Spring&lt;/a&gt; is gaining a lot of traction: it allows to model a real domain through POJOs.&lt;br /&gt;&lt;br /&gt;Maybe I am too old, because in this procedural world of SOAP and EJB (yes, EJB specs before version 3 forced a procedural programming style) I still persist thinking that &lt;span style="font-style: italic;"&gt;Object Orientation should be the way to model business domains properly&lt;/span&gt;: I learned that many years ago and still nothing has been able to change my mind. Of course, integration often demands for a simpler paradigm than OO: probably scripting will happily rule here (&lt;a href="http://wiki.open-esb.java.net/Wiki.jsp?page=IntegrationFlowLanguageOverview"&gt;IFL&lt;/a&gt; and &lt;a href="https://fuji.dev.java.net/"&gt;Fuji&lt;/a&gt; anyone?).&lt;br /&gt;&lt;br /&gt;My opinion is that the &lt;a href="http://www.w3.org/TR/wsdl"&gt;WSDL&lt;/a&gt; + &lt;a href="http://en.wikipedia.org/wiki/List_of_Web_service_specifications"&gt;WS-*&lt;/a&gt; combination, regardless of all the efforts, is still a way too complex, real interoperability is still questionable and security is largely unproven, if compared with plain, old HTTPS and its some billions of daily Web transactions. However, I agree things are improving, but while I'm at customer site &lt;span style="font-style: italic;"&gt;I'd love not to spend days resolving WSDL and WS-* quirks&lt;/span&gt; and instead focus my attention to more added-value activities....&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;More &lt;span style="font-weight: bold;"&gt;simplicity &lt;/span&gt;quite usually equates to more &lt;span style="font-weight: bold;"&gt;security&lt;/span&gt;. &lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2123901513613960343-448571127563388741?l=camelcase.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://camelcase.blogspot.com/feeds/448571127563388741/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=2123901513613960343&amp;postID=448571127563388741' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2123901513613960343/posts/default/448571127563388741'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2123901513613960343/posts/default/448571127563388741'/><link rel='alternate' type='text/html' href='http://camelcase.blogspot.com/2009/01/growing-of-rest.html' title='The Growing of REST'/><author><name>Maurizio</name><uri>http://www.blogger.com/profile/14483021801536852402</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='02696119582207331080'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2123901513613960343.post-3553054665666690403</id><published>2009-01-25T00:05:00.005+01:00</published><updated>2009-01-25T00:20:30.421+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mural'/><category scheme='http://www.blogger.com/atom/ns#' term='tutorial'/><category scheme='http://www.blogger.com/atom/ns#' term='Glassfish'/><category scheme='http://www.blogger.com/atom/ns#' term='OpenESB'/><category scheme='http://www.blogger.com/atom/ns#' term='Netbeans'/><title type='text'>Tom Barrett's Open ESB and Mural Tutorials</title><content type='html'>Sun's Tom Barrett has produced a set of very well written and easy to follow &lt;a href="http://wikis.sun.com/display/OpenESBTutor/Tom+Barrett%27s+Open+ESB+and+Mural+Tutorials"&gt;tutorials&lt;/a&gt;, which can gently lead the reader toward a step by step introduction with many of the newest &lt;a href="http://open-esb.org/"&gt;OpenESB&lt;/a&gt; related technologies, together with &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;. Good job Tom!&lt;br /&gt;&lt;a href="http://wikis.sun.com/display/OpenESBTutor/Tom+Barrett%27s+Open+ESB+and+Mural+Tutorials"&gt;&lt;br /&gt;Tom Barrett's OpenESB Tutorials&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2123901513613960343-3553054665666690403?l=camelcase.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://camelcase.blogspot.com/feeds/3553054665666690403/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=2123901513613960343&amp;postID=3553054665666690403' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2123901513613960343/posts/default/3553054665666690403'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2123901513613960343/posts/default/3553054665666690403'/><link rel='alternate' type='text/html' href='http://camelcase.blogspot.com/2009/01/tom-barretts-open-esb-and-mural.html' title='Tom Barrett&apos;s Open ESB and Mural Tutorials'/><author><name>Maurizio</name><uri>http://www.blogger.com/profile/14483021801536852402</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='02696119582207331080'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2123901513613960343.post-7706076988719506231</id><published>2009-01-23T01:11:00.013+01:00</published><updated>2009-01-23T01:29:36.179+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web Services'/><category scheme='http://www.blogger.com/atom/ns#' term='Glassfish'/><title type='text'>Dump Glassfish HTTP conversations to debug security</title><content type='html'>In Glassfish is possible to dump the HTTP conversation to debug Web Services, by adding the following two JVM options to domain.xml:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&amp;lt;jvm-options&amp;gt;-Dcom.sun.xml.ws.transport.http.HttpAdapter.dump=true&amp;lt;/jvm-options&amp;gt;&lt;br /&gt;&amp;lt;jvm-options&amp;gt;-Dcom.sun.xml.ws.transport.http.client.HttpTransportPipe.dump=true&amp;lt;/jvm-options&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Then when the web service is called the server.log will show complete SOAP envelopes for both request and reply:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;[#|2009-01-21T03:13:33.783+0100|INFO|sun-appserver9.1|javax.enterprise.system.stream.out|_ThreadID=25;_ThreadName=httpSSLWorkerThread-8080-0;|&lt;br /&gt;---[HTTP request]---|#]&lt;br /&gt;&lt;br /&gt;[#|2009-01-21T03:13:33.783+0100|INFO|sun-appserver9.1|javax.enterprise.system.stream.out|_ThreadID=25;_ThreadName=httpSSLWorkerThread-8080-0;|&lt;br /&gt;Host: localhost:8080|#]&lt;br /&gt;&lt;br /&gt;[#|2009-01-21T03:13:33.783+0100|INFO|sun-appserver9.1|javax.enterprise.system.stream.out|_ThreadID=25;_ThreadName=httpSSLWorkerThread-8080-0;|&lt;br /&gt;Content-type: text/xml;charset=UTF-8|#]&lt;br /&gt;&lt;br /&gt;[#|2009-01-21T03:13:33.783+0100|INFO|sun-appserver9.1|javax.enterprise.system.stream.out|_ThreadID=25;_ThreadName=httpSSLWorkerThread-8080-0;|&lt;br /&gt;Content-length: 866|#]&lt;br /&gt;&lt;br /&gt;[#|2009-01-21T03:13:33.783+0100|INFO|sun-appserver9.1|javax.enterprise.system.stream.out|_ThreadID=25;_ThreadName=httpSSLWorkerThread-8080-0;|&lt;br /&gt;User-agent: Jakarta Commons-HttpClient/3.1|#]&lt;br /&gt;&lt;br /&gt;[#|2009-01-21T03:13:33.783+0100|INFO|sun-appserver9.1|javax.enterprise.system.stream.out|_ThreadID=25;_ThreadName=httpSSLWorkerThread-8080-0;|&lt;br /&gt;Soapaction: ""|#]&lt;br /&gt;&lt;br /&gt;[#|2009-01-21T03:13:33.783+0100|INFO|sun-appserver9.1|javax.enterprise.system.stream.out|_ThreadID=25;_ThreadName=httpSSLWorkerThread-8080-0;|&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;lt;soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:svc="http://xml.netbeans.org/schema/svcMessages"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;   &amp;lt;soapenv:Header&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;lt;wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"&amp;gt;&amp;lt;wsse:UsernameToken wsu:Id="UsernameToken-27540698" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"&amp;gt;&amp;lt;wsse:Username&amp;gt;wsitUser&amp;lt;/wsse:Username&amp;gt;&amp;lt;wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordDigest"&amp;gt;xhM3irVV+4ROPhzEjwlEeL7IViI=&amp;lt;/wsse:Password&amp;gt;&amp;lt;wsse:Nonce&amp;gt;oE1wwvm+ZLeBuvgDJvaLvw==&amp;lt;/wsse:Nonce&amp;gt;&amp;lt;wsu:Created&amp;gt;2009-01-21T02:13:32.238Z&amp;lt;/wsu:Created&amp;gt;&amp;lt;/wsse:UsernameToken&amp;gt;&amp;lt;/wsse:Security&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;lt;/soapenv:Header&amp;gt;&lt;br /&gt;   &amp;lt;soapenv:Body&amp;gt;&lt;br /&gt;      &amp;lt;svc:payload&amp;gt;Maurizio&amp;lt;/svc:payload&amp;gt;&lt;br /&gt;   &amp;lt;/soapenv:Body&amp;gt;&lt;br /&gt;&amp;lt;/soapenv:Envelope&amp;amp;gt;&lt;/span&gt;|#]&lt;br /&gt;&lt;br /&gt;[#|2009-01-21T03:13:33.783+0100|INFO|sun-appserver9.1|javax.enterprise.system.stream.out|_ThreadID=25;_ThreadName=httpSSLWorkerThread-8080-0;|--------------------|#]&lt;br /&gt;&lt;br /&gt;[#|2009-01-21T03:13:34.828+0100|SEVERE|sun-appserver9.1|com.sun.xml.wss.logging.impl.filter|_ThreadID=25;_ThreadName=httpSSLWorkerThread-8080-0;_RequestID=9ffc6c88-9210-451f-ad64-08ec2bc5ca74;|WSS1408: UsernameToken Authentication Failed|#]&lt;br /&gt;&lt;br /&gt;[#|2009-01-21T03:13:35.015+0100|INFO|sun-appserver9.1|javax.enterprise.system.stream.out|_ThreadID=25;_ThreadName=httpSSLWorkerThread-8080-0;|&lt;br /&gt;---[HTTP response 500]---|#]&lt;br /&gt;&lt;br /&gt;[#|2009-01-21T03:13:35.015+0100|INFO|sun-appserver9.1|javax.enterprise.system.stream.out|_ThreadID=25;_ThreadName=httpSSLWorkerThread-8080-0;|&lt;br /&gt;&amp;lt;?xml version="1.0" ?&amp;gt;&amp;lt;S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"&amp;gt;&amp;lt;S:Body&amp;gt;&amp;lt;S:Fault xmlns:ns3="http://www.w3.org/2003/05/soap-envelope"&amp;gt;&amp;lt;faultcode xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"&amp;gt;wsse:FailedAuthentication&amp;lt;/faultcode&amp;gt;&amp;lt;faultstring&amp;gt;Authentication of Username Password Token Failed&amp;lt;/faultstring&amp;gt;&amp;lt;/S:Fault&amp;gt;&amp;lt;/S:Body&amp;gt;&amp;lt;/S:Envelope&amp;gt;|#]&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2123901513613960343-7706076988719506231?l=camelcase.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://camelcase.blogspot.com/feeds/7706076988719506231/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=2123901513613960343&amp;postID=7706076988719506231' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2123901513613960343/posts/default/7706076988719506231'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2123901513613960343/posts/default/7706076988719506231'/><link rel='alternate' type='text/html' href='http://camelcase.blogspot.com/2009/01/dump-glassfish-http-conversations-to.html' title='Dump Glassfish HTTP conversations to debug security'/><author><name>Maurizio</name><uri>http://www.blogger.com/profile/14483021801536852402</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='02696119582207331080'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2123901513613960343.post-6404476411381439062</id><published>2009-01-19T01:46:00.010+01:00</published><updated>2009-01-19T02:13:55.180+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='agile'/><category scheme='http://www.blogger.com/atom/ns#' term='project management'/><title type='text'>Alistair's top ten ways to know you are not doing agile</title><content type='html'>I stumbled upon the following not-so-new &lt;a href="http://alistair.cockburn.us/Top+ten+ways+to+know+you+are+not+doing+agile"&gt;blog entry&lt;/a&gt; by Alistair Cockburn, a nice short list of "bad smells" for lack of agile project management. These days companies are still frequently trying to engage project managers asking for arcane list of certifications which are mostly theoretical and paperwork-oriented. Alistair, who has written one of the &lt;a href="http://www.amazon.com/Writing-Effective-Cases-Software-Development/dp/0201702258/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1232326448&amp;amp;sr=1-1"&gt;best book ever about Use-Cases&lt;/a&gt;, instead insists on agile methodologies and expert leadership as the only effective way to deliver projects.&lt;br /&gt;&lt;br /&gt;In my experience pragmatism, agility and the ability to deeply dig for real business requirements are the most important factors for successful integration projects. For effective consulting is mandatory to keep open a constant, daily communication link with business experts and project stakeholders, relationships with just customer's technical people almost never provide for the necessary unbiased information.&lt;br /&gt;&lt;br /&gt;Too many developers are just trying to experiment with the latest "cool" technologies, only because they want to fill a row in their CV, regardless of the real business needs of their employers. In my experience these days two of the biggest CV-fillers are SOAP Webservices and BPEL, as I rarely see those technologies used properly.&lt;br /&gt;Not that they couldn't be useful, but:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-style: italic;"&gt;"When all you have is a &lt;/span&gt;&lt;em style="font-style: italic;"&gt;hammer&lt;/em&gt;&lt;span style="font-style: italic;"&gt;, everything looks like a &lt;/span&gt;&lt;em style="font-style: italic;"&gt;nail&lt;/em&gt;&lt;span style="font-style: italic;"&gt;."&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;SOAP WS and BPEL are the nowadays' hammers.&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2123901513613960343-6404476411381439062?l=camelcase.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://camelcase.blogspot.com/feeds/6404476411381439062/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=2123901513613960343&amp;postID=6404476411381439062' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2123901513613960343/posts/default/6404476411381439062'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2123901513613960343/posts/default/6404476411381439062'/><link rel='alternate' type='text/html' href='http://camelcase.blogspot.com/2009/01/alistairs-top-ten-ways-to-know-you-are.html' title='Alistair&apos;s top ten ways to know you are not doing agile'/><author><name>Maurizio</name><uri>http://www.blogger.com/profile/14483021801536852402</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='02696119582207331080'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry></feed>