<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/rss2full.xsl" type="text/xsl" media="screen"?><?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/itemcontent.css" type="text/css" media="screen"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:georss="http://www.georss.org/georss" xmlns:gml="http://www.opengis.net/gml" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Carlo Bonamico's weblog</title>
	
	<link>http://www.carlobonamico.com/blog</link>
	<description>Carlo’s notes on Java, geography 2.0, mountains, and music</description>
	<pubDate>Wed, 28 May 2008 06:40:44 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5</generator>
	<language>en</language>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/carlobonamico" type="application/rss+xml" /><item>
		<title>Runtime profiling and monitoring Java apps with btrace</title>
		<link>http://feeds.feedburner.com/~r/carlobonamico/~3/299627321/</link>
		<comments>http://www.carlobonamico.com/blog/2008/05/28/monitoring-java-apps-with-btrace/#comments</comments>
		<pubDate>Wed, 28 May 2008 06:40:44 +0000</pubDate>
		<dc:creator>bonamico</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[btrace]]></category>

		<category><![CDATA[instrumentation]]></category>

		<category><![CDATA[java]]></category>

		<category><![CDATA[profiling]]></category>

		<guid isPermaLink="false">http://www.carlobonamico.com/blog/?p=58</guid>
		<description><![CDATA[A the latest Genova JUG meeting last week there was much discussion about performance tuning and optimization, particularly of web applications. My mention of the recently released BTrace profiling tool was met with significant interested and I was asked to provide more details and references&#8230;
BTrace (where the &#8216;B&#8217; stands for bytecode) is an open source [...]]]></description>
			<content:encoded><![CDATA[<p>A the latest <a href="http://juggenova.net" target="_blank">Genova JUG</a> meeting last week there was much discussion about performance tuning and optimization, particularly of web applications. My mention of the recently released <a href="https://btrace.dev.java.net/" target="_blank">BTrace</a> profiling tool was met with significant interested and I was asked to provide more details and references&#8230;</p>
<p><a href="https://btrace.dev.java.net/" target="_blank">BTrace</a> (where the &#8216;B&#8217; stands for <em>bytecode</em>) is an open source tool hosted on java.net, where you can find extensive <a href="https://btrace.dev.java.net/source/browse/btrace/docs/usersguide.html?rev=1.3" target="_blank">documentation and samples</a>. It is conceptually similar to the much-talked-about <a href="http://opensolaris.org/os/community/dtrace/" target="_blank">Solaris DTrace</a> platform, but can be used on any Java platform/app.</p>
<p>The main BTrace concept is that of dynamically connecting to a running Java application (or server) to attach short &#8220;scripts&#8221; which log a range of events and infos such as</p>
<ul>
<li>method calls;</li>
<li>execution times;</li>
<li>constructor invocation;</li>
<li>available memory;</li>
</ul>
<p>Script execution is tied to several situations</p>
<ul>
<li>reaching a specific line number;</li>
<li>invoking a given method;</li>
<li>returning from a method;</li>
<li>invoking system calls (e.g. <em>exit</em>);</li>
<li>recurring timer (period execution at fixed intervals);</li>
<li>and <a href="https://btrace.dev.java.net/source/browse/btrace/docs/usersguide.html?rev=1.3" target="_blank">many more</a>&#8230;</li>
</ul>
<p>In a way, BTrace scripts are very similar to AOP&#8217;s aspects, but can be attached to any existing Java code (or better, bytecode) at runtime and without any configuration or modification at development time.</p>
<p>The scripts are simply Java classes which take advantage of methods from the btrace API, and are configured by using simple but powerful annotations. Here you are an <em>hello world</em> script which traces session creation in <em>hibernate</em>:</p>
<pre><code>// import BTrace annotations
import <strong>com.sun.btrace.annotations.*;</strong>
// import logging methods
import <strong>static com.sun.btrace.BTraceUtils.*;</strong>

<strong>@BTrace</strong>
public class HelloWorldTrace {

// probe the openSession() method of Hibernate SessionFactory
<strong>@OnMethod</strong>(
clazz=&#8221;org.hibernate.SessionFactory&#8221;,
method=&#8221;openSession&#8221;
)
public static void onOpenSessionTrace() {
// you can only log using the stati println method from BTraceUtils
println(&#8221;Hibernate: opening a new session&#8230;&#8221;);
}
}
</code></pre>
<p>Btrace scripts are attached to the running process using the JVM&#8217;s <a href="http://java.sun.com/javase/6/docs/api/java/lang/instrument/package-summary.html" target="_blank">instrumentation interface</a>.</p>
<p>If you are using JDK 1.6, you can attach to any running jvm by simply specifying its pid obtained through the new <a href="http://java.sun.com/javase/6/docs/technotes/tools/share/jps.html" target="_blank">jps</a> command:</p>
<pre><a name="examples"><strong>jps</strong>

18037 Demo.JAR
19032 jps
19025 tomcat

<strong>btrace 19025 HelloWorldTrace </strong>

<code>Hibernate: opening a new session...</code>
<code>Hibernate: opening a new session...</code>
</a></pre>
<p>The last command is simply an utility batch file which actually compiles and attaches the script.: On the other hand, on previous JDKs it is necessary to enable tracing in a similar way to how you enable remote debugging.</p>
<p>As an example of BTrace power and ease of use, the following script from <a href="https://btrace.dev.java.net/source/browse/btrace/samples/WebServiceTracker.java?rev=1.2&amp;view=markup" target="_blank">BTrace samples</a> intercepts all calls to methods in classes which are annotated with @WebService (e.g. all JAX-WS web service classes) and logs theri execution times:</p>
<pre>@BTrace public class WebServiceTracker {
// store webservice entry time in this thread local
@TLS private static long startTime;

@OnMethod(
clazz="@javax.jws.WebService",
method="@javax.jws.WebMethod"
)
public static void onWebserviceEntry() {
print("entering webservice ");
println(strcat(strcat(name(probeClass()), "."), probeMethod()));
startTime = timeMillis();
}

@OnMethod(
clazz="@javax.jws.WebService",
method="@javax.jws.WebMethod",
location=@Location(Kind.RETURN)
)
public static void onWebserviceReturn() {
println(strcat("Time taken (msec) ", str(timeMillis() - startTime)));
println("==========================");
}

}</pre>
<p>Note the use of BTrace built-in <em>strcat </em>function, which is needed to avoid the overhead of string concatenation. Obviously, the script code must be as lightweight as possible to avoid influencing tracing results with its own execution times, and thus the BTrace API provides efficient implementations of basic logging tasks.</p>
<p>Stay tuned for more tracing examples&#8230;</p>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fwww.carlobonamico.com%2Fblog%2F2008%2F05%2F28%2Fmonitoring-java-apps-with-btrace%2F';
  addthis_title  = 'Runtime+profiling+and+monitoring+Java+apps+with+btrace';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
 <img src="http://www.carlobonamico.com/blog/wp-content/plugins/feed-statistics.php?view=1&post_id=58" width="1" height="1" style="display: none;" /><img src="http://feeds.feedburner.com/~r/carlobonamico/~4/299627321" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.carlobonamico.com/blog/2008/05/28/monitoring-java-apps-with-btrace/feed/</wfw:commentRss>
		<georss:point featurename="Piazza Dante 7, Genova">44.405296 8.935859</georss:point>
	<feedburner:origLink>http://www.carlobonamico.com/blog/2008/05/28/monitoring-java-apps-with-btrace/</feedburner:origLink></item>
		<item>
		<title>Java IDE day 2008: big success in Genova!</title>
		<link>http://feeds.feedburner.com/~r/carlobonamico/~3/249996897/</link>
		<comments>http://www.carlobonamico.com/blog/2008/03/12/java-ide-day-2008-big-success-in-genova/#comments</comments>
		<pubDate>Wed, 12 Mar 2008 08:18:48 +0000</pubDate>
		<dc:creator>bonamico</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[carlo bonamico]]></category>

		<category><![CDATA[idea]]></category>

		<category><![CDATA[ideday]]></category>

		<category><![CDATA[java]]></category>

		<category><![CDATA[jdeveloper]]></category>

		<category><![CDATA[jug]]></category>

		<category><![CDATA[juggenova]]></category>

		<category><![CDATA[netbeans]]></category>

		<guid isPermaLink="false">http://www.carlobonamico.com/blog/2008/03/12/java-ide-day-2008-big-success-in-genova/</guid>
		<description><![CDATA[Just a quick post while we recover from the organization effort&#8230; I will write a more detailed report as soon as possible. The IDE day was a success, with a participation level that definitely went beyond our best expectations, both in terms of attendance (about 130 people!) and in term of audience interaction (the speakers [...]]]></description>
			<content:encoded><![CDATA[<p>Just a quick post while we recover from the organization effort&#8230; I will write a more detailed report as soon as possible. The IDE day was a success, with a participation level that definitely went beyond our best expectations, both in terms of attendance (about 130 people!) and in term of audience interaction (the speakers were overwhelmed with questions!).</p>
<p>Presentation slides will be loaded on the <a href="http://www.ideday.org">http://www.ideday.org</a> website in the next few days.</p>
<p>In the meantime I publish this picture of the speakers with the organizing group for Genova, which give me the opportunity to say a huge THANK YOU to everyone who made this event possible.</p>
<p><a href="http://www.carlobonamico.com/blog/photos/default/IMG_7888.jpg" title="ideday2008"><img src="http://www.carlobonamico.com/blog/wp-content/photos/thumb_IMG_7888.jpg" class="centered" alt="ideday2008" width="100" height="100" /></a></p>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fwww.carlobonamico.com%2Fblog%2F2008%2F03%2F12%2Fjava-ide-day-2008-big-success-in-genova%2F';
  addthis_title  = 'Java+IDE+day+2008%3A+big+success+in+Genova%21';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
 <img src="http://www.carlobonamico.com/blog/wp-content/plugins/feed-statistics.php?view=1&post_id=57" width="1" height="1" style="display: none;" /><img src="http://feeds.feedburner.com/~r/carlobonamico/~4/249996897" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.carlobonamico.com/blog/2008/03/12/java-ide-day-2008-big-success-in-genova/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.carlobonamico.com/blog/2008/03/12/java-ide-day-2008-big-success-in-genova/</feedburner:origLink></item>
		<item>
		<title>Java IDE day 2008 is coming!</title>
		<link>http://feeds.feedburner.com/~r/carlobonamico/~3/234613739/</link>
		<comments>http://www.carlobonamico.com/blog/2008/02/14/java-ide-day-2008-is-coming/#comments</comments>
		<pubDate>Wed, 13 Feb 2008 22:38:59 +0000</pubDate>
		<dc:creator>bonamico</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[java ideday juggenova jug jugroma netbeans eclipse idea]]></category>

		<guid isPermaLink="false">http://www.carlobonamico.com/blog/2008/02/14/java-ide-day-2008-is-coming/</guid>
		<description><![CDATA[Thanks to a fruitful collaboration between the Genova Java User Group and Rome Java User Group the first Italian Java IDE day is a reality&#8230;
If you are interested in Java development (but not just java, as these IDEs interestingly support a range of languages) you can&#8217;t miss the event that will take place

monday 10 march [...]]]></description>
			<content:encoded><![CDATA[<p>Thanks to a fruitful collaboration between the <a href="http://www.juggenova.net" target="_blank">Genova Java User Group</a> and <a href="http://www.jugroma.it" target="_blank">Rome Java User Group</a> the first Italian Java IDE day is a reality&#8230;</p>
<p>If you are interested in Java development (but not just java, as these IDEs interestingly support a range of languages) you can&#8217;t miss the event that will take place</p>
<ul>
<li>monday 10 march 2008 in Genova</li>
<li>wednesday 12 march 2008 in Rome</li>
</ul>
<p>where  international experts including Roman Strobl (Sun), Paolo Ramasso (Oracle) and Vaclav Pech (Jetbrains) will discuss the most advanced features of Java IDEs and their future evolution.</p>
<p>The event is free and open to all! for more information (and to register) visit <a href="http://www.ideday.org">http://www.ideday.org</a></p>
<p>See you there!</p>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fwww.carlobonamico.com%2Fblog%2F2008%2F02%2F14%2Fjava-ide-day-2008-is-coming%2F';
  addthis_title  = 'Java+IDE+day+2008+is+coming%21';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
 <img src="http://www.carlobonamico.com/blog/wp-content/plugins/feed-statistics.php?view=1&post_id=56" width="1" height="1" style="display: none;" /><img src="http://feeds.feedburner.com/~r/carlobonamico/~4/234613739" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.carlobonamico.com/blog/2008/02/14/java-ide-day-2008-is-coming/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.carlobonamico.com/blog/2008/02/14/java-ide-day-2008-is-coming/</feedburner:origLink></item>
		<item>
		<title>How to programmatically define Spring beans</title>
		<link>http://feeds.feedburner.com/~r/carlobonamico/~3/222227846/</link>
		<comments>http://www.carlobonamico.com/blog/2008/01/22/how-to-dynamicallyprogrammatically-define-spring-beans/#comments</comments>
		<pubDate>Tue, 22 Jan 2008 16:20:42 +0000</pubDate>
		<dc:creator>bonamico</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[java spring howto eng beans]]></category>

		<guid isPermaLink="false">http://www.carlobonamico.com/blog/2008/01/22/how-to-dynamicallyprogrammatically-define-spring-beans/</guid>
		<description><![CDATA[The Spring framework is well know both for its powerful architecture and its often barely tolerated XML configuration syntax.So there are cases where you would like to take advantage of Spring features (Dependency Injection, scope management, AOP, Transaction Management) in a set of beans without having to declare all of them in XML. This is [...]]]></description>
			<content:encoded><![CDATA[<p>The <a href="http://www.springframework.org" target="_blank">Spring</a> framework is well know both for its powerful architecture and its often barely tolerated XML configuration syntax.So there are cases where you would like to take advantage of Spring features (Dependency Injection, scope management, AOP, Transaction Management) in a set of beans without having to declare all of them in XML. This is particularly the case where you need to define a non-trivial number of similar beans (e.g. DAOs, backing beans in a JSF application, etc.).</p>
<p>In practice, we want to be able to write something like</p>
<pre language="XML">
ApplicationContext context = new ClassPathXmlApplicationContext("application.xml");
SampleService s = (SampleService) context.getBean("sampleService");</pre>
<p>(or the equivalent code in a webapp or servlet with a <em>WebApplicationContext</em>) so that s get initialized by Spring in the right scope <strong>without actually declaring <em>sampleService </em>in <em>application.xml</em></strong>.</p>
<p>Thanks to Spring modularity, there are several ways of achieving this:</p>
<ul>
<li>define the bean through <em>annotations</em>;</li>
<li>define a custom <em>BeanDefinitionReader</em> that reads from a property/configuration file instead of XML;</li>
<li>define the bean <em>programmatically</em>.</li>
</ul>
<p>I will now describe how to do it with the third approach. With most kinds of ApplicationContexts, it is possible to use the <a href="http://static.springframework.org/spring/docs/2.0.x/api/org/springframework/beans/factory/support/BeanDefinitionRegistry.html" target="_blank"><em>BeanDefinitionRegistry</em> </a>interface to dynamically and programmatically declare beans:</p>
<pre language="Java">
BeanDefinition definition = new RootBeanDefinition(SampleService.class);
//optionally configure all bean properties, like scope, prototype/singleton, etc
context.registerBeanDefinition("sampleService", definition);</pre>
<p>This allows you to manually add a bean definition to the context.</p>
<p>In order to fully automatize the configuration, we can define a <a href="http://static.springframework.org/spring/docs/2.0.x/api/org/springframework/beans/factory/config/BeanFactoryPostProcessor.html" target="_blank">BeanFactoryPostProcessor</a> that is automatically invoked after the standard xml file is read, being thus able to automatically add more bean definitions. The bean definitions can be for instance created by scanning classes for custom annotations, scanning custom configuration files, or any other custom criteria.</p>
<p>The following example will create a bean for each <em>*.service</em> file in the <em>config</em> directory</p>
<pre>import java.io.IOException;</pre>
<pre>import org.springframework.beans.BeansException;
 import org.springframework.beans.factory.config.BeanDefinition;
 import org.springframework.beans.factory.config.BeanFactoryPostProcessor;
 import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
 import org.springframework.beans.factory.support.BeanDefinitionRegistry;
 import org.springframework.beans.factory.support.RootBeanDefinition;
 import org.springframework.context.ApplicationContext;
 import org.springframework.context.ApplicationContextAware;
 import org.springframework.context.ResourceLoaderAware;
 import org.springframework.core.io.Resource;
 import org.springframework.core.io.ResourceLoader;</pre>
<pre>public class AutoBeanDeclarer implements BeanFactoryPostProcessor, ApplicationContextAware
 {
      private ApplicationContext mainContext;</pre>
<pre>public void postProcessBeanFactory(ConfigurableListableBeanFactory context)
        throws BeansException</pre>
<pre>{</pre>
<pre>BeanDefinitionRegistry registry = ((BeanDefinitionRegistry)context);</pre>
<pre>Resource[] fileList = null;

 fileList = mainContext.getResources("config/*.service");</pre>
<pre>for (Resource file : fileList)</pre>
<pre>{</pre>
<pre>System.out.println("File found: "+file.getFilename());</pre>
<pre>BeanDefinition definition = new RootBeanDefinition(SampleServiceImpl.class);</pre>
<pre>registry.registerBeanDefinition(file.getFilename(), definition);</pre>
<pre>}</pre>
<pre>public void setApplicationContext(ApplicationContext mainContext)
 {
      this.mainContext = mainContext;</pre>
<pre>}</pre>
<pre>}</pre>
<p>The BeanFactoryPostProcessor can then be simply added to the main <em>application.xml</em>:</p>
<pre>&lt;?xml version="1.0" encoding="UTF-8"?&gt;</pre>
<pre>&lt;beans xmlns="http://www.springframework.org/schema/beans"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xmlns:aop="http://www.springframework.org/schema/aop"
 xsi:schemaLocation="http://www.springframework.org/schema/beans
 http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
 http://www.springframework.org/schema/aop
 http://www.springframework.org/schema/aop/spring-aop-2.0.xsd"&gt;</pre>
<pre>&lt;!-- note: no definition of SampleService  --&gt;</pre>
<pre>&lt;bean id="autoConfigurer" class="AutoBeanDeclarer"/&gt;</pre>
<pre>&lt;/beans&gt;</pre>
<p>Spring will then automatically activate the <em>PostProcessor </em>after reading all configuration files.</p>
<p>A possible use in a web application could be that of automatically defining a bean for each html page/component. More examples will appear in future posts&#8230;</p>
<p>Thank you for your time! I hope you enjoyed this post. You can find more materials on Spring on the <a href="http://www.juggenova.net" target="_blank">JUG Genova</a> website.</p>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fwww.carlobonamico.com%2Fblog%2F2008%2F01%2F22%2Fhow-to-dynamicallyprogrammatically-define-spring-beans%2F';
  addthis_title  = 'How+to+programmatically+define+Spring+beans';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
 <img src="http://www.carlobonamico.com/blog/wp-content/plugins/feed-statistics.php?view=1&post_id=55" width="1" height="1" style="display: none;" /><img src="http://feeds.feedburner.com/~r/carlobonamico/~4/222227846" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.carlobonamico.com/blog/2008/01/22/how-to-dynamicallyprogrammatically-define-spring-beans/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.carlobonamico.com/blog/2008/01/22/how-to-dynamicallyprogrammatically-define-spring-beans/</feedburner:origLink></item>
		<item>
		<title>Slides from the JUG Meeting and next Meeting (22/01/2008)</title>
		<link>http://feeds.feedburner.com/~r/carlobonamico/~3/199098410/</link>
		<comments>http://www.carlobonamico.com/blog/2007/11/23/slides-from-the-jug-meeting-and-next-meeting-22012008/#comments</comments>
		<pubDate>Fri, 23 Nov 2007 10:53:35 +0000</pubDate>
		<dc:creator>bonamico</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[java]]></category>

		<category><![CDATA[jug]]></category>

		<category><![CDATA[juggenova]]></category>

		<guid isPermaLink="false">http://www.carlobonamico.com/blog/2007/11/23/slides-from-the-jug-meeting-and-next-meeting-22012008/</guid>
		<description><![CDATA[The last meeting of the Genova JUG was a very interesting event&#8230; you can have a look at the presentations on Model Driven Engineering in Portofino and Nasa World Wind with Java on the JUG Website.
The next meeting will take place on the 22th January 2008 at DIST.  More details will be announced soon&#8230;

  [...]]]></description>
			<content:encoded><![CDATA[<p>The last meeting of the Genova JUG was a very interesting event&#8230; you can have a look at the presentations on Model Driven Engineering in <a href="http://www.manydesigns.net" target="_blank">Portofino</a> and <a href="http://worldwind.arc.nasa.gov" target="_blank">Nasa World Wind</a> with Java on the <a href="http://www.juggenova.net" target="_blank">JUG Website</a>.</p>
<p>The <a href="http://www.jugevents.org/jugevents/event/show.html?id=907" target="_blank">next meeting</a> will take place on the 22th January 2008 at DIST.  More details will be announced soon&#8230;</p>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fwww.carlobonamico.com%2Fblog%2F2007%2F11%2F23%2Fslides-from-the-jug-meeting-and-next-meeting-22012008%2F';
  addthis_title  = 'Slides+from+the+JUG+Meeting+and+next+Meeting+%2822%2F01%2F2008%29';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
 <img src="http://www.carlobonamico.com/blog/wp-content/plugins/feed-statistics.php?view=1&post_id=53" width="1" height="1" style="display: none;" /><img src="http://feeds.feedburner.com/~r/carlobonamico/~4/199098410" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.carlobonamico.com/blog/2007/11/23/slides-from-the-jug-meeting-and-next-meeting-22012008/feed/</wfw:commentRss>
		<georss:point featurename="Piazza De Ferrari, Genova, Italy">44.406841 8.934140</georss:point>
	<feedburner:origLink>http://www.carlobonamico.com/blog/2007/11/23/slides-from-the-jug-meeting-and-next-meeting-22012008/</feedburner:origLink></item>
		<item>
		<title>Struts 1.x with Eclipse WTP How-To</title>
		<link>http://feeds.feedburner.com/~r/carlobonamico/~3/199098411/</link>
		<comments>http://www.carlobonamico.com/blog/2007/11/15/struts-1x-with-eclipse-wtp-how-to/#comments</comments>
		<pubDate>Thu, 15 Nov 2007 14:44:13 +0000</pubDate>
		<dc:creator>bonamico</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[eng]]></category>

		<category><![CDATA[howto]]></category>

		<category><![CDATA[java]]></category>

		<category><![CDATA[struts]]></category>

		<guid isPermaLink="false">http://www.carlobonamico.com/blog/2007/11/15/struts-1x-with-eclipse-wtp-how-to/</guid>
		<description><![CDATA[Given that Struts syntax is as difficult to remember as the framework is widespread in enterprise applications, I am posting a short How-To that I wrote for the last course  I taught on the topic.
The How-To summarizes the main steps required to define a new Web Application based on Struts 1.3.x using Eclipse Europa with [...]]]></description>
			<content:encoded><![CDATA[<p>Given that <a href="http://struts.apache.org" target="_blank">Struts</a> syntax is as difficult to remember as the framework is widespread in enterprise applications, I am posting a short How-To that I wrote for the last course  I taught on the topic.</p>
<p>The How-To summarizes the main steps required to define a new Web Application based on Struts 1.3.x using Eclipse Europa with WTP.</p>
<p>You can find it on</p>
<p><a href="http://www.carlobonamico.com/docs/pmwiki.php/Java/Struts13HowTo" target="_blank">http://www.carlobonamico.com/docs/pmwiki.php/Java/Struts13HowTo</a></p>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fwww.carlobonamico.com%2Fblog%2F2007%2F11%2F15%2Fstruts-1x-with-eclipse-wtp-how-to%2F';
  addthis_title  = 'Struts+1.x+with+Eclipse+WTP+How-To';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
 <img src="http://www.carlobonamico.com/blog/wp-content/plugins/feed-statistics.php?view=1&post_id=52" width="1" height="1" style="display: none;" /><img src="http://feeds.feedburner.com/~r/carlobonamico/~4/199098411" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.carlobonamico.com/blog/2007/11/15/struts-1x-with-eclipse-wtp-how-to/feed/</wfw:commentRss>
		<georss:point featurename="Milan, Italy">45.468945 9.181030</georss:point>
	<feedburner:origLink>http://www.carlobonamico.com/blog/2007/11/15/struts-1x-with-eclipse-wtp-how-to/</feedburner:origLink></item>
		<item>
		<title>JUG meeting @ NIS - 20 november 2007</title>
		<link>http://feeds.feedburner.com/~r/carlobonamico/~3/199098412/</link>
		<comments>http://www.carlobonamico.com/blog/2007/11/07/jug-meeting-nis-20-november-2007/#comments</comments>
		<pubDate>Wed, 07 Nov 2007 16:02:28 +0000</pubDate>
		<dc:creator>bonamico</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[jug juggenova java eng]]></category>

		<guid isPermaLink="false">http://www.carlobonamico.com/blog/2007/11/07/jug-meeting-nis-20-november-2007/</guid>
		<description><![CDATA[The next Genova JUG meeting will take place as planned on the 20th november 2007 at NIS s.r.l. (Corso Torino 14/3, Genova). Paolo will talk about Model Driven Architecture in Java; a second talk is being defined.
For more information see http://www.juggenova.net and http://www.jugevents.org/jugevents/event/show.html?id=354.

  addthis_url    = 'http%3A%2F%2Fwww.carlobonamico.com%2Fblog%2F2007%2F11%2F07%2Fjug-meeting-nis-20-november-2007%2F';
  addthis_title  = 'JUG+meeting+%40+NIS+-+20+november+2007';
 [...]]]></description>
			<content:encoded><![CDATA[<p>The next Genova JUG meeting will take place as planned on the 20th november 2007 at NIS s.r.l. (Corso Torino 14/3, Genova). <a href="http://www.paolopredonzani.com">Paolo</a> will talk about Model Driven Architecture in Java; a second talk is being defined.</p>
<p>For more information see <a href="http://www.juggenova.net">http://www.juggenova.net</a> and <a href="http://http://www.jugevents.org/jugevents/event/show.html?id=354" target="_blank">http://www.jugevents.org/jugevents/event/show.html?id=354</a>.</p>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fwww.carlobonamico.com%2Fblog%2F2007%2F11%2F07%2Fjug-meeting-nis-20-november-2007%2F';
  addthis_title  = 'JUG+meeting+%40+NIS+-+20+november+2007';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
 <img src="http://www.carlobonamico.com/blog/wp-content/plugins/feed-statistics.php?view=1&post_id=51" width="1" height="1" style="display: none;" /><img src="http://feeds.feedburner.com/~r/carlobonamico/~4/199098412" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.carlobonamico.com/blog/2007/11/07/jug-meeting-nis-20-november-2007/feed/</wfw:commentRss>
		<georss:point featurename="Corso Torino 14, Genova, Italy">44.403637 8.951733</georss:point>
	<feedburner:origLink>http://www.carlobonamico.com/blog/2007/11/07/jug-meeting-nis-20-november-2007/</feedburner:origLink></item>
		<item>
		<title>Continuous Integration with Hudson</title>
		<link>http://feeds.feedburner.com/~r/carlobonamico/~3/199098413/</link>
		<comments>http://www.carlobonamico.com/blog/2007/10/19/50/#comments</comments>
		<pubDate>Fri, 19 Oct 2007 13:51:20 +0000</pubDate>
		<dc:creator>bonamico</dc:creator>
		
		<category><![CDATA[eng]]></category>

		<category><![CDATA[java]]></category>

		<category><![CDATA[jug]]></category>

		<guid isPermaLink="false">http://www.carlobonamico.com/blog/2007/10/19/50/</guid>
		<description><![CDATA[Here is the presentation that I will deliver tomorrow at the Javaday Torino 2007.

 &#124; View &#124; Upload your own


  addthis_url    = 'http%3A%2F%2Fwww.carlobonamico.com%2Fblog%2F2007%2F10%2F19%2F50%2F';
  addthis_title  = 'Continuous+Integration+with+Hudson';
  addthis_pub    = '';

 ]]></description>
			<content:encoded><![CDATA[<p>Here is the presentation that I will deliver tomorrow at the <a href="http://www.javadaytorino.com">Javaday Torino 2007</a>.</p>
<div style="width:425px;text-align:left" id="__ss_139405"><object style="margin:0px" width="425" height="355"><param name="movie" value="http://s3.amazonaws.com/slideshare/ssplayer2.swf?doc=continuous-integration-with-hudson-1192801285234240-2"/><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed src="http://s3.amazonaws.com/slideshare/ssplayer2.swf?doc=continuous-integration-with-hudson-1192801285234240-2" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object>
<div style="font-size:11px;font-family:tahoma,arial;height:26px;padding-top:2px;"><a href="http://www.slideshare.net/?src=embed"><img src="http://s3.amazonaws.com/slideshare/logo_embd.png" style="border:0px none;margin-bottom:-5px" alt="SlideShare"/></a> | <a href="http://www.slideshare.net/carlo.bonamico/continuous-integration-with-hudson" title="View 'Continuous Integration With Hudson' on SlideShare">View</a> | <a href="http://www.slideshare.net/upload">Upload your own</a></div>
</div>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fwww.carlobonamico.com%2Fblog%2F2007%2F10%2F19%2F50%2F';
  addthis_title  = 'Continuous+Integration+with+Hudson';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
 <img src="http://www.carlobonamico.com/blog/wp-content/plugins/feed-statistics.php?view=1&post_id=50" width="1" height="1" style="display: none;" /><img src="http://feeds.feedburner.com/~r/carlobonamico/~4/199098413" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.carlobonamico.com/blog/2007/10/19/50/feed/</wfw:commentRss>
		<georss:point featurename="Via Pessinetto 12, Torino">45.089873 7.658145</georss:point>
	<feedburner:origLink>http://www.carlobonamico.com/blog/2007/10/19/50/</feedburner:origLink></item>
		<item>
		<title>Speaking at Javaday Torino 2007 - 20/10/2007</title>
		<link>http://feeds.feedburner.com/~r/carlobonamico/~3/199098414/</link>
		<comments>http://www.carlobonamico.com/blog/2007/10/10/speaking-at-javaday-torino-2007-20102007/#comments</comments>
		<pubDate>Wed, 10 Oct 2007 12:28:41 +0000</pubDate>
		<dc:creator>bonamico</dc:creator>
		
		<category><![CDATA[java]]></category>

		<category><![CDATA[jug]]></category>

		<guid isPermaLink="false">http://www.carlobonamico.com/blog/2007/10/10/speaking-at-javaday-torino-2007-20102007/</guid>
		<description><![CDATA[I will be presenting at Javaday 2007 in Torino in ten days time, talking about Continuous Integration with Hudson. More details (and the talk slides&#8230;) will follow&#8230;

  addthis_url    = 'http%3A%2F%2Fwww.carlobonamico.com%2Fblog%2F2007%2F10%2F10%2Fspeaking-at-javaday-torino-2007-20102007%2F';
  addthis_title  = 'Speaking+at+Javaday+Torino+2007+-+20%2F10%2F2007';
  addthis_pub    = '';

 ]]></description>
			<content:encoded><![CDATA[<p>I will be presenting at <a href="http://javaday.java2me.org" target="_blank">Javaday 2007</a> in Torino in ten days time, talking about Continuous Integration with <a href="http://hudson.dev.java.net" target="_blank">Hudson</a>. More details (and the talk slides&#8230;) will follow&#8230;</p>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fwww.carlobonamico.com%2Fblog%2F2007%2F10%2F10%2Fspeaking-at-javaday-torino-2007-20102007%2F';
  addthis_title  = 'Speaking+at+Javaday+Torino+2007+-+20%2F10%2F2007';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
 <img src="http://www.carlobonamico.com/blog/wp-content/plugins/feed-statistics.php?view=1&post_id=49" width="1" height="1" style="display: none;" /><img src="http://feeds.feedburner.com/~r/carlobonamico/~4/199098414" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.carlobonamico.com/blog/2007/10/10/speaking-at-javaday-torino-2007-20102007/feed/</wfw:commentRss>
		<georss:point featurename="Via Pessinetto 12, Torino">45.089873 7.658145</georss:point>
	<feedburner:origLink>http://www.carlobonamico.com/blog/2007/10/10/speaking-at-javaday-torino-2007-20102007/</feedburner:origLink></item>
		<item>
		<title>Introduzione a Spring - slides from the Genova JUG meeting @ DIST - 18/09/2007</title>
		<link>http://feeds.feedburner.com/~r/carlobonamico/~3/199098415/</link>
		<comments>http://www.carlobonamico.com/blog/2007/09/24/introduzione-a-spring-slides-from-the-genova-jug-meeting-dist-18092007/#comments</comments>
		<pubDate>Mon, 24 Sep 2007 08:29:40 +0000</pubDate>
		<dc:creator>bonamico</dc:creator>
		
		<category><![CDATA[java]]></category>

		<category><![CDATA[jug]]></category>

		<guid isPermaLink="false">http://www.carlobonamico.com/blog/2007/09/24/introduzione-a-spring-slides-from-the-genova-jug-meeting-dist-18092007/</guid>
		<description><![CDATA[Here you are the slides from my talk (in Italian) about the Spring framework, co-presented with Corrado Alesso at the last Genova Java User Group meeting.

 &#124; View &#124; Upload your own

By the way, the next meeting will take place on the 20th November 2007.

  addthis_url    = 'http%3A%2F%2Fwww.carlobonamico.com%2Fblog%2F2007%2F09%2F24%2Fintroduzione-a-spring-slides-from-the-genova-jug-meeting-dist-18092007%2F';
  addthis_title  [...]]]></description>
			<content:encoded><![CDATA[<p>Here you are the slides from my talk (in Italian) about the <a href="http://www.springframework.org" target="_blank">Spring framework</a>, co-presented with Corrado Alesso at the last <a href="http://www.juggenova.net" target="_blank">Genova Java User Group</a> meeting.</p>
<div style="width:425px;text-align:left" id="__ss_112835"><object style="margin:0px" width="425" height="355"><param name="movie" value="http://s3.amazonaws.com/slideshare/ssplayer2.swf?doc=spring-intro1104"/><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed src="http://s3.amazonaws.com/slideshare/ssplayer2.swf?doc=spring-intro1104" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object>
<div style="font-size:11px;font-family:tahoma,arial;height:26px;padding-top:2px;"><a href="http://www.slideshare.net/?src=embed"><img src="http://s3.amazonaws.com/slideshare/logo_embd.png" style="border:0px none;margin-bottom:-5px" alt="SlideShare"/></a> | <a href="http://www.slideshare.net/guestfb22d3/spring-intro-112835" title="View 'Spring Intro' on SlideShare">View</a> | <a href="http://www.slideshare.net/upload">Upload your own</a></div>
</div>
<p>By the way, the next meeting will take place on the 20th November 2007.</p>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fwww.carlobonamico.com%2Fblog%2F2007%2F09%2F24%2Fintroduzione-a-spring-slides-from-the-genova-jug-meeting-dist-18092007%2F';
  addthis_title  = 'Introduzione+a+Spring+-+slides+from+the+Genova+JUG+meeting+%40+DIST+-+18%2F09%2F2007';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
 <img src="http://www.carlobonamico.com/blog/wp-content/plugins/feed-statistics.php?view=1&post_id=48" width="1" height="1" style="display: none;" /><img src="http://feeds.feedburner.com/~r/carlobonamico/~4/199098415" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.carlobonamico.com/blog/2007/09/24/introduzione-a-spring-slides-from-the-genova-jug-meeting-dist-18092007/feed/</wfw:commentRss>
		<georss:point featurename="Via Opera Pia 13, Genova, Italy">44.403739 8.959894</georss:point>
	<feedburner:origLink>http://www.carlobonamico.com/blog/2007/09/24/introduzione-a-spring-slides-from-the-genova-jug-meeting-dist-18092007/</feedburner:origLink></item>
	</channel>
</rss>
