<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-7107194769059181627</id><updated>2011-11-27T15:29:22.459-08:00</updated><category term='jboss'/><category term='jbossesb'/><category term='breakingwoods'/><category term='esb'/><category term='soa'/><title type='text'>Native Mind</title><subtitle type='html'>Just another blog talking about some JBoss Technologies applied</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://ankiewsky.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7107194769059181627/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://ankiewsky.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Edgar Ankiewsky Silva</name><uri>http://www.blogger.com/profile/07488052711588628833</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://farm3.static.flickr.com/2269/2042929603_ed0711917e_s.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>34</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7107194769059181627.post-806327841519032742</id><published>2011-09-23T16:03:00.000-07:00</published><updated>2011-09-23T16:03:51.110-07:00</updated><title type='text'>JBossInBossa 2011 : Brazil</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.jbossinbossa.com.br/2011/images/jbossinbossa_header.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="196" src="http://www.jbossinbossa.com.br/2011/images/jbossinbossa_header.png" width="736" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Next October 8th, we will be hosting the largest&amp;nbsp;Brazilian&amp;nbsp;JBoss User Group Conference in brazilian federal capital : Brasilia.&lt;br /&gt;&lt;br /&gt;In 2010 we made a great conference in &lt;a href="http://www.jbossinbossa.com.br/2010"&gt;São Paulo&lt;/a&gt;, but this year we decide bring to Brasilia, once it is closer to&amp;nbsp;Northeast and North region in Brazil, besides this city is one of the most important cities for opensource&amp;nbsp;movement&amp;nbsp;,&amp;nbsp;there you can find a lot of government agencies in the public sector in Brazil, where they are consuming many opensource technologies.&lt;br /&gt;&lt;br /&gt;We are proud to offer a high-level of speakers and sessions , covering many JBoss Technologies, in the speakers list the audience will be able to find some of JBoss Community stars, such as:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Flavia Rainone (Core Developer on AS7)&lt;/li&gt;&lt;li&gt;Mauricio Salatino (Committer in Drools/JBPM5)&lt;/li&gt;&lt;li&gt;Alexandre Porcelli (Contributions in Hibernate and Drools)&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;This year we made a Call 4 Papers with a very great level of speakers and sessions, so people will meet a lot of new speakers.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;We also will have some Red Hat employees, from several departments, such as: Support, Consulting and Solutions Architects.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;We used Google Translator in order to allow you&lt;a href="http://translate.google.com/translate?sl=auto&amp;amp;tl=en&amp;amp;js=n&amp;amp;prev=_t&amp;amp;hl=en&amp;amp;ie=UTF-8&amp;amp;layout=2&amp;amp;eotf=1&amp;amp;u=www.jbossinbossa.com.br%2F2011%2Fagenda.html&amp;amp;act=url"&gt; check our agenda&lt;/a&gt; , and the best stuff about that event, the whole content we are charging just equivalent to US$25 , cheap hun?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Special thanks for James Cobb and&amp;nbsp;Cheyenne Weaver for helping with our JBUG branding.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7107194769059181627-806327841519032742?l=ankiewsky.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ankiewsky.blogspot.com/feeds/806327841519032742/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7107194769059181627&amp;postID=806327841519032742' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7107194769059181627/posts/default/806327841519032742'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7107194769059181627/posts/default/806327841519032742'/><link rel='alternate' type='text/html' href='http://ankiewsky.blogspot.com/2011/09/jbossinbossa-2011-brazil.html' title='JBossInBossa 2011 : Brazil'/><author><name>Edgar Ankiewsky Silva</name><uri>http://www.blogger.com/profile/07488052711588628833</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://farm3.static.flickr.com/2269/2042929603_ed0711917e_s.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7107194769059181627.post-737815818480004610</id><published>2011-01-18T20:28:00.000-08:00</published><updated>2011-01-18T20:28:35.351-08:00</updated><title type='text'>Enabling RestEasy as JAX-RS Impl in Scalate</title><content type='html'>Scala as a language and its community is gaining a lot of attention, in fact, there are certain use cases where Scala offers incredible advantages over the traditional Java Language "as it is".&lt;br /&gt;&lt;br /&gt;Although my experience with Scala so far is completely away from Web technologies, I've seen a lot of discussion about this matter, and a good solution for web applications can be basically a very simple composition:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;ul&gt;&lt;li&gt;HTML5 + REST Services [JSON]&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;HTML 5 + JavaScripts Toolkits such as JQuery and other + REST Service + [Many media types]&lt;/li&gt;&lt;/ul&gt;&lt;/blockquote&gt;&lt;br /&gt;For the scenario that I mentioned above, I found out the framework &lt;a href="http://scalate.fusesource.org/"&gt;Scalate&lt;/a&gt;, a good option for who is looking for a good getting started with Scala and Web.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://scalate.fusesource.org/images/project-logo.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="85" src="http://scalate.fusesource.org/images/project-logo.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&amp;nbsp;If you go in the &lt;a href="http://scalate.fusesource.org/documentation/getting-started.html"&gt;Scalate's Getting Started Tutorial&lt;/a&gt;, everything works fine.&amp;nbsp; I spent the last couple of weeks researching a lot about which IDE to use, and at this moment honestly I recommend you use InteliJ Idea Community Edition with Scala plugins, it works incredibly fine and pleasant.&lt;br /&gt;&lt;br /&gt;Well, but this post's title is about to enable RestEasy in Scalate Projects, so here will go deeper in this subject: Scalate by default comes with Jersey support implementation, which is another JAX-RS implementation, nevertheless for obvious reasons :) I prefer JBoss RestEasy, and in this post you will learn how you can change your scalate project to use RestEasy instead Jersey.&lt;br /&gt;&lt;br /&gt;Everything I made is on my github online repository, I called this "version" of my scalate+resteasy project: easyscala, and you can checkout all the sources from here: &lt;a href="https://github.com/edgars/easyscala"&gt;https://github.com/edgars/easyscala&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Changing the pom.xml&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;This is the first task you have to do, so you have to add RestEasy dependency in the pom.xml, although there is an important detail that I noticed when I tried to do that:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;If you do not ignore the org.slf4j package, you will get an error, that I had not chance to go deeper to check the reason, that's why when I added RestEasy dependency I excluded the reference for this package, maybe some version conflicts of any other stupid thing that I had no time to check.&lt;/li&gt;&lt;/ul&gt;&lt;pre class="xml" name="code"&gt;&lt;dependency&gt;&lt;br /&gt;         &lt;groupid&gt;org.jboss.resteasy&lt;/groupid&gt;&lt;br /&gt;         &lt;artifactid&gt;resteasy-jaxrs&lt;/artifactid&gt;&lt;br /&gt;         &lt;version&gt;${resteasy-version}&lt;/version&gt;&lt;br /&gt;&lt;exclusions&gt;&lt;br /&gt;   &lt;exclusion&gt;&lt;br /&gt;   &lt;groupid&gt;org.slf4j&lt;/groupid&gt;&lt;br /&gt;    &lt;artifactid&gt;*&lt;/artifactid&gt;&lt;br /&gt;   &lt;/exclusion&gt;&lt;br /&gt;&lt;/exclusions&gt;&lt;br /&gt;          &lt;scope&gt;compile&lt;/scope&gt;&lt;br /&gt;&lt;/dependency&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;Changing the web.xml&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Another change that I did, was in web.xml, where I removed the Jersey Servlet Filter's and any related configuration, and I added the RestEasy declaration as the following code:&lt;br /&gt;&lt;pre class="xml" name="code"&gt;&lt;context-param&gt;&lt;br /&gt;     &lt;param-name&gt;resteasy.scan&lt;/param-name&gt;     &lt;param-value&gt;true&lt;/param-value&gt;&lt;/context-param&gt;&lt;br /&gt;&lt;context-param&gt;&lt;br /&gt;      &lt;param-name&gt;resteasy.servlet.mapping.prefix&lt;/param-name&gt;      &lt;param-value&gt;/resteasy&lt;/param-value&gt;&lt;/context-param&gt;&lt;br /&gt; &lt;br /&gt;&lt;servlet&gt;&lt;br /&gt;  &lt;servlet-name&gt;Resteasy&lt;/servlet-name&gt;&lt;br /&gt;  &lt;servlet-class&gt;org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher&lt;br /&gt;  &lt;/servlet-class&gt;&lt;br /&gt;&lt;/servlet&gt;&lt;br /&gt;&lt;br /&gt;&lt;servlet-mapping&gt;&lt;br /&gt;  &lt;servlet-name&gt;Resteasy&lt;/servlet-name&gt;&lt;br /&gt;  &lt;url-pattern&gt;/resteasy/*&lt;/url-pattern&gt;&lt;br /&gt;  &lt;/servlet-mapping&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;With a few changes, I was able to run the first REST Service made with JBoss RestEasy, look that we have a very standard JAX-RS Class in the following example:&lt;br /&gt;&lt;br /&gt;&lt;pre class="java" name="code"&gt;package org.jboss.easyscala&lt;br /&gt;&lt;br /&gt;import javax.ws.rs.{GET, Path, Produces}&lt;br /&gt;import javax.ws.rs.ext.Provider&lt;br /&gt;&lt;br /&gt;@Provider&lt;br /&gt;@Path("/root")&lt;br /&gt;class RootService {&lt;br /&gt;&lt;br /&gt;  @GET&lt;br /&gt;  @Path("/hello")&lt;br /&gt;  @Produces(Array("text/xml", "application/json"))&lt;br /&gt;  def getMediaType = "hello"&lt;br /&gt;&lt;br /&gt;  @GET&lt;br /&gt;  @Path("/hello")&lt;br /&gt;  @Produces(Array("text/html"))&lt;br /&gt;  def getHTML = "hello"&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;In the class above, we have 2 methods, according to the mime type (media type) that this service is requested, one of them will send the response. Another good point, at this moment, you cannot see any JBoss RestEasy proprietary extension. Obviously according your needs, you may add some helpers.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;br /&gt;Conclusion&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Scala and their related projects and solutions are gaining a lot of attention, it combines two programming models: OO and Functional, and this combination can make our codes easier, smaller and smarter. I cannot predict that much, but I am working in some specific Use Cases that were totally suitable for Scala, I am not talking about boilerplate code, but about less code with more power, and getting a huge difference when performance is a relevant issue. If you like JBoss tecnologies, like me, this is the first post where I will try show some good and relevant combinations.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7107194769059181627-737815818480004610?l=ankiewsky.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ankiewsky.blogspot.com/feeds/737815818480004610/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7107194769059181627&amp;postID=737815818480004610' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7107194769059181627/posts/default/737815818480004610'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7107194769059181627/posts/default/737815818480004610'/><link rel='alternate' type='text/html' href='http://ankiewsky.blogspot.com/2011/01/enabling-resteasy-as-jax-rs-impl-in.html' title='Enabling RestEasy as JAX-RS Impl in Scalate'/><author><name>Edgar Ankiewsky Silva</name><uri>http://www.blogger.com/profile/07488052711588628833</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://farm3.static.flickr.com/2269/2042929603_ed0711917e_s.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7107194769059181627.post-790270883597309081</id><published>2010-11-05T13:35:00.000-07:00</published><updated>2010-11-05T20:05:32.973-07:00</updated><title type='text'>Polling any Database table with JBoss ESB 4.9 and Apache Camel - Part 1</title><content type='html'>&lt;b&gt;Introduction&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Poll a database table is very common use case when you are integrating systems and applications, according EIPs(&lt;a href="http://www.enterpriseintegrationpatterns.com/"&gt;http://www.enterpriseintegrationpatterns.com/&lt;/a&gt;): Shared Databse is one of Integration Styles available in the industry.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;JBoss ESB 4.9 : Support for Apache Camel&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;IMHO, this is the greatest improvement in JBoss ESB from the last 3 years,&amp;nbsp; we community owe this job to &lt;b&gt;&lt;a href="http://www.linkedin.com/in/errantepiphany"&gt;David Ward&lt;/a&gt;&lt;/b&gt;, which pushed this implementation in that newest Community JBoss ESB release.&amp;nbsp; David wrote about getting started with Apache Camel and JBoss ESB here: &lt;a href="http://community.jboss.org/wiki/CamelGateway"&gt;http://community.jboss.org/wiki/CamelGateway&lt;/a&gt;. If you need some basic overview about Apache Camel, I recommend you take a look on Camel website:&amp;nbsp;&lt;a href="http://camel.apache.org/"&gt; http://camel.apache.org/.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Where is the benefits of Apache Camel in JBoss ESB?&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;First of all, we have a plenty of new gateways components available, such component's list is huge, you can see them &lt;a href="http://camel.apache.org/components.html"&gt;here&lt;/a&gt;. In Apache Camel we have to be aware about the difference between the components, basically there are:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Consumers&lt;/b&gt; - Which can be message listeners from the URI protocols&lt;/li&gt;&lt;li&gt;&lt;b&gt;Producers&lt;/b&gt; - Which can post a message into the protocol URI&lt;/li&gt;&lt;/ul&gt;There are components that commonly can be both, but you might see some components that can be only Consumers or only Producers. It depends of the protocols nature or any other related aspect.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;For that demo, I decided use the &lt;a href="http://camel.apache.org/jpa.html"&gt;JPA Component&lt;/a&gt;, as which can be both a producer and consumer.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Demo Use Case&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;We have many customers asking how they could integrate legacy applications, or even applications written in different platforms, such as .Net or PHP, for this matter we have one thing in common: The Database can be shared between many applications. I am not talking about ETL or even Data Services Federation, at this point I want to just get a row from some table and consider it a "Message", as which I can do anything I want using JBoss ESB Actions.&lt;br /&gt;&lt;br /&gt;To turn my demo more realistic I am using the very well known opensource &lt;a href="http://www.sugarcrm.com/crm/"&gt;&lt;b&gt;CRM: SugarCRM&lt;/b&gt;&lt;/a&gt;, which has a table called: Lead, which keeps every leads from the system stored. See Image 1 to see my local SugarCRM instance running:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_3evqY311jfA/TNRkcPJCOPI/AAAAAAAABh8/mblGfICB4-M/s1600/Screenshot-JBoss+SOA-Platform+CRM+Store+-+Mozilla+Firefox.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="237" src="http://4.bp.blogspot.com/_3evqY311jfA/TNRkcPJCOPI/AAAAAAAABh8/mblGfICB4-M/s320/Screenshot-JBoss+SOA-Platform+CRM+Store+-+Mozilla+Firefox.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size: x-small;"&gt;Image 1 - Sugar CRM with my Leads&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;The SugarCRM stores the data into any relational database, in my case I am using MySql.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;The ESB Project&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;In my ESB Project, I just have to add an Entity class that will reference the Lead Table, in that case I created the following table:&lt;br /&gt;&lt;br /&gt;&lt;pre class="java" name="code"&gt;@Entity&lt;br /&gt;@Table(name="leads")&lt;br /&gt;@NamedQuery(name = "NewLeadsQuery", query = "select x from Lead x where x.status='New'")&lt;br /&gt;&lt;br /&gt;public class Lead implements Serializable {&lt;br /&gt; private static final long serialVersionUID = 1L;&lt;br /&gt;&lt;br /&gt; @Id&lt;br /&gt; @GeneratedValue(strategy=GenerationType.IDENTITY)&lt;br /&gt; @Column(unique=true, nullable=false, length=36)&lt;br /&gt; private String id;&lt;br /&gt;&lt;br /&gt;    @Lob()&lt;br /&gt; @Column(name="account_description")&lt;br /&gt; private String accountDescription;&lt;br /&gt;&lt;br /&gt;   .....&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;In that Entity you can see that it is a very basic JPA Entity, which contains a &lt;i&gt;named query &lt;/i&gt;that will return every Lead that the property status is "New", in other words: Every single Lead will be dispatched to JBoss ESB as a Message, and now you are asking yourself: How ? See the next topic.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Declaring a Camel Gateway in JBoss ESB&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;What is more important is to know the components that you will interact with, and notice that each component has its dependency, in my case with JPA, I need to add into my project lib folder the camel-jpa-VERSION.jar, which is my component library, I have to do that, because AKAIK just the core camel libraries are in JBoss ESB classpath. Here is my jboss-esb.xml config portion for it:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="xml" name="code"&gt;&lt;camel-provider name="ApacheCamel"&gt;&lt;br /&gt;   &lt;camel-bus busid="SugarJPAConnector"&gt;&lt;br /&gt;    &lt;from uri="jpa://br.com.redhat.sugar.soa.entity.Lead?consumeDelete=false&amp;amp;consumer.delay=5000&amp;amp;consumer.namedQuery=NewLeadsQuery"&gt;&lt;br /&gt;   &lt;/from&gt;&lt;br /&gt; &lt;/camel-bus&gt;&lt;br /&gt;&lt;br /&gt;&lt;/camel-provider&gt;&lt;/pre&gt;&lt;br /&gt;There is a point that I'd like to call your attention: The &lt;b&gt;&amp;amp;&lt;/b&gt; symbol as it is declared in XML you have to work with the &lt;b&gt;&amp;amp;amp&lt;/b&gt;; representation replacing that symbol&lt;br /&gt;&lt;br /&gt;Now, you are able to create any Service in JBoss ESB and several actions to interact with your Message.&lt;br /&gt;&lt;br /&gt;In my final release of that demo, I am using JBoss BRMS/Guvnor, that will receive the Lead row as an Object and will decide if it is a Lead that have to be worked by a Sales Rep or an Inside Sales Rep, according some fields on that "Lead fact"&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_3evqY311jfA/TNRoeXk_a4I/AAAAAAAABiA/QwRQXq1INEE/s1600/Screenshot-JBoss+Guvnor+-+Mozilla+Firefox.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="237" src="http://2.bp.blogspot.com/_3evqY311jfA/TNRoeXk_a4I/AAAAAAAABiA/QwRQXq1INEE/s320/Screenshot-JBoss+Guvnor+-+Mozilla+Firefox.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;In my upcoming new things in that demo I will have 2 consoles: 1 written using Swing which will listening a JMS Queue for the Inside Sales, which supposedly are inside the company's office, and if it is a lead for an Outside Sales Rep, it will go to an Infinispan Cache, and it will be accessible through an WebSocket HTML 5 Client. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Last Tip about JPA Component&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Once you consume a row to the database, maybe you need to change at least the column that makes the row available to be polled, in our case "status=new", So, you can "mark" that row with a new Status, or invoke any other operation, just adding the @Consumed annotation in any method in the JPA Entity.&lt;br /&gt;&lt;br /&gt;&lt;pre class="java" name="code"&gt;// Changing 2 column's values in the database, so a polled row, will not be consumed more than one time&lt;br /&gt;@Consumed&lt;br /&gt; public void checked(){&lt;br /&gt;  &lt;br /&gt;  this.setStatus("EAI-Partner"); &lt;br /&gt;  this.setStatusDescription("This Lead was Forwarded to a Partner");&lt;br /&gt;  &lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Next Steps &lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Partially I have the demo done, I will move that to my Mac, where I can do fancier screencasts, and than you will be able to see it working.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_3evqY311jfA/TNRsq34gxOI/AAAAAAAABiE/nzrmaGyIWco/s1600/sugarjpainfra.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;br /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7107194769059181627-790270883597309081?l=ankiewsky.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ankiewsky.blogspot.com/feeds/790270883597309081/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7107194769059181627&amp;postID=790270883597309081' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7107194769059181627/posts/default/790270883597309081'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7107194769059181627/posts/default/790270883597309081'/><link rel='alternate' type='text/html' href='http://ankiewsky.blogspot.com/2010/11/polling-any-database-table-with-jboss.html' title='Polling any Database table with JBoss ESB 4.9 and Apache Camel - Part 1'/><author><name>Edgar Ankiewsky Silva</name><uri>http://www.blogger.com/profile/07488052711588628833</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://farm3.static.flickr.com/2269/2042929603_ed0711917e_s.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_3evqY311jfA/TNRkcPJCOPI/AAAAAAAABh8/mblGfICB4-M/s72-c/Screenshot-JBoss+SOA-Platform+CRM+Store+-+Mozilla+Firefox.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7107194769059181627.post-6188595609573622599</id><published>2010-08-10T22:01:00.000-07:00</published><updated>2010-11-02T17:04:52.646-07:00</updated><title type='text'>RestEasy on GoogleAppEngine: CoreREST</title><content type='html'>I've been quite busy the last couple of months, with a lot of meetings and customer calls, so far the time to study, to create and researching is becoming rare, activities that I love are becoming less frequent day by day. I have a particular viewing of video games: I hate all them and I hate invitations to play with, I prefer play soccer for real, but in my spare time, between an airport and other, I decided give myself another chance to enjoy Ruby, and to discover why lots of people says so good things about that. So I combined a plenty of subjects that I really enjoy: JAX-RS with RestEasy, JSF2.0 (Sorry, I know a lot of people prefers GWT) and Google AppEngine. The result combination was an open project called: CoreRest &lt;a href="http://www.blogger.com/%28http://corerest.appspot.com"&gt;(http://corerest.appspot.com&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_3evqY311jfA/TGIt32WD4FI/AAAAAAAABfk/0svB3bL2cVY/s1600/Screenshot-CORE-REST+Services+:+Powered+by+JBoss+RestEasy+and+Google+AppEngine+-+Mozilla+Firefox.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="310" src="http://3.bp.blogspot.com/_3evqY311jfA/TGIt32WD4FI/AAAAAAAABfk/0svB3bL2cVY/s400/Screenshot-CORE-REST+Services+:+Powered+by+JBoss+RestEasy+and+Google+AppEngine+-+Mozilla+Firefox.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;CoreREST&lt;/b&gt;, is a kind of "&lt;i&gt;PaaS&lt;/i&gt;"(Platform as a Service), which runs on &lt;a href="http://appengine.google.com/"&gt;Google AppEngine&lt;/a&gt;, which allows users to create their own lightweight "WebServices" based on &lt;b&gt;REST&lt;/b&gt; approach using &lt;a href="http://groovy.codehaus.org/"&gt;&lt;b&gt;Groovy&lt;/b&gt;&lt;/a&gt;, and as sooner as possible with Ruby(powered by &lt;b&gt;JRuby&lt;/b&gt;). I also will add many out-of-the-box APIs, such as: Smooks, and XStream, thus will possible: Transform, Convert and create really rich Services.&lt;br /&gt;&lt;br /&gt;I used &lt;i&gt;&lt;b&gt;&lt;a href="http://www.jboss.org/resteasy"&gt;RestEasy 2.0&lt;/a&gt;&lt;/b&gt;&lt;/i&gt;, the JBoss implementation for JAX-RS standard, led by &lt;a href="http://bill.burkecentral.com/"&gt;&lt;b&gt;Bill Burke&lt;/b&gt;&lt;/a&gt;, which runs smoothly on Google AppEngine. I also, decided use another JEE6 standard in GAE: JSF 2.0, which to be honest: Without Seam, JSF seems to be a "Barbacue without salt", but in the end, it is running pretty well. &lt;br /&gt;&lt;br /&gt;For persistence, as Google uses BigTable, a noSQL Implementation, the JPA Provider recommended by Google I really didn't liked, so I am using &lt;b&gt;&lt;a href="http://code.google.com/p/objectify-appengine/"&gt;Objectify&lt;/a&gt;&lt;/b&gt;, which for me was more pleasant and easy to use.&lt;br /&gt;&lt;br /&gt;In this first blog entry, I will just let you create and expose a basic "Service" in CoreRest. To do that, see the following instructions:&lt;br /&gt;&lt;br /&gt;1- Open http://corerest.appspot.com&lt;br /&gt;&lt;br /&gt;2- Click on Groovy logo icon&lt;br /&gt;&lt;br /&gt;3 - Fill the following information:&lt;br /&gt;&lt;br /&gt;3.1 - Script Name: This is the script name, which will be a kind of "endpoint name", so it will be the key for service invocation, put any simple name for it, your name for instance.&lt;br /&gt;&lt;br /&gt;3.2 - URL Mapping - This is the URI that you want for for your service, you will put: &lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;/{firstname}/{lastname}&lt;/span&gt;&lt;/b&gt; . &lt;br /&gt;&lt;br /&gt;3.4 - And the Source, will be the groovy script:&lt;br /&gt;&lt;br /&gt;&lt;pre class="java" name="code"&gt;String response = lastname.toUpperCase() + ", "+ firstname;&lt;br /&gt;return response;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;3.5 - Click on "Save Script"&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&amp;nbsp;&lt;a href="http://1.bp.blogspot.com/_3evqY311jfA/TGIuWd__1XI/AAAAAAAABfs/JmWYNCk_VmI/s1600/Screenshot-CORE-REST+Services+:+Powered+by+JBoss+RestEasy+and+Google+AppEngine+-+Mozilla+Firefox-1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="310" src="http://1.bp.blogspot.com/_3evqY311jfA/TGIuWd__1XI/AAAAAAAABfs/JmWYNCk_VmI/s400/Screenshot-CORE-REST+Services+:+Powered+by+JBoss+RestEasy+and+Google+AppEngine+-+Mozilla+Firefox-1.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Well, what is happening behind the scenes: &lt;br /&gt;&lt;br /&gt;a) the URI is the extension for the "endpoint name", and the location where you will add the variables, exactly as you do according the standard on JAX-RS. In the URL: /{firstname}/{lastname}, we will have 2 variables available for Scripting context, besides the variable "response", which is the variable to return the response as a String, although CoreRest will support some Media types, I am still working on it, once it is totally possible using RestEasy.&lt;br /&gt;&lt;br /&gt;To test you script, you just may call you service according the following URL:&lt;br /&gt;&lt;br /&gt;http://corerest.appspot.com/&lt;b style="background-color: yellow; color: red;"&gt;service&lt;/b&gt; - (Service is the ROOT for endpoints)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://corerest.appspot.com/service/tutorial/Edgar/Silva"&gt;http://corerest.appspot.com/service/tutorial/Edgar/Silva&lt;/a&gt;&lt;br /&gt;&lt;b&gt;&lt;br /&gt;Next Steps:&lt;/b&gt; I will try work on it, improve the UI and the user experience. I would like to say thanks to &lt;a href="http://www.exoplatform.com/"&gt;eXo Platform&lt;/a&gt;, for the Groovy Syntax hightlight, and &lt;a href="http://twitter.com/porcelli"&gt;Alexandre Porcelli&lt;/a&gt; that helped me to not use Java Regular Expressions and make my code easier :), and &lt;a href="http://twitter.com/edermag"&gt;Eder Magalhães&lt;/a&gt; that tested CoreRest with me last night.&lt;br /&gt;&lt;br /&gt;I sooner I get this code not so dirty though, I will publish and let it opensource somewhere, maybe GitHub, once I could at least to do my first commit there without any error :).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7107194769059181627-6188595609573622599?l=ankiewsky.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ankiewsky.blogspot.com/feeds/6188595609573622599/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7107194769059181627&amp;postID=6188595609573622599' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7107194769059181627/posts/default/6188595609573622599'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7107194769059181627/posts/default/6188595609573622599'/><link rel='alternate' type='text/html' href='http://ankiewsky.blogspot.com/2010/08/resteasy-on-googleappengine-corerest.html' title='RestEasy on GoogleAppEngine: CoreREST'/><author><name>Edgar Ankiewsky Silva</name><uri>http://www.blogger.com/profile/07488052711588628833</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://farm3.static.flickr.com/2269/2042929603_ed0711917e_s.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_3evqY311jfA/TGIt32WD4FI/AAAAAAAABfk/0svB3bL2cVY/s72-c/Screenshot-CORE-REST+Services+:+Powered+by+JBoss+RestEasy+and+Google+AppEngine+-+Mozilla+Firefox.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7107194769059181627.post-3577389491270520231</id><published>2010-05-15T14:25:00.000-07:00</published><updated>2010-05-15T14:27:06.884-07:00</updated><title type='text'>JBoss Technologies presented at 1st nosqlbr</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_3evqY311jfA/S-8MYq_T-wI/AAAAAAAABWY/QN6ki9Umzu0/s1600/logonosqlbr.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="84" src="http://3.bp.blogspot.com/_3evqY311jfA/S-8MYq_T-wI/AAAAAAAABWY/QN6ki9Umzu0/s320/logonosqlbr.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="unit size1of2 logo border air"&gt;&lt;/div&gt;&amp;nbsp;This saturday, May 15th, we had the 1st Conference about noSQL technologies in São Paulo, Brazil, promoted by Caravela Technologies, in fact, organized by Alexandre Porcelli (former Drools and Hibernate Commiter) - The ANTLR Guy, with his team and his lovely "gang"(his family).&lt;br /&gt;&lt;br /&gt;The event started from a simple post on Twitter (#nosqlbr), and from a original planning for 20 people (no regular ones but geeks) going to a bar and between a beer and a cairpirinha, the people would have some discussion about noSQL technologies. However, Porcelli is brazilian, and he never gives up, and in the end the 1st nosqlbr had about 250 attendees in a fancy hotel with an incredible cofee break , good people to talk and so on.&lt;br /&gt;&lt;br /&gt;&lt;div class="unit size1of2 logo border air"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_3evqY311jfA/S-8PTPk_RLI/AAAAAAAABWg/vVlcu5gHgTA/s1600/nosql.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="http://1.bp.blogspot.com/_3evqY311jfA/S-8PTPk_RLI/AAAAAAAABWg/vVlcu5gHgTA/s400/nosql.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="unit size1of2 logo border air"&gt;&lt;/div&gt;&lt;div class="unit size1of2 logo border air"&gt;&lt;span class="no"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="dim"&gt;&lt;/span&gt;           &lt;/div&gt;&lt;div class="unit size1of2 logo border air"&gt;&lt;span class="no"&gt;We( &lt;a href="http://www.twitter.com/samueltauil"&gt;Samuel Tauil&lt;/a&gt; and I) presented a session entitled: "&lt;i&gt;&lt;b&gt;KVM, Infinispan and RestEasy: Infrastructure, Storage and Access for a noSQL foundation&lt;/b&gt;&lt;/i&gt;", we had some jokes during the session, but also based on feedback from the audience during the breaks, they understood ours scenarios, usecases and how and when to use/ apply those tecnnologies. &lt;/span&gt;&lt;/div&gt;&lt;div class="unit size1of2 logo border air"&gt;&lt;span class="no"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="dim"&gt;&lt;/span&gt;           &lt;/div&gt;&lt;div class="unit size1of2 logo border air"&gt;&lt;span class="no"&gt;I wanna say thanks for all atendees, and congratulations for everybody at &lt;a href="http://www.caravelatech.com/"&gt;Caravela Technologies&lt;/a&gt;. If you understand some portuguese, you shall see the &lt;a href="http://nosqlbr.com/"&gt;nosqlbr.com&lt;/a&gt; website.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div class="unit size1of2 logo border air"&gt;&lt;span class="no"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="dim"&gt;&lt;/span&gt;           &lt;/div&gt;&lt;div class="unit size1of2 logo border air"&gt;&lt;span class="no"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="dim"&gt;&lt;/span&gt;           &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7107194769059181627-3577389491270520231?l=ankiewsky.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ankiewsky.blogspot.com/feeds/3577389491270520231/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7107194769059181627&amp;postID=3577389491270520231' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7107194769059181627/posts/default/3577389491270520231'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7107194769059181627/posts/default/3577389491270520231'/><link rel='alternate' type='text/html' href='http://ankiewsky.blogspot.com/2010/05/jboss-technologies-presented-at-1st.html' title='JBoss Technologies presented at 1st nosqlbr'/><author><name>Edgar Ankiewsky Silva</name><uri>http://www.blogger.com/profile/07488052711588628833</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://farm3.static.flickr.com/2269/2042929603_ed0711917e_s.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_3evqY311jfA/S-8MYq_T-wI/AAAAAAAABWY/QN6ki9Umzu0/s72-c/logonosqlbr.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7107194769059181627.post-190894723292489980</id><published>2010-04-08T14:22:00.000-07:00</published><updated>2010-04-08T14:23:16.628-07:00</updated><title type='text'>JBossInBossa 2010 - JBUG:Brasil Conference / May 7th, 8th</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.jbossinbossa.com.br/"&gt;http://www.jbossinbossa.com.br&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.jbossinbossa.com.br/2010/images/jbossinbossa_header.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://www.jbossinbossa.com.br/2010/images/jbossinbossa_header.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;We are very happy to announce the JBossInBossa 2010 , the Brazilian JBoss Conference organized by JBUG:Brasil and sponsored by Red Hat and others, which is scheduled for May 7th and 8th.&lt;br /&gt;&lt;br /&gt;The audience will be able to meet the following international speakers:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span id="goog_909774569"&gt;&lt;/span&gt;&lt;span id="goog_909774570"&gt;&lt;/span&gt; &lt;b&gt;Pete Muir&lt;/b&gt; , Seam/Weld Project Lead&lt;/li&gt;&lt;li&gt;&lt;b&gt;Benjamin Mestrallet&lt;/b&gt;, eXo Platform CEO&lt;/li&gt;&lt;li&gt;&lt;b&gt;Mauricio Salatino&lt;/b&gt;, PlugTree CTO/ Drools Committer&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;But the conferece will be in Brazil, so we will count with some JBoss employees providing Workshops and/or Sessions as well, see the following list :&lt;br /&gt;&lt;ul&gt;&lt;li&gt; Alessandro Lazarotti,&lt;/li&gt;&lt;li&gt;Bruno Rossetto Machado, &lt;/li&gt;&lt;li&gt;Edgar Silva&lt;/li&gt;&lt;li&gt;Flavia Rainone&lt;/li&gt;&lt;li&gt;João Paulo Viragine &lt;/li&gt;&lt;li&gt;Leandro Abite,&lt;/li&gt;&lt;li&gt; Rafael Benevides,&lt;/li&gt;&lt;li&gt;Ricardo Ferreira&lt;/li&gt;&lt;li&gt;Rodrigo Freire&lt;/li&gt;&lt;li&gt;Samuel Tauil&lt;/li&gt;&lt;li&gt;Others&lt;/li&gt;&lt;/ul&gt;We would like also to say thanks to another brazilian companies that are providing really great and worth speakers for our Workshops:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Caravela Tech: &lt;/b&gt;Alexandre Porcelli (CTO)&lt;b&gt; -&lt;/b&gt;Drools Workshop with Mauricio Salatino (Salaboy)&lt;/li&gt;&lt;li&gt;&lt;b&gt;Voice Technology &lt;/b&gt;- Antonio Anderson Souza (Voice Technology), André Pantalião - Workshop: Social Networking by Phone - Utilizando SeamTelcoFramework&lt;/li&gt;&lt;li&gt;&lt;b&gt;Caelum &lt;/b&gt;- Paulo Silveira - Workshop: JPA 2.0 na prática, com Hibernate&lt;/li&gt;&lt;li&gt;&lt;b&gt;GlobalCode&lt;/b&gt; - Alberto Lemos aka Dr.Spock , Vinicius Senger , Yara Senger- Workshop: JSF 2.0 with JBoss 6.x&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&amp;nbsp;We would like to say thanks to &lt;a href="http://community.jboss.org/people/james.cobb%40jboss.com"&gt;&lt;b&gt;James Cobb&lt;/b&gt;&lt;/a&gt; and his team at JBoss.ORG, they are the people behind the arts, logo and every good visual impact that we are promoting in JBossInBossa Website (&lt;a href="http://www.jbossinbossa.com.br/"&gt;http://www.jbossinbossa.com.br&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;This is a way to share knowledge, energy and everything good, it is our way to say thanks to the large JBoss Community in Brazil, as well as to celebrate our 3rd birthday of official JBoss presence in Brazil.&lt;br /&gt;&lt;br /&gt;This is our agenda for May 8th:&lt;br /&gt;&lt;br /&gt;&lt;table border="1" cellpadding="2" cellspacing="2" style="border-collapse: collapse; text-align: left; width: 100%;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="vertical-align: top; width: 114px;"&gt;&lt;h2&gt;9:00 - 10:00&lt;br /&gt;&lt;/h2&gt;&lt;/td&gt;       &lt;td style="vertical-align: top; width: 514px;"&gt;Seam 3, Weld, CDI , JEE 6 - Pete Muir&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td style="vertical-align: top; width: 114px;"&gt;&lt;h2&gt;10:00 - 10:20&lt;br /&gt;&lt;/h2&gt;&lt;/td&gt;       &lt;td style="vertical-align: top; width: 514px;"&gt;Cofee-Break&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td style="vertical-align: top; width: 114px;"&gt;&lt;h2&gt;10:20 - 11:20&lt;br /&gt;&lt;/h2&gt;&lt;/td&gt;       &lt;td style="vertical-align: top; width: 514px;"&gt;JBoss Application Server 6 Revolutions! - Flavia Rainone&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td style="vertical-align: top; width: 114px;"&gt;&lt;h2&gt;11:20 - 12:20&lt;br /&gt;&lt;/h2&gt;&lt;/td&gt;       &lt;td style="vertical-align: top; width: 514px;"&gt;SOA Showcases - Teiid(MetaMatrix) e BRMS - Ricardo Ferreira&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td style="vertical-align: top;"&gt;&lt;br /&gt;&lt;/td&gt;       &lt;td style="vertical-align: top;"&gt;&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td style="vertical-align: top;"&gt;&lt;h2&gt;13:20 - 14:20&lt;br /&gt;&lt;/h2&gt;&lt;/td&gt;       &lt;td style="vertical-align: top;"&gt;Plataforma de Portais GateIn - Benjamin Mestrallet&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td style="vertical-align: top;"&gt;&lt;h2&gt;15:30-16:15&lt;/h2&gt;&lt;/td&gt;       &lt;td style="vertical-align: top;"&gt;Gerenciamento Efetivo de Ambientes JBoss com JOPR/JON - Rodrigo Freire e João Paulo Viragine&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td style="vertical-align: top;"&gt;&lt;h2&gt;15:05-15:30&lt;/h2&gt;&lt;/td&gt;       &lt;td style="vertical-align: top;"&gt;Cofeebreak - Intervalo&lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td style="vertical-align: top;"&gt;&lt;h2&gt;15:30-16:15&lt;br /&gt;&lt;/h2&gt;&lt;/td&gt;       &lt;td style="vertical-align: top;"&gt;Apresentando o Projeto XSeam e Arquiteturas de Referencia em Seam&amp;nbsp; Alessandro Lazarotti e Rafael Benevides&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td style="vertical-align: top;"&gt;&lt;h2&gt;16:15-17:00&lt;br /&gt;&lt;/h2&gt;&lt;/td&gt;       &lt;td style="vertical-align: top;"&gt;Breakingwoods &amp;amp; JBoss para plataformas de Integração de Sistemas - Edgar Silva &lt;br /&gt;&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td style="vertical-align: top;"&gt;&lt;h2&gt;17:00-17:50&lt;br /&gt;&lt;/h2&gt;&lt;/td&gt;       &lt;td style="vertical-align: top;"&gt;Drools Fusion e DroolsFlow - Mauricio Salatino &lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td style="vertical-align: top;"&gt;&lt;h2&gt;17:50-18:50&lt;br /&gt;&lt;/h2&gt;&lt;/td&gt;       &lt;td style="vertical-align: top;"&gt;RichFaces 4 e JSF 2.0 - Pete Muir&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;In the next year, we are already planning a bigger event, who knows in another location, I hope some place like Rio de Janeiro or Fortaleza :)&lt;br /&gt;&lt;br /&gt;Cheers&lt;br /&gt;&lt;br /&gt;Edgar&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7107194769059181627-190894723292489980?l=ankiewsky.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ankiewsky.blogspot.com/feeds/190894723292489980/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7107194769059181627&amp;postID=190894723292489980' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7107194769059181627/posts/default/190894723292489980'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7107194769059181627/posts/default/190894723292489980'/><link rel='alternate' type='text/html' href='http://ankiewsky.blogspot.com/2010/04/jbossinbossa-2010-jbugbrasil-conference.html' title='JBossInBossa 2010 - JBUG:Brasil Conference / May 7th, 8th'/><author><name>Edgar Ankiewsky Silva</name><uri>http://www.blogger.com/profile/07488052711588628833</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://farm3.static.flickr.com/2269/2042929603_ed0711917e_s.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7107194769059181627.post-2410765652753916572</id><published>2010-04-02T20:56:00.000-07:00</published><updated>2010-04-02T20:56:04.409-07:00</updated><title type='text'>Speaking at Jazoon 2010</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://jazoon.com/Portals/0/Content/Logos/banners/486x60_jazo10.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://jazoon.com/Portals/0/Content/Logos/banners/486x60_jazo10.gif" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;I am very happy to be accepted to be speaking at Jazoon 2010 with my paper entitled: &lt;b&gt;"Opensource SOA on             Steroids: Combining the robustness of JBoss ESB with the flexibility of             Apache Camel".&amp;nbsp;&lt;/b&gt; I am very excited with that, and already planning a cool presentation with a lot of energy and ready to share many good topics with the audience. &lt;br /&gt;&lt;br /&gt;Other much more relevant and famous &lt;i&gt;JBossians&lt;/i&gt; were also accepted, see the following list :&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Dan Allen&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Emmanuel Bernard&amp;nbsp;&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Heiko Braun&amp;nbsp;&lt;/strong&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Jean Deruelle&amp;nbsp;&lt;/strong&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Wesley Hales&amp;nbsp;&lt;/strong&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Aslak Knutsen&amp;nbsp;&lt;/strong&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Anil Saldhana&lt;/strong&gt;&lt;/li&gt;&lt;/ul&gt;&lt;strong&gt;See the full list here: &lt;a href="http://jazoon.com/Conference/Speakers"&gt;http://jazoon.com/Conference/Speakers&amp;nbsp;&lt;/a&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt; &lt;/strong&gt;&lt;br /&gt;&lt;strong style="font-weight: normal;"&gt;&amp;nbsp;I am proud to be representing the JBoss Solution Architects Team from Red Hat, and happy to have the chance to meet those incredible technicians there,&amp;nbsp; as well as all Java community that will be present there. &amp;nbsp; &lt;/strong&gt;&lt;strong style="font-weight: normal;"&gt;&amp;nbsp;&lt;/strong&gt;&lt;strong style="font-weight: normal;"&gt;&amp;nbsp;&lt;/strong&gt;&lt;strong style="font-weight: normal;"&gt;&amp;nbsp;&lt;/strong&gt;&lt;strong&gt; &lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;I will try bring with me a "Cachaça bottle"&amp;nbsp; in order to prepare for my friends some "Brazilian Caipirinhas (&lt;a href="http://en.wikipedia.org/wiki/Caipirinha"&gt;http://en.wikipedia.org/wiki/Caipirinha&lt;/a&gt;)", which is a really good mixing... Essentially as JBoss ESB and Apache Camel can to be. &lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://upload.wikimedia.org/wikipedia/en/thumb/0/0c/Caipirinha2.jpg/200px-Caipirinha2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://upload.wikimedia.org/wikipedia/en/thumb/0/0c/Caipirinha2.jpg/200px-Caipirinha2.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7107194769059181627-2410765652753916572?l=ankiewsky.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ankiewsky.blogspot.com/feeds/2410765652753916572/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7107194769059181627&amp;postID=2410765652753916572' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7107194769059181627/posts/default/2410765652753916572'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7107194769059181627/posts/default/2410765652753916572'/><link rel='alternate' type='text/html' href='http://ankiewsky.blogspot.com/2010/04/speaking-at-jazoon-2010.html' title='Speaking at Jazoon 2010'/><author><name>Edgar Ankiewsky Silva</name><uri>http://www.blogger.com/profile/07488052711588628833</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://farm3.static.flickr.com/2269/2042929603_ed0711917e_s.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7107194769059181627.post-954419980061419160</id><published>2010-02-25T18:59:00.000-08:00</published><updated>2010-02-25T18:59:12.479-08:00</updated><title type='text'>IRC Gateway in JBoss ESB via Apache Camel</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_A3zK3AEsRRU/Srrbc3ibK5I/AAAAAAAADSk/Sv-w3fFctIQ/s1600/camel_photo.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="157" src="http://3.bp.blogspot.com/_A3zK3AEsRRU/Srrbc3ibK5I/AAAAAAAADSk/Sv-w3fFctIQ/s200/camel_photo.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;The &lt;a href="http://code.google.com/p/breakingwoods"&gt;breakingwoods&lt;/a&gt; project is happy to announce a new contribution: The initial &lt;a href="http://camel.apache.org/"&gt;Apache Camel&lt;/a&gt; fully integration.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;Right now, we are accepting any suggestion, contribution, testing, complains... money etc, anything you judge valuable for make this component a really useful new JBoss ESB 4.7 Component.&lt;br /&gt;&lt;br /&gt;Basically what was done is just a new Gateway that is able to listen the Apache Camel Components, for awhile we just tested two of those: &lt;i&gt;File &lt;/i&gt;and &lt;i&gt;IRC. &lt;/i&gt;&lt;br /&gt;&lt;br /&gt;IRC can be a good way to receive events or messages that can be delivered to an existing JBoss ESB Service, in other words, this is the finnest integration between these two opensource projects: JBoss ESB and Apache Camel, and the community behind breakingwoods is happy to deliver this new component.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;How it Works&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;First of all, we need just to declare a new Service, that will be listener for Apache Camel.&lt;br /&gt;&lt;br /&gt;&lt;script src="http://gist.github.com/315323.js?file=gistfile1.xsl"&gt;&lt;/script&gt;&lt;br /&gt;&lt;br /&gt;The properties for this components are the following:&lt;br /&gt;&lt;ul&gt;&lt;li style="background-color: #eeeeee;"&gt;&lt;i&gt;protocol-uri :&lt;/i&gt; &lt;span style="font-size: x-small;"&gt;Apache Camel Endpoint URI &lt;/span&gt;&lt;/li&gt;&lt;li style="background-color: #eeeeee;"&gt;&lt;i&gt;destination-category :&lt;/i&gt; &lt;span style="font-size: x-small;"&gt;Service Category that will receive the events from the Camel Layer&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="background-color: #eeeeee;"&gt;&lt;i&gt;destination-name:&lt;/i&gt; &lt;span style="font-size: x-small;"&gt;Service that will process the event that happened on Camel Layer&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;Once you have it done, you will be able to check the event coming from IRC Channel to JBoss ESB.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_3evqY311jfA/S4c1ZTl4TmI/AAAAAAAABM8/yLOmoKpjl6E/s1600-h/Screenshot-1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_3evqY311jfA/S4c1ZTl4TmI/AAAAAAAABM8/yLOmoKpjl6E/s320/Screenshot-1.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;We hope that the community enjoy this!&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://code.google.com/p/breakingwoods/logo?logo_id=1262936102" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://code.google.com/p/breakingwoods/logo?logo_id=1262936102" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Check it out in &lt;a href="http://code.google.com/p/breakingwoods%20"&gt;http://code.google.com/p/breakingwoods &lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7107194769059181627-954419980061419160?l=ankiewsky.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ankiewsky.blogspot.com/feeds/954419980061419160/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7107194769059181627&amp;postID=954419980061419160' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7107194769059181627/posts/default/954419980061419160'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7107194769059181627/posts/default/954419980061419160'/><link rel='alternate' type='text/html' href='http://ankiewsky.blogspot.com/2010/02/irc-gateway-in-jboss-esb-via-apache.html' title='IRC Gateway in JBoss ESB via Apache Camel'/><author><name>Edgar Ankiewsky Silva</name><uri>http://www.blogger.com/profile/07488052711588628833</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://farm3.static.flickr.com/2269/2042929603_ed0711917e_s.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_A3zK3AEsRRU/Srrbc3ibK5I/AAAAAAAADSk/Sv-w3fFctIQ/s72-c/camel_photo.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7107194769059181627.post-7008392895140940640</id><published>2010-02-09T04:24:00.000-08:00</published><updated>2010-02-09T09:31:11.023-08:00</updated><title type='text'>The Bossa Nova Way: JON success cases in Brazil, the rare accent again</title><content type='html'>If you lost this presentation during the last JBossWorld 2009 in Chicago, it's your the chance to watch 3 real success histories coming from Brazil. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;JBoss Operations Network &lt;/b&gt;- JON is the productization of the Jopr project.&amp;nbsp; A JON subscription allows customers to perform enterprise management of not only JBoss Application Server , but also several important components such as the OS, Network traffic, Filesystems, Apache Web and Tomcat Servers, as well as internal services utilized by the JBoss Application Server, including: Hibernate, JMS, and Connection Pools.&amp;nbsp; It allows the JBoss to be recognized as a real "Enterprise Offering" in the market.&amp;nbsp;&amp;nbsp; JON can be thought of as an enterprise level administration console for JBoss.&amp;nbsp; As Chris Morgan, Product Manager at Red Hat states: "You never will buy a car without a dashboard...".&amp;nbsp; JON is the dashboard that you were missing for your car!&amp;nbsp; In this Webinar, you will discover how three different customers increased the return on their JBoss Enterprise Application Platform investment by using JON.&lt;br /&gt;&lt;br /&gt;Why coming from Brazil? It is not only because this country is in the media or because it is cool, but because Brazil typically has limited resources for deploying technology, so demonstrating how you can do more with less is critical in such an environment.&amp;nbsp; If it works here, then it can work for you as well!&lt;br /&gt;&lt;br /&gt;More info: &lt;a href="https://inquiries.redhat.com/go/redhat/20100209ManagementWebinar"&gt;https://inquiries.redhat.com/go/redhat/20100209ManagementWebinar &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;When: &lt;br /&gt;&lt;h3&gt;Tuesday, February 9 | 2pm EST (GMT-5) / 19:00 GMT&lt;/h3&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7107194769059181627-7008392895140940640?l=ankiewsky.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ankiewsky.blogspot.com/feeds/7008392895140940640/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7107194769059181627&amp;postID=7008392895140940640' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7107194769059181627/posts/default/7008392895140940640'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7107194769059181627/posts/default/7008392895140940640'/><link rel='alternate' type='text/html' href='http://ankiewsky.blogspot.com/2010/02/bossa-nova-way-jon-success-cases-in.html' title='The Bossa Nova Way: JON success cases in Brazil, the rare accent again'/><author><name>Edgar Ankiewsky Silva</name><uri>http://www.blogger.com/profile/07488052711588628833</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://farm3.static.flickr.com/2269/2042929603_ed0711917e_s.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7107194769059181627.post-8562103443787713254</id><published>2010-01-26T05:25:00.000-08:00</published><updated>2010-01-26T05:25:19.816-08:00</updated><title type='text'>The Opensource Marginal Cost</title><content type='html'>&lt;div style="font-family: inherit; margin-bottom: 0in;"&gt;&lt;span style="font-size: x-small;"&gt;Recently I had a nice discussion on Twtitter. The topic was opensource.  I find it interesting a lot of people still believe that opensource is an ideology, or a development model. It is interesting too there are a lot of people who are trying to create new ways to define opensource, such as "Open source is a business tactic, not a business model"[1], I do not understand the problem in considering opensource a business model. Although I am an engineer, I have studied business administration and I am very comfortable with opensource as a "Business Model". Moreover, I believe that a "tactic" is based on some business model. So, I do not see the difference.  As a result I will consider “business tactic” and “business model” as synonyms.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: inherit; margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://brunobrasil.files.wordpress.com/2009/02/esperanca2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="256" src="http://brunobrasil.files.wordpress.com/2009/02/esperanca2.jpg" width="320" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: inherit; margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: inherit; margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: inherit; margin-bottom: 0in;"&gt;&lt;span style="font-size: x-small;"&gt;Many of us are used to selling opensource to the "technical departments". But, of times when we are facing a top level management people, for various reasons, we have experience difficult in explaining opensource as a suitable alternative! One of the reasons for this difficulty is we are used to and prepared to explain opensource from  technical perspective. But, our technical arguments are not well understood by many management types.  Most management types understand business models, business strategies and business tactic, whichever you prefer to call them.  That is not a “knock” against management types.  They understand their domains just as engineers understand their technical domains.  So, you can imagine the difficulty in management understanding the technical reasons for using open source.  Likewise, you can imagine the difficulty engineers have in understanding some business models, strategies, tactics, etc.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: inherit; margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: inherit; margin-bottom: 0in;"&gt;&lt;span style="font-size: x-small;"&gt;I think the question really comes down to, “How are CIOs and managers to trust in something, or rely on something,  they do not fully understand from a business perspective or a technical perspective?” It is for this reason, I believe if we better positioned the business case and business reasons for using opensource as an alternative rather than using technical reasons, we would have a much better chance in convincing CIOs and managers opensource solutions can indeed reduce their cost and also provide benefits to their customers.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: inherit; margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: inherit; line-height: 0.2in; margin-bottom: 0in;"&gt;&lt;span style="font-size: x-small;"&gt;In the study of economics there is a concept called "Marginal Costs"[2], In general terms, marginal cost at each level of production includes any additional costs required to produce the next unit. If producing additional vehicles requires, for example, building a new factory, the marginal cost of those “&lt;i&gt;&lt;span style="font-weight: normal;"&gt;extra”&lt;/span&gt;&lt;/i&gt;&lt;i&gt; &lt;/i&gt;vehicles includes the cost of the new factory. In practice, the analysis is segregated into short and long-run cases, and over the long run, all costs are marginal. At each level of production and time period being considered, marginal costs include all costs which vary with the level of production, and other costs are considered fixed costs. This is a concept that can by also applied into opensource industry. &lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: inherit; line-height: 0.2in; margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: inherit; line-height: 0.2in; margin-bottom: 0in;"&gt;&lt;span style="font-size: x-small;"&gt;For JBoss Enterprise subscriptions, or any other product family, Red Hat has a cost to keep a number of employees contributing, testing, certifying, collaborating, writing documentation, training a support team, consulting team etc. For this reason, the&lt;i&gt;&lt;b&gt;"Opensource Marginal Cost" &lt;/b&gt;&lt;/i&gt;is really low. That's why Red Hat never charges expensive prices for their products. That is also one of the biggest advantages for any company who follows this kind of business model in order to create a really profitable company offering opensource solutions. Obviously, Red Hat receives many contributions, but any contribution must be certified, and supported by Red Hat. Tor this reason, even for collaborations, there is a cost to test and to provide the security that this contribution will not cause any damage to "Subscription Buyers". However, this cost is still low, compared to "Proprietary Software".&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: inherit; line-height: 0.2in; margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div style="font-family: inherit; line-height: 0.2in; margin-bottom: 0in;"&gt;&lt;span style="font-size: x-small;"&gt;"Opensource Marginal Cost" offers companies to save as much as 80% in the software acquisition.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div style="font-family: inherit; line-height: 0.2in; margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: inherit; line-height: 0.2in; margin-bottom: 0in;"&gt;&lt;span style="font-size: x-small;"&gt;Industry will accept "opensource" when the advantages are tangible factors, and not only merely words of text. I cannot see any company keeping their doors open creating innovative solutions without a way sell them.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: inherit; line-height: 0.2in; margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: inherit; line-height: 0.2in; margin-bottom: 0in;"&gt;&lt;span style="font-size: x-small;"&gt;In fact, I saw a huge company trying jump in the opensource market without a good plan, and the result turned out to be catastrophic. This particular company was acquired by another proprietary vendor.  Some think this end result is a "proprietary win over the opensource".  However,  in fact, in my humble opinion this is a "strategic company win over a company with a poor opensource strategy ".&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: inherit; line-height: 0.2in; margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: inherit; line-height: 0.2in; margin-bottom: 0in;"&gt;&lt;span style="font-size: x-small;"&gt;I live into a country where a lot of companies are looking for ways to reduce their costs in software, not only because opensource is "a new trend", but because some of them must trim their “IT” budgets to make them more competitive. I have seen many companies who have reduced their cost of software licencing, and with the saved software licensing costs they offered their employees not only better salaries, but also better environments for  employees to work in as well as additional training and incentives for education.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: inherit; line-height: 0.2in; margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: inherit; line-height: 0.2in; margin-bottom: 0in;"&gt;&lt;span style="font-size: x-small;"&gt;Opensource is not only a way to develop software, it is a way to make employees happier by saving money which can then be invested in what is really relevant for the company, the employees!&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: inherit; line-height: 0.2in; margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.simplenomics.com/wp-images/Happy%20Employees.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="214" src="http://www.simplenomics.com/wp-images/Happy%20Employees.jpg" width="320" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: inherit; line-height: 0.2in; margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: inherit; line-height: 0.2in; margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: inherit; line-height: 0.2in; margin-bottom: 0in;"&gt;&lt;span style="font-size: x-small;"&gt;There are many others factos that shows how opensource is an alternative for the future, replacing the retrograde proprietary industry software, such as bio alternatives as true substitutes for gasoline and its derivatives. In the end, everything is economics. We must open our minds, and not only  think just as engineers, but also begin to think in terms of long term business.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: inherit; line-height: 0.2in; margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: inherit; margin-bottom: 0in;"&gt;&lt;span style="font-size: x-small;"&gt;[1] &lt;a href="http://twitter.com/porcelli/status/6277763441" target="_blank"&gt;http://twitter.com/porcelli/&lt;wbr&gt;&lt;/wbr&gt;status/6277763441&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: inherit; margin-bottom: 0in;"&gt;&lt;span style="font-size: x-small;"&gt;[2]&amp;nbsp;&lt;a href="http://en.wikipedia.org/wiki/Marginal_cost" target="_blank"&gt;http://en.wikipedia.org/&lt;wbr&gt;&lt;/wbr&gt;wiki/Marginal_cost&lt;/a&gt; &lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7107194769059181627-8562103443787713254?l=ankiewsky.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ankiewsky.blogspot.com/feeds/8562103443787713254/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7107194769059181627&amp;postID=8562103443787713254' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7107194769059181627/posts/default/8562103443787713254'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7107194769059181627/posts/default/8562103443787713254'/><link rel='alternate' type='text/html' href='http://ankiewsky.blogspot.com/2010/01/opensource-marginal-cost.html' title='The Opensource Marginal Cost'/><author><name>Edgar Ankiewsky Silva</name><uri>http://www.blogger.com/profile/07488052711588628833</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://farm3.static.flickr.com/2269/2042929603_ed0711917e_s.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7107194769059181627.post-4712957815927878005</id><published>2010-01-18T18:31:00.000-08:00</published><updated>2010-01-18T18:31:59.599-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='jbossesb'/><category scheme='http://www.blogger.com/atom/ns#' term='breakingwoods'/><category scheme='http://www.blogger.com/atom/ns#' term='jboss'/><title type='text'>Introducing project: breakingwoods - Components Repository and resources for JBoss ESB</title><content type='html'>&lt;b&gt;&lt;span style="font-size: large;"&gt;Introduction&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;First of all, the main objective of this project is to be a source of new ideas, resources, components and actions for &lt;a href="http://www.jboss.org/jbossesb"&gt;JBoss ESB&lt;/a&gt;.&amp;nbsp; Nobody is interested in creating a fork (or anything like that), but we believe that it could be a nice way to contribute to the evolution of this incredible project, as well as to be an accurate information source and filter for candidate components to be integrated into the core JBoss ESB project.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://edgarsilva.com.br/wp-content/uploads/2010/01/legos.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="236" src="http://edgarsilva.com.br/wp-content/uploads/2010/01/legos.png" width="320" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;At breakingwoods, anybody will be able to contribute.&amp;nbsp; All contributions are welcome, whether that be a new ESB component, a review of an existing compoenent, ideas, fixes, testing etc... all will be really appreciated&amp;nbsp; The only thing you need is a Gmail/Google account. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;Freedom to Contribute&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Everybody at the breakingwoods's team believes that JBoss ESB is a very robust solution, but would be even better if we would add more Adapters, Listeners, Gateways (in JBoss ESB it might be the same), as well as new Actions. The same happened with another popular opensource ESB solution: Mule, made by MuleSource.&amp;nbsp; The Mule community has Mule Forge, which is an extension's repository for MuleESB.&amp;nbsp; We hope that breakingwoods can be exactly the same for JBoss ESB, offering lots of components, and showing valuable information about which new ideas are rocking or the most downloaded, rated, commented etc.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://edgarsilva.com.br/wp-content/uploads/2010/01/2167334119_5e3902d089_b.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="244" src="http://edgarsilva.com.br/wp-content/uploads/2010/01/2167334119_5e3902d089_b.jpg" width="320" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="im"&gt; &lt;span style="font-size: large;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;Why this project is not hosted under JBoss.ORG?&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;Firstly we would like to make the project strong in its own right.&amp;nbsp; Once it is hosted at Google, we hope people will feel comfortable enough to contribute with whatever they want, once it is not so close to the crowd and the spotlight. Nevertheless, maybe in the future, we could move from Google Code to JBoss.ORG.&amp;nbsp; This will depend of the success of this initiative.&amp;nbsp; Alternatively, it could be great to have it isolated.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;How can I contribute?&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;There are several ways in which you can help to make this project a success:&lt;br /&gt;&lt;div class="im"&gt; &lt;ul&gt;&lt;li&gt;To Propose / To Create / To Review/ To test: New Adapters/Gateways/Listeners&lt;/li&gt;&lt;li&gt;To Propose / To Create / To Review/ To test: New ESB Actions&lt;/li&gt;&lt;li&gt;To Propose / To Create / To Review/ To test: New Ideas, Designs, Quickstarts&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;Already at breakingwoods:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;esbgen&lt;/b&gt;:&amp;nbsp; A basic CLI tool similar to seam-gen.&amp;nbsp; Helps you create the first esb project.&lt;/li&gt;&lt;li&gt;&lt;b&gt;TwitterAction&lt;/b&gt;:&amp;nbsp; Action for publishing an ESB Message in Twitter.&lt;/li&gt;&lt;li&gt;&lt;b&gt;EMailListener&lt;/b&gt;:&amp;nbsp; Periodically polls in the configured e-mail account, publishing incoming emails to JBoss ESB as an ESB Message.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Google Spreadsheet Listener:&lt;/b&gt;&amp;nbsp; Connects to Spreadsheets hosted by GoogleDocs, publishing new records to JBoss ESB.&lt;/li&gt;&lt;li&gt;&amp;nbsp;&lt;b&gt;Apache DBUtils:&lt;/b&gt;&amp;nbsp; Action that executes plain SQLs.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;There are new Actions and Listeners in the pipeline.&amp;nbsp; The following are some of the next Listeners we are planning.&amp;nbsp; Maybe you will be able to help:&lt;br /&gt;&lt;div class="im"&gt; &lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Apache Camel Listener/ Action&lt;/li&gt;&lt;li&gt;SalesForce Listener / Action&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Infinispan Listener/ Action&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Terracota Listener / Action &lt;/li&gt;&lt;li&gt;AMQP Listener/Action&lt;/li&gt;&lt;li&gt;Where is yours ? :)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;We are working in some of these, so stay tuned, as lots of good things will appear here at this project.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Another good point, is that most of these components will be compatible to &lt;b&gt;JBoss SOA Platform&lt;/b&gt;.&amp;nbsp; Obviously Red Hat will not support problems regarding SalesForce, Terracota or anything that is not part of the JBoss SOA-P supported distribution.&amp;nbsp; However, you will still be able to add these components into your solutions, possibly reducing your development time and increasing your productivity. &lt;br /&gt;&lt;div class="im"&gt; &lt;br /&gt;&lt;br /&gt;If you have chance, check it out here: &lt;a href="http://code.google.com/p/breakingwoods/" target="_blank"&gt;http://code.google.com/p/&lt;wbr&gt;&lt;/wbr&gt;breakingwoods/ &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;Enjoy one of the best things about open source development: "To learn with others essentially doing something useful".&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://edgarsilva.com.br/wp-content/uploads/2010/01/legos2.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="240" src="http://edgarsilva.com.br/wp-content/uploads/2010/01/legos2.jpg" width="320" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Visit the &lt;a href="http://code.google.com/p/breakingwoods"&gt;Project Website&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Visit the &lt;a href="http://breakingwoods.blogspot.com/"&gt;Official Blog&lt;/a&gt; &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;breakingwoods Team.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7107194769059181627-4712957815927878005?l=ankiewsky.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ankiewsky.blogspot.com/feeds/4712957815927878005/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7107194769059181627&amp;postID=4712957815927878005' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7107194769059181627/posts/default/4712957815927878005'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7107194769059181627/posts/default/4712957815927878005'/><link rel='alternate' type='text/html' href='http://ankiewsky.blogspot.com/2010/01/introducing-project-breakingwoods.html' title='Introducing project: breakingwoods - Components Repository and resources for JBoss ESB'/><author><name>Edgar Ankiewsky Silva</name><uri>http://www.blogger.com/profile/07488052711588628833</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://farm3.static.flickr.com/2269/2042929603_ed0711917e_s.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7107194769059181627.post-6279724200666327113</id><published>2010-01-02T02:40:00.000-08:00</published><updated>2010-01-02T02:40:40.235-08:00</updated><title type='text'>JBoss ESB on the Google's Clouds: Spreeadsheet Listener</title><content type='html'>Recently my brother started a new kind of service in his very small consultancy company, he is offering a kind of Consultancy over the Google Apps focused in &lt;i&gt;small business&lt;/i&gt; customers, although I believe that Google Apps is not suitable just for small ones, but for bigger &lt;b&gt;companies/clients&lt;/b&gt; as well.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://globulo.files.wordpress.com/2009/09/google_apps64643.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="236" src="http://globulo.files.wordpress.com/2009/09/google_apps64643.jpg" width="320" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Google Apps offers lots of good functionalities and services, such as: a) E-Mail, b) Site, c) Agenda, d) Documents (An online Office suite). I believe that this is a good strategy, so you might face in a near feature people replacing the older Excel files by new Google Spreadsheets, and than I decide work on it a little bit, creating a new Gateway to interact with this Google Service.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Getting Started with Google APIs&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Google offers a good documentation over their APIs[1], in fact, everything that Google does, you are able to interact with just using Java, Python or even JavaScript[2]. &lt;br /&gt;&lt;br /&gt;You might use Google Spreadsheets for many purposes, since a basic data collecting, or as my friend &lt;a href="http://viragine.blogspot.com/"&gt;JP Viragine&lt;/a&gt; told me: "Maybe we could use as a "Decision Table on the Clouds", or just a excel replacement. The big advantage, beyond the fact you don't need to install anything in your computer, is the "Collaboration", because you might share the online file with another people that will be able for editing any time and anywhere. &lt;br /&gt;&lt;br /&gt;Another big difference when we are handling such kind of technology is the simple fact that we are totally stateless, once the Http allows us connect, and after the processing the http will give an answer, and that's it, is not that easy we use "Observers/Observables" when we are talking about HTTP (by default Stateless protocol), so my strategy was use "Timers" for polling the http service. I had not found a way to receive a notification from the service using Java, maybe it would make my job easier.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;New JBoss ESB Listeners&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;If you create your first JBoss ESB gateway, you will be able to create as much as you need! The only thing that I have to recall when I have to create a new Gateway/Listeners is the wiki section that Tom Fennelly wrote [3]. So everything you will see here in this entry is very well documented there, you must say thanks to Tom, he did a really good job documenting about this subject.&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;JBoss ESB in Action with GoogleDocs&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The first step is declare our listener into Jboss-esb.xml, there we will describe everything we need, such as properties and its values as well as the Listener class itself:&lt;br /&gt;&lt;br /&gt;&lt;script src="http://gist.github.com/267447.js"&gt;&lt;/script&gt;&lt;br /&gt;&lt;br /&gt;The most important configuration from this listener is the property: gatewayClass, which we are using: org.jboss.soa.jbossesb.gateways.google.GoogleDocsGateway , which is not an ou-of-the-box class from JBoss ESB, it is totally new, and you will see it working pretty soon. Moreover, we defined other properties that will be used by the Listener classes further, this properties are: documentName, feedURL, username, password and so on. &lt;br /&gt;&lt;br /&gt;I created a very ugly class GoogleDocsGateway, that for this entry is handling just the spreadsheet, this is a class that extends &lt;i&gt;AbstractThreadedManagedLifecycle&lt;b&gt;&lt;/b&gt;&lt;/i&gt;, after this the rest is quite easy. When you are extending this class, you must keep in mind that there are certain tasks to think about:&lt;br /&gt;&lt;br /&gt;1 -Define what you will do in the doInitialise() method, this is the method called when JBoss ESB invokes this service by the first time.&lt;br /&gt;&lt;br /&gt;2- The doRun() is the most important one, this is a method that or will be waiting for an event notification, or you must try get a way to poll the protocol that you are interacting with, in order to don't consume unnecessary resources.&lt;br /&gt;&lt;br /&gt;&lt;pre class="java" name="code"&gt;&lt;br /&gt;package org.jboss.soa.jbossesb.gateways.google;&lt;br /&gt;&lt;br /&gt;import java.util.Timer;&lt;br /&gt;import java.util.TimerTask;&lt;br /&gt;&lt;br /&gt;import org.jboss.soa.esb.ConfigurationException;&lt;br /&gt;import org.jboss.soa.esb.Service;&lt;br /&gt;import org.jboss.soa.esb.client.ServiceInvoker;&lt;br /&gt;import org.jboss.soa.esb.helpers.ConfigTree;&lt;br /&gt;import org.jboss.soa.esb.listeners.ListenerTagNames;&lt;br /&gt;import org.jboss.soa.esb.listeners.lifecycle.AbstractThreadedManagedLifecycle;&lt;br /&gt;import org.jboss.soa.esb.listeners.lifecycle.ManagedLifecycleException;&lt;br /&gt;import org.jboss.soa.esb.listeners.message.MessageDeliverException;&lt;br /&gt;import org.jboss.soa.esb.message.Message;&lt;br /&gt;import org.jboss.soa.esb.message.format.MessageFactory;&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt; * Google Gateway Class&lt;br /&gt; * &lt;br /&gt; * @author esilva&lt;br /&gt; */&lt;br /&gt;public class GoogleDocsGateway extends AbstractThreadedManagedLifecycle {&lt;br /&gt;&lt;br /&gt; private ConfigTree listenerConfig;&lt;br /&gt; private Service service;&lt;br /&gt; private ServiceInvoker serviceInvoker;&lt;br /&gt;&lt;br /&gt; private GoogleSpreadSheet sheet = new GoogleSpreadSheet();&lt;br /&gt;&lt;br /&gt; protected boolean firstExecution = true;&lt;br /&gt;&lt;br /&gt; public GoogleDocsGateway(ConfigTree config) throws ConfigurationException {&lt;br /&gt;  super(config);&lt;br /&gt;&lt;br /&gt;  this.listenerConfig = config;&lt;br /&gt;&lt;br /&gt;  String serviceCategory = listenerConfig&lt;br /&gt;    .getRequiredAttribute(ListenerTagNames.TARGET_SERVICE_CATEGORY_TAG);&lt;br /&gt;&lt;br /&gt;  String serviceName = listenerConfig&lt;br /&gt;    .getRequiredAttribute(ListenerTagNames.TARGET_SERVICE_NAME_TAG);&lt;br /&gt;&lt;br /&gt;  service = new Service(serviceCategory, serviceName);&lt;br /&gt;&lt;br /&gt;  sheet.setService(config.getAttribute("servicename"));&lt;br /&gt;&lt;br /&gt;  sheet.setUsername(config.getAttribute("username"));&lt;br /&gt;&lt;br /&gt;  sheet.setPassword(config.getAttribute("password"));&lt;br /&gt;&lt;br /&gt;  sheet.setFeedurl(config.getAttribute("feedurl"));&lt;br /&gt;&lt;br /&gt;  sheet.setDocumentName(config.getAttribute("documentname"));&lt;br /&gt;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; @Override&lt;br /&gt; protected void doRun() {&lt;br /&gt;&lt;br /&gt;  publishMessageToESB();&lt;br /&gt;&lt;br /&gt;  int delay = 10000; &lt;br /&gt;  int period = 5000; &lt;br /&gt;  Timer timer = new Timer();&lt;br /&gt;&lt;br /&gt;  timer.scheduleAtFixedRate(new TimerTask() {&lt;br /&gt;   public void run() {&lt;br /&gt;&lt;br /&gt;    try {&lt;br /&gt;     if (sheet.hasChanges()) {&lt;br /&gt;&lt;br /&gt;      System.out&lt;br /&gt;        .println("Changes found, publishing the message again");&lt;br /&gt;&lt;br /&gt;      publishMessageToESB();&lt;br /&gt;&lt;br /&gt;     }&lt;br /&gt;&lt;br /&gt;     else {&lt;br /&gt;&lt;br /&gt;      System.out.println("No updates found");&lt;br /&gt;&lt;br /&gt;     }&lt;br /&gt;&lt;br /&gt;    } catch (Exception e) {&lt;br /&gt;&lt;br /&gt;     e.printStackTrace();&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;  }, delay, period);&lt;br /&gt;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; private void publishMessageToESB() {&lt;br /&gt;  Message esbMessage = MessageFactory.getInstance().getMessage();&lt;br /&gt;&lt;br /&gt;  try {&lt;br /&gt;&lt;br /&gt;   esbMessage.getBody().add(sheet.load());&lt;br /&gt;&lt;br /&gt;  } catch (Exception e) {&lt;br /&gt;&lt;br /&gt;   e.printStackTrace();&lt;br /&gt;  }&lt;br /&gt;  try {&lt;br /&gt;   serviceInvoker.deliverAsync(esbMessage);&lt;br /&gt;&lt;br /&gt;  } catch (MessageDeliverException e) {&lt;br /&gt;&lt;br /&gt;   e.printStackTrace();&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; @Override&lt;br /&gt; protected void doInitialise() throws ManagedLifecycleException {&lt;br /&gt;&lt;br /&gt;  try {&lt;br /&gt;   serviceInvoker = new ServiceInvoker(service);&lt;br /&gt;&lt;br /&gt;   sheet.initialize();&lt;br /&gt;&lt;br /&gt;  } catch (MessageDeliverException e) {&lt;br /&gt;&lt;br /&gt;   throw new ManagedLifecycleException(&lt;br /&gt;     "Failed to create ServiceInvoker for Service listening Google Service: "&lt;br /&gt;       + service + "'.");&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  catch (Exception e) {&lt;br /&gt;&lt;br /&gt;   throw new ManagedLifecycleException(e);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;I created a new class called: GoogleSpreadSheet, that is an abstraction over the tasks we must to do to interact with the Google Spreadsheets, and through the doRun() method I am using a kind of scheduler to poll the url of my spreadsheet according the property configuration made by the "user" of this gateway.&lt;br /&gt;&lt;br /&gt;&lt;pre class="java" name="code"&gt;&lt;br /&gt;package org.jboss.soa.jbossesb.gateways.google;&lt;br /&gt;&lt;br /&gt;import java.net.URL;&lt;br /&gt;import java.util.List;&lt;br /&gt;&lt;br /&gt;import org.quartz.Job;&lt;br /&gt;import org.quartz.JobExecutionContext;&lt;br /&gt;import org.quartz.JobExecutionException;&lt;br /&gt;&lt;br /&gt;import com.google.gdata.client.spreadsheet.SpreadsheetService;&lt;br /&gt;import com.google.gdata.data.spreadsheet.ListEntry;&lt;br /&gt;import com.google.gdata.data.spreadsheet.ListFeed;&lt;br /&gt;import com.google.gdata.data.spreadsheet.SpreadsheetEntry;&lt;br /&gt;import com.google.gdata.data.spreadsheet.SpreadsheetFeed;&lt;br /&gt;import com.google.gdata.data.spreadsheet.WorksheetEntry;&lt;br /&gt;&lt;br /&gt;public class GoogleSpreadSheet implements Job {&lt;br /&gt;&lt;br /&gt; protected static SpreadsheetService myService;&lt;br /&gt;&lt;br /&gt; protected URL metafeedUrl;&lt;br /&gt;&lt;br /&gt; protected SpreadsheetFeed feed;&lt;br /&gt;&lt;br /&gt; protected List&lt;SpreadsheetEntry&gt; spreadsheets;&lt;br /&gt;&lt;br /&gt; protected SpreadsheetEntry entry = null;&lt;br /&gt;&lt;br /&gt; private String service;&lt;br /&gt; private String username;&lt;br /&gt; private String password;&lt;br /&gt; private String feedurl;&lt;br /&gt; private String documentName;&lt;br /&gt; private String lastUpdate;&lt;br /&gt;&lt;br /&gt; protected boolean on = false;&lt;br /&gt;&lt;br /&gt; public String getService() {&lt;br /&gt;  return service;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public void setService(String service) {&lt;br /&gt;  this.service = service;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public String getUsername() {&lt;br /&gt;  return username;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public void setUsername(String username) {&lt;br /&gt;  this.username = username;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public String getPassword() {&lt;br /&gt;  return password;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public void setPassword(String password) {&lt;br /&gt;  this.password = password;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public String getFeedurl() {&lt;br /&gt;  return feedurl;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public void setFeedurl(String feedurl) {&lt;br /&gt;  this.feedurl = feedurl;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public String getDocumentName() {&lt;br /&gt;  return documentName;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public void setDocumentName(String documentName) {&lt;br /&gt;  this.documentName = documentName;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public String getLastUpdate() {&lt;br /&gt;  return lastUpdate;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public void setLastUpdate(String lastUpdate) {&lt;br /&gt;  this.lastUpdate = lastUpdate;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public GoogleSpreadSheet() {&lt;br /&gt;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public void initialize() throws Exception {&lt;br /&gt;&lt;br /&gt;  myService = new SpreadsheetService(service);&lt;br /&gt;&lt;br /&gt;  System.out&lt;br /&gt;    .println("Initializing Connection between JBoss ESB and Google Docs...");&lt;br /&gt;&lt;br /&gt;  myService.setUserCredentials(username, password);&lt;br /&gt;&lt;br /&gt;  metafeedUrl = new URL(feedurl);&lt;br /&gt;&lt;br /&gt;  feed = myService.getFeed(metafeedUrl, SpreadsheetFeed.class);&lt;br /&gt;&lt;br /&gt;  spreadsheets = feed.getEntries();&lt;br /&gt;&lt;br /&gt;  entry = null;&lt;br /&gt;&lt;br /&gt;  for (int i = 0; i &lt; spreadsheets.size(); i++) {&lt;br /&gt;&lt;br /&gt;   entry = spreadsheets.get(i);&lt;br /&gt;&lt;br /&gt;   if (entry.getTitle().getPlainText().equalsIgnoreCase(documentName)) {&lt;br /&gt;&lt;br /&gt;    setLastUpdate(entry.getUpdated().toString());&lt;br /&gt;&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public String load() throws Exception {&lt;br /&gt;&lt;br /&gt;  StringBuilder builderOut = new StringBuilder();&lt;br /&gt;&lt;br /&gt;  entry = null;&lt;br /&gt;&lt;br /&gt;  for (int i = 0; i &lt; spreadsheets.size(); i++) {&lt;br /&gt;&lt;br /&gt;   entry = spreadsheets.get(i);&lt;br /&gt;&lt;br /&gt;   if (entry.getTitle().getPlainText().equalsIgnoreCase(documentName)) {&lt;br /&gt;&lt;br /&gt;    List&lt;WorksheetEntry&gt; worksheets = entry.getWorksheets();&lt;br /&gt;&lt;br /&gt;    for (int j = 0; j &lt; worksheets.size(); j++) {&lt;br /&gt;&lt;br /&gt;     WorksheetEntry worksheet = worksheets.get(j);&lt;br /&gt;&lt;br /&gt;     URL listFeedUrl = worksheet.getListFeedUrl();&lt;br /&gt;&lt;br /&gt;     ListFeed listFeed = myService.getFeed(listFeedUrl,&lt;br /&gt;       ListFeed.class);&lt;br /&gt;&lt;br /&gt;     if (listFeed.getEntries().size() &gt; 0) {&lt;br /&gt;&lt;br /&gt;      StringBuilder header = new StringBuilder();&lt;br /&gt;&lt;br /&gt;      for (String tag : listFeed.getEntries().get(0)&lt;br /&gt;        .getCustomElements().getTags()) {&lt;br /&gt;&lt;br /&gt;       header.append(tag + ",");&lt;br /&gt;&lt;br /&gt;      }&lt;br /&gt;&lt;br /&gt;      builderOut.append(header.toString().substring(0,&lt;br /&gt;        header.lastIndexOf(",")));&lt;br /&gt;&lt;br /&gt;     }&lt;br /&gt;&lt;br /&gt;     for (ListEntry entrada : listFeed.getEntries()) {&lt;br /&gt;&lt;br /&gt;      StringBuilder row = new StringBuilder();&lt;br /&gt;&lt;br /&gt;      for (String tag : entrada.getCustomElements().getTags()) {&lt;br /&gt;&lt;br /&gt;       row.append(entrada.getCustomElements()&lt;br /&gt;         .getValue(tag)&lt;br /&gt;         + ",");&lt;br /&gt;&lt;br /&gt;      }&lt;br /&gt;&lt;br /&gt;      builderOut.append(row.toString().substring(0,&lt;br /&gt;        row.lastIndexOf(",")));&lt;br /&gt;&lt;br /&gt;     }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  return builderOut.toString();&lt;br /&gt;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public boolean hasChanges() throws Exception {&lt;br /&gt;&lt;br /&gt;  SpreadsheetFeed feed = myService.getFeed(metafeedUrl,&lt;br /&gt;    SpreadsheetFeed.class);&lt;br /&gt;&lt;br /&gt;  List&lt;SpreadsheetEntry&gt; spreadsheets = feed.getEntries();&lt;br /&gt;&lt;br /&gt;  entry = null;&lt;br /&gt;&lt;br /&gt;  for (int i = 0; i &lt; spreadsheets.size(); i++) {&lt;br /&gt;&lt;br /&gt;   entry = spreadsheets.get(i);&lt;br /&gt;&lt;br /&gt;   if (entry.getTitle().getPlainText().equalsIgnoreCase(documentName)) {&lt;br /&gt;&lt;br /&gt;    if (getLastUpdate().equalsIgnoreCase(&lt;br /&gt;      entry.getUpdated().toString())) {&lt;br /&gt;&lt;br /&gt;     System.out.println(getLastUpdate() + "==========="&lt;br /&gt;       + entry.getUpdated().toString());&lt;br /&gt;&lt;br /&gt;     return false;&lt;br /&gt;&lt;br /&gt;    } else {&lt;br /&gt;&lt;br /&gt;     this.setLastUpdate(entry.getUpdated().toString());&lt;br /&gt;     System.out.println("Changes arriving: " + getLastUpdate()&lt;br /&gt;       + "===========" + entry.getUpdated().toString());&lt;br /&gt;     return true;&lt;br /&gt;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;  }&lt;br /&gt;  return false;&lt;br /&gt;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public GoogleSpreadSheet(String service, String username, String password,&lt;br /&gt;   String feedurl, String documentName, String lastUpdate) {&lt;br /&gt;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public String load(String service, String username, String password,&lt;br /&gt;   String feedurl, String documentName, String lastUpdate)&lt;br /&gt;   throws Exception {&lt;br /&gt;&lt;br /&gt;  SpreadsheetService myService = new SpreadsheetService(service);&lt;br /&gt;&lt;br /&gt;  myService.setUserCredentials(username, password);&lt;br /&gt;&lt;br /&gt;  URL metafeedUrl = new URL(feedurl);&lt;br /&gt;&lt;br /&gt;  SpreadsheetFeed feed = myService.getFeed(metafeedUrl,&lt;br /&gt;    SpreadsheetFeed.class);&lt;br /&gt;&lt;br /&gt;  List&lt;SpreadsheetEntry&gt; spreadsheets = feed.getEntries();&lt;br /&gt;&lt;br /&gt;  SpreadsheetEntry entry = null;&lt;br /&gt;&lt;br /&gt;  StringBuilder builderOut = new StringBuilder();&lt;br /&gt;&lt;br /&gt;  for (int i = 0; i &lt; spreadsheets.size(); i++) {&lt;br /&gt;&lt;br /&gt;   entry = spreadsheets.get(i);&lt;br /&gt;&lt;br /&gt;   if (entry.getTitle().getPlainText().equalsIgnoreCase(documentName)) {&lt;br /&gt;&lt;br /&gt;    System.out.println("Last Update: " + entry.getUpdated());&lt;br /&gt;&lt;br /&gt;    List&lt;WorksheetEntry&gt; worksheets = entry.getWorksheets();&lt;br /&gt;&lt;br /&gt;    for (int j = 0; j &lt; worksheets.size(); j++) {&lt;br /&gt;&lt;br /&gt;     WorksheetEntry worksheet = worksheets.get(j);&lt;br /&gt;&lt;br /&gt;     URL listFeedUrl = worksheet.getListFeedUrl();&lt;br /&gt;&lt;br /&gt;     ListFeed listFeed = myService.getFeed(listFeedUrl,&lt;br /&gt;       ListFeed.class);&lt;br /&gt;&lt;br /&gt;     if (listFeed.getEntries().size() &gt; 0) {&lt;br /&gt;&lt;br /&gt;      StringBuilder header = new StringBuilder();&lt;br /&gt;&lt;br /&gt;      for (String tag : listFeed.getEntries().get(0)&lt;br /&gt;        .getCustomElements().getTags()) {&lt;br /&gt;&lt;br /&gt;       header.append(tag + ",");&lt;br /&gt;&lt;br /&gt;      }&lt;br /&gt;&lt;br /&gt;      System.out.println(header.toString().substring(0,&lt;br /&gt;        header.lastIndexOf(",")));&lt;br /&gt;      builderOut.append(header.toString().substring(0,&lt;br /&gt;        header.lastIndexOf(",")));&lt;br /&gt;&lt;br /&gt;     }&lt;br /&gt;&lt;br /&gt;     for (ListEntry entrada : listFeed.getEntries()) {&lt;br /&gt;&lt;br /&gt;      StringBuilder row = new StringBuilder();&lt;br /&gt;&lt;br /&gt;      for (String tag : entrada.getCustomElements().getTags()) {&lt;br /&gt;&lt;br /&gt;       row.append(entrada.getCustomElements()&lt;br /&gt;         .getValue(tag)&lt;br /&gt;         + ",");&lt;br /&gt;&lt;br /&gt;      }&lt;br /&gt;&lt;br /&gt;      System.out.println(row.toString().substring(0,&lt;br /&gt;        row.lastIndexOf(",")));&lt;br /&gt;      builderOut.append(row.toString().substring(0,&lt;br /&gt;        row.lastIndexOf(",")));&lt;br /&gt;&lt;br /&gt;     }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;  }&lt;br /&gt;  return builderOut.toString();&lt;br /&gt;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; @Override&lt;br /&gt; public void execute(JobExecutionContext ctx) throws JobExecutionException {&lt;br /&gt;&lt;br /&gt;  try {&lt;br /&gt;   System.out.println("Has Changes: " + this.hasChanges());&lt;br /&gt;  } catch (Exception e) {&lt;br /&gt;&lt;br /&gt;   e.printStackTrace();&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Instead to use lots of confusing images, I will use a screencast:&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/qq-Ol35eZiU&amp;hl=en&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/qq-Ol35eZiU&amp;hl=en&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;I hope you liked that idea, and you can feel yourself more comfortable for creating new Listeners/Gateways for JBoss ESB.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Rerefences&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;[1] - http://code.google.com/intl/pt-BR/apis/spreadsheets/&lt;br /&gt;[2] - http://code.google.com/intl/pt-BR/apis/spreadsheets/data/3.0/developers_guide_java.html&lt;br /&gt;[3] - http://community.jboss.org/docs/DOC-13193&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7107194769059181627-6279724200666327113?l=ankiewsky.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ankiewsky.blogspot.com/feeds/6279724200666327113/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7107194769059181627&amp;postID=6279724200666327113' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7107194769059181627/posts/default/6279724200666327113'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7107194769059181627/posts/default/6279724200666327113'/><link rel='alternate' type='text/html' href='http://ankiewsky.blogspot.com/2010/01/jboss-esb-on-googles-clouds.html' title='JBoss ESB on the Google&apos;s Clouds: Spreeadsheet Listener'/><author><name>Edgar Ankiewsky Silva</name><uri>http://www.blogger.com/profile/07488052711588628833</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://farm3.static.flickr.com/2269/2042929603_ed0711917e_s.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7107194769059181627.post-2413192730889921547</id><published>2009-10-06T16:17:00.000-07:00</published><updated>2009-10-09T15:35:39.005-07:00</updated><title type='text'>Enabling BPEL into JBoss : Welcome to the Riftsaw Project</title><content type='html'>The objective of Riftsaw Project is to bring BPEL capabilities for JBoss Application Server. This project is build on top of Apache ODE, basically adding some features for JBoss App Severs as which will allow either JBoss ESB (Community based) and in the future JBoss SOA Platform(Enterprise SLA) to support BPEL out-of-the-box.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;Another "Opensource" BPEL alternative&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;If anybody tell you that BPEL is an easy language to create the processes manually and if you believe, you are ready to believe in any tale! I tell you it because this is a kind of technology that you really need a graphical tool/designer.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The JBoss Community has adopted for many years the Eclipse to deliver JBoss Tools and now this set of plugins made by JBoss Team is already integrated with Eclipse BPEL Designer. This is a cool plugin and you will really need this feature into your Eclipse, otherwise create any simple BPEL process will be a really boring task.&lt;br /&gt;&lt;br /&gt;Nevertheless we support BPEL Designer in JBoss Tools. You are able to use the NetBeans BPEL Desginer which is another really cool opensource alternative. I did some personal researching over BPEL support in NetBeans and it  was a real good experience.  For certain  moments  I thought that  Eclipse could incorporate some ideas from  NetBeans designer as well.&lt;br /&gt;&lt;br /&gt;I recommend you install the JBoss Tool's 3.1.0.M3 plugins into your &lt;span style="font-weight: bold;"&gt;Eclipse 3.5&lt;/span&gt; (Galileo). It will add the BPEL support into your Eclipse as well as the capacity to deploy the process besides editing the WSDLs visually. For more information about this see this link: &lt;a href="https://www.jboss.org/tools/download/dev.html"&gt;https://www.jboss.org/tools/download/dev.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Once you are aware that you really need a designer tool, let's try share with you some good information before you dive into BPEL Development; first of all there are certain resources and concepts that would make BPEL easier for every human. These are the following:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;WSDL&lt;/li&gt;&lt;li&gt;    XPath&lt;/li&gt;&lt;li&gt;XSLT&lt;/li&gt;&lt;li&gt;XML Schema&lt;/li&gt;&lt;/ul&gt;If you have a good background over those items above, BPEL will be incredibly easier for you, otherwise, I recommend you attend the "Webservices online training", this is one of the training offered in JavaPassion Website. In this training, you will have some good brief introductions about everything you need to be a BPEL Rock Star.&lt;br /&gt;&lt;br /&gt;I've been listen many many times companies complaining about SOA Adoption independently of the technology vendor a very common problem is what I call: "The gap between processes and the bussiness components". This is the moment where your company spent thousands of US$ to discovery the company's processes. So many Six Sigma guys came to you company and told you everything that your company is doing wrong and **designed some proposals using BPMN** or any other notation of "How the company could/must work".  At this moment you can see a huge interrogation in front of you while you are trying to figure out which glue you will use to put your processes working with your legacy COBOL, Java, .Net and a bunch of WebServices representations of these legacy components, have you think about that before?&lt;br /&gt;&lt;br /&gt;BPEL could help you in 30% to 40% to solve these kind of problems. Once BPEL aims you think in "Composite Applications" which in general are many compositions of different services (keep in mind that it can be not only WebServices).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;This technology is perfect when you must execute several services according some conditions or even some rules. BPEL allows you think in "Services Orchestration" at the same way you think when you are creating Swing UI using some graphical designer.&lt;br /&gt;&lt;br /&gt;The RiftSaw/Apache ODE is an implementation of WS-BPEL 2.0 which is the newest specification definied by OASIS of the standard BPEL4WS (Business Process Execution Language for Web Services) 1.0 and 1.1. Red Hat counts with one contributor for this spec: Alejandro Guízar (JBoss, by Red Hat).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Thinking about Processes&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I married about 1 year and I can still remember my wedding process. Several people were involved. A lot of parallel tasks, a lot of dependent tasks, timeouts, authorizations, rules etc!  Now try imagining everything  into a flow keeping in mind how you would organize your plans to get married and keep in mind that you have a lot of expecations, and everything must be perfect on time, saving costs and allowing everybody to be happy... Well, this is exactly what processes are trying to solve and provide to the companies globally speaking!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;A Process is composed by a Sequence of many activities and those different activities can to perform particular actions, but always promoting a collaborating among them. Let's see some examples of this:&lt;br /&gt;&lt;br /&gt;Getting Married Process -&gt;  Propose the Lady  -&gt;  Request Parent's Authorization  -&gt;  Organize the Party -&gt; Invite People -&gt; Organize Honey Moon -&gt; Organize Bachelor Party -&gt; Say Yes!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;If everything in the sequence flow is true, congratulations, you will have a good chance to celebrate a nice wedding! Although a process must handle when something that you are not expecting to happen, for instance: "Bachelor Party denied", and than you might try several different actions, flows or even new sequences for it. :)&lt;br /&gt;&lt;br /&gt;WS-BPEL 2.0 spec describes a process, the sequence, the activities that are part of , the faults, the exceptions, the alternative paths and everything you need to create a process.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Using JBoss technologies for BPEL&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;When we are working with BPEL, basically the majority of Tools generates a .bpel file, this is a XML File that describes the process itself. A BPEL Process represents several interations with a bunch of Webservices, then if the BPEL can invoke several WebServices, makes sense if the way to invoke a BPEL process execution would a WebService as well, for this reason each .bpel file, or process, will have a WSDL that will represent the Client invocation, as well as the response that will send after the process flow.&lt;br /&gt;&lt;br /&gt;A BPEL Process is a sequence of activities inside some sequence, exactly as I said before, you may represent it graphically(IDEs) or programatically (XML), the following table will show the 2 action's categories :&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;table style="text-align: left; width: 100%; background-color: rgb(204, 204, 204);" border="1" cellpadding="2" cellspacing="2"&gt;&lt;br /&gt;&lt;br /&gt;&lt;tbody&gt;&lt;tr&gt;&lt;br /&gt;&lt;td style="vertical-align: top; font-weight: bold;"&gt;Basic&lt;br /&gt;Activities&lt;br /&gt;&lt;br /&gt;&lt;/td&gt;&lt;br /&gt;&lt;td style="vertical-align: top; font-weight: bold;"&gt;Structured&lt;br /&gt;Activities&lt;br /&gt;&lt;br /&gt;&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td style="vertical-align: top; background-color: white;"&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;invoke&lt;/li&gt;&lt;br /&gt;&lt;li&gt;receive&lt;/li&gt;&lt;br /&gt;&lt;li&gt;reply&lt;/li&gt;&lt;br /&gt;&lt;li&gt;assign&lt;/li&gt;&lt;br /&gt;&lt;li&gt;compensate&lt;/li&gt;&lt;br /&gt;&lt;li&gt;compensateScope&lt;/li&gt;&lt;br /&gt;&lt;li&gt;empty&lt;/li&gt;&lt;br /&gt;&lt;li&gt;exit&lt;/li&gt;&lt;br /&gt;&lt;li&gt;throw&lt;/li&gt;&lt;br /&gt;&lt;li&gt;rethrow&lt;/li&gt;&lt;br /&gt;&lt;li&gt;validate&lt;/li&gt;&lt;br /&gt;&lt;li&gt;wait&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;/td&gt;&lt;br /&gt;&lt;td style="vertical-align: top; background-color: white;"&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;flow&lt;/li&gt;&lt;br /&gt;&lt;li&gt;forEach&lt;/li&gt;&lt;br /&gt;&lt;li&gt;if&lt;/li&gt;&lt;br /&gt;&lt;li&gt;pick&lt;/li&gt;&lt;br /&gt;&lt;li&gt;repeatUntil&lt;/li&gt;&lt;br /&gt;&lt;li&gt;scope&lt;/li&gt;&lt;br /&gt;&lt;li&gt;while&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;These activities are represented in the BPEL Palette, as you can see in the following image:&lt;br /&gt;&lt;br /&gt;This is a simple blog entry, so it would be impossible describe BPEL in depth here. So I recommend you read some books and deeper BPEL Articles if you need more background on this technology. it will make you understand this entry much better.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Creating your first BPEL Project using JBoss Tools, RiftSaw and JBoss App Server 5.1&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;First of all you must have in your machine the following software:&lt;br /&gt;&lt;br /&gt;* Eclipse 3.5 + JBoss Tools 3.1.0M3&lt;br /&gt;* JBoss 5.1.0 GA&lt;br /&gt;* JBoss Riftsaw M1&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Installing Riftsaw&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This came from README.txt:&lt;br /&gt;&lt;br /&gt;The build.xml script in this directory is responsible for deploying the BPEL runtime and deployer to the JBoss AS,and the BPEL/ESB examples to the JBossESB environment.&lt;br /&gt;&lt;br /&gt;1) Install JBoss5.1.0.GA and JBossESB4.6.GA, and follow the JBossESB instructions for installing it into JBossAS&lt;br /&gt;&lt;br /&gt;2) Update the deployment.properties file to set the path to each of this installations&lt;br /&gt;&lt;br /&gt;3) Run "ant deploy" to install the BPEL deployer and engine into the JBossAS&lt;br /&gt;&lt;br /&gt;4) Start the JBossAS server&lt;br /&gt;&lt;br /&gt;At this point, you can try out the examples in the RiftSaw/samples folder.&lt;br /&gt;&lt;br /&gt;Alternatively, if you want to try out the BPEL/ESB examples, then:&lt;br /&gt;&lt;br /&gt;6) Run "ant deploy-esb-examples" to copy the ESB/BPEL examples into the JBossESB samples.&lt;br /&gt;&lt;br /&gt;7) Follow the $JBossESB/samples/quickstarts/webservice_esb_bpel instructions to run the example&lt;br /&gt;&lt;br /&gt;One thing that you may ask yourself:&lt;br /&gt;&lt;br /&gt;a) Why the Riftsaw is installed both in AppServer and the ESB Server ?&lt;br /&gt;- Hide quoted text -&lt;br /&gt;&lt;br /&gt;A: In my point of view you may think into a "process repository" or something like other vendors loves to call : "A process server", so the BPEL processes will be running into an exclusiv (or clustered or load balanced) instance of a JBoss AppServer, which will host the Riftsaw Engine, as well as the WSDLs that represents the processes.&lt;br /&gt;&lt;br /&gt;In another hand you have the other part of your SOA solution, in that case in particular I am talking about an ESB! At this moment, JBoss ESB can host services that may put several BPEL processes to work together, for each BPEL Process you will have an 1-1 relation with a WSDL, once you will access a BPEL process of the same way you acess a regular WebService: Through an WSDL.&lt;br /&gt;&lt;br /&gt;Depending of what you wanna do in terms of Orchestration you may count just with BPEL, however keep in mind that you will be limited into WSDL boundary, so if you need different protocols collaborating with each other&lt;br /&gt;&lt;br /&gt;Now I will save your time! it's time to watch this tutorial to get some basics of BPEL Development using JBoss Tools + Riftsaw,&lt;a href="http://edgarsilva.com.br/videos/rittut1.htm"&gt; click here to watch&lt;/a&gt;!&lt;br /&gt;&lt;br /&gt;If you prefer, you may watch it here:&lt;br /&gt;&lt;br /&gt;&lt;object width="640" height="400"&gt;&lt;param name="allowfullscreen" value="true" /&gt;&lt;param name="allowscriptaccess" value="always" /&gt;&lt;param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=6940138&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=00ADEF&amp;amp;fullscreen=1" /&gt;&lt;embed src="http://vimeo.com/moogaloop.swf?clip_id=6940138&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=00ADEF&amp;amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="640" height="400"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;p&gt;&lt;a href="http://vimeo.com/6940138"&gt;JBoss Riftsaw - Getting Started Tutorial&lt;/a&gt; from &lt;a href="http://vimeo.com/user2228674"&gt;Edgar Silva&lt;/a&gt; on &lt;a href="http://vimeo.com"&gt;Vimeo&lt;/a&gt;.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;Why is it useful? It shows how you can edit the WSDL that acts as the endpoint for the BPEL process, and also shows how you can create the Service, Ports, Bind for this WebService.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7107194769059181627-2413192730889921547?l=ankiewsky.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ankiewsky.blogspot.com/feeds/2413192730889921547/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7107194769059181627&amp;postID=2413192730889921547' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7107194769059181627/posts/default/2413192730889921547'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7107194769059181627/posts/default/2413192730889921547'/><link rel='alternate' type='text/html' href='http://ankiewsky.blogspot.com/2009/10/enabling-bpel-into-jboss-welcome-to.html' title='Enabling BPEL into JBoss : Welcome to the Riftsaw Project'/><author><name>Edgar Ankiewsky Silva</name><uri>http://www.blogger.com/profile/07488052711588628833</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://farm3.static.flickr.com/2269/2042929603_ed0711917e_s.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7107194769059181627.post-5685081777082230867</id><published>2009-09-17T13:37:00.000-07:00</published><updated>2009-09-17T13:45:32.120-07:00</updated><title type='text'>Screencast: Making JBoss ESB listen XMPP Protocol using Smack API</title><content type='html'>This simple screen-cast will  show you how JBoss ESB can listen XMPP messages.&lt;br /&gt;&lt;br /&gt;For this solution, I used Openfire+Smack API + JBoss ESB + Pidggin (could be any Gtalk client, Adium or so on):&lt;br /&gt;&lt;br /&gt;&lt;object width="660" height="525"&gt;&lt;param name="movie" value="http://www.youtube.com/v/_Y7-AWU7XVc&amp;hl=en&amp;fs=1&amp;rel=0&amp;color1=0x3a3a3a&amp;color2=0x999999&amp;border=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/_Y7-AWU7XVc&amp;hl=en&amp;fs=1&amp;rel=0&amp;color1=0x3a3a3a&amp;color2=0x999999&amp;border=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="660" height="525"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;I hope you enjoy, forgive my accent ( easl - English as Second Language) and see how you can add new capabilities into JBoss ESB&lt;br /&gt;&lt;br /&gt;Any comment, doubt or questions, feel you free to reach me at edgar.silva (at) redhat.com&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7107194769059181627-5685081777082230867?l=ankiewsky.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ankiewsky.blogspot.com/feeds/5685081777082230867/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7107194769059181627&amp;postID=5685081777082230867' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7107194769059181627/posts/default/5685081777082230867'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7107194769059181627/posts/default/5685081777082230867'/><link rel='alternate' type='text/html' href='http://ankiewsky.blogspot.com/2009/09/screencast-making-jboss-esb-listen-xmpp.html' title='Screencast: Making JBoss ESB listen XMPP Protocol using Smack API'/><author><name>Edgar Ankiewsky Silva</name><uri>http://www.blogger.com/profile/07488052711588628833</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://farm3.static.flickr.com/2269/2042929603_ed0711917e_s.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7107194769059181627.post-1904312617490956896</id><published>2009-07-29T08:23:00.000-07:00</published><updated>2009-07-30T09:38:39.717-07:00</updated><title type='text'>Would you like to hear about JON's success cases as well as a curious accent at JBossWorld 2009?</title><content type='html'>This September is very special for me, my wife and my dad will be celebrating their birthday this month, and the third motivation for happiness is the fact to be speaking at JBossWorld, and sharing some thoughts and our experiences with everybody there.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.esportesite.com.br/wp-content/uploads/2009/06/20090625210400fute.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 352px; height: 248px;" src="http://www.esportesite.com.br/wp-content/uploads/2009/06/20090625210400fute.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This JBossWorld 2009, you will have chance to watch a presentation of some success cases of JBoss Operations Network (JON) in Brazil, and also notice how some customers obtained very valuable benefits from this product.&lt;br /&gt;&lt;br /&gt;The presentation title is: &lt;a href="http://www.jbossworld.com/agenda/tracks/abstracts_decodingthecode.html#581959"&gt;The "bossanova-way": JBoss management with JON in Brazil - Real case studies and applications of JBoss Operations Network&lt;/a&gt; , you may ask: "wth...does Bossanova mean in this context?".&lt;br /&gt;Well, I'm gonna tell you the inspiration behind this title, Bossanova is a brazilian style of music  very well known internationally speaking, I have seen many docus on TV saying that bossanova is a very appreciated and recognized as a sophisticated form of entertainment in the US. However, many of my american friends, have no idea that it comes from Brazil...&lt;br /&gt;I am not sure if you like Frank Sinatra, but he is one of the persons that fell in love by this music style?&lt;br /&gt;&lt;center&gt;&lt;br /&gt;&lt;object height="364" width="445"&gt;&lt;param name="movie" value="http://www.youtube.com/v/Woly7O8v3CY&amp;amp;hl=en&amp;amp;fs=1&amp;amp;color1=0x3a3a3a&amp;amp;color2=0x999999&amp;amp;border=1"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/Woly7O8v3CY&amp;amp;hl=en&amp;amp;fs=1&amp;amp;color1=0x3a3a3a&amp;amp;color2=0x999999&amp;amp;border=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="364" width="445"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;/center&gt;&lt;br /&gt;Perhaps you are very used to hearing good stuff about Brazil such as soccer, samba, beaches....and ok...Ladies.... but many people don't realize that Red Hat brought JBoss business to Brazil 3 years ago, and we could make JON a "defacto" solution for majority of the JBoss Enterprise's subscription buyers.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://ego.globo.com/Gente/foto/0,,14169573-EXH,00.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 395px; height: 296px;" src="http://ego.globo.com/Gente/foto/0,,14169573-EXH,00.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;And our secret...our secret was somewhat based on bossanova, as far as we tried to be: "Simple, however sophisticated", helping people understand the value and benefits that JON can bring to the companies that are using JBoss in an enterprise environment.&lt;br /&gt;&lt;br /&gt;In this presentation, we will show some testimonial of customers, as well as some technical demos and simulation of the key features that were mandatory for running and support JBoss in a very enterprise level. Yep...We will have deep demos, besides a rare accent.&lt;br /&gt;&lt;br /&gt;Well, I hope to see you there, in the end I am sure that you will see the power of JON in very large interesting applications and scenarios in the country where Brazilian Portuguese is spoken :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7107194769059181627-1904312617490956896?l=ankiewsky.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ankiewsky.blogspot.com/feeds/1904312617490956896/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7107194769059181627&amp;postID=1904312617490956896' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7107194769059181627/posts/default/1904312617490956896'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7107194769059181627/posts/default/1904312617490956896'/><link rel='alternate' type='text/html' href='http://ankiewsky.blogspot.com/2009/07/would-you-like-to-hear-about-jons.html' title='Would you like to hear about JON&apos;s success cases as well as a curious accent at JBossWorld 2009?'/><author><name>Edgar Ankiewsky Silva</name><uri>http://www.blogger.com/profile/07488052711588628833</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://farm3.static.flickr.com/2269/2042929603_ed0711917e_s.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7107194769059181627.post-1608293802234869364</id><published>2009-06-10T13:26:00.000-07:00</published><updated>2010-01-02T02:00:23.196-08:00</updated><title type='text'>JBoss AOP in a Real World scenario</title><content type='html'>See the following statement:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;blockquote&gt;" Tell me what is happening between your Application Server and your Database" &lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;AOP is not something really new, besides you can use AOP for many real scenarios nowadays, like the proposed above, so, lets do it.&lt;br /&gt;&lt;span style="font-size: 130%;"&gt; &lt;span style="font-weight: bold;"&gt;Installing JBoss AOP distro in your JBoss AppServer&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Download the &lt;a href="http://www.jboss.org/jbossaop/"&gt;latest JBoss AOP&lt;/a&gt; binary, unzip this in your hard disk, in the jboss-aop folder, you have 2 options for updating, one for JBoss 4.x and other for 5.x.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;/jboss-aop-2.1.1.GA/&lt;span style="font-weight: bold;"&gt;jboss-40-install&lt;/span&gt;/jboss-aop-jdk50.deployer or&lt;/li&gt;&lt;li&gt;/jboss-aop-2.1.1.GA/&lt;span style="font-weight: bold;"&gt;jboss-50-install&lt;/span&gt;/jboss-aop-jdk50.deployer&lt;/li&gt;&lt;/ul&gt;Both contains a build.properties, which you must edit it and inform the following properties:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;jboss.home= put here your App Server directory home&lt;br /&gt;&lt;/li&gt;&lt;li&gt;jboss.config= put here the profile which you will update the AOP capabilities (eg: aop)&lt;/li&gt;&lt;/ul&gt;In your shell, in the appropriated deployer installer dir, you will call the "ant " command, it will update your JBoss Profile.&lt;br /&gt;&lt;span style="font-size: 130%;"&gt;  &lt;span style="font-weight: bold;"&gt;Enabling AOP in your JBoss Profile&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;In your profile, in the folder $jboss_home/$profile/deploy/jboss-aop-jdk50.deployer/META-INF, you will edit the file jboss-service.xml ,  will change the &lt;span style="font-style: italic; font-weight: bold;"&gt;EnableLoadtimeWeaving&lt;/span&gt; attribute to true, according the following image:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_3evqY311jfA/SjAdjydMc1I/AAAAAAAAAu0/SHt0HWqyqI4/s1600-h/jb-aop.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5345805258365629266" src="http://2.bp.blogspot.com/_3evqY311jfA/SjAdjydMc1I/AAAAAAAAAu0/SHt0HWqyqI4/s200/jb-aop.png" style="cursor: pointer; display: block; height: 119px; margin: 0px auto 10px; text-align: center; width: 200px;" /&gt;&lt;/a&gt;After you change the AOP service, you must copy to the &lt;span style="font-style: italic;"&gt;bin &lt;/span&gt;directory of your JBoss, the jar file called pluggable-instrumentor.jar that is in the lib folder of your JBoss AOP home directory.&lt;br /&gt;&lt;br /&gt;The last step, you must add the following parameter  in the JAVA_OPTS in the run.conf file:&lt;br /&gt;&lt;br /&gt;-javaagent:pluggable-instrumentor.jar&lt;br /&gt;&lt;br /&gt;Done, your AOP is updated in your JBoss AppServer.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 130%;"&gt;&lt;span style="font-weight: bold;"&gt;Intecepting every JDBC Call made from your AppServer&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;JBoss AOP is an AOP Framework, which combined with AppServer make this kind of task really easy, where once you have a .aop file, it is a "deployable" file, that JBoss will deploy and make our aspects live in the App Server.&lt;br /&gt;&lt;br /&gt;We will create a simple &lt;span style="font-style: italic;"&gt;Interceptor, &lt;/span&gt;which is a simple class that implements &lt;span style="font-style: italic;"&gt;org.jboss.aop.advice.Interceptor &lt;/span&gt;, that everything we need, is present , see the following source code:&lt;br /&gt;&lt;br /&gt;&lt;pre class="java" name="code"&gt;public class JDBCMetricInterceptor implements Inteceptor {&lt;br /&gt;&lt;br /&gt;public JDBCMetricInterceptor() {&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public Object invoke(Invocation invocation) throws Throwable {&lt;br /&gt;&lt;br /&gt;StringBuilder builder = new StringBuilder();&lt;br /&gt;try {&lt;br /&gt;builder.append("\n\t============== JDBC CALL ===============");&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;if (invocation instanceof MethodInvocation) {&lt;br /&gt;MethodInvocation mi = (MethodInvocation) invocation;&lt;br /&gt;builder.append("\n\ttype: Method Invocation");&lt;br /&gt;builder.append("\n\tmethod: " + mi.getMethod().getName());&lt;br /&gt;&lt;br /&gt;Object[] args = mi.getArguments();&lt;br /&gt;&lt;br /&gt;if (null != args &amp;amp;&amp;amp; args.length &amp;gt; 0) {&lt;br /&gt;&lt;br /&gt;builder.append(String.format("\n\tHey, I saw %s parameter(s)",&lt;br /&gt;args.length));&lt;br /&gt;for (Object object : args) {&lt;br /&gt;builder.append(String.format(&lt;br /&gt;"\n\tParameters sent: %s of %s",   object,  (null==object)? "Null parameter": object.getClass().getName()));&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;return invocation.invokeNext();&lt;br /&gt;} finally {&lt;br /&gt;builder.append("\n\tJDBC Invocation end");&lt;br /&gt;builder.append("\n\t========================================");&lt;br /&gt;logger.info(builder.toString());&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;First of all, you might think: "We can intercept the java.sql.Statement class... and that's all", but JBoss AOP can't do that with "Java Standard Classes". So we will define a "definition" that our target will be: "Every class inside the package of the HSQLDB driver , which is org.hsqldb.jdbc, besides these classes must implement the class java.sql.Connection, which we assume that will execute the SQL to the database", right? See the code of the jboss-aop.xml file:&lt;br /&gt;&lt;br /&gt;&lt;pre class="xml" name="code"&gt;&lt;typedef expr="class($instanceof{java.sql.Connection}) AND class(org.hsqldb.jdbc.*)" name="MySQLStatement"&gt;&lt;br /&gt;&lt;br /&gt;&lt;bind pointcut=""&gt;*(..))"&amp;gt;&lt;br /&gt;&lt;interceptor-ref name="JDBCMonitor"&gt;&lt;br /&gt;&lt;/interceptor-ref&gt;&lt;br /&gt;&lt;/bind&gt;&lt;/typedef&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Once you deploy the generated aop file, when you boot the AppServer, you will see the AOP logging our messages:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_3evqY311jfA/SjAjNWVTXNI/AAAAAAAAAu8/vnmglHJ2ZII/s1600-h/Screenshot-esilva%40es:-opt-java-jboss-as-jboss-4.2.2.GA-bin.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5345811469928979666" src="http://3.bp.blogspot.com/_3evqY311jfA/SjAjNWVTXNI/AAAAAAAAAu8/vnmglHJ2ZII/s200/Screenshot-esilva%40es:-opt-java-jboss-as-jboss-4.2.2.GA-bin.png" style="cursor: pointer; display: block; height: 128px; margin: 0px auto 10px; text-align: center; width: 200px;" /&gt;&lt;/a&gt;Ofcourse, create anything with JBoss AOP is easier when we have in Brazilian office some help from &lt;a href="http://www.blogger.com/profile/10586534111992483068"&gt;Flavia Rainone&lt;/a&gt;, thanks Flavia.&lt;br /&gt;&lt;br /&gt;Have fun with AOP, and keep in mind that you may use that in many real scenarios, is not necessary to be so geek for find out some opportunity to use it.&lt;br /&gt;&lt;br /&gt;&lt;script src="http://gist.github.com/267447.js"&gt;&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7107194769059181627-1608293802234869364?l=ankiewsky.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ankiewsky.blogspot.com/feeds/1608293802234869364/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7107194769059181627&amp;postID=1608293802234869364' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7107194769059181627/posts/default/1608293802234869364'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7107194769059181627/posts/default/1608293802234869364'/><link rel='alternate' type='text/html' href='http://ankiewsky.blogspot.com/2009/06/jboss-aop-in-real-world-scenario.html' title='JBoss AOP in a Real World scenario'/><author><name>Edgar Ankiewsky Silva</name><uri>http://www.blogger.com/profile/07488052711588628833</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://farm3.static.flickr.com/2269/2042929603_ed0711917e_s.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_3evqY311jfA/SjAdjydMc1I/AAAAAAAAAu0/SHt0HWqyqI4/s72-c/jb-aop.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7107194769059181627.post-2571469857989041814</id><published>2009-04-02T17:01:00.000-07:00</published><updated>2009-04-02T18:00:02.865-07:00</updated><title type='text'>Smooks+JBoss ESB applied : Getting Quotes from YahooFinance</title><content type='html'>I've been doing some researching for creating a cool sample using CEP into JBoss, while I am still working on it, I decided put a simple sample using Smooks for transforming CSVs from Yahoo Finance into XMLs, which is a format much easier for integrating with everything else.&lt;br /&gt;&lt;span style="font-weight: bold;font-family:georgia;font-size:100%;"  &gt;&lt;br /&gt;&lt;span&gt;Getting Stock Symbols and Quotes from Yahoo Finance in CSV Format&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Yahoo offers an URL that gives you information about the quotes, it is not a WebServices, "REST Service" or nothing especial or too complex, it is basically an HTTP URL, that you may pass some additional info, and you can see the Quotes information by a glimpse into a CSV output. Look the following URL format:&lt;br /&gt;&lt;br /&gt;&lt;p&gt;  &lt;b&gt;http://finance.yahoo.com/d/quotes.csv?s=&lt;/b&gt;&lt;i&gt;&lt;span style="color:blue;"&gt; a BUNCH of STOCK SYMBOLS separated by "+"&lt;/span&gt;&lt;/i&gt; &lt;b&gt;&amp;amp;f=&lt;/b&gt;&lt;i&gt;&lt;span style="color:red;"&gt;a bunch of special tags&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;&lt;p&gt;These special tags you can get more information &lt;a href="http://www.gummy-stuff.org/Yahoo-data.htm"&gt;here&lt;/a&gt;&lt;/p&gt;&lt;p&gt;I decided use this URL: &lt;span style="font-weight: bold; font-style: italic;"&gt;http://finance.yahoo.com/d/quotes.csv?s=RHT+MSFT+ORCL+JAVA&amp;amp;f=snb3pt1d1&lt;/span&gt; , and what does these parameters means?&lt;/p&gt;a) s= The symbols, in that case: Red Hat, Microsoft, Oracle and Sun Microsystems.&lt;br /&gt;&lt;br /&gt;b) f=  It means which information I wanna in my "report", I decided put:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;s = symbol s - symbol&lt;/li&gt;&lt;li&gt;n- companyName&lt;/li&gt;&lt;li&gt;b- bid&lt;/li&gt;&lt;li&gt;3p - last bid&lt;/li&gt;&lt;li&gt;t1 - time&lt;/li&gt;&lt;li&gt;d1 - TradeDate&lt;/li&gt;&lt;/ul&gt;The result will give me the following information:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt; [java] "RHT","RED HAT INC",17.90,17.68,"4:04pm","4/2/2009"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;   [java] "MSFT","Microsoft Corpora",19.33,19.31,"4:00pm","4/2/2009"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;   [java] "ORCL","Oracle Corporatio",18.83,18.58,"4:00pm","4/2/2009"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;   [java] "JAVA","Sun Microsystems,",8.38,8.00,"4:00pm","4/2/2009"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Time to make it available into my JBoss ESB.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Using Smooks&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The only thing that I am doing for testing is send the data obtained from the Yahoo URL to my Service JMS Quee Gateway, you may use Commons Http Client if you want something more sophisticated, othewise you may create a simple code as you can see in the following code-listing:&lt;br /&gt;&lt;br /&gt;&lt;pre class="prettyprint lang-java"&gt;&lt;br /&gt;public static void main(String args[]) throws Exception&lt;br /&gt;{            &lt;br /&gt;SendJMSMessage sm = new SendJMSMessage();&lt;br /&gt;sm.setupConnection();&lt;br /&gt;StringBuilder quotesData = new StringBuilder();&lt;br /&gt; try {&lt;br /&gt;        // Create a URL for the desired page&lt;br /&gt;        URL url = new URL("http://finance.yahoo.com/d/quotes.csv?s=RHT+MSFT+ORCL+JAVA&amp;amp;f=snb3pt1d1");&lt;br /&gt;&lt;br /&gt;        BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));&lt;br /&gt;        String str;&lt;br /&gt;        while ((str = in.readLine()) != null) {&lt;br /&gt;       &lt;br /&gt;         quotesData.append(str + "\n");&lt;br /&gt;       &lt;br /&gt;       &lt;br /&gt;        }&lt;br /&gt;        in.close();&lt;br /&gt;    } catch (MalformedURLException e) {&lt;br /&gt;    } catch (IOException e) {&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;System.out.println("Sending:\n" + quotesData.toString());&lt;br /&gt;sm.sendAMessage(quotesData.toString());&lt;br /&gt;sm.stop();&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;This is a basic JMS client (use the quickstarts as a template).&lt;br /&gt;&lt;br /&gt;Now, the only I thing I have to do is configure my smooks-res.xml file as well as my "Smooks Actions" in jboss-esb.xml, in the following image, you can see on the left side the jboss-esb.xml and smooks-res:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_3evqY311jfA/SdVZ_gxEdnI/AAAAAAAAAt8/qhtk4wuM9SQ/s1600-h/configyahoosmooks.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 200px; height: 100px;" src="http://2.bp.blogspot.com/_3evqY311jfA/SdVZ_gxEdnI/AAAAAAAAAt8/qhtk4wuM9SQ/s200/configyahoosmooks.png" alt="" id="BLOGGER_PHOTO_ID_5320257482470487666" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The only thing I had done was editing some XML, and everything is ready.&lt;br /&gt;&lt;br /&gt;This is one more practical example of JBoss ESB and its transformation engine.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-weight: bold;"&gt;Download the solution&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;You can download the solution from &lt;a href="http://www.edgarsilva.com.br/solutions/smooksfinance.zip"&gt;here&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7107194769059181627-2571469857989041814?l=ankiewsky.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ankiewsky.blogspot.com/feeds/2571469857989041814/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7107194769059181627&amp;postID=2571469857989041814' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7107194769059181627/posts/default/2571469857989041814'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7107194769059181627/posts/default/2571469857989041814'/><link rel='alternate' type='text/html' href='http://ankiewsky.blogspot.com/2009/04/smooksjboss-esb-applied-getting-quotes.html' title='Smooks+JBoss ESB applied : Getting Quotes from YahooFinance'/><author><name>Edgar Ankiewsky Silva</name><uri>http://www.blogger.com/profile/07488052711588628833</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://farm3.static.flickr.com/2269/2042929603_ed0711917e_s.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_3evqY311jfA/SdVZ_gxEdnI/AAAAAAAAAt8/qhtk4wuM9SQ/s72-c/configyahoosmooks.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7107194769059181627.post-3944792678879037645</id><published>2009-02-24T23:16:00.001-08:00</published><updated>2009-02-25T11:42:04.759-08:00</updated><title type='text'>A Simple RestEasy Maven Archetype</title><content type='html'>I've been looking for better and faster ways to develop some of my solutions, while &lt;a href="http://www.gradle.org/"&gt;Gradle&lt;/a&gt; is quite promising in my opinion, I still prefer Apache Maven for collaborative projects, even Ant sounds good when you can predict any scenario for your application/project.&lt;br /&gt;&lt;br /&gt;I had searching a lot about a RestEasy Archetype, but I haven't found. RestEasy is a project which Maven is strongly used, although I am not sure if I did my search properly, but just in case I create a simple RestEasy Archetype, which you can download &lt;a href="https://jbossbrasil.dev.java.net/files/documents/9255/127768/resteasy-archetype.zip"&gt;from here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Once you have Maven installed and configured, you just will unzip this zip file, and will type &lt;span style="font-style: italic;"&gt;mvn install&lt;/span&gt;. You will see the following results into your console:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:85%;" &gt;&lt;span style="font-family:courier new;"&gt;[INFO] [jar:jar]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;[INFO] [install:install]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;[INFO] Installing /Users/edgarsilva/redhat/dev/NetBeansProjects/resteasy-archetype/target/resteasy-archetype-1.0-SNAPSHOT.jar to /Users/edgarsilva/.m2/repository/org/jboss/resteasy/resteasy-archetype/1.0-SNAPSHOT/resteasy-archetype-1.0-SNAPSHOT.jar&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;[INFO] ------------------------------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;[INFO] BUILD SUCCESSFUL&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;[INFO] ------------------------------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;[INFO] Total time: 3 seconds&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;[INFO] Finished at: Wed Feb 25 04:26:00 BRT 2009&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;[INFO] Final Memory: 9M/16M&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;[INFO] ------------------------------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;edgar-silvas-macbook:resteasy-archetype edgarsilva$ &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Now, you are ready to create RestEasy projects using Maven Archetypes, to do that, you can use your preferred IDE or just can type in the console for instance, the following command:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:85%;" &gt;&lt;span style="font-family:courier new;"&gt;mvn archetype:create -DarchetypeVersion=1.0-SNAPSHOT -Darchetype.interactive=false -DgroupId=sample -DarchetypeArtifactId=resteasy-archetype -Dversion=1.0-SNAPSHOT -DarchetypeGroupId=org.jboss.resteasy -DartifactId=sample&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This command, will create a project called "sample" which contains everything you need for developing and deploying RestEasy Applications into JBoss Application Server.&lt;br /&gt;&lt;br /&gt;In the following image, you can see the project opened using NetBeans:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_3evqY311jfA/SaTzyBCw-UI/AAAAAAAAAtE/0ge-5uelP2o/s1600-h/nb_rest_maven.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 200px; height: 160px;" src="http://3.bp.blogspot.com/_3evqY311jfA/SaTzyBCw-UI/AAAAAAAAAtE/0ge-5uelP2o/s200/nb_rest_maven.png" alt="" id="BLOGGER_PHOTO_ID_5306634301548329282" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;If you run mvn:install you will see Maven in action downloading everything required for building your project. In addition, this archetype includes JBoss AppServer tasks, which you can use for deploying, starting or stooping the server anytime you want. After typing mvn install, this goal will compile and generated a war file into target folder, however you may call the command &lt;span style="font-style: italic;"&gt;mvn jboss:start &lt;/span&gt;that you will see the following output:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:85%;" &gt;&lt;span style="font-family: courier new;"&gt;[jsilva@jsilva esresteasy]$ mvn jboss:start&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;[INFO] Scanning for projects...&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;[INFO] Searching repository for plugin with prefix: 'jboss'.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;[INFO] artifact org.codehaus.mojo:jboss-maven-plugin: checking for updates from central&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;[INFO] ------------------------------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;[INFO] Building esresteasy&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;[INFO]    task-segment: [jboss:start]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;[INFO] ------------------------------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;[INFO] [jboss:start]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;[INFO] Starting JBoss...&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;[INFO] ------------------------------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;[INFO] BUILD SUCCESSFUL&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;[INFO] ------------------------------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;[INFO] Total time: 1 second&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;[INFO] Finished at: Wed Feb 25 16:30:56 BRT 2009&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;[INFO] Final Memory: 3M/74M&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;[INFO] ------------------------------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;[jsilva@jsilva esresteasy]$ &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Not only starting JBoss AppServer, you are also able to deploy your application using the command: mvn jboss:deploy :&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new; font-weight: bold;font-size:85%;" &gt;[jsilva@jsilva esresteasy]$ mvn jboss:deploy&lt;br /&gt;[INFO] Scanning for projects...&lt;br /&gt;[INFO] Searching repository for plugin with prefix: 'jboss'.&lt;br /&gt;[INFO] ------------------------------------------------------------------------&lt;br /&gt;[INFO] Building esresteasy&lt;br /&gt;[INFO]    task-segment: [jboss:deploy]&lt;br /&gt;[INFO] ------------------------------------------------------------------------&lt;br /&gt;[INFO] [jboss:deploy]&lt;br /&gt;[INFO] Deploying /opt/java/workspace/esresteasy/target/esresteasy.war to JBoss.&lt;br /&gt;[INFO] No server specified for authentication - using defaults&lt;br /&gt;[INFO] ------------------------------------------------------------------------&lt;br /&gt;[INFO] BUILD SUCCESSFUL&lt;br /&gt;[INFO] ------------------------------------------------------------------------&lt;br /&gt;[INFO] Total time: 2 seconds&lt;br /&gt;[INFO] Finished at: Wed Feb 25 16:39:41 BRT 2009&lt;br /&gt;[INFO] Final Memory: 3M/74M&lt;br /&gt;[INFO] ------------------------------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;If you look the JBossApp Server console you can see your project deployed into JBoss:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:85%;" &gt;&lt;span style="font-family: courier new;"&gt;16:39:39,812 INFO  [TomcatDeployment] deploy, ctxPath=/esresteasy, vfsUrl=&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;16:39:39,930 ERROR [STDERR] 52 [http-127.0.0.1-8080-1] INFO org.jboss.resteasy.plugins.providers - Added built in provider DataSourceProvider&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;16:39:39,935 ERROR [STDERR] 57 [http-127.0.0.1-8080-1] INFO org.jboss.resteasy.plugins.providers - Added built in provider DefaultTextPlain&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;16:39:39,936 ERROR [STDERR] 58 [http-127.0.0.1-8080-1] INFO org.jboss.resteasy.plugins.providers - Added built in provider org.jboss.resteasy.plugins.providers.StringTextStar&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;16:39:39,937 ERROR [STDERR] 59 [http-127.0.0.1-8080-1] INFO org.jboss.resteasy.plugins.providers - Added built in provider org.jboss.resteasy.plugins.providers.InputStreamProvider&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;16:39:39,939 ERROR [STDERR] 61 [http-127.0.0.1-8080-1] INFO org.jboss.resteasy.plugins.providers - Added built in provider org.jboss.resteasy.plugins.providers.ByteArrayProvider&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;16:39:39,941 ERROR [STDERR] 63 [http-127.0.0.1-8080-1] INFO org.jboss.resteasy.plugins.providers - Added built in provider org.jboss.resteasy.plugins.providers.FormUrlEncodedProvider&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;16:39:39,942 ERROR [STDERR] 64 [http-127.0.0.1-8080-1] INFO org.jboss.resteasy.plugins.providers - Added built in provider org.jboss.resteasy.plugins.providers.FormUrlEncodedProvider&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;16:39:39,944 ERROR [STDERR] 66 [http-127.0.0.1-8080-1] INFO org.jboss.resteasy.plugins.providers - Added built in provider org.jboss.resteasy.plugins.providers.StreamingOutputProvider&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;16:39:39,950 ERROR [STDERR] 72 [http-127.0.0.1-8080-1] INFO org.jboss.resteasy.plugins.providers - Adding built in provider org.jboss.resteasy.plugins.providers.IIOImageProvider&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;16:39:40,084 ERROR [STDERR] 206 [http-127.0.0.1-8080-1] INFO org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap - Adding scanned resource: esresteasy.Hello&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;16:39:40,087 INFO  [STDOUT] FOUND JAX-RS resource: esresteasy.Hello&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I am looking for an easy way to pass information of some users inputs to fill some information into my pom.xml, the same strategy used in seam-gen for instance and also in esb-gen, but I am still looking for how to do that.&lt;br /&gt;&lt;br /&gt;Seems that Maven Archetype is changing or moving for a next generation (&lt;a href="http://docs.codehaus.org/display/MAVEN/ArchetypeNG"&gt;http://docs.codehaus.org/display/MAVEN/ArchetypeNG&lt;/a&gt;) , hopefully the actual archetypes are still working fine.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7107194769059181627-3944792678879037645?l=ankiewsky.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ankiewsky.blogspot.com/feeds/3944792678879037645/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7107194769059181627&amp;postID=3944792678879037645' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7107194769059181627/posts/default/3944792678879037645'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7107194769059181627/posts/default/3944792678879037645'/><link rel='alternate' type='text/html' href='http://ankiewsky.blogspot.com/2009/02/simple-resteasy-maven-archetype.html' title='A Simple RestEasy Maven Archetype'/><author><name>Edgar Ankiewsky Silva</name><uri>http://www.blogger.com/profile/07488052711588628833</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://farm3.static.flickr.com/2269/2042929603_ed0711917e_s.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_3evqY311jfA/SaTzyBCw-UI/AAAAAAAAAtE/0ge-5uelP2o/s72-c/nb_rest_maven.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7107194769059181627.post-5413845108265901815</id><published>2009-02-13T11:24:00.000-08:00</published><updated>2009-02-16T16:09:18.832-08:00</updated><title type='text'>Combining ApacheCamel+BSF to make JBoss ESB polyglot</title><content type='html'>Some time ago I published &lt;a href="http://ankiewsky.blogspot.com/2008/10/integrating-apache-camel-with-jboss-esb.html"&gt;here &lt;/a&gt;one of the ways I built for integrating services such as Apache Camel into JBoss ESB.&lt;br /&gt;&lt;br /&gt;Hopefully&lt;a href="http://jboss.org/community/people/tfennelly?view=profile"&gt; Tom Fennelly &lt;/a&gt;(&lt;span style="font-weight: bold;"&gt;JBoss ESB CoreDev&lt;/span&gt;) also published an &lt;a href="http://jboss.org/community/docs/DOC-13193"&gt;awesome documentation&lt;/a&gt; in how create new Listeners into JBoss via  Schedulers, as I had done, in addition showing how do that using Groovy, which in my opinion is much better, safer and easier, I will show you the new implementation here right now.&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;When do I need new Listener into JBoss ESB?&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Many many times I faced situations where some customers have unpredictable  scenarios related with integration, that's why I liked Apache Camel since the first moment I had contact with! You can find out a clear and easy programming model(using DSLs), and a very nice set of components for integrating even with some providers not available in JBoss, like JBI(ServiceMix), Esper(CEP/ESP) etc.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Groovy in Action into ESB&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Once the events in Camel happens into an specific RouteBuilder object, I just want to make it available as a "Service", so once  JBoss ESB is running, the Camel is ready to answer any event.&lt;br /&gt;&lt;br /&gt;To make it possible, I just created a classes called ApacheCamelListener, where I must fill some life-cycle methods, in order to ensure that everything will be executed properly in runtime, see the class: ApacheCamelListener.java:&lt;br /&gt;&lt;br /&gt;&lt;pre class="prettyprint lang-java"&gt;&lt;br /&gt;&lt;br /&gt;package org.jboss.soa.esb.integration.apache.camel;&lt;br /&gt;&lt;br /&gt;import java.io.File;&lt;br /&gt;import java.util.logging.Logger;&lt;br /&gt;&lt;br /&gt;import org.apache.bsf.BSFEngine;&lt;br /&gt;import org.apache.bsf.BSFManager;&lt;br /&gt;import org.apache.camel.CamelContext;&lt;br /&gt;import org.apache.camel.impl.DefaultCamelContext;&lt;br /&gt;import org.jboss.soa.esb.ConfigurationException;&lt;br /&gt;import org.jboss.soa.esb.helpers.ConfigTree;&lt;br /&gt;import org.jboss.soa.esb.listeners.message.ActionProcessingPipeline;&lt;br /&gt;import org.jboss.soa.esb.util.FileUtil;&lt;br /&gt;&lt;br /&gt;public class ApacheCamelListener {&lt;br /&gt;&lt;br /&gt;private ActionProcessingPipeline pipeline;&lt;br /&gt;&lt;br /&gt;protected CamelContext context = new DefaultCamelContext();&lt;br /&gt;&lt;br /&gt;protected Logger log;&lt;br /&gt;&lt;br /&gt;protected boolean started = false;&lt;br /&gt;&lt;br /&gt;public ApacheCamelListener() {&lt;br /&gt;log = Logger.getLogger(ApacheCamelListener.class.getName());&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public void start(ConfigTree config) throws ConfigurationException {&lt;br /&gt;// Create and initialize the pipeline..&lt;br /&gt;pipeline = new ActionProcessingPipeline(config);&lt;br /&gt;pipeline.initialise();&lt;br /&gt;log.info("Initilizing ApacheCamel into JBoss Esb Server ....");&lt;br /&gt;if (!started) {&lt;br /&gt;CamelContext context = new DefaultCamelContext();&lt;br /&gt;&lt;br /&gt;try {&lt;br /&gt;&lt;br /&gt;log.info("...Adding Routes");&lt;br /&gt;&lt;br /&gt;File scriptsDir = new File((config.getAttribute("scripts-folder")));&lt;br /&gt;&lt;br /&gt;File[] scripts =  scriptsDir.listFiles();&lt;br /&gt;&lt;br /&gt;if (null != scripts &amp;amp;&amp;amp; scripts.length&gt;0) {&lt;br /&gt;&lt;br /&gt;String theScript = null;&lt;br /&gt;&lt;br /&gt;JBossEsbRoute router = null;&lt;br /&gt;&lt;br /&gt;BSFManager manager = new BSFManager();&lt;br /&gt;&lt;br /&gt;BSFEngine bsfEngine = manager.loadScriptingEngine(config.getAttribute("script-language"));&lt;br /&gt;&lt;br /&gt;for (File file : scripts) {&lt;br /&gt;&lt;br /&gt;theScript =  FileUtil.readTextFile(file);&lt;br /&gt;&lt;br /&gt;router = (JBossEsbRoute) bsfEngine.eval(config.getAttribute("script-language"), 0, 0, theScript);&lt;br /&gt;&lt;br /&gt;log.info(router.toString());&lt;br /&gt;&lt;br /&gt;context.addRoutes(new ScriptingRoute(router));&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;} catch (Exception e) {&lt;br /&gt;&lt;br /&gt;e.printStackTrace();&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;try {&lt;br /&gt;context.start();&lt;br /&gt;started = true;&lt;br /&gt;log.info("Camel is ready and waiting events");&lt;br /&gt;&lt;br /&gt;} catch (Exception e) {&lt;br /&gt;&lt;br /&gt;e.printStackTrace();&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public void stop() {&lt;br /&gt;try {&lt;br /&gt;&lt;br /&gt;started = false;&lt;br /&gt;&lt;br /&gt;try {&lt;br /&gt;context.stop();&lt;br /&gt;&lt;br /&gt;} catch (Exception e) {&lt;br /&gt;&lt;br /&gt;log.info("Error trying close Camel Context: " + e.getMessage());&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;} finally {&lt;br /&gt;if (pipeline != null) {&lt;br /&gt;pipeline.destroy();&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Time for Innovating : Putting Ruby, Groovy and other scripting language to dispatch messages to existing Services&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;You can use JBoss jBPM Actions to call deployed Services, based in the service name, service category and the variables, so what I did is basically is allow users via Camel listen many others components and call an existing Service, the following image can describe my idea:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_3evqY311jfA/SZXOwVWHVlI/AAAAAAAAAss/cpdFBhYgnAQ/s1600-h/camel.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 281px;" src="http://4.bp.blogspot.com/_3evqY311jfA/SZXOwVWHVlI/AAAAAAAAAss/cpdFBhYgnAQ/s320/camel.png" alt="" id="BLOGGER_PHOTO_ID_5302371466057569874" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Basically when I configure my ApacheCamelListener, I can configure the "scripts-folder" and "script-language" properties for my listener, these propertis basically works to tell where in the filesystem this listener will looking for "other dinamic listeners", and then you can tell the orign of the event, and when some message/even happens in the provider, it will be forwarded via ServiceInvoker  converting a Camel Message to an ESB Message Aware. See the Listener configuration:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://edgarsilva.com.br/wp-content/uploads/2009/02/camelconf.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 535px; height: 344px;" src="http://edgarsilva.com.br/wp-content/uploads/2009/02/camelconf.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Or you can simply see the jboss-esb.xml configuration here:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_3evqY311jfA/SZmbmP4mSMI/AAAAAAAAAs0/m9960SZHBLA/s1600-h/Screenshot-Java+-+-opt-java-jboss-esb-jbossesb-server-4.4.GA-samples-quickstarts-camelevents-jboss-esb.xml+-+Eclipse+Platform+.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_3evqY311jfA/SZmbmP4mSMI/AAAAAAAAAs0/m9960SZHBLA/s200/Screenshot-Java+-+-opt-java-jboss-esb-jbossesb-server-4.4.GA-samples-quickstarts-camelevents-jboss-esb.xml+-+Eclipse+Platform+.png" alt="" id="BLOGGER_PHOTO_ID_5303441117606725826" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Now, I can use a Ruby Script to invoke some service from my ESB Server, and using a IRC room to interact with JBoss ESB.&lt;br /&gt;&lt;br /&gt;&lt;pre class="prettyprint lang-rb"&gt;&lt;br /&gt;require 'java'&lt;br /&gt;include_class 'org.jboss.soa.esb.integration.apache.camel.JBossEsbRoute'&lt;br /&gt;route = JBossEsbRoute.new&lt;br /&gt;route.from = 'irc:localhost:667#room1'&lt;br /&gt;route.to = 'irc:localhost:667#room2'&lt;br /&gt;route.serviceCategory= 'Transformadores'&lt;br /&gt;route.serviceName = 'TransformaChamadaXMLparaISO'&lt;br /&gt;return route&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;In Apache Camel, I must pass a &lt;span style="font-weight: bold;"&gt;org.apache.camel.builder.RouteBuilder&lt;span style="font-style: italic;"&gt;&lt;/span&gt;&lt;/span&gt;, to say how interact with the message arrived in the configured protocol. To do that, I extended this class for a JBossEsbRoute, as you can see in the following code-listing:&lt;br /&gt;&lt;br /&gt;&lt;pre class="prettyprint lang-java"&gt;&lt;br /&gt;&lt;br /&gt;package org.jboss.soa.esb.integration.apache.camel;&lt;br /&gt;&lt;br /&gt;public class JBossEsbRoute {&lt;br /&gt;&lt;br /&gt;private String serviceName;&lt;br /&gt;private String serviceCategory;&lt;br /&gt;private String from;&lt;br /&gt;private String to;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;public JBossEsbRoute() {&lt;br /&gt;// TODO Auto-generated constructor stub&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;@Override&lt;br /&gt;public String toString() {&lt;br /&gt;return String.format("This ServiceInvoker will listen events from %s " +&lt;br /&gt; "and will forward to Service %s from category %s and route to %s",&lt;br /&gt; this.from,this.serviceName,this.serviceCategory, this.to);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public JBossEsbRoute(String serviceName, String category, String from, String to) {&lt;br /&gt;&lt;br /&gt;this.serviceName = serviceName;&lt;br /&gt;this.serviceCategory = category;&lt;br /&gt;this.from = from;&lt;br /&gt;this.to = to;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Here is my extension for Camel understands any script written in PHP, ruby or perl etc, and make it integrated with JBoss ESB:&lt;br /&gt;&lt;br /&gt;&lt;pre class="prettyprint lang-java"&gt;&lt;br /&gt;&lt;br /&gt;package org.jboss.soa.esb.integration.apache.camel;&lt;br /&gt;&lt;br /&gt;import org.apache.camel.Exchange;&lt;br /&gt;import org.apache.camel.Processor;&lt;br /&gt;&lt;br /&gt;public class ScriptingRoute extends org.apache.camel.builder.RouteBuilder {&lt;br /&gt; &lt;br /&gt; protected JBossEsbRoute route;&lt;br /&gt; &lt;br /&gt; public ScriptingRoute() {&lt;br /&gt;  // TODO Auto-generated constructor stub&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; public ScriptingRoute(JBossEsbRoute r) {&lt;br /&gt;  &lt;br /&gt;  this.route = r;&lt;br /&gt;  &lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; @Override&lt;br /&gt; public void configure() throws Exception {&lt;br /&gt;  &lt;br /&gt;  from(route.getFrom()).process(&lt;br /&gt;    new Processor() {&lt;br /&gt;     public void process(Exchange e) {&lt;br /&gt; &lt;br /&gt;      Object message = e.getIn().getBody();&lt;br /&gt;      &lt;br /&gt;      System.out.println("#########" + &lt;br /&gt;       e.getContext().getExchangeConverter().convertTo(String.class, e));&lt;br /&gt;      &lt;br /&gt;      &lt;br /&gt;      System.out.println("Received event: " + message);&lt;br /&gt;      &lt;br /&gt;&lt;br /&gt;     }&lt;br /&gt;  }).to(route.getTo());&lt;br /&gt;&lt;br /&gt;  &lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;The Ruby Script, basically creates a new Instance of JBossEsbRoute, which I can use to register a new Event Listener as well as a Invoker for an existing Services hosted into JBoss ESB. The following code-listing will allow you figure out how it is done:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="prettyprint lang-java"&gt;&lt;br /&gt;&lt;br /&gt;String theScript = null;&lt;br /&gt;&lt;br /&gt;JBossEsbRoute router = null;&lt;br /&gt;&lt;br /&gt;BSFManager manager = new BSFManager();&lt;br /&gt;    &lt;br /&gt;BSFEngine bsfEngine = manager.loadScriptingEngine(config.getAttribute("script-language"));&lt;br /&gt;  &lt;br /&gt;for (File file : scripts) {&lt;br /&gt;   &lt;br /&gt;  theScript =  FileUtil.readTextFile(file);&lt;br /&gt;  &lt;br /&gt;   router = (JBossEsbRoute) bsfEngine.eval(config.getAttribute("script-language"), 0, 0,  theScript);&lt;br /&gt;  &lt;br /&gt;log.info(router.toString());&lt;br /&gt;  &lt;br /&gt;context.addRoutes(new ScriptingRoute(router));&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;  &lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Now, any language supported by Bean Scripting Framework can be used to invoke services into JBoss ESB, using Apache Camel for Events notifying and even forwarding after get processed into JBoss ESB pipelines.&lt;br /&gt;&lt;br /&gt;I will be updating the sources and publishing in GitHub, if you are interested in that idea, reach me via email into edgarsilva (using) gmail.com.&lt;br /&gt;&lt;br /&gt;Hope you enjoy!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;ps- JBoss Esb 4.5 with Embedded Console is really great!&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7107194769059181627-5413845108265901815?l=ankiewsky.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ankiewsky.blogspot.com/feeds/5413845108265901815/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7107194769059181627&amp;postID=5413845108265901815' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7107194769059181627/posts/default/5413845108265901815'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7107194769059181627/posts/default/5413845108265901815'/><link rel='alternate' type='text/html' href='http://ankiewsky.blogspot.com/2009/02/combining-apachecamelbsf-to-make-jboss.html' title='Combining ApacheCamel+BSF to make JBoss ESB polyglot'/><author><name>Edgar Ankiewsky Silva</name><uri>http://www.blogger.com/profile/07488052711588628833</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://farm3.static.flickr.com/2269/2042929603_ed0711917e_s.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_3evqY311jfA/SZXOwVWHVlI/AAAAAAAAAss/cpdFBhYgnAQ/s72-c/camel.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7107194769059181627.post-6301675467277401691</id><published>2008-12-05T14:39:00.000-08:00</published><updated>2008-12-06T11:22:55.104-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='esb'/><category scheme='http://www.blogger.com/atom/ns#' term='soa'/><title type='text'>Integrating XMPP into JBoss ESB</title><content type='html'>I am looking for a better way to integrate new providers into JBoss ESB, while I have no success on this journey I can share some thoughts about some cool stuff as I will show you know.&lt;br /&gt;&lt;br /&gt;First of all I am using the &lt;a href="http://www.igniterealtime.org/"&gt;Ignite&lt;/a&gt; opensource APIs and Products. In order to have my own Jabber Server, I installed &lt;a href="http://www.igniterealtime.org/projects/openfire/index.jsp"&gt;Openfire&lt;/a&gt;, which is pretty easy.&lt;br /&gt;&lt;br /&gt;Once I started the service I opened the Admin UI in my browser and did a very simple setup, you can see the Openfire opening the address: http://localhost:9090 :&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_3evqY311jfA/STmy3vUyGgI/AAAAAAAAArY/JpTK26o35m8/s1600-h/Screenshot-Openfire+Admin+Console:+Client+Sessions+-+Mozilla+Firefox.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 246px;" src="http://4.bp.blogspot.com/_3evqY311jfA/STmy3vUyGgI/AAAAAAAAArY/JpTK26o35m8/s320/Screenshot-Openfire+Admin+Console:+Client+Sessions+-+Mozilla+Firefox.png" alt="" id="BLOGGER_PHOTO_ID_5276445109107431938" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I added 2 users: edgar and joão(John if english), my objective is that JBoss ESB will hold the buddy "Joao", where I can interact with them via my IM program that supports a XMPP/Jabber protocol, GTalk in windows for instance.&lt;br /&gt;&lt;br /&gt;I wanna send some message from my IM program, and I wanna transform this "buddy message" into a ESB Message in the bus.&lt;br /&gt;&lt;br /&gt;I am using a strategy to &lt;span style="font-weight: bold;"&gt;use Schedulers&lt;/span&gt; as my listeners, so I created a class that basically uses the &lt;a href="http://www.igniterealtime.org/projects/smack/index.jsp"&gt;Smack API&lt;/a&gt; to interact with Xmpp protocol. See my following scheduler:&lt;br /&gt;&lt;br /&gt;&lt;pre class="prettyprint"&gt;&lt;br /&gt;package org.demo.smackesb;&lt;br /&gt;&lt;br /&gt;import org.jboss.soa.esb.ConfigurationException;&lt;br /&gt;import org.jboss.soa.esb.client.ServiceInvoker;&lt;br /&gt;import org.jboss.soa.esb.helpers.ConfigTree;&lt;br /&gt;import org.jboss.soa.esb.listeners.message.MessageDeliverException;&lt;br /&gt;import org.jboss.soa.esb.message.Message;&lt;br /&gt;import org.jboss.soa.esb.message.format.MessageFactory;&lt;br /&gt;import org.jboss.soa.esb.schedule.ScheduledEventListener;&lt;br /&gt;import org.jboss.soa.esb.schedule.SchedulingException;&lt;br /&gt;import org.jivesoftware.smack.ConnectionConfiguration;&lt;br /&gt;import org.jivesoftware.smack.PacketListener;&lt;br /&gt;import org.jivesoftware.smack.XMPPConnection;&lt;br /&gt;import org.jivesoftware.smack.XMPPException;&lt;br /&gt;import org.jivesoftware.smack.filter.AndFilter;&lt;br /&gt;import org.jivesoftware.smack.filter.FromContainsFilter;&lt;br /&gt;import org.jivesoftware.smack.filter.PacketFilter;&lt;br /&gt;import org.jivesoftware.smack.filter.PacketTypeFilter;&lt;br /&gt;import org.jivesoftware.smack.packet.Packet;&lt;br /&gt;&lt;br /&gt;public class XmppListener implements ScheduledEventListener {&lt;br /&gt;&lt;br /&gt;protected boolean started = false;&lt;br /&gt;protected ConnectionConfiguration config;&lt;br /&gt;protected XMPPConnection connection;&lt;br /&gt;&lt;br /&gt;public void onSchedule() throws SchedulingException {&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public void initialize(ConfigTree arg0) throws ConfigurationException {&lt;br /&gt;&lt;br /&gt; try {&lt;br /&gt;  config = new ConnectionConfiguration("localhost", 5222, "es");&lt;br /&gt;&lt;br /&gt;  connection = new XMPPConnection(config);&lt;br /&gt;&lt;br /&gt;  connection.connect();&lt;br /&gt;&lt;br /&gt;  connection.login("joao", "123", "Home");&lt;br /&gt;&lt;br /&gt;  PacketFilter filter = new AndFilter(new PacketTypeFilter(&lt;br /&gt;    org.jivesoftware.smack.packet.Message.class),&lt;br /&gt;    new FromContainsFilter("edgar"));&lt;br /&gt;&lt;br /&gt;  PacketListener myListener = new MyTracker();&lt;br /&gt;&lt;br /&gt;  connection.addPacketListener(myListener, filter);&lt;br /&gt;&lt;br /&gt; } catch (XMPPException e) {&lt;br /&gt;&lt;br /&gt;  e.printStackTrace();&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public void uninitialize() {&lt;br /&gt; connection.disconnect();&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;class MyTracker implements PacketListener {&lt;br /&gt;&lt;br /&gt; public void processPacket(Packet packet) {&lt;br /&gt;&lt;br /&gt;  // dispatch messages to ESB from a Jabber Client&lt;br /&gt;&lt;br /&gt;  org.jivesoftware.smack.packet.Message msg = (org.jivesoftware.smack.packet.Message) packet;&lt;br /&gt;&lt;br /&gt;  System.out.println("Will forward the Message: " + msg.getBody());&lt;br /&gt;&lt;br /&gt;  try {&lt;br /&gt;&lt;br /&gt;   ServiceInvoker invoker = new ServiceInvoker("Extra", "Jabber");&lt;br /&gt;&lt;br /&gt;   Message message = MessageFactory.getInstance().getMessage();&lt;br /&gt;&lt;br /&gt;   message.getBody().add(msg.getBody());&lt;br /&gt;&lt;br /&gt;   invoker.deliverAsync(message);&lt;br /&gt;&lt;br /&gt;  } catch (MessageDeliverException e) {&lt;br /&gt;&lt;br /&gt;   e.printStackTrace();&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Basically, I have my Service transforming incoming buddy message to ESB messages, see my jboss-esb.xml:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_3evqY311jfA/STmys43xw9I/AAAAAAAAArQ/YvKknySjYX0/s1600-h/Screenshot-Java+EE+-+-opt-java-jboss-esb-jbossesb-server-4.4.GA-samples-quickstarts-smackesb-jboss-esb.xml+-+Eclipse+Platform+.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 190px;" src="http://4.bp.blogspot.com/_3evqY311jfA/STmys43xw9I/AAAAAAAAArQ/YvKknySjYX0/s320/Screenshot-Java+EE+-+-opt-java-jboss-esb-jbossesb-server-4.4.GA-samples-quickstarts-smackesb-jboss-esb.xml+-+Eclipse+Platform+.png" alt="" id="BLOGGER_PHOTO_ID_5276444922691568594" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;I am using Smooks as well to show that you can transform the incoming messages into really business messages to JBoss ESB.&lt;br /&gt;&lt;br /&gt;See a screenshot of the demo working:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_3evqY311jfA/STm67_wXMTI/AAAAAAAAArg/-P1Qs4CjFjU/s1600-h/Screenshot.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 200px;" src="http://2.bp.blogspot.com/_3evqY311jfA/STm67_wXMTI/AAAAAAAAArg/-P1Qs4CjFjU/s320/Screenshot.png" alt="" id="BLOGGER_PHOTO_ID_5276453978330575154" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Download this demo from &lt;a href="http://www.edgarsilva.com.br/solutions/smackesb.zip"&gt;here&lt;/a&gt;, and if you wanna deploy into to your ESB, just drop it into your sample/quickstart folder, and call the command "ant deploy".&lt;br /&gt;&lt;br /&gt;Another approach you may keep in mind when you are looking for some solution to integrate Xmpp with Java is &lt;a style="font-weight: bold;" href="http://www.mobicents.org"&gt;Mobicents&lt;/a&gt;, which is a technology really nice for such integrations like that.&lt;br /&gt;&lt;br /&gt;Hope you enjoy.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7107194769059181627-6301675467277401691?l=ankiewsky.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ankiewsky.blogspot.com/feeds/6301675467277401691/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7107194769059181627&amp;postID=6301675467277401691' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7107194769059181627/posts/default/6301675467277401691'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7107194769059181627/posts/default/6301675467277401691'/><link rel='alternate' type='text/html' href='http://ankiewsky.blogspot.com/2008/12/integrating-xmpp-into-jboss-esb.html' title='Integrating XMPP into JBoss ESB'/><author><name>Edgar Ankiewsky Silva</name><uri>http://www.blogger.com/profile/07488052711588628833</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://farm3.static.flickr.com/2269/2042929603_ed0711917e_s.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_3evqY311jfA/STmy3vUyGgI/AAAAAAAAArY/JpTK26o35m8/s72-c/Screenshot-Openfire+Admin+Console:+Client+Sessions+-+Mozilla+Firefox.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7107194769059181627.post-2927162136912691863</id><published>2008-10-21T16:39:00.000-07:00</published><updated>2008-10-22T04:34:33.159-07:00</updated><title type='text'>Integrating Apache Camel with JBoss ESB</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Motivation&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;JBoss ESB supports the EIP(Enterprise Integration Patterns) in many aspects and counting with sofisticated resources, for instance: Drools for CBR(Content Based Router), or jBPM for Business Processor, besides of components for implementing Splitters, Aggregators, Filters and so on. However, not only to prove that JBoss ESB is an open and flexible ESB, I decided integrate it with Apache Camel, and this entry will show you some aspects of this work.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Little About Apache Camel&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;From Camel website (&lt;a href="http://activemq.apache.org/camel/"&gt;http://activemq.apache.org/camel/&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;"Apache Camel is a Spring based Integration Framework which implements the Enterprise Integration Patterns with powerful Bean Integration.&lt;br /&gt;&lt;br /&gt;Camel lets you create the Enterprise Integration Patterns to implement routing and mediation rules in either a Java based Domain Specific Language (or Fluent API), via Spring based Xml Configuration files or via the Scala DSL. This means you get smart completion of routing rules in your IDE whether in your Java, Scala or XML editor.&lt;br /&gt;&lt;br /&gt;Apache Camel uses URIs so that it can easily work directly with any kind of Transport or messaging model such as HTTP, ActiveMQ, JMS, JBI, SCA, MINA or CXF Bus API together with working with pluggable Data Format options. Apache Camel is a small library which has minimal dependencies for easy embedding in any Java application."&lt;br /&gt;&lt;br /&gt;In addition to this, Camel has several components that allows us apply an "Event-Driven" approach, the list of providers or protocols is really interesting, that's why Camel called my atention some months back, and  working with a SOA project, where one of the requirements is listen many "non-common" protocols! So I believe that Camel can help me to avoid reinvent de wheel. Moreover, you can ask me: "Hey sir, tell me some about you bunch of &lt;a href="http://activemq.apache.org/camel/components.html"&gt;components&lt;/a&gt; that you can use on Camel?", and I can answer with the following:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Apache Mina&lt;/li&gt;&lt;li&gt;RelaxNG&lt;/li&gt;&lt;li&gt;XMPP&lt;/li&gt;&lt;li&gt;Microsoft MQ&lt;/li&gt;&lt;li&gt;JCR&lt;/li&gt;&lt;li&gt;JBI&lt;/li&gt;&lt;li&gt;IRC&lt;/li&gt;&lt;li&gt;HL7&lt;/li&gt;&lt;li&gt;ESPER(CEP/ESP)&lt;/li&gt;&lt;li&gt;ATOM&lt;/li&gt;&lt;li&gt;Others , see more &lt;a href="http://activemq.apache.org/camel/components.html"&gt;here&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;A Real Use Case: Turning On Camel into JBoss ESB&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Depending of the point of view, you can definetely think that it is crappy, although I personally believe that Camel can work with JBoss ESB, once you have many events(Messages) happening on that protocols mapped by Camel's componets, you can eventually catch one of these messages(events) via Apache Camel, where we consider an "Unaware ESB Message from an Unaware Client" and publish it into a provider(protocol) that JBoss ESB supports, such as JMS, File System, WebServices, JBoss Remoting an so on. See the following image where I try describe visually this bahaviour:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_3evqY311jfA/SP5pTp8dPkI/AAAAAAAAAhY/M-JPUp22Gpc/s1600-h/arqCamelESB.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_3evqY311jfA/SP5pTp8dPkI/AAAAAAAAAhY/M-JPUp22Gpc/s320/arqCamelESB.png" alt="" id="BLOGGER_PHOTO_ID_5259757201213177410" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;In my case, I wanna listen everything what happens into a UDP server connection, and due to performance I would like to use something on top of NIO: So &lt;a href="http://mina.apache.org/"&gt;&lt;span style="font-weight: bold;"&gt;Apache Mina&lt;/span&gt;&lt;/a&gt; is one of my options, I could create a new JBoss ESB Courier(provider), new ProviderListener and everything from scratch, but I decided test Apache Camel, and my experience is that it was incredible cool,easy and under my performance testing really interesting, comparing with the previous UDP Server made using basic Java IO implementation.&lt;br /&gt;&lt;br /&gt;First of all, I used the JBoss ESB's internal scheduler infrastructure, I enabled a SchedulerProvider to start my "Camel Listener", on this point I just wanna enable the Apache Camel run into ESB(inESB). See in the following code the provider configuration:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_3evqY311jfA/SP8LIFFX8uI/AAAAAAAAAqQ/4RVFbMzZJkQ/s1600-h/schedulerprovideresb.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_3evqY311jfA/SP8LIFFX8uI/AAAAAAAAAqQ/4RVFbMzZJkQ/s320/schedulerprovideresb.png" alt="" id="BLOGGER_PHOTO_ID_5259935123223605986" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;After this I created a listener for my service, just to tell which "Timer Event Listener" I wanna invoke when my CRON expression had been executed. In the following code, you can see my ESB Timer listener activating my UDP component listener based in Camel:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_3evqY311jfA/SP8LZF70YgI/AAAAAAAAAqY/KP4IMsSzqac/s1600-h/listenercroncamel.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_3evqY311jfA/SP8LZF70YgI/AAAAAAAAAqY/KP4IMsSzqac/s320/listenercroncamel.png" alt="" id="BLOGGER_PHOTO_ID_5259935415509737986" border="0" /&gt;&lt;/a&gt;The class you can see in my listener is basically the timer listener processor that will be fired when the cron expression happens. In that case I am implementing the JBoss ESB's interface: org.jboss.soa.esb.schedule.ScheduledEventListener, especifically the method onSchedule(), which is fired my my listener according the CRON expression in my scheduler provider. In particular, on that method I invoke the Camel capabilities, as you can see in the following code:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_3evqY311jfA/SP8NGaFyIaI/AAAAAAAAAqg/HdryLkROen0/s1600-h/codecamellistener.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_3evqY311jfA/SP8NGaFyIaI/AAAAAAAAAqg/HdryLkROen0/s320/codecamellistener.png" alt="" id="BLOGGER_PHOTO_ID_5259937293525983650" border="0" /&gt;&lt;/a&gt;The Camel portion is really easy to understand: This frameworks works with URI concept, so the compoenents "endpoints" no matter for input or output are configured using those URI and a Java DSL for it, in the example you can see above, We hve a method &lt;span style="font-style: italic;"&gt;process &lt;/span&gt;which is resposible for handling the message/information that arrives in the configured component(endpoint), in that case I am telling that this method will listen eveything that happens in a UDP server in my host 0.0.0.0 in the port 2222, so the message that I receive I can do everything I want with, and after I route this information for another component, in that case we are forwarding the message to a filesystem, in that case a Filesystem can be a gateway for JBoss ESB, but we could route the info for a JMS or HTTP(JBR) gateway as well.&lt;br /&gt;&lt;br /&gt;I believe I can improve a lot the integration between JBoss ESB and Camel, there are some issues, like redeployments in ESB and CamelContexts stoping and restarting that I can synchronize, but for awhile it is working pretty well.&lt;br /&gt;&lt;br /&gt;I hope this post can be useful for you, if you need any further information please comment here.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;More info:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.jboss.org/jbossesb"&gt;http://www.jboss.org/jbossesb&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://activemq.apache.org/camel/"&gt;http://activemq.apache.org/camel/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://mina.apache.org/"&gt;http://mina.apache.org/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7107194769059181627-2927162136912691863?l=ankiewsky.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ankiewsky.blogspot.com/feeds/2927162136912691863/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7107194769059181627&amp;postID=2927162136912691863' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7107194769059181627/posts/default/2927162136912691863'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7107194769059181627/posts/default/2927162136912691863'/><link rel='alternate' type='text/html' href='http://ankiewsky.blogspot.com/2008/10/integrating-apache-camel-with-jboss-esb.html' title='Integrating Apache Camel with JBoss ESB'/><author><name>Edgar Ankiewsky Silva</name><uri>http://www.blogger.com/profile/07488052711588628833</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://farm3.static.flickr.com/2269/2042929603_ed0711917e_s.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_3evqY311jfA/SP5pTp8dPkI/AAAAAAAAAhY/M-JPUp22Gpc/s72-c/arqCamelESB.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7107194769059181627.post-3930438668856128050</id><published>2008-10-14T13:20:00.000-07:00</published><updated>2008-10-14T14:50:16.921-07:00</updated><title type='text'>Getting Started with JBoss ESB 4.4 and JBoss Tools 3-beta - Part I</title><content type='html'>&lt;span style="font-weight: bold;font-size:130%;" &gt;Introduction&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This entry introduce you how create ESB Projects using JBoss ESB with Eclipse IDE.&lt;br /&gt;&lt;br /&gt;Softwares Used for this Tutorial&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;JBoss ESB Server 4.4&lt;/li&gt;&lt;li&gt;Eclipse Ganymed (latest version is ok)&lt;/li&gt;&lt;li&gt; Nightlly build (JBossTools-3.0.0.Beta1) for example: JBossTools-3.0.0.Beta1-N200810131557&lt;/li&gt;&lt;li&gt;JDK for sure :)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Installing the Software&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;In &lt;span style="font-weight: bold;"&gt;Eclipse Ganymed &lt;/span&gt;you have a way to avoid mess your Eclipse installation, you may use the dropins folder to make the reference between your original Eclipse installation and the folder were you had unziped your plugin and where the contents are located in. See the following links for more detailed information in how get it ready :&lt;br /&gt;&lt;ul&gt;&lt;li&gt; &lt;a href="http://wiki.eclipse.org/Equinox_p2_Getting_Started#Dropins"&gt;http://wiki.eclipse.org/Equinox_p2_Getting_Started#Dropins&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.jboss.org/community/docs/DOC-10044"&gt;http://www.jboss.org/community/docs/DOC-10044 &lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Configuring JBoss ESB in Eclipse&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Once you have the installation process done,  go to the  Window/Prefereces, and expand the item JBoss Tools on the left, you will see the JBoss ESB  Runtimes as one of the items in this section, click on it  and in the right  window  click in the add button and select the JBoss ESB Server  path. See the Image 1: and 2:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_3evqY311jfA/SPUHgb-_jvI/AAAAAAAAAgw/JXnjoH7woPk/s1600-h/Screenshot-Preferences+.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_3evqY311jfA/SPUHgb-_jvI/AAAAAAAAAgw/JXnjoH7woPk/s320/Screenshot-Preferences+.png" alt="" id="BLOGGER_PHOTO_ID_5257116393874099954" border="0" /&gt;&lt;/a&gt;Image 1 - The Preferences Window&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_3evqY311jfA/SPUH3R8UCaI/AAAAAAAAAhA/rjwKUBA9XF4/s1600-h/Screenshot-New+JBoss+ESB+Runtime+.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_3evqY311jfA/SPUH3R8UCaI/AAAAAAAAAhA/rjwKUBA9XF4/s320/Screenshot-New+JBoss+ESB+Runtime+.png" alt="" id="BLOGGER_PHOTO_ID_5257116786315495842" border="0" /&gt;&lt;/a&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Image 2 - The JBoss ESBConfiguration &lt;/span&gt; &lt;/span&gt;&lt;/div&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Creating a New Project&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Now, go to the file/new/other ... And Select ESB/ESB Project, as you can see in the image 3, select this  item and press Next Button:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_3evqY311jfA/SPUIqKJo6ZI/AAAAAAAAAhI/GrltBIXxEGo/s1600-h/NewProject.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_3evqY311jfA/SPUIqKJo6ZI/AAAAAAAAAhI/GrltBIXxEGo/s320/NewProject.png" alt="" id="BLOGGER_PHOTO_ID_5257117660397234578" border="0" /&gt;&lt;/a&gt;Image 3 - Creating a new ESB Project&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;Fill "MyFirstEclipseESBProject" in the "Project Name" field and click on the "Finish" button.&lt;br /&gt;&lt;br /&gt;After this, the Project is created and you will be ready to develop your services based on JBoss ESB. See the last image of this post:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_3evqY311jfA/SPUS0n0t79I/AAAAAAAAAhQ/83YIq_7TxHA/s1600-h/Screenshot-Java+EE+-+-opt-java-jboss-esb-jbossesb-server-4.2.1GA-samples-quickstarts-MyFirstEclipseESBProject-esbcontent-META-INF-jboss-esb.xml+-+Eclipse+Platform+.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_3evqY311jfA/SPUS0n0t79I/AAAAAAAAAhQ/83YIq_7TxHA/s320/Screenshot-Java+EE+-+-opt-java-jboss-esb-jbossesb-server-4.2.1GA-samples-quickstarts-MyFirstEclipseESBProject-esbcontent-META-INF-jboss-esb.xml+-+Eclipse+Platform+.png" alt="" id="BLOGGER_PHOTO_ID_5257128835277516754" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="display: block;" id="formatbar_Buttons"&gt;&lt;span class="down" style="display: block;" id="formatbar_CreateLink" title="Link" onmouseover="ButtonHoverOn(this);" onmouseout="ButtonHoverOff(this);" onmouseup="" onmousedown="CheckFormatting(event);FormatbarButton('richeditorframe', this, 8);ButtonMouseDown(this);"&gt;&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/7107194769059181627-3930438668856128050?l=ankiewsky.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ankiewsky.blogspot.com/feeds/3930438668856128050/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7107194769059181627&amp;postID=3930438668856128050' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7107194769059181627/posts/default/3930438668856128050'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7107194769059181627/posts/default/3930438668856128050'/><link rel='alternate' type='text/html' href='http://ankiewsky.blogspot.com/2008/10/getting-started-with-jboss-esb-44-and.html' title='Getting Started with JBoss ESB 4.4 and JBoss Tools 3-beta - Part I'/><author><name>Edgar Ankiewsky Silva</name><uri>http://www.blogger.com/profile/07488052711588628833</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://farm3.static.flickr.com/2269/2042929603_ed0711917e_s.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_3evqY311jfA/SPUHgb-_jvI/AAAAAAAAAgw/JXnjoH7woPk/s72-c/Screenshot-Preferences+.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7107194769059181627.post-6684029956981790951</id><published>2008-10-07T15:18:00.000-07:00</published><updated>2008-10-07T16:31:48.170-07:00</updated><title type='text'>esbgen: An easy way to create JBoss ESB Projects</title><content type='html'>The esbgen.sh or .bat is a simple command line tool that can help you create or just setup your first JBoss ESB Project.&lt;br /&gt;If you think it could be interesting (for sure it is ;]), you can download the zip from esbgen from this JIRA ISSUE: &lt;a href="https://jira.jboss.org/jira/browse/JBESB-2098"&gt;https://jira.jboss.org/jira/browse/JBESB-2098&lt;/a&gt;, please VOTE there :)&lt;br /&gt;&lt;br /&gt;In JIRA, you can find out the instructions, and &lt;a href="http://www.edgarsilva.com.br/edgar/esbgen.htm"&gt;here&lt;/a&gt; you can see esbgen in action on the &lt;a href="http://www.edgarsilva.com.br/edgar/esbgen.htm"&gt;screencast.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Hope you enjoy it!&lt;br /&gt;&lt;span style="display: block;" id="formatbar_Buttons"&gt;&lt;span class="down" style="display: block;" id="formatbar_CreateLink" title="Link" onmouseover="ButtonHoverOn(this);" onmouseout="ButtonHoverOff(this);" onmouseup="" onmousedown="CheckFormatting(event);FormatbarButton('richeditorframe', this, 8);ButtonMouseDown(this);"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display: block;" id="formatbar_Buttons"&gt;&lt;span class="down" style="display: block;" id="formatbar_CreateLink" title="Link" onmouseover="ButtonHoverOn(this);" onmouseout="ButtonHoverOff(this);" onmouseup="" onmousedown="CheckFormatting(event);FormatbarButton('richeditorframe', this, 8);ButtonMouseDown(this);"&gt;&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/7107194769059181627-6684029956981790951?l=ankiewsky.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ankiewsky.blogspot.com/feeds/6684029956981790951/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7107194769059181627&amp;postID=6684029956981790951' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7107194769059181627/posts/default/6684029956981790951'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7107194769059181627/posts/default/6684029956981790951'/><link rel='alternate' type='text/html' href='http://ankiewsky.blogspot.com/2008/10/esbgen-easy-way-to-create-jboss-esb.html' title='esbgen: An easy way to create JBoss ESB Projects'/><author><name>Edgar Ankiewsky Silva</name><uri>http://www.blogger.com/profile/07488052711588628833</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://farm3.static.flickr.com/2269/2042929603_ed0711917e_s.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7107194769059181627.post-4989113107027298671</id><published>2008-09-25T16:44:00.000-07:00</published><updated>2008-09-25T17:06:16.204-07:00</updated><title type='text'>First look in jBPM BAM Console</title><content type='html'>This is an entry just to show you guys some screenshots from jBPM BAM Console, which we are doing a "technology-preview" for one client that  is  using heavily  BPM concepts under JBoss Technologies, integrating with several legacy technologies.&lt;br /&gt;&lt;br /&gt;Actually is very common people ask about BAM (Business Activity Monitoring), this discipline will be covered in JBoss jBPM through a Seam Application, using Ajax Technologies, RichFaces and other interesting resources, in addition to this, the BAM Console will offer an easy way to apply your company theme(css, colors, images) in the UI basically using Facelets.Here will go some screenshots of this great new in jBPM:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-weight: bold;"&gt;Dashboad&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_3evqY311jfA/SNwktaz0UPI/AAAAAAAAAgY/eIE76GijPrk/s1600-h/dashboard.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_3evqY311jfA/SNwktaz0UPI/AAAAAAAAAgY/eIE76GijPrk/s320/dashboard.png" alt="" id="BLOGGER_PHOTO_ID_5250111628316528882" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-weight: bold;"&gt;Reports&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_3evqY311jfA/SNwk5oWnCzI/AAAAAAAAAgg/DdEaQRm6hWM/s1600-h/report.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_3evqY311jfA/SNwk5oWnCzI/AAAAAAAAAgg/DdEaQRm6hWM/s320/report.png" alt="" id="BLOGGER_PHOTO_ID_5250111838110550834" border="0" /&gt;&lt;/a&gt;&lt;span style="font-weight: bold;"&gt;Statistics&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_3evqY311jfA/SNwlOwLdbfI/AAAAAAAAAgo/wnhTbFkXb3k/s1600-h/statistics.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_3evqY311jfA/SNwlOwLdbfI/AAAAAAAAAgo/wnhTbFkXb3k/s320/statistics.png" alt="" id="BLOGGER_PHOTO_ID_5250112200988519922" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;So, who said that we are not working in Business Sphere when we talk about our JBoss SOA Platform? I think you can see a nice answer for this question :). As soon as possible, I will try blog more about these new features into our SOA related projects.&lt;br /&gt;&lt;br /&gt;I would like to say thanks to my friend Eduardo Guerra, which is our JBoss Consultant working on this customer and who took these screenshots.&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7107194769059181627-4989113107027298671?l=ankiewsky.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ankiewsky.blogspot.com/feeds/4989113107027298671/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7107194769059181627&amp;postID=4989113107027298671' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7107194769059181627/posts/default/4989113107027298671'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7107194769059181627/posts/default/4989113107027298671'/><link rel='alternate' type='text/html' href='http://ankiewsky.blogspot.com/2008/09/first-look-in-jbpm-bam-console.html' title='First look in jBPM BAM Console'/><author><name>Edgar Ankiewsky Silva</name><uri>http://www.blogger.com/profile/07488052711588628833</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://farm3.static.flickr.com/2269/2042929603_ed0711917e_s.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_3evqY311jfA/SNwktaz0UPI/AAAAAAAAAgY/eIE76GijPrk/s72-c/dashboard.png' height='72' width='72'/><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7107194769059181627.post-7223039893077117049</id><published>2008-09-04T17:18:00.000-07:00</published><updated>2008-09-10T14:58:23.629-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='esb'/><category scheme='http://www.blogger.com/atom/ns#' term='jboss'/><category scheme='http://www.blogger.com/atom/ns#' term='soa'/><title type='text'>POSOS: Plain Old Services Objects in JBoss ESB</title><content type='html'>&lt;span style="font-weight: bold;font-size:130%;" &gt;Introduction&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;What? One more buzzword? You can complain with &lt;a href="http://burrsutter.blogspot.com/"&gt;Burr Sutter&lt;/a&gt;, he is the guy that created this one for what some customers are wondering and they asked me how do that possible in JBossESB! The question is: "We would like use or reuse as easy as possible my just plain Pojos or "legacy beans" acting as ESB Actions configured in the listeners from protocol's providers in ESB.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;ESB Traditional Actions for Experienced Developers...Easy Pojos for non-experienced ones&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;When you are writing your ESB Action classes, you have some rules to follow, for instance: a) extends AbstractActionLifecycle or , b) A Constructor with a ConfigTree object as a parameter , c) The process methods must returns a Message as well as you need a Message parameter using this type, so your simplest ESB Action is not that easy for non-experienced ESB Action developers.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Ok, Show me this POJO that can run inside JBoss ESB&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;See the following pojo:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_3evqY311jfA/SMB8hkwEf6I/AAAAAAAAAfw/Iss2tqgcJnA/s1600-h/simplepojo.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_3evqY311jfA/SMB8hkwEf6I/AAAAAAAAAfw/Iss2tqgcJnA/s320/simplepojo.png" alt="" id="BLOGGER_PHOTO_ID_5242326882502082466" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Easy right? See the changes I did to  enable this simple POJO as an Action Processor for a Listener in ESB, basically creating two annotations: &lt;span style="font-weight: bold;"&gt;@In &lt;/span&gt;and &lt;span style="font-weight: bold;"&gt;@MessageParam&lt;/span&gt;, which can tell me which methods from the pojo I have to invoke from my processor method in the action, as well as the parameters that I can get via the attributes stored in the Message.Body&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_3evqY311jfA/SMB9KuVkbVI/AAAAAAAAAf4/V6PX3ZnfpVs/s1600-h/pojoannotaded.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_3evqY311jfA/SMB9KuVkbVI/AAAAAAAAAf4/V6PX3ZnfpVs/s320/pojoannotaded.png" alt="" id="BLOGGER_PHOTO_ID_5242327589449919826" border="0" /&gt;&lt;/a&gt;Basically, what I did was a first action, that is traditional action, where I put a value in the message body identified by the name "s", which is the value from "name" in the annotation @MessageParam, so the value will be transfered for my methods as a parameter properly, my action is very simpple as you can see in the following image:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_3evqY311jfA/SMB-sk1tSQI/AAAAAAAAAgA/0dcWsTaTotw/s1600-h/action.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_3evqY311jfA/SMB-sk1tSQI/AAAAAAAAAgA/0dcWsTaTotw/s320/action.png" alt="" id="BLOGGER_PHOTO_ID_5242329270527543554" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;On this point, I am using a strategy similar you can see at any regular Web application, which a portion can store some information into some context that will be accessible when necessary.&lt;br /&gt;&lt;br /&gt;The convention here is that, I am telling that the annotation &lt;span style="font-weight: bold;"&gt;@In&lt;/span&gt; (like Seam) in the method must be processed into the BUS, in addition, the parameter &lt;span style="font-weight: bold;"&gt;@MessageParameter &lt;/span&gt;tells me that I have to get an object identified by name "s" from the Message.Boby from my ESB Message.&lt;br /&gt;&lt;br /&gt;To do that, I created an Action that can accept into one of their properties, which a called "classses", a list of full classes names separated by commas. It is the easiest way to discover the classes without use any other sofisticated engine. See those actions configured into JBoss ESB Eclipse Plugin in the following image:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_3evqY311jfA/SMB_7ekI6RI/AAAAAAAAAgI/89eDSQN4QIE/s1600-h/EclipsePOSOS.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_3evqY311jfA/SMB_7ekI6RI/AAAAAAAAAgI/89eDSQN4QIE/s320/EclipsePOSOS.png" alt="" id="BLOGGER_PHOTO_ID_5242330626052909330" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The following code shows how I configured my jboss-esb.xml, and the configuration of the actions. Look that I can fill in the classes property in how many annottated pojos I want, once they are annotated with our "Esb" annotations:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_3evqY311jfA/SMhCMKy6OrI/AAAAAAAAAgQ/5JYunZeN4rU/s1600-h/jboss-esb-xml.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_3evqY311jfA/SMhCMKy6OrI/AAAAAAAAAgQ/5JYunZeN4rU/s320/jboss-esb-xml.png" alt="" id="BLOGGER_PHOTO_ID_5244514542896691890" border="0" /&gt;&lt;/a&gt;Once again, the only thing I did on my pojo was add the following annotations, as you can see in the following image:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_3evqY311jfA/SMB9KuVkbVI/AAAAAAAAAf4/V6PX3ZnfpVs/s1600-h/pojoannotaded.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_3evqY311jfA/SMB9KuVkbVI/AAAAAAAAAf4/V6PX3ZnfpVs/s320/pojoannotaded.png" alt="" id="BLOGGER_PHOTO_ID_5242327589449919826" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Conclusions&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Of course something much more sophisticated could be done, but like I did is easy for anybody understand, maybe in the future use some similar strategy that RestEasy does, or even create something in memory using JavaAssist.&lt;br /&gt;Another point, I also created annother annotation &lt;span style="font-weight: bold;"&gt;@Out &lt;/span&gt;which would be useful when you change the information inside the parameter that you receive from Message.Body, but after the method you wanna take the changed value to the Message.body context with the changed information... Perharps it sounds like a &lt;span style="font-style: italic;"&gt;bijection &lt;/span&gt;originally a concept from in JBoss Seam applied for JBoss ESB as well. The actual sources are not the most beautyful, but are working fine, e-mail-me if you need the source code, which basically runs as any other regular quickstart.&lt;br /&gt;&lt;br /&gt;I hope someday see such feature like that out-of-the-box in JBoss ESB, while it is not true, I am happy with I have done.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7107194769059181627-7223039893077117049?l=ankiewsky.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ankiewsky.blogspot.com/feeds/7223039893077117049/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7107194769059181627&amp;postID=7223039893077117049' title='15 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7107194769059181627/posts/default/7223039893077117049'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7107194769059181627/posts/default/7223039893077117049'/><link rel='alternate' type='text/html' href='http://ankiewsky.blogspot.com/2008/09/posos-plain-old-services-objects-in.html' title='POSOS: Plain Old Services Objects in JBoss ESB'/><author><name>Edgar Ankiewsky Silva</name><uri>http://www.blogger.com/profile/07488052711588628833</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://farm3.static.flickr.com/2269/2042929603_ed0711917e_s.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_3evqY311jfA/SMB8hkwEf6I/AAAAAAAAAfw/Iss2tqgcJnA/s72-c/simplepojo.png' height='72' width='72'/><thr:total>15</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7107194769059181627.post-6495315631746054209</id><published>2008-08-21T15:33:00.000-07:00</published><updated>2008-08-28T07:51:03.966-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='jboss'/><title type='text'>JBoss Profiler 2.0 Plugin for JON</title><content type='html'>I just started create a JON-plugin based on actual MBean that is the controller for execute the profiler commands, basically what I am doing for now is just "declare" the Services and Actions based on JMX-Actions, take a look on the actual result:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_3evqY311jfA/SK3t2tcZsdI/AAAAAAAAAfA/i2AcYXFsbbE/s1600-h/jon-profiler.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_3evqY311jfA/SK3t2tcZsdI/AAAAAAAAAfA/i2AcYXFsbbE/s320/jon-profiler.png" alt="" id="BLOGGER_PHOTO_ID_5237103465869193682" border="0" /&gt;&lt;/a&gt;In addition, the Profiler Actions, I will be working a little bit more, when I get it done I will commit and create a distro into JBoss Profiler web site:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_3evqY311jfA/SK3uNaEpgII/AAAAAAAAAfI/0qY_qkdodGc/s1600-h/profiler_jon.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_3evqY311jfA/SK3uNaEpgII/AAAAAAAAAfI/0qY_qkdodGc/s320/profiler_jon.png" alt="" id="BLOGGER_PHOTO_ID_5237103855806283906" border="0" /&gt;&lt;/a&gt;We are promoting a lot JON and RHQ-Project in Brazil, for many customers, JON is a good answer for an "Enterprise JBoss Management", if you have some MBeans ready that are really important for your Application, you can manage them using RHQ or JON much better than if you try do just using the legendary JMX-Console. Basically I did an rhq-plugin.xml describing my MBeans, see the following code:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_3evqY311jfA/SK3wRW09sJI/AAAAAAAAAfQ/W6SX9TRfAvk/s1600-h/code.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_3evqY311jfA/SK3wRW09sJI/AAAAAAAAAfQ/W6SX9TRfAvk/s320/code.png" alt="" id="BLOGGER_PHOTO_ID_5237106122677923986" border="0" /&gt;&lt;/a&gt;For more information in how create Plugins for RHQ/JON:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;http://support.rhq-project.org/display/RHQ/RHQ+Plugin+Community&lt;/li&gt;&lt;li&gt;http://support.rhq-project.org/display/RHQ/Writing+Custom+Plugins&lt;/li&gt;&lt;/ul&gt;Here some others screenshots:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_3evqY311jfA/SLa6-gF5ceI/AAAAAAAAAfg/B7pF7GIFHBk/s1600-h/Screenshot-JON+-+Create+New+Operation+Schedule+for+Resource+%27Profiler%27+-+Mozilla+Firefox.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_3evqY311jfA/SLa6-gF5ceI/AAAAAAAAAfg/B7pF7GIFHBk/s320/Screenshot-JON+-+Create+New+Operation+Schedule+for+Resource+%27Profiler%27+-+Mozilla+Firefox.png" alt="" id="BLOGGER_PHOTO_ID_5239580799421477346" border="0" /&gt;&lt;/a&gt;New Commands available&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_3evqY311jfA/SLa7Jobmy7I/AAAAAAAAAfo/LphH9Xl2SFY/s1600-h/Screenshot-JON+Monitor+Resource+Metric+Data+-+Profiler+-+Mozilla+Firefox.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_3evqY311jfA/SLa7Jobmy7I/AAAAAAAAAfo/LphH9Xl2SFY/s320/Screenshot-JON+Monitor+Resource+Metric+Data+-+Profiler+-+Mozilla+Firefox.png" alt="" id="BLOGGER_PHOTO_ID_5239580990638574514" border="0" /&gt;&lt;/a&gt;Some Metrics, in a near future we will have profiler's reports available here&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7107194769059181627-6495315631746054209?l=ankiewsky.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ankiewsky.blogspot.com/feeds/6495315631746054209/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7107194769059181627&amp;postID=6495315631746054209' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7107194769059181627/posts/default/6495315631746054209'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7107194769059181627/posts/default/6495315631746054209'/><link rel='alternate' type='text/html' href='http://ankiewsky.blogspot.com/2008/08/jboss-profiler-20-plugin-for-jon.html' title='JBoss Profiler 2.0 Plugin for JON'/><author><name>Edgar Ankiewsky Silva</name><uri>http://www.blogger.com/profile/07488052711588628833</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://farm3.static.flickr.com/2269/2042929603_ed0711917e_s.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_3evqY311jfA/SK3t2tcZsdI/AAAAAAAAAfA/i2AcYXFsbbE/s72-c/jon-profiler.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7107194769059181627.post-180737887365052136</id><published>2008-08-21T06:27:00.000-07:00</published><updated>2008-08-21T16:42:19.504-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='jboss'/><title type='text'>Installing, testing and Using JBoss Profiler 2.0 - beta2</title><content type='html'>This entry will show how start use the jboss-profiler beta2, first of all , download the software from here:&lt;br /&gt;&lt;a href="http://www.jboss.org/downloading/?projectId=jbossprofiler&amp;amp;url=/jbossprofiler/downloads/jboss-profiler-2.0.Beta2.tar.gz"&gt;http://www.jboss.org/downloading/?projectId=jbossprofiler&amp;amp;url=/jbossprofiler/downloads/jboss-profiler-2.0.Beta2.tar.gz&lt;/a&gt; , save in some folder in your disk and unzip it.&lt;br /&gt;&lt;br /&gt;Once you have the files in your disk, basically to setup jboss-profiler you will have to do the following steps:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Copy jboss-profiler.jar to jbossas/bin&lt;/li&gt;&lt;li&gt;Copy jboss-profiler.properties to jbossas/bin&lt;/li&gt;&lt;li&gt;Edit jboss-profiler.properties in jbossas/bin to include the classes to be profiled&lt;/li&gt;&lt;li&gt;Copy jboss-profiler-plugins.jar to jbossas/bin&lt;/li&gt;&lt;li&gt; Edit run.conf (Unix) or run.bat (Windows) in jbossas/bin to include JBoss Profiler in JAVA_OPTS ( See you run.conf and add use this example: &lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;JAVA_OPTS="-javaagent:jboss-profiler.jar -Djboss-profiler.properties=jboss-profiler.properties -Xms128m -Xmx512m -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000&lt;/span&gt;&lt;/span&gt;")&lt;/li&gt;&lt;li&gt;Copy also to jbossas/bin the javaassist.jar if you are using JBoss AS 4.2.x&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Copy jboss-profiler.sar to jbossas/server/&lt;conf&gt;/deploy&lt;/conf&gt;&lt;/li&gt;&lt;li&gt;Boot application server, if the following log appears everything is ok:&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;=========================================================================&lt;/span&gt;  &lt;span style="font-family:courier new;"&gt;  JBoss Bootstrap Environment&lt;/span&gt;  &lt;span style="font-family:courier new;"&gt;  JBOSS_HOME: /opt/java/jboss/profiler/as&lt;/span&gt;  &lt;span style="font-family:courier new;"&gt;  JAVA: /opt/java/jdk1.6.0_03/bin/java&lt;/span&gt;  &lt;span style="font-family:courier new;"&gt;  JAVA_OPTS: -Dprogram.name=run.sh -server -javaagent:jboss-profiler.jar -Djboss-profiler.properties=jboss-profiler.properties -Xms128m -Xmx512m -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000 -Djava.net.preferIPv4Stack=true&lt;/span&gt;  &lt;span style="font-family:courier new;"&gt;  CLASSPATH: /opt/java/jboss/profiler/as/bin/run.jar:/opt/java/jdk1.6.0_03/lib/tools.jar&lt;/span&gt;  &lt;span style="font-family:courier new;"&gt;=========================================================================&lt;/span&gt;  &lt;span style="font-family:courier new;"&gt;JBoss Profiler 2.0.Beta2 (Sun Microsystems Inc. 1.6.0_03)&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;JBoss Profiler depends on external communication module&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;10:55:51,681 INFO  [Server] Starting JBoss (MX MicroKernel)...&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;10:55:51,707 INFO  [Server] Release ID: JBoss [Trinity] 4.2.2.GA (build: SVNTag=JBoss_4_2_2_GA date=200710221139)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Profiling your Application with JBoss Profiler beta2&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;In order to show the testing, I will do some profiler in JBPM classes, just to check what is happening behind the scenes. To do that I have to edit the jboss-profiler.properties in jbossas.bin directory to add the reference for JBPM's classes, as which is: org.jbpm.* (includes=org.jbpm.*).&lt;br /&gt;&lt;br /&gt;Actually JBoss Profiler uses JMX and MBeans as its infrastructure which allows you profiler either JBoss 4.2.x or future 5.x versions. When you deploy the .sar file, you can see the profiler in the jmx-console as you can see in the following image:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_3evqY311jfA/SK14C6FyljI/AAAAAAAAAe4/7PXOUsah3z8/s1600-h/Screenshot-JBoss+JMX+Management+Console+-+Mozilla+Firefox.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_3evqY311jfA/SK14C6FyljI/AAAAAAAAAe4/7PXOUsah3z8/s320/Screenshot-JBoss+JMX+Management+Console+-+Mozilla+Firefox.png" alt="" id="BLOGGER_PHOTO_ID_5236973933050369586" border="0" /&gt;&lt;/a&gt;You can do several options using the commands via JMX-Console, or as well as you can use command-line interface. At this moment we will use the JBoss profiler CLI, so go to jboss-profiler2-beta-2-folder/ in your shell (Unix or Win) and type the following command: java -jar jboss-profiler-client.jar , the result will be the following:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;[jsilva@jsilva jboss-profiler-2.0.Beta2]$ java -jar jboss-profiler-client.jar&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Usage: Client [-h host] [-p port] &lt;command&gt;&lt;/command&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;       startProfiler  : Start the profiler&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;       stopProfiler   : Stop the profiler&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;       snapshot       : Take a snapshot&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;       getSnapshot    : Get a snapshot&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;       listSnapshots  : List snapshots&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;       clearSnapshots : Clear snapshots&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;       gc             : Trigger garbage collection&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;       enable         : Enable the profiler&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;       disable        : Disable the profiler&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;       load           : Load a snapshot&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;       save           : Save a snapshot&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;       diff           : Difference between snapshots&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;       add            : Add classes (repository must be enabled)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;       remove         : Remove classes (repository must be enabled)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;As far you can see you have all these options to invoke profiler operations, for testing I used the following:&lt;br /&gt;&lt;br /&gt;1- java -jar jboss-profiler-client.jar snapshot - Which generated a snapshot.&lt;br /&gt;2-java -jar jboss-profiler-client.jar listSnapshots - Which shows all snapshots I had taken from my App Server.&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;[jsilva@jsilva jboss-profiler-2.0.Beta2]$ java -jar jboss-profiler-client.jar listSnapshots&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;1: 21 August 2008 11:23:54:296 -&gt; 21 August 2008 11:24:17:117&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;2: 21 August 2008 11:39:05:687 -&gt; 21 August 2008 11:39:31:255&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;3: 21 August 2008 11:41:59:145 -&gt; 21 August 2008 11:43:25:691&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;3- java -jar jboss-profiler-client.jar getSnapshot 3 - Which tells to my client flush in my disk the info about my snapshot number 3, after this if you type a ls (dir for win), you can see the folder with thesnapshot  timestamp. Please enter on this folder and list the files and folders again, the results would be something like:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;[jsilva@jsilva 20080821114159145-20080821114325691]$ ls&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;caller  classes  classes.txt  hotspots.txt  methods.txt  overview.txt  packages.txt  threads&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;On the files above you can see the information about your classes, in my case, I just did some operations with my simple bpm application. Take a look on the overview.txt report content:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;From: 21 August 2008 11:41:59:145&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;To  : 21 August 2008 11:43:25:691&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Threads:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;========&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Thread-60    20063.47 ms&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Most time:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;==========&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Count    Ms    %    Method&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;1    13453.22    67.05    org.jbpm.persistence.db.DbPersistenceServiceFactory#getSessionFactory()&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;1    6078.74    30.30    org.jbpm.db.hibernate.HibernateHelper#createConfiguration(String, String)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;3    134.04    0.67    org.jbpm.configuration.ObjectFactoryImpl#getObject(org.jbpm.configuration.ObjectInfo)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;6    116.03    0.58    org.jbpm.configuration.ObjectFactoryImpl#loadClass(String)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;1    84.82    0.42    org.jbpm.persistence.db.DbPersistenceServiceFactory#openService()&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;1    79.14    0.39    org.jbpm.persistence.db.DbPersistenceServiceFactory#getConfiguration()&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;1    56.08    0.28    org.jbpm.persistence.db.StaleObjectLogConfigurer#wrap(org.apache.commons.logging.Log)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;14    29.55    0.15    org.jbpm.calendar.Day#(String, java.text.DateFormat, org.jbpm.calendar.BusinessCalendar)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;24    4.53    0.02    org.jbpm.calendar.Holiday#(String, java.text.DateFormat, org.jbpm.calendar.BusinessCalendar)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;2    3.51    0.02    org.jbpm.calendar.Holiday#parseHolidays(java.util.Properties, org.jbpm.calendar.BusinessCalendar)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Hotspots:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;=========&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Count    Ms    Avg    %    Method&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;1    13453.22    13453.22    67.05    org.jbpm.persistence.db.DbPersistenceServiceFactory#getSessionFactory()&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;1    6078.74    6078.74    30.30    org.jbpm.db.hibernate.HibernateHelper#createConfiguration(String, String)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;1    84.82    84.82    0.42    org.jbpm.persistence.db.DbPersistenceServiceFactory#openService()&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;1    79.14    79.14    0.39    org.jbpm.persistence.db.DbPersistenceServiceFactory#getConfiguration()&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;1    56.08    56.08    0.28    org.jbpm.persistence.db.StaleObjectLogConfigurer#wrap(org.apache.commons.logging.Log)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;3    134.04    44.68    0.67    org.jbpm.configuration.ObjectFactoryImpl#getObject(org.jbpm.configuration.ObjectInfo)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;6    116.03    19.34    0.58    org.jbpm.configuration.ObjectFactoryImpl#loadClass(String)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;14    29.55    2.11    0.15    org.jbpm.calendar.Day#(String, java.text.DateFormat, org.jbpm.calendar.BusinessCalendar)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;2    3.51    1.76    0.02    org.jbpm.calendar.Holiday#parseHolidays(java.util.Properties, org.jbpm.calendar.BusinessCalendar)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;1    1.35    1.35    0.01    org.jbpm.util.XmlUtil#parseXmlInputSource(org.xml.sax.InputSource)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Allocations:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;============&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;org.jbpm.db.hibernate.StringMax    149&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;org.jbpm.db.hibernate.ConverterEnumType    49&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;org.jbpm.configuration.AbstractObjectInfo    32&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;org.jbpm.calendar.Holiday    24&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;org.jbpm.calendar.Day    14&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;org.jbpm.configuration.FieldInfo    9&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Conclusion&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;JBoss Profiler 2 is built on top of really cool technologies, such as JBoss AOP and JavaAssist, feel you free to contribute with bug-fixes, documentation or with whatever you think could be valuable for the project, it would be a great chance for joining at a JBoss Project as a contributor, as far the actual contributors: Jesper Pedersen, Clebert Succonic and I are not dedicated as a full-time developers for Profiler, the work you can see as the result is a really big effort that Jesper and Clebert are doing. Beyond simple CLI interface, we are planning 2 really cool news, one of that is a new JBoss Profiler console based on RichFaces and related technologies, besides a Plugin for JBoss Operations Network/RHQ Project as well.&lt;br /&gt;&lt;br /&gt;Visit: &lt;a href="http://www.jboss.org/jbossprofiler/"&gt;http://www.jboss.org/jbossprofiler/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7107194769059181627-180737887365052136?l=ankiewsky.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ankiewsky.blogspot.com/feeds/180737887365052136/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7107194769059181627&amp;postID=180737887365052136' title='11 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7107194769059181627/posts/default/180737887365052136'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7107194769059181627/posts/default/180737887365052136'/><link rel='alternate' type='text/html' href='http://ankiewsky.blogspot.com/2008/08/installing-testing-and-using-jboss.html' title='Installing, testing and Using JBoss Profiler 2.0 - beta2'/><author><name>Edgar Ankiewsky Silva</name><uri>http://www.blogger.com/profile/07488052711588628833</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://farm3.static.flickr.com/2269/2042929603_ed0711917e_s.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_3evqY311jfA/SK14C6FyljI/AAAAAAAAAe4/7PXOUsah3z8/s72-c/Screenshot-JBoss+JMX+Management+Console+-+Mozilla+Firefox.png' height='72' width='72'/><thr:total>11</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7107194769059181627.post-3368399564771395423</id><published>2008-08-04T18:49:00.000-07:00</published><updated>2008-08-04T19:16:37.446-07:00</updated><title type='text'>RESTEasy+jBPM: A Proof of Concept for a Process Server</title><content type='html'>&lt;p&gt;This is a post where I will try share some thoughts about where REST could be useful inside a SOA architecture based on Open Source Technologies using REST and Business Process Management, in that case we will be using jBPM and RESTEasy, which is the JBoss's implementation for &lt;a href="https://jsr311.dev.java.net/"&gt;JSR311- Java Restful WebServices&lt;/a&gt;.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;h3&gt;RESTEasy&lt;/h3&gt;RestEasy is a project that is getting a good relevance in terms of integration with some projects inside JBoss.ORG and even other projects. If you are trying use a simple REST implementation you should take a look on this projects, basically there are few steps you must to do to put RestEasy working for your Application, so see the following Steps:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;p&gt;Download the &lt;a href="http://wiki.jboss.org/wiki/RESTeasyJAXRS"&gt;RESTEasy&lt;/a&gt; from JBoss.ORG&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;There is a worth documentation in &lt;a href="http://wiki.jboss.org/wiki/RESTeasyJAXRS"&gt;RESTEasy Wiki&lt;/a&gt;, which I strongly recommend you read it first, in addition to this, in order to see some foundation for practical REST application, you can read this great&lt;a href="http://weblogs.java.net/blog/caroljmcdonald/archive/2008/07/a_dynamic_ajax_1.html"&gt; blog entry&lt;/a&gt; written by &lt;a href="http://weblogs.java.net/blog/caroljmcdonald"&gt;Carol McDonald&lt;/a&gt;&lt;/p&gt; &lt;/li&gt;&lt;li&gt;To make the things works, I recomend you read this link:&lt;a href="http://wiki.jboss.org/wiki/RESTeasyInstall"&gt; http://wiki.jboss.org/wiki/RESTeasyInstal&lt;/a&gt;, RESTEasy is pretty easy to understand and apply in even legacy Java applications, where you can expose some methods simply putting some annotations into your pojos. Basically the steps are:&lt;/li&gt;&lt;/ol&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;RESTeasy is deployed as a WAR archive and thus depends on a Servlet container. When you download RESTeasy and unzip it you will see that it contains an exploded WAR. Make a deep copy of the WAR archive for your particular application. Place your JAX-RS annotated class resources and providers within one or more jars within /WEB-INF/lib or your raw class files within /WEB-INF/classes. RESTeasy is configured by default to scan jars and classes within these directories for JAX-RS annotated classes and deploy and register them within the system:&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h4 style="margin-left: 1.58in;"&gt;Custom configuration&lt;/h4&gt;&lt;p style="margin-left: 1.58in;"&gt;RESTeasy is implemented as a&lt;u&gt; ServletContextListener&lt;/u&gt;&lt;a href="http://wiki.jboss.org/wiki/ServletContextListener"&gt;?&lt;/a&gt; and a Servlet and deployed within a WAR file. If you open up the WEB-INF/web.xml in your RESTeasy download you will see this:&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;pre style="margin-left: 1.58in;"&gt;&amp;lt;web-app&amp;gt;&lt;br /&gt; &amp;lt;display-name&amp;gt;Archetype Created Web Application&amp;lt;/display-name&amp;gt;&lt;br /&gt; &amp;lt;context-param&amp;gt;&lt;br /&gt;    &amp;lt;param-name&amp;gt;resteasy.scan&amp;lt;/param-name&amp;gt;&lt;br /&gt;    &amp;lt;param-value&amp;gt;true&amp;lt;/param-value&amp;gt;&lt;br /&gt; &amp;lt;/context-param&amp;gt;&lt;br /&gt;&lt;br /&gt; &amp;lt;listener&amp;gt;&lt;br /&gt;    &amp;lt;listener-class&amp;gt;org.resteasy.plugins.server.servlet.ResteasyBootstrap&amp;lt;/listener-class&amp;gt;&lt;br /&gt; &amp;lt;/listener&amp;gt;&lt;br /&gt;&lt;br /&gt; &amp;lt;servlet&amp;gt;&lt;br /&gt;    &amp;lt;servlet-name&amp;gt;Resteasy&amp;lt;/servlet-name&amp;gt;&lt;br /&gt;    &amp;lt;servlet-class&amp;gt;org.resteasy.plugins.server.servlet.HttpServletDispatcher&amp;lt;/servlet-class&amp;gt;&lt;br /&gt; &amp;lt;/servlet&amp;gt;&lt;br /&gt;&lt;br /&gt; &amp;lt;servlet-mapping&amp;gt;&lt;br /&gt;    &amp;lt;servlet-name&amp;gt;Resteasy&amp;lt;/servlet-name&amp;gt;&lt;br /&gt;    &amp;lt;url-pattern&amp;gt;/*&amp;lt;/url-pattern&amp;gt;&lt;br /&gt; &amp;lt;/servlet-mapping&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/web-app&amp;gt;&lt;/pre&gt;&lt;p style="margin-left: 1.58in;"&gt;&lt;br /&gt;The &lt;tt&gt;&lt;u&gt;ResteasyBootstrap&lt;/u&gt;&lt;/tt&gt; listener is responsible for initializing some basic components of RESTeasy as well as scanning for annotation classes you have in your WAR file. It receives configuration options from &amp;lt;context-param&amp;gt; elements. Here's a list of what options are available&lt;br /&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;And that's all! Everything you need is ready to run your REST&lt;br /&gt;Services in any JEE App Server.&lt;/p&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;h3&gt;Proof of Concept of a “Process Server”&lt;/h3&gt;We have several open source BPM Engines , I am using JBoss jBPM because I wanna show you a Web-Console where the process are running on, in addition a graphical tool to design my processes.&lt;br /&gt;First of all I have a really simple “Controller” based on REST principles, nothing too complex or beautiful so far, but is useful, so I created a simple class called &lt;b&gt;RestService.java &lt;/b&gt;where you can find many useful methods to operate business process using jBPM. Based on my own experience could be considered a “best practice” you design your URLs first, who knows some day we could create a tool (ant or maven), that could based on a text file containing one URL per line, where after reading it could create an abstract class with the methods. (Maybe a good way to forget any XML). Based on this practice I wanna give the ability for PHP, .net or even HTML interact with my “Process Server”, to do that I can&lt;span style=""&gt;have the following URLs:&lt;/span&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;p style=""&gt;&lt;span style="font-weight: bold;"&gt;/start/process/{some&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt; process}/{some user to be associated to my Swilanes}&lt;/span&gt;, it I can pass&lt;br /&gt;via a GET method and I can keep the process id as my return&lt;/p&gt; &lt;/li&gt;&lt;li&gt;&lt;p style=""&gt;&lt;span style="font-weight: bold;"&gt;/signal/process/{the process id I&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt; must have stored somewhere}/{user}&lt;/span&gt; , via a GET I can navigate into&lt;br /&gt;my process&lt;br /&gt;&lt;/p&gt; &lt;/li&gt;&lt;li&gt;&lt;p style=""&gt;&lt;span style="font-weight: bold;"&gt;/process/{process id}/add/var&lt;/span&gt; ,&lt;br /&gt;via a GET I can get a way to add some variables for my process&lt;br /&gt;execution&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;ol&gt;&lt;p style=""&gt;Based on these 4 actions I defined above, I can show you now how implement them:&lt;/p&gt;&lt;br /&gt;&lt;/ol&gt;&lt;h3&gt;1- Start a new Process Instance&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;p style=""&gt;For jBPM you must have access to Context, which is the key object to operate processes using jBPM.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p style=""&gt;The following code shows this method in action:&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(100, 100, 100);"&gt;@GET&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;p style="margin-bottom: 0in;" align="left"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(100, 100, 100);"&gt;@Path&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(42, 0, 255);"&gt;"/start/process/{processdefinition}/{user}"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style="margin-bottom: 0in;" align="left"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(100, 100, 100);"&gt;@ProduceMime&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(42, 0, 255);"&gt;"text/plain"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style="margin-bottom: 0in;" align="left"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;b&gt;&lt;span style="color: rgb(127, 0, 85);"&gt;public&lt;/span&gt;&lt;/b&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;String startProcesInstance(&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style="margin-bottom: 0in;" align="left"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;   &lt;/span&gt;&lt;span style="color: rgb(100, 100, 100);"&gt;@PathParam&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(42, 0, 255);"&gt;"processdefinition"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)String&lt;br /&gt;processDefintion, &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style="margin-bottom: 0in;" align="left"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;   &lt;/span&gt;&lt;span style="color: rgb(100, 100, 100);"&gt;@PathParam&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(42, 0, 255);"&gt;"user"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)String&lt;br /&gt;user) {&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style="margin-bottom: 0in;" align="left"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span style="font-size:85%;"&gt;  JbpmContext&lt;br /&gt;ctx = JbpmConfiguration.&lt;i&gt;getInstance&lt;/i&gt;().createJbpmContext();&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style="margin-bottom: 0in;" align="left"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  &lt;/span&gt;&lt;b&gt;&lt;span style="color: rgb(127, 0, 85);"&gt;try&lt;/span&gt;&lt;/b&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style="margin-bottom: 0in;" align="left"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span style="font-size:85%;"&gt;   ProcessInstance&lt;br /&gt;instance = ctx.newProcessInstance(processDefintion);&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style="margin-bottom: 0in;" align="left"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;   instance.getContextInstance().setVariable(&lt;/span&gt;&lt;span style="color: rgb(42, 0, 255);"&gt;"user"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&lt;br /&gt;user);&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style="margin-bottom: 0in;" align="left"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span style="font-size:85%;"&gt;   Token&lt;br /&gt;t = instance.getRootToken();&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style="margin-bottom: 0in;" align="left"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span style="font-size:85%;"&gt;   t.signal();&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style="margin-bottom: 0in;" align="left"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt; ctx.save(instance);&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style="margin-bottom: 0in;" align="left"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style="margin-bottom: 0in;" align="left"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;   &lt;/span&gt;&lt;b&gt;&lt;span style="color: rgb(127, 0, 85);"&gt;return&lt;/span&gt;&lt;/b&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;b&gt;&lt;span style="color: rgb(127, 0, 85);"&gt;new&lt;/span&gt;&lt;/b&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;Long(instance.getId()).toString();&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style="margin-bottom: 0in;" align="left"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;span style="font-family:Courier New,monospace;"&gt;&lt;span style="font-size:85%;"&gt;  }&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style="margin-bottom: 0in;" align="left"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  &lt;/span&gt;&lt;b&gt;&lt;span style="color: rgb(127, 0, 85);"&gt;catch&lt;/span&gt;&lt;/b&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;(Exception e) {&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style="margin-bottom: 0in;" align="left"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span style="font-size:85%;"&gt;   e.printStackTrace();&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style="margin-bottom: 0in;" align="left"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span style="font-size:85%;"&gt;  }&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style="margin-bottom: 0in;" align="left"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  &lt;/span&gt;&lt;b&gt;&lt;span style="color: rgb(127, 0, 85);"&gt;finally&lt;/span&gt;&lt;/b&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style="margin-bottom: 0in;" align="left"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span style="font-size:85%;"&gt;   ctx.close();&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style="margin-bottom: 0in;" align="left"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span style="font-size:85%;"&gt;  }&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style="margin-bottom: 0in;" align="left"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  &lt;/span&gt;&lt;b&gt;&lt;span style="color: rgb(127, 0, 85);"&gt;return&lt;/span&gt;&lt;/b&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(42, 0, 255);"&gt;"ERROR"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;2 - Signaling your Process&lt;/h3&gt;&lt;p&gt;Once you have your Process Id, you can operate it and do whatever you want, this is one of the “Key-benefits” in jBPM, the ability to keep everything related to the process stored in the database, and not in the memory, it allow you have several application interacting with your &lt;b&gt;Process Engine&lt;/b&gt;, for my testing, I have jBPM Server (jBPM+JBoss [could be any other AppServer]) in one IP address, and a TomCat with my simple REST application based in RESTEasy. Keep in mind, that having your process stored in regular tables in many Databases supported by Java, you shall create many kinds of applications, you may use Hibernate for persistence, query and cache as well as JDBC or even Spring helpers. See the following source code to allow this action:&lt;/p&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(100, 100, 100);"&gt;@GET&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;p style="margin-bottom: 0in;" align="left"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(100, 100, 100);"&gt;@Path&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(42, 0, 255);"&gt;"/signal/process/{id}/{user}"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style="margin-bottom: 0in;" align="left"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(100, 100, 100);"&gt;@ProduceMime&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(42, 0, 255);"&gt;"text/plain"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style="margin-bottom: 0in;" align="left"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;b&gt;&lt;span style="color: rgb(127, 0, 85);"&gt;public&lt;/span&gt;&lt;/b&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;String signalProcess(&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style="margin-bottom: 0in;" align="left"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;   &lt;/span&gt;&lt;span style="color: rgb(100, 100, 100);"&gt;@PathParam&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(42, 0, 255);"&gt;"id"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)String&lt;br /&gt;id, &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style="margin-bottom: 0in;" align="left"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;   &lt;/span&gt;&lt;span style="color: rgb(100, 100, 100);"&gt;@PathParam&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(42, 0, 255);"&gt;"user"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)String&lt;br /&gt;user) {&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style="margin-bottom: 0in;" align="left"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;   JbpmContext ctx =&lt;br /&gt;JbpmConfiguration.&lt;i&gt;getInstance&lt;/i&gt;().createJbpmContext();&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style="margin-bottom: 0in;" align="left"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span style="font-size:85%;"&gt;&lt;b&gt;&lt;span style="color: rgb(127, 0, 85);"&gt;try&lt;/span&gt;&lt;/b&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0in;" align="left"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;     GraphSession graphSession = ctx.getGraphSession();&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0in;" align="left"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;     ProcessInstance processInstance =&lt;br /&gt;graphSession.loadProcessInstance((&lt;/span&gt;&lt;b&gt;&lt;span style="color: rgb(127, 0, 85);"&gt;new&lt;/span&gt;&lt;/b&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;Long(id)).longValue());&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style="margin-bottom: 0in;" align="left"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;      &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span style="font-size:85%;"&gt;processInstance.signal();&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0in;" align="left"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span style="font-size:85%;"&gt;ctx.save(processInstance);&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0in;" align="left"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;     &lt;/span&gt;&lt;b&gt;&lt;span style="color: rgb(127, 0, 85);"&gt;return&lt;/span&gt;&lt;/b&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;processInstance.getRootToken().getNode().getName(); &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style="margin-bottom: 0in;" align="left"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;     &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;} &lt;/span&gt;&lt;b&gt;&lt;span style="color: rgb(127, 0, 85);"&gt;catch&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0in;" align="left"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(Exception e ) {&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style="margin-bottom: 0in;" align="left"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;      e.printStackTrace();&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style="margin-bottom: 0in;" align="left"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;      &lt;/span&gt;&lt;b&gt;&lt;span style="color: rgb(127, 0, 85);"&gt;return&lt;/span&gt;&lt;/b&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(42, 0, 255);"&gt;"ERROR"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style="margin-bottom: 0in;" align="left"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;     }&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style="margin-bottom: 0in;" align="left"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;     &lt;/span&gt;&lt;b&gt;&lt;span style="color: rgb(127, 0, 85);"&gt;finally&lt;/span&gt;&lt;/b&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style="margin-bottom: 0in;" align="left"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;      ctx.close();&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style="margin-bottom: 0in;" align="left"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;     }&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style="margin-bottom: 0in;" align="left"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:Courier New,monospace;"&gt; }&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;h3&gt;3 – Adding variables to your processes via a simple URL &lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;For many reasons, you might need some variables for your processes, maybe for a decision taken or for anything else, so the following source shows how you can get the HttpServletRequest using the injection executed by the REST implementation. This method shows you how you can use contextual http objects, besides your variables from URL.&lt;/span&gt;&lt;/p&gt; &lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;This could be really useful to capture other information, or even process some files not using GET method,&lt;br /&gt;but the POST method for instance, see the following implementation:&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p style="margin-bottom: 0in;" align="left"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(100, 100, 100);"&gt;@GET&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style="margin-bottom: 0in;" align="left"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(100, 100, 100);"&gt;@Path&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(42, 0, 255);"&gt;"/process/{id}/add/var"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style="margin-bottom: 0in;" align="left"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(100, 100, 100);"&gt;@ProduceMime&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(42, 0, 255);"&gt;"text/plain"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style="margin-bottom: 0in;" align="left"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;b&gt;&lt;span style="color: rgb(127, 0, 85);"&gt;public&lt;/span&gt;&lt;/b&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;String addVariables(&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style="margin-bottom: 0in;" align="left"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;   &lt;/span&gt;&lt;span style="color: rgb(100, 100, 100);"&gt;@PathParam&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(42, 0, 255);"&gt;"id"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)String&lt;br /&gt;id,&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style="margin-bottom: 0in;" align="left"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;   &lt;/span&gt;&lt;span style="color: rgb(100, 100, 100);"&gt;@Context&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;HttpServletRequest request) {&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style="margin-bottom: 0in;" align="left"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;   JbpmContext ctx =&lt;br /&gt;JbpmConfiguration.&lt;i&gt;getInstance&lt;/i&gt;().createJbpmContext();&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span style="font-size:85%;"&gt;&lt;b&gt;&lt;span style="color: rgb(127, 0, 85);"&gt;try&lt;/span&gt;&lt;/b&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;p style="margin-bottom: 0in;" align="left"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;     GraphSession graphSession = ctx.getGraphSession();&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style="margin-bottom: 0in;" align="left"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;       ProcessInstance processInstance =&lt;br /&gt;graphSession.loadProcessInstance((&lt;/span&gt;&lt;b&gt;&lt;span style="color: rgb(127, 0, 85);"&gt;new&lt;/span&gt;&lt;/b&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;Long(id)).longValue());&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span style="font-size:85%;"&gt;Enumeration  params = request.getParameterNames();&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;p style="margin-bottom: 0in;" align="left"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span style="font-size:85%;"&gt;       String param;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style="margin-bottom: 0in;" align="left"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;       StringBuilder b = &lt;/span&gt;&lt;b&gt;&lt;span style="color: rgb(127, 0, 85);"&gt;new&lt;/span&gt;&lt;/b&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; StringBuilder();&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style="margin-bottom: 0in;" align="left"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;       &lt;/span&gt;&lt;b&gt;&lt;span style="color: rgb(127, 0, 85);"&gt;while&lt;/span&gt;&lt;/b&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;(params.hasMoreElements()) {&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span style="font-size:85%;"&gt;param = (String) params.nextElement();&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;p style="margin-bottom: 0in;" align="left"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;      processInstance.getContextInstance().setVariable(param,&lt;br /&gt;request.getParameter(param));&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style="margin-bottom: 0in;" align="left"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        b.append(String.&lt;i&gt;format&lt;/i&gt;(&lt;/span&gt;&lt;span style="color: rgb(42, 0, 255);"&gt;"Param:%s=%s&lt;br /&gt;is Stored in BPM Context\n"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,param,request.getParameter(param)));&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span style="font-size:85%;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;p style="margin-bottom: 0in;" align="left"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span style="font-size:85%;"&gt;ctx.save(processInstance);&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0in;" align="left"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;    &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0in;" align="left"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span style="font-size:85%;"&gt;       &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style="color: rgb(127, 0, 85);"&gt;return&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0in;" align="left"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;b.toString(); &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p style="margin-bottom: 0in;" align="left"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;     } &lt;/span&gt;&lt;b&gt;&lt;span style="color: rgb(127, 0, 85);"&gt;catch&lt;/span&gt;&lt;/b&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;(Exception e ) {&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style="margin-bottom: 0in;" align="left"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;      e.printStackTrace();&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style="margin-bottom: 0in;" align="left"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;      &lt;/span&gt;&lt;b&gt;&lt;span style="color: rgb(127, 0, 85);"&gt;return&lt;/span&gt;&lt;/b&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(42, 0, 255);"&gt;"ERROR"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style="margin-bottom: 0in;" align="left"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;     }&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style="margin-bottom: 0in;" align="left"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;     &lt;/span&gt;&lt;b&gt;&lt;span style="color: rgb(127, 0, 85);"&gt;finally&lt;/span&gt;&lt;/b&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style="margin-bottom: 0in;" align="left"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;      ctx.close();&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style="margin-bottom: 0in;" align="left"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;     }&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style="margin-bottom: 0in;" align="left"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:Courier New,monospace;"&gt; }&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;h3&gt;Time for Testing&lt;/h3&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;As far you can see, everything on our example just returns basic “plain texts” as results, so we canuse those everywhere, in The &lt;a href="http://www.thedevelopersconference.com.br/"&gt;Developers Conference&lt;/a&gt; (A Brazilian Java Conference) I did an examples really “old school”, I used a Borland Delphi 5 client, in terms of integration, I can get an existing Delphi or Visual Basic Application and integrate them with my “Process Server”, than for our Proof of Concept. My process for testing is really easy, as far you can see&lt;br /&gt;in the following image:&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;img src="http://weblogs.java.net/blog/edgars/processimage2.jpg" name="graphics1" height="468" width="749" align="left" border="0" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;This is a simple “Buying Process”, where could be used for many different scenarios, on our case, we try simulate a simple Delphi client interacting with this process. On Delphi's side, I need just a component to interact with HTTP requests&lt;br /&gt;and nothing else, so in my case I used  TidHTTP object for it.&lt;/span&gt;&lt;/p&gt;&lt;h3&gt;My Process Server in Action&lt;/h3&gt;&lt;p&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;When we execute the following URL:&lt;a href="http://192.168.161.1:8080/flowlet/start/process/buyticket/edgar"&gt; http://192.168.161.1:8080/flowlet/start/process/buyticket/edgar&lt;/a&gt; , we are informing the process name: &lt;i&gt;buyticket &lt;/i&gt;&lt;span style="font-style: normal;"&gt;and&lt;br /&gt;the user ir &lt;/span&gt;&lt;i&gt;edgar &lt;/i&gt;&lt;span style="font-style: normal;"&gt;, and the result we can expect is a text with process id as the text returned via Http, see the following image:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style="font-style: normal;"&gt;&lt;img src="http://weblogs.java.net/blog/edgars/rest1.png" name="graphics2" height="282" width="785" align="left" border="0" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style="font-style: normal;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;After execute our method, the process instance id is &lt;b&gt;124&lt;/b&gt;&lt;span style=""&gt;, this id might be used for this process interaction, at this moment, my application is used a process which was deployed in my Process Server, and then we can create a new instance from the process called&lt;/span&gt;&lt;b&gt; buyticket &lt;/b&gt;&lt;span style=""&gt;&lt;i&gt;, &lt;/i&gt;so everything is stored in the database, and we can create any kind of&lt;br /&gt;information based on database tables about our process instances,&lt;br /&gt;such as: “Execution time”, “Troubleshooting”  and so on. &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="font-style: normal;"&gt;Now,&lt;span style="color: rgb(0, 0, 0);"&gt;it's time to see our JBoss jBPM Console in action, take a look on my process listing and you can see the process instance id: &lt;b&gt;124:&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style="font-style: normal;"&gt;&lt;img src="http://weblogs.java.net/blog/edgars/rest2.png" name="graphics3" height="534" width="858" align="left" border="0" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style="font-style: normal;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="font-style: normal;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;And you can see where in the process, you process instance actually is stopped:&lt;/span&gt;&lt;/p&gt;&lt;p style="font-style: normal;"&gt;&lt;img src="http://weblogs.java.net/blog/edgars/rest3.png" name="graphics4" height="789" width="1051" align="left" border="0" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Now, it's time to navigate through the process instance, so I will execute the following rest URL:&lt;br /&gt;&lt;a href="http://192.168.161.1:8080/flowlet/signal/process/124/edgar"&gt;http://192.168.161.1:8080/flowlet/signal/process/124/edgar&lt;/a&gt; , the result are the following screen shots:&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;img src="http://weblogs.java.net/blog/edgars/rest4.png" name="graphics5" height="271" width="782" align="left" border="0" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;This method, basically execute the &lt;i&gt;signal&lt;/i&gt;&lt;span style="font-style: normal;"&gt; into the process instance, and move the process to the next node, as far you can in the result and in the following image in the jBPM Console:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style="font-style: normal;"&gt;&lt;img src="http://weblogs.java.net/blog/edgars/rest5.png" name="graphics6" height="787" width="1054" align="left" border="0" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-style: normal;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Adding the variables based on HttpServletRequest shall be executed using the&lt;br /&gt;following URL:&lt;br /&gt;&lt;a href="http://192.168.161.1:8080/flowlet/process/124/add/var?payment=Yes&amp;amp;blog=Edgar"&gt;&lt;/a&gt;&lt;a href="http://192.168.161.1:8080/flowlet/process/124/add/var?payment=Yes&amp;amp;blog=Edgar"&gt;http://192.168.161.1:8080/flowlet/process/124/add/var?payment=Yes&amp;amp;blog=Edgar&lt;/a&gt;&lt;a href="http://192.168.161.1:8080/flowlet/process/124/add/var?payment=Yes&amp;amp;blog=Edgar"&gt;&lt;/a&gt;&lt;br /&gt;, so based on the Java Web technologies, you can assume that you have 2 variables: &lt;i&gt;payment &lt;/i&gt;and &lt;i&gt;blog&lt;/i&gt;, so what we wanna do now is to transfer these variables from http context, which are durable just while the server is running or some clustering replication in really durable information stored in the database as &lt;i&gt;process variables. &lt;/i&gt;In addition to this capacity, imagine that we need some variable to define some execution path in the process instance handling, like a decision handler based on some expression(EL) based on some variable, for instance: &lt;b&gt;&lt;i&gt; &lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span style="color: rgb(127, 0, 127);"&gt;expression&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(42, 0, 255);"&gt;'{payment=="No"}'&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style=""&gt;&lt;span style="font-style: normal;"&gt;; this expression can decide in the decision-node &lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;i&gt;“Is Payment Approved?” &lt;/i&gt;&lt;/b&gt;&lt;span style=""&gt;&lt;span style="font-style: normal;"&gt;which path(direction) the process will go as the next execution node and transitions. See the results in the following images:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style="font-style: normal;"&gt;&lt;img src="http://weblogs.java.net/blog/edgars/rest6.png" name="graphics7" height="351" width="954" align="left" border="0" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style="font-style: normal;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="font-style: normal;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Now, we can signal the process again, and the results in our &lt;b&gt;jBPM Server &lt;/b&gt;&lt;span style=""&gt;could be as the following &lt;/span&gt;&lt;b&gt;&lt;i&gt;:&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;img src="http://weblogs.java.net/blog/edgars/rest7.png" name="graphics8" height="780" width="992" align="left" border="0" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;h3&gt;&lt;br /&gt;&lt;/h3&gt;&lt;h3&gt;&lt;br /&gt;&lt;/h3&gt;&lt;h3&gt;&lt;br /&gt;&lt;/h3&gt;&lt;h3&gt;&lt;br /&gt;&lt;/h3&gt;&lt;h3&gt;Conclusion&lt;/h3&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Basically, as far you can see &lt;b&gt;Process Server &lt;/b&gt;&lt;span style=""&gt;is something beyond a product, can be a &lt;i&gt;concept &lt;/i&gt;&lt;span style="font-style: normal;"&gt;that you can apply in many different ways, and one of that, for sure could be using Open-Source technologies, such as we had shown here on this entry.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;p style="font-style: normal;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style="font-style: normal;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;br /&gt;&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/7107194769059181627-3368399564771395423?l=ankiewsky.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ankiewsky.blogspot.com/feeds/3368399564771395423/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7107194769059181627&amp;postID=3368399564771395423' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7107194769059181627/posts/default/3368399564771395423'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7107194769059181627/posts/default/3368399564771395423'/><link rel='alternate' type='text/html' href='http://ankiewsky.blogspot.com/2008/08/resteasyjbpm-proof-of-concept-for.html' title='RESTEasy+jBPM: A Proof of Concept for a Process Server'/><author><name>Edgar Ankiewsky Silva</name><uri>http://www.blogger.com/profile/07488052711588628833</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://farm3.static.flickr.com/2269/2042929603_ed0711917e_s.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7107194769059181627.post-4121072932729942789</id><published>2008-07-23T09:24:00.000-07:00</published><updated>2008-07-23T11:28:16.871-07:00</updated><title type='text'>RESTEasy tips: Part 1</title><content type='html'>If you are planning build an application using RESTFul WebServices (I don't like this terminology), &lt;a href="http://wiki.jboss.org/wiki/RESTeasyJAXRS"&gt;RESTEasy&lt;/a&gt; for sure could be your #1 option. Besides a cool documentation &lt;a href="http://wiki.jboss.org/wiki/RESTeasyJAXRS"&gt;here&lt;/a&gt;, I will publish here a cool example of how use RESTEasy method to upload some file via HTTP protocol.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;I don't wanna introduce nothing about REST, &lt;a href="http://wiki.jboss.org/wiki/RESTeasyJAXRS"&gt;Bill Burke&lt;/a&gt;, already did it at this &lt;a href="http://bill.burkecentral.com/2008/06/16/resteasy-mom-an-exercise-in-jax-rs-restful-ws-design/"&gt;entry&lt;/a&gt; on his blog. I strongly recommend you read it first. Bill Burke is the RESTEasy Project leader, so you can find out accurate information about all over the Projec&lt;/blockquote&gt;t.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Figuring Out a Service to be used for the most Stupid and Poor HTML Client &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;When we are talking about integration, we never can forget about limited languages used to build an UI, so my example shows a really simple HTML, where I wanna inform any file and upload to a specific folder where my Web container is running on. The client to this service can be from the simplest html until the a really nice extJS in PHP or Asp.net.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;font color="#2040a0"&gt;&lt;strong&gt;&lt;font color="#4444ff"&gt;&lt;strong&gt;&amp;lt;&lt;/strong&gt;&lt;/font&gt;&lt;font color="#2040a0"&gt;form&lt;/font&gt; &lt;font color="#2040a0"&gt;method=&lt;/font&gt;&lt;font color="#008000"&gt;"POST"&lt;/font&gt; &lt;font color="#2040a0"&gt;action=&lt;/font&gt;&lt;font color="#008000"&gt;"http://localhost:8080/flowlet/upload/process"&lt;/font&gt; &lt;font color="#2040a0"&gt;enctype=&lt;/font&gt;&lt;font color="#008000"&gt;"multipart/form-data"&lt;/font&gt;&lt;font color="#4444ff"&gt;&lt;strong&gt;&amp;gt;&lt;/strong&gt;&lt;/font&gt;&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#2040a0"&gt;&lt;strong&gt;&lt;font color="#4444ff"&gt;&lt;strong&gt;&amp;lt;&lt;/strong&gt;&lt;/font&gt;&lt;font color="#2040a0"&gt;label&lt;/font&gt; &lt;font color="#2040a0"&gt;style=&lt;/font&gt;&lt;font color="#008000"&gt;"COLOR: #1a3663; FONT-WEIGHT: bold; FONT-SIZE: x-small; FONT-FAMILY: 'Verdana';"&lt;/font&gt;&lt;font color="#4444ff"&gt;&lt;strong&gt;&amp;gt;&lt;/strong&gt;&lt;/font&gt;&lt;/strong&gt;&lt;/font&gt;Please enter with the jar file location:&lt;font color="#2040a0"&gt;&lt;strong&gt;&lt;font color="#4444ff"&gt;&lt;strong&gt;&amp;lt;&lt;/strong&gt;&lt;/font&gt;&lt;font color="#2040a0"&gt;/label&lt;/font&gt;&lt;font color="#4444ff"&gt;&lt;strong&gt;&amp;gt;&lt;/strong&gt;&lt;/font&gt;&lt;/strong&gt;&lt;/font&gt;&lt;font color="#2040a0"&gt;&lt;strong&gt;&lt;font color="#4444ff"&gt;&lt;strong&gt;&amp;lt;&lt;/strong&gt;&lt;/font&gt;&lt;font color="#2040a0"&gt;br&lt;/font&gt;&lt;font color="#4444ff"&gt;&lt;strong&gt;&amp;gt;&lt;/strong&gt;&lt;/font&gt;&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&lt;font color="#2040a0"&gt;&lt;strong&gt;&lt;font color="#4444ff"&gt;&lt;strong&gt;&amp;lt;&lt;/strong&gt;&lt;/font&gt;&lt;font color="#2040a0"&gt;input&lt;/font&gt; &lt;font color="#2040a0"&gt;type=&lt;/font&gt;&lt;font color="#008000"&gt;"file"&lt;/font&gt; &lt;font color="#2040a0"&gt;size=&lt;/font&gt;&lt;font color="#008000"&gt;"50"&lt;/font&gt; &lt;font color="#2040a0"&gt;name=&lt;/font&gt;&lt;font color="#008000"&gt;"file"&lt;/font&gt;&lt;font color="#4444ff"&gt;&lt;strong&gt;&amp;gt;&lt;/strong&gt;&lt;/font&gt;&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#2040a0"&gt;&lt;strong&gt;&lt;font color="#4444ff"&gt;&lt;strong&gt;&amp;lt;&lt;/strong&gt;&lt;/font&gt;&lt;font color="#2040a0"&gt;input&lt;/font&gt; &lt;font color="#2040a0"&gt;type=&lt;/font&gt;&lt;font color="#008000"&gt;"submit"&lt;/font&gt; &lt;font color="#2040a0"&gt;value=&lt;/font&gt;&lt;font color="#008000"&gt;"Upload now!"&lt;/font&gt;&lt;font color="#4444ff"&gt;&lt;strong&gt;&amp;gt;&lt;/strong&gt;&lt;/font&gt;&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&lt;font color="#2040a0"&gt;&lt;strong&gt;&lt;font color="#4444ff"&gt;&lt;strong&gt;&amp;lt;&lt;/strong&gt;&lt;/font&gt;&lt;font color="#2040a0"&gt;/p&lt;/font&gt;&lt;font color="#4444ff"&gt;&lt;strong&gt;&amp;gt;&lt;/strong&gt;&lt;/font&gt;&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color="#2040a0"&gt;&lt;strong&gt;&lt;font color="#4444ff"&gt;&lt;strong&gt;&amp;lt;&lt;/strong&gt;&lt;/font&gt;&lt;font color="#2040a0"&gt;/form&lt;/font&gt;&lt;font color="#4444ff"&gt;&lt;strong&gt;&amp;gt;&lt;/strong&gt;&lt;/font&gt;&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;As far you can see, the action from my html form is just a simple URL and the method is POST, basically I will inform the file name, and then using &lt;span style="font-weight:bold;"&gt;Commons FileUpload&lt;/span&gt; I will upload a file using a RESTFul service.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Using javax.http.HttpServletRequest into your RESTFul Service&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;When you create your first service based on REST Model, you can feel really excited with REST approach, however you still need access some commons objects from a Java Web Application, so you may need access the Request object to get all their methods to interact with your application. In my case, I must get the Request object to use with my file upload component. To do that, with REST is really great, basically we will use something similar to what you can see in Dependency Injection in EJB3 or Seam. See the the code to implement a method to do this action:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt; @&lt;font color="#2040a0"&gt;POST&lt;/font&gt;&lt;br /&gt; @&lt;font color="#2040a0"&gt;Path&lt;/font&gt;&lt;font color="#4444ff"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="#008000"&gt;"/upload/process"&lt;/font&gt;&lt;font color="#4444ff"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt; @&lt;font color="#2040a0"&gt;ProduceMime&lt;/font&gt;&lt;font color="#4444ff"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="#008000"&gt;"text/plain"&lt;/font&gt;&lt;font color="#4444ff"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt; &lt;strong&gt;public&lt;/strong&gt; &lt;font color="#2040a0"&gt;String&lt;/font&gt; &lt;font color="#2040a0"&gt;uploadProcess&lt;/font&gt;&lt;font color="#4444ff"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;@&lt;font color="#2040a0"&gt;Context&lt;/font&gt; &lt;font color="#2040a0"&gt;HttpServletRequest&lt;/font&gt; &lt;font color="#2040a0"&gt;req&lt;/font&gt;&lt;font color="#4444ff"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt; &lt;strong&gt;throws&lt;/strong&gt; &lt;font color="#2040a0"&gt;Exception&lt;/font&gt; &lt;font color="#4444ff"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;  &lt;font color="#2040a0"&gt;FileItemFactory&lt;/font&gt; &lt;font color="#2040a0"&gt;factory&lt;/font&gt; &lt;font color="#4444ff"&gt;=&lt;/font&gt; &lt;strong&gt;new&lt;/strong&gt; &lt;font color="#2040a0"&gt;DiskFileItemFactory&lt;/font&gt;&lt;font color="#4444ff"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="#4444ff"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;font color="#4444ff"&gt;;&lt;/font&gt;&lt;br /&gt;  &lt;font color="#2040a0"&gt;ServletFileUpload&lt;/font&gt; &lt;font color="#2040a0"&gt;upload&lt;/font&gt; &lt;font color="#4444ff"&gt;=&lt;/font&gt; &lt;strong&gt;new&lt;/strong&gt; &lt;font color="#2040a0"&gt;ServletFileUpload&lt;/font&gt;&lt;font color="#4444ff"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="#2040a0"&gt;factory&lt;/font&gt;&lt;font color="#4444ff"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;font color="#4444ff"&gt;;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;  &lt;font color="#2040a0"&gt;List&lt;/font&gt;  &lt;font color="#2040a0"&gt;items&lt;/font&gt; &lt;font color="#4444ff"&gt;=&lt;/font&gt; &lt;font color="#2040a0"&gt;upload&lt;/font&gt;.&lt;font color="#2040a0"&gt;parseRequest&lt;/font&gt;&lt;font color="#4444ff"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="#2040a0"&gt;req&lt;/font&gt;&lt;font color="#4444ff"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;font color="#4444ff"&gt;;&lt;/font&gt;&lt;br /&gt;  &lt;font color="#2040a0"&gt;Iterator&lt;/font&gt; &lt;font color="#2040a0"&gt;iter&lt;/font&gt; &lt;font color="#4444ff"&gt;=&lt;/font&gt; &lt;font color="#2040a0"&gt;items&lt;/font&gt;.&lt;font color="#2040a0"&gt;iterator&lt;/font&gt;&lt;font color="#4444ff"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="#4444ff"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;font color="#4444ff"&gt;;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;  &lt;strong&gt;while&lt;/strong&gt; &lt;font color="#4444ff"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="#2040a0"&gt;iter&lt;/font&gt;.&lt;font color="#2040a0"&gt;hasNext&lt;/font&gt;&lt;font color="#4444ff"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="#4444ff"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;font color="#4444ff"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt; &lt;font color="#4444ff"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;      &lt;font color="#2040a0"&gt;FileItem&lt;/font&gt; &lt;font color="#2040a0"&gt;item&lt;/font&gt; &lt;font color="#4444ff"&gt;=&lt;/font&gt; &lt;font color="#4444ff"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="#2040a0"&gt;FileItem&lt;/font&gt;&lt;font color="#4444ff"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt; &lt;font color="#2040a0"&gt;iter&lt;/font&gt;.&lt;font color="#2040a0"&gt;next&lt;/font&gt;&lt;font color="#4444ff"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="#4444ff"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;font color="#4444ff"&gt;;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;      &lt;strong&gt;if&lt;/strong&gt; &lt;font color="#4444ff"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="#2040a0"&gt;item&lt;/font&gt;.&lt;font color="#2040a0"&gt;isFormField&lt;/font&gt;&lt;font color="#4444ff"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="#4444ff"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;font color="#4444ff"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt; &lt;font color="#4444ff"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;          &lt;font color="#2040a0"&gt;System&lt;/font&gt;.&lt;font color="#2040a0"&gt;out&lt;/font&gt;.&lt;font color="#2040a0"&gt;println&lt;/font&gt;&lt;font color="#4444ff"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="#008000"&gt;"FORM FIELD"&lt;/font&gt;&lt;font color="#4444ff"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;font color="#4444ff"&gt;;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;      &lt;font color="#4444ff"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/font&gt; &lt;strong&gt;else&lt;/strong&gt; &lt;font color="#4444ff"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;       &lt;strong&gt;if&lt;/strong&gt; &lt;font color="#4444ff"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="#4444ff"&gt;!&lt;/font&gt;&lt;font color="#2040a0"&gt;item&lt;/font&gt;.&lt;font color="#2040a0"&gt;isFormField&lt;/font&gt;&lt;font color="#4444ff"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="#4444ff"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;font color="#4444ff"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt; &lt;font color="#4444ff"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;           &lt;font color="#2040a0"&gt;String&lt;/font&gt; &lt;font color="#2040a0"&gt;fileName&lt;/font&gt; &lt;font color="#4444ff"&gt;=&lt;/font&gt; &lt;font color="#2040a0"&gt;item&lt;/font&gt;.&lt;font color="#2040a0"&gt;getName&lt;/font&gt;&lt;font color="#4444ff"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="#4444ff"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;font color="#4444ff"&gt;;&lt;/font&gt;&lt;br /&gt;           &lt;font color="#2040a0"&gt;System&lt;/font&gt;.&lt;font color="#2040a0"&gt;out&lt;/font&gt;.&lt;font color="#2040a0"&gt;println&lt;/font&gt;&lt;font color="#4444ff"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="#008000"&gt;"File Name:"&lt;/font&gt; &lt;font color="#4444ff"&gt;+&lt;/font&gt; &lt;font color="#2040a0"&gt;fileName&lt;/font&gt;&lt;font color="#4444ff"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;font color="#4444ff"&gt;;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;        &lt;font color="#2040a0"&gt;File&lt;/font&gt; &lt;font color="#2040a0"&gt;fullFile&lt;/font&gt;  &lt;font color="#4444ff"&gt;=&lt;/font&gt; &lt;strong&gt;new&lt;/strong&gt; &lt;font color="#2040a0"&gt;File&lt;/font&gt;&lt;font color="#4444ff"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="#2040a0"&gt;item&lt;/font&gt;.&lt;font color="#2040a0"&gt;getName&lt;/font&gt;&lt;font color="#4444ff"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="#4444ff"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;font color="#4444ff"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;font color="#4444ff"&gt;;&lt;/font&gt;  &lt;br /&gt;        &lt;font color="#2040a0"&gt;File&lt;/font&gt; &lt;font color="#2040a0"&gt;savedFile&lt;/font&gt; &lt;font color="#4444ff"&gt;=&lt;/font&gt; &lt;strong&gt;new&lt;/strong&gt; &lt;font color="#2040a0"&gt;File&lt;/font&gt;&lt;font color="#4444ff"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="#008000"&gt;"/home/jsilva/Desktop/test"&lt;/font&gt;, &lt;font color="#2040a0"&gt;fullFile&lt;/font&gt;.&lt;font color="#2040a0"&gt;getName&lt;/font&gt;&lt;font color="#4444ff"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="#4444ff"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;font color="#4444ff"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;font color="#4444ff"&gt;;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;        &lt;font color="#2040a0"&gt;item&lt;/font&gt;.&lt;font color="#2040a0"&gt;write&lt;/font&gt;&lt;font color="#4444ff"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="#2040a0"&gt;savedFile&lt;/font&gt;&lt;font color="#4444ff"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/font&gt;&lt;font color="#4444ff"&gt;;&lt;/font&gt;&lt;br /&gt;       &lt;font color="#4444ff"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;      &lt;font color="#4444ff"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;  &lt;font color="#4444ff"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;  &lt;strong&gt;return&lt;/strong&gt; &lt;font color="#008000"&gt;"OK"&lt;/font&gt;&lt;font color="#4444ff"&gt;;&lt;/font&gt;&lt;br /&gt; &lt;font color="#4444ff"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;You see, that I can catch the request through the annotation &lt;span style="font-weight:bold;"&gt;@Context&lt;/span&gt; as reference parameter in my simple Java method. You can get several other contextual object just using this annotation.&lt;br /&gt;&lt;br /&gt;I hope this tip could be quite useful for your RESTEasy development.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7107194769059181627-4121072932729942789?l=ankiewsky.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ankiewsky.blogspot.com/feeds/4121072932729942789/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7107194769059181627&amp;postID=4121072932729942789' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7107194769059181627/posts/default/4121072932729942789'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7107194769059181627/posts/default/4121072932729942789'/><link rel='alternate' type='text/html' href='http://ankiewsky.blogspot.com/2008/07/resteasy-tips-part-1.html' title='RESTEasy tips: Part 1'/><author><name>Edgar Ankiewsky Silva</name><uri>http://www.blogger.com/profile/07488052711588628833</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://farm3.static.flickr.com/2269/2042929603_ed0711917e_s.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7107194769059181627.post-8808893804624983686</id><published>2008-07-03T12:07:00.000-07:00</published><updated>2008-07-03T12:14:17.850-07:00</updated><title type='text'>Thanks "BIG RED": JRockit for download is available again</title><content type='html'>Since the bea's acquisition, I missed the JRockit download during a long time, but now JRockit download link is back here: &lt;a href="http://www.oracle.com/technology/software/products/jrockit/index.html"&gt;http://www.oracle.com/technology/software/products/jrockit/index.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Comments aside, at least we can use this cool JVM for testing and to obtaing a good performance and monitoring features for JBoss environments.&lt;br /&gt;&lt;br /&gt;Good download, even with a new name!&lt;br /&gt;&lt;br /&gt;E&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7107194769059181627-8808893804624983686?l=ankiewsky.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ankiewsky.blogspot.com/feeds/8808893804624983686/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7107194769059181627&amp;postID=8808893804624983686' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7107194769059181627/posts/default/8808893804624983686'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7107194769059181627/posts/default/8808893804624983686'/><link rel='alternate' type='text/html' href='http://ankiewsky.blogspot.com/2008/07/thanks-big-red-jrockit-for-download-is.html' title='Thanks &quot;BIG RED&quot;: JRockit for download is available again'/><author><name>Edgar Ankiewsky Silva</name><uri>http://www.blogger.com/profile/07488052711588628833</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://farm3.static.flickr.com/2269/2042929603_ed0711917e_s.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7107194769059181627.post-1866618297443730988</id><published>2008-06-29T12:42:00.000-07:00</published><updated>2008-06-30T06:49:51.644-07:00</updated><title type='text'>Some thoughts about opensource BPMs</title><content type='html'>Business Processing Modeling – BPM, I was starting my career when I heard the word “Workflow” by the first time, of course I had many other things to learn, instead to pay attention on some thing that seems to be too complicated, however in during any computer science or related course we learn some about “State Machines”, well, I wanna tell you a history that I heard when I worked for one of the biggest federal bank in Brazil: Workflow products had arrived down here in end of 90's, this bank tried implement a Workflow, although instead to map the the activities into a “State Machine Diagram” where would be possible figure out where the process's drawbacks or too long waits came from, they mixed business logic to process logic, obtaining serious performance problems and not too accurate information, the word “workflow” was abolished for a long time on this bank after this first frustrated try. Maybe, such things like that happened in all over the world, that's why during too much time, the concept to try get the company's process and map all of them represented using cool colored diagrams, which internally are not much more than a “State Machine”. The workflow products getting started so to hibernate, and then as a “pheonix” are relaunched but now with a new name: BPM (Business Process Modeling)! Maybe now, many people will stop to read this entry, but sorry, I can't figure out BPM in any other way, but now it is dressed much better, with new terminologies and concepts that make it “hot” or “fashion”.&lt;br /&gt;&lt;br /&gt;All the text above is just to call your attention for BPM Opensource implementations as an alternative for commercial licensing vendors,as such alternatives I can recommend you the following: OSWorkflow, IntalioBPM and jBPM, actually I respect all of them, but I've been using jBPM most frequently, that's why I will point some about it here. But, I recommend you take a look about the other ones. From this point of this entry, I don't wanna promote any project marketing, in despite of the fact I wanna tell you my particular vision about jBPM as a solution, and based on my professional experience show you where and how you may apply it into your projects.&lt;br /&gt;&lt;br /&gt;The best way I found to look at jBPM, is that it is a great BPM Engine, and it is not a weakness, I mean: When you think about BPM you can take many scenarios, since from modeling, management, governance and so on. JBPM is a really cool BPM framework and Engine. When you have an Application that has an internal workflow with a complete User Interface or a set of Services to do everything you want. In other words, imagine you have a HelpDesk System built 10 years ago with OracleForms , and you have mapped a kind of workflow on that, however you never figured out how measure your business activity monitoring(BAM). Now, keep in mind that you can during your regular activities in your system call a procedure to generate a simples text file with some information, which can be used to fill information into a process execution of a jBPM process instance, and from another system you can handle such information to get some report or any other issue. If we are speaking about text file generating, it could be a serious candidate for an ESB listener to process it, well but ESB is out of this scope, but keep ESBs usage in mind.&lt;br /&gt;&lt;br /&gt;In general, jBPM can be your best option when you want embed a BPM engine into your application, good scenarios contributes for that, such as: JBPM has a native extensible and open language called jPDL, that can process both HumanTasks in addition to invoke WebServices via Java components, it counts with BPEL support as well. In a near future, jBPM will have a PVM(Process Virtual Machine), which basically is “State Machine Framework”, which will render a process independent from the language source, support for BPEL, XPDL using PVM are in the plans of jBPM new versions. A really nice Eclipe plugin where is possible design all process visually, in addition to this, you can use Java components to interact with Node events(node-enter, node-leave for example) or during a transition from a node to another, and everything associating Java objetcs to some specific event during the process execution. The last good reason to use jBPM is the Seam intergration, which make the process management really easy for any developer.&lt;br /&gt;&lt;br /&gt;For sure, that you may use jBPM as a “BPM Suite” as well, but keep in mind that you will keep Business Analyst designing the process in UML or in some &lt;span style="font-weight:bold;"&gt;BPMN tool&lt;/span&gt;, and you will need a tech-guy to transform this design in to a jpdl diagram, where a Eclipse plugin is available.&lt;br /&gt;&lt;br /&gt;By the way, when you made an option by use an Opensource engine such as jBPM, you can do that because your plan can be get culture about BPM first, and it is really important for a SOA strategy. No matter if you have many boxes with SOA solutions with you have no idea how use them, and even worst when you already paid for them.&lt;br /&gt;&lt;br /&gt;Well, if you need more information, you can go to &lt;a href="http://www.jboss.org/jbossjbpm"&gt;jBPM web site&lt;/a&gt;, and download the lastest jbpm-jpdl-suite, which contains the framework and the eclipse plugin all together. Watch the demos, and take a look into documentation.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7107194769059181627-1866618297443730988?l=ankiewsky.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ankiewsky.blogspot.com/feeds/1866618297443730988/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7107194769059181627&amp;postID=1866618297443730988' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7107194769059181627/posts/default/1866618297443730988'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7107194769059181627/posts/default/1866618297443730988'/><link rel='alternate' type='text/html' href='http://ankiewsky.blogspot.com/2008/06/some-thoughts-about-opensource-bpms.html' title='Some thoughts about opensource BPMs'/><author><name>Edgar Ankiewsky Silva</name><uri>http://www.blogger.com/profile/07488052711588628833</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://farm3.static.flickr.com/2269/2042929603_ed0711917e_s.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7107194769059181627.post-2434721194841065277</id><published>2008-03-24T19:37:00.000-07:00</published><updated>2008-03-24T20:19:01.236-07:00</updated><title type='text'>Delphi integration possible in JBoss ESB</title><content type='html'>I've created some extensions to allow JBoss ESB process and return data to Borland Delphi. I create a screencast where I demonstrante how call a Java Service through Webservices and receive the result data formatted as XMLDataPacket, which can be rendered into Delphi Data controls and for reports engines as well.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://edgarsilva.com.br/wp-content/uploads/2008/03/edgar_jacode.htm"&gt;Click here to see this demostrantion (Quality not so good)&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;If you need any further information, contact me in edgar.silva at gmail dot com&lt;br /&gt;&lt;br /&gt;Regards&lt;br /&gt;&lt;br /&gt;Edgar&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7107194769059181627-2434721194841065277?l=ankiewsky.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ankiewsky.blogspot.com/feeds/2434721194841065277/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7107194769059181627&amp;postID=2434721194841065277' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7107194769059181627/posts/default/2434721194841065277'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7107194769059181627/posts/default/2434721194841065277'/><link rel='alternate' type='text/html' href='http://ankiewsky.blogspot.com/2008/03/delphi-integration-possible-in-jboss.html' title='Delphi integration possible in JBoss ESB'/><author><name>Edgar Ankiewsky Silva</name><uri>http://www.blogger.com/profile/07488052711588628833</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://farm3.static.flickr.com/2269/2042929603_ed0711917e_s.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7107194769059181627.post-2302755953770888665</id><published>2008-02-20T18:05:00.001-08:00</published><updated>2008-02-20T18:06:34.880-08:00</updated><title type='text'>A new JBoss Portal Sucess Case</title><content type='html'>The Brazilian company Versatiliti, located in Belém is now running its portal on top of JBoss Portal, congratulations guys!&lt;br /&gt;&lt;br /&gt;See more here: &lt;a href="http://www.versatiliti.com.br"&gt;http://www.versatiliti.com.br&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7107194769059181627-2302755953770888665?l=ankiewsky.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ankiewsky.blogspot.com/feeds/2302755953770888665/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7107194769059181627&amp;postID=2302755953770888665' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7107194769059181627/posts/default/2302755953770888665'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7107194769059181627/posts/default/2302755953770888665'/><link rel='alternate' type='text/html' href='http://ankiewsky.blogspot.com/2008/02/new-jboss-portal-sucess-case.html' title='A new JBoss Portal Sucess Case'/><author><name>Edgar Ankiewsky Silva</name><uri>http://www.blogger.com/profile/07488052711588628833</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://farm3.static.flickr.com/2269/2042929603_ed0711917e_s.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7107194769059181627.post-5443456788518923083</id><published>2008-01-30T19:49:00.000-08:00</published><updated>2008-12-05T10:28:10.637-08:00</updated><title type='text'>Just introducing myself</title><content type='html'>Well, here I will try discuss about some experiences using JBoss technologies, working for Red Hat in Brazil.&lt;br /&gt;&lt;br /&gt;I will try share some worth information here on this channel.&lt;br /&gt;&lt;br /&gt;&lt;pre class="prettyprint"&gt;&lt;br /&gt;&lt;br /&gt;public class Test {&lt;br /&gt;  &lt;br /&gt;   public Test(){&lt;br /&gt;&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;cya&lt;br /&gt;&lt;br /&gt;Edgar&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7107194769059181627-5443456788518923083?l=ankiewsky.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ankiewsky.blogspot.com/feeds/5443456788518923083/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7107194769059181627&amp;postID=5443456788518923083' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7107194769059181627/posts/default/5443456788518923083'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7107194769059181627/posts/default/5443456788518923083'/><link rel='alternate' type='text/html' href='http://ankiewsky.blogspot.com/2008/01/just-introducing-myself.html' title='Just introducing myself'/><author><name>Edgar Ankiewsky Silva</name><uri>http://www.blogger.com/profile/07488052711588628833</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://farm3.static.flickr.com/2269/2042929603_ed0711917e_s.jpg'/></author><thr:total>0</thr:total></entry></feed>
