<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">
<channel>
  <title>Adam Bien</title>
  <link>http://www.adam-bien.com/roller</link>
      
    <description>Adam Bien's Software Engineering Weblog</description>
  <language>en-us</language>
    <copyright>Copyright 2009</copyright>
  <lastBuildDate>Wed, 4 Nov 2009 09:59:30 +0100</lastBuildDate>
  <generator>Apache Roller Weblogger 4.0 (20071120033321:dave)</generator>
      <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/AdamBien" type="application/rss+xml" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item>
    <guid isPermaLink="true">http://www.adam-bien.com/roller/abien/entry/useful_production_and_development_glassfish</guid>
    <title>Useful Production And Development Glassfish v3 JMS Monitoring Capabilities</title>
    <dc:creator>admin</dc:creator>
    <link>http://www.adam-bien.com/roller/abien/entry/useful_production_and_development_glassfish</link>
        <pubDate>Wed, 4 Nov 2009 09:59:30 +0100</pubDate>
    <category>General</category>
    <category>jms</category>
    <category>glassfishv3</category>
            <description>&lt;p&gt;Glassfish v3 enables convenient monitoring of JMS destinations, directly from the web-based admin console. There are about 40 statistics available for each physical queue. &lt;/p&gt;&lt;p&gt;Some of them are:&amp;nbsp;Number of Producers,&amp;nbsp;Number of Consumers,&amp;nbsp;Peak Number of Consumers,&amp;nbsp;Number of Messages,&amp;nbsp;Number of Messages Held in Transaction,&amp;nbsp;Number of Messages Received,&amp;nbsp;Number of Messages Sent,&amp;nbsp;Peak Message Size etc.&lt;/p&gt;&lt;p&gt;To access the statistics open (in the admin console) the node: Java Message Service -&amp;gt; Physical Destinations the choose a destination and click on &amp;quot;View&amp;quot;.&lt;/p&gt;&lt;p&gt;This new feature is very useful for debugging and performance monitoring of JMS applications (like &lt;a href="http://kenai.com/projects/tunguska/" target="_blank"&gt;tunguska&lt;/a&gt; :-)). Another reason to upgrade from Glassfish v2.&amp;nbsp;&lt;/p&gt;</description>          </item>
    <item>
    <guid isPermaLink="true">http://www.adam-bien.com/roller/abien/entry/sudden_death_of_enterprise_projects</guid>
    <title>Sudden Death Of Enterprise Projects?</title>
    <dc:creator>admin</dc:creator>
    <link>http://www.adam-bien.com/roller/abien/entry/sudden_death_of_enterprise_projects</link>
        <pubDate>Tue, 3 Nov 2009 11:26:32 +0100</pubDate>
    <category>Real World Java EE Patterns - Rethinking Best Practices</category>
    <category>enterprise</category>
            <description>&lt;p&gt;It seems like the huge, data driven, projects are either somehow completed, or were replaced by standard solutions. Especially in tougher times, even big enterprises are interesting in saving money and build software in more pragmatic ways. &lt;/p&gt;&lt;p&gt;These are actually good news. Often (almost always) you can implement the same functionality with only a fraction of the originally planned resources, patterns, architecture, with a few passionated developers.&lt;/p&gt;&lt;p&gt;In the same time Java EE became leaner and leaner, so that it is particularly interesting for smallest projects. In the Java EE 6 release it is hard to find a superfluous artifact. Although projects became leaner, there is still need for transactions, persistency, remoting (e.g. over REST), and concurrency. Exactly that is already addressed by &lt;a href="http://www.adam-bien.com/roller/abien/entry/ejb_3_1_and_rest" target="_blank"&gt;EJB 3.1 + JAX-RS&lt;/a&gt; + JPA 2.0.&lt;/p&gt;&lt;p&gt;The small / smallest projects in particular, are built with &lt;a href="http://www.adam-bien.com/roller/abien/entry/are_plain_old_webcontainers_still" target="_blank"&gt;plain web container&lt;/a&gt; - with a considerable overhead. You have to install, sometimes implement, everything by yourself, without any benefit. You could argue that the result is leaner, but you should measure the results and &lt;a href="http://www.adam-bien.com/roller/abien/entry/jsf_jpa_ejb_bloat" target="_blank"&gt;compare it to&lt;/a&gt; a full &amp;quot;Java EE 5/6&amp;quot; stack.&lt;/p&gt;&lt;p&gt;I was asked in the recent few months, whether it is possible to install an EJB 3.1 container inside tomcat, just for out-of-the-box management of transactions / concurrency. You will find the answer &lt;a href="http://openejb.apache.org/download.html" target="_blank"&gt;here&lt;/a&gt;. On the other hand developers (I also) were surprised by e.g. Glassfish v3 incremental deployment capabilities - even method signature changes were recognized correctly. I'm already curious about JBoss 5.2.0 Java EE 6 capabilities...&lt;/p&gt;</description>          </item>
    <item>
    <guid isPermaLink="true">http://www.adam-bien.com/roller/abien/entry/how_to_expose_and_inject</guid>
    <title>How To Expose And Inject A POJO ...Into An EJB 3</title>
    <dc:creator>admin</dc:creator>
    <link>http://www.adam-bien.com/roller/abien/entry/how_to_expose_and_inject</link>
        <pubDate>Mon, 2 Nov 2009 14:29:33 +0100</pubDate>
    <category>Real World Java EE Patterns - Rethinking Best Practices</category>
    <category>jndi</category>
    <category>pojo</category>
    <category>ejb</category>
            <description>&lt;p&gt;A POJO:&lt;/p&gt;&lt;p&gt;&lt;font class="Apple-style-span" face="'courier new', courier, monospace"&gt;public class CustomResource{&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font class="Apple-style-span" face="'courier new', courier, monospace"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;public final static String JNDI_NAME = &amp;quot;theName&amp;quot;;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font class="Apple-style-span" face="'courier new', courier, monospace"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;public void doSomething(){&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font class="Apple-style-span" face="'courier new', courier, monospace"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;System.out.println(&amp;quot;&lt;b&gt;#Done !&lt;/b&gt;&amp;quot;);&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font class="Apple-style-span" face="'courier new', courier, monospace"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font class="Apple-style-span" face="'courier new', courier, monospace"&gt;}&lt;/font&gt;&lt;/p&gt;&lt;p&gt;can be easily exposed (=bound to JNDI) with a singleton bean:&lt;/p&gt;&lt;p&gt;&lt;font class="Apple-style-span" face="'courier new', courier, monospace"&gt;@Startup&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font class="Apple-style-span" face="'courier new', courier, monospace"&gt;@Singleton&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font class="Apple-style-span" face="'courier new', courier, monospace"&gt;public class ResourceBinder {&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font class="Apple-style-span" face="'courier new', courier, monospace"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;@PostConstruct&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font class="Apple-style-span" face="'courier new', courier, monospace"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;public void bindResources(){&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font class="Apple-style-span" face="'courier new', courier, monospace"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;try {&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font class="Apple-style-span" face="'courier new', courier, monospace"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Context context = new InitialContext();&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font class="Apple-style-span" face="'courier new', courier, monospace"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;b&gt;context.rebind&lt;/b&gt;(CustomResource.JNDI_NAME, new CustomResource());&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font class="Apple-style-span" face="'courier new', courier, monospace"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;System.out.println(&amp;quot;&lt;b&gt;Resource bound...&lt;/b&gt;&amp;quot;);&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font class="Apple-style-span" face="'courier new', courier, monospace"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;System.out.println(&amp;quot; &amp;quot; &lt;b&gt;+ context.lookup(&lt;span class="Apple-style-span" style="font-weight: normal; "&gt;CustomResource.JNDI_NAME&lt;/span&gt;)&lt;/b&gt;);&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font class="Apple-style-span" face="'courier new', courier, monospace"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} catch (NamingException ex) {&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font class="Apple-style-span" face="'courier new', courier, monospace"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;throw new IllegalStateException(&amp;quot;Cannot bind resource &amp;quot; +ex,ex);&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font class="Apple-style-span" face="'courier new', courier, monospace"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font class="Apple-style-span" face="'courier new', courier, monospace"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font class="Apple-style-span" face="'courier new', courier, monospace"&gt;}&amp;nbsp;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;...and injected into a Stateless, Stateful, Singleton Bean or other resources like e.g. Servlets, Backing Beans etc:&lt;/p&gt;&lt;p&gt;&lt;font class="Apple-style-span" face="'courier new', courier, monospace"&gt;@Singleton&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font class="Apple-style-span" face="'courier new', courier, monospace"&gt;@Startup&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font class="Apple-style-span" face="'courier new', courier, monospace"&gt;@DependsOn(&amp;quot;ResourceBinder&amp;quot;)&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font class="Apple-style-span" face="'courier new', courier, monospace"&gt;public class CustomResourceClient {&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font class="Apple-style-span" face="'courier new', courier, monospace"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;@Resource(mappedName=CustomResource.JNDI_NAME)&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font class="Apple-style-span" face="'courier new', courier, monospace"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;private CustomResource resource;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font class="Apple-style-span" face="'courier new', courier, monospace"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;@PostConstruct&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font class="Apple-style-span" face="'courier new', courier, monospace"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;public void invokeResource(){&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font class="Apple-style-span" face="'courier new', courier, monospace"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;this.resource.doSomething();&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font class="Apple-style-span" face="'courier new', courier, monospace"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;System.out.println(&amp;quot;&lt;b&gt;----Resource invoked&lt;/b&gt;&amp;quot;);&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font class="Apple-style-span" face="'courier new', courier, monospace"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font class="Apple-style-span" face="'courier new', courier, monospace"&gt;}&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;You should see the following output in the log files (tested with Glassfish v3b70):&lt;/p&gt;&lt;p&gt;&lt;font class="Apple-style-span" face="'courier new', courier, monospace"&gt;INFO: Portable JNDI names for EJB CustomResourceClient : [java:global/ResourceBinder/CustomResourceClient!com.abien.patterns.kitchensink.resourcebinder.CustomResourceClient, java:global/ResourceBinder/CustomResourceClient]&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font class="Apple-style-span" face="'courier new', courier, monospace"&gt;INFO: Portable JNDI names for EJB ResourceBinder : [java:global/ResourceBinder/ResourceBinder, java:global/ResourceBinder/ResourceBinder!com.abien.patterns.kitchensink.resourcebinder.ResourceBinder]&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font class="Apple-style-span" face="'courier new', courier, monospace"&gt;INFO: Resource bound...&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font class="Apple-style-span" face="'courier new', courier, monospace"&gt;INFO: &amp;nbsp;com.abien.patterns.kitchensink.resourcebinder.CustomResource@50058560&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font class="Apple-style-span" face="'courier new', courier, monospace"&gt;INFO: #Done !&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font class="Apple-style-span" face="'courier new', courier, monospace"&gt;INFO:&amp;nbsp;----Resource invoked&amp;nbsp;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;The ResourceBinder project was tested with NetBeans 6.8beta and Glassfish v3b70. It was pushed into: &lt;a href="http://kenai.com/projects/javaee-patterns/" target="_blank"&gt;http://kenai.com/projects/javaee-patterns/&lt;/a&gt;. &amp;nbsp;Closing remarks:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;It is easier and better to declare a POJO as a Session Bean. You &lt;a href="http://www.adam-bien.com/roller/abien/entry/why_i_like_ejb_3" target="_blank"&gt;gain a lot&lt;/a&gt; with &lt;a href="http://www.adam-bien.com/roller/abien/entry/is_it_worth_using_pojos" target="_blank"&gt;almost no trade-offs&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;You should be careful with the concurrency. Such an exposed POJO will be accessed by several threads / transactions concurrently.&lt;/li&gt;&lt;li&gt;You easily inject POJOs with &lt;a href="http://www.adam-bien.com/roller/abien/entry/simplest_possible_ejb_3_11" target="_blank"&gt;interceptors&lt;/a&gt; as well.&lt;/li&gt;&lt;li&gt;You should never use &lt;font class="Apple-style-span" face="'courier new', courier, monospace"&gt;System.out.println&lt;/font&gt; on the server in production, because of:&lt;br /&gt;&lt;font class="Apple-style-span" face="'courier new', courier, monospace"&gt;&amp;nbsp;public void println(String x) {&lt;br /&gt;&lt;/font&gt;&lt;span class="Apple-tab-span" style="white-space: pre; "&gt;&lt;font class="Apple-style-span" face="'courier new', courier, monospace"&gt;	&lt;/font&gt;&lt;/span&gt;&lt;font class="Apple-style-span" face="'courier new', courier, monospace"&gt;&lt;b&gt;synchronized&lt;/b&gt; (this) {&lt;br /&gt;&lt;/font&gt;&lt;span class="Apple-tab-span" style="white-space: pre; "&gt;&lt;font class="Apple-style-span" face="'courier new', courier, monospace"&gt;	&lt;/font&gt;&lt;/span&gt;&lt;font class="Apple-style-span" face="'courier new', courier, monospace"&gt; &amp;nbsp; &amp;nbsp;print(x);&lt;br /&gt;&lt;/font&gt;&lt;span class="Apple-tab-span" style="white-space: pre; "&gt;&lt;font class="Apple-style-span" face="'courier new', courier, monospace"&gt;	&lt;/font&gt;&lt;/span&gt;&lt;font class="Apple-style-span" face="'courier new', courier, monospace"&gt; &amp;nbsp; &amp;nbsp;newLine();&lt;br /&gt;&lt;/font&gt;&lt;span class="Apple-tab-span" style="white-space: pre; "&gt;&lt;font class="Apple-style-span" face="'courier new', courier, monospace"&gt;	&lt;/font&gt;&lt;/span&gt;&lt;font class="Apple-style-span" face="'courier new', courier, monospace"&gt;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;/font&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&amp;nbsp;&lt;span class="Apple-style-span" style="font-size: small; "&gt;[See &amp;quot;Resource Binder&amp;quot; pattern, page 243, &amp;nbsp;in &amp;quot;&lt;a href="http://press.adam-bien.com/" target="_blank"&gt;&lt;span class="Apple-style-span" style="font-size: small; "&gt;Real World Java EE Patterns Rethinking Best Practices&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-size: small; "&gt;&amp;quot; book for more in-depth discussion]&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;</description>          </item>
    <item>
    <guid isPermaLink="true">http://www.adam-bien.com/roller/abien/entry/oracle_s_official_netbeans_glassfish</guid>
    <title>Oracle's Official NetBeans, Glassfish, VirtualBox Plans </title>
    <dc:creator>admin</dc:creator>
    <link>http://www.adam-bien.com/roller/abien/entry/oracle_s_official_netbeans_glassfish</link>
        <pubDate>Fri, 30 Oct 2009 09:00:00 +0100</pubDate>
    <category>General</category>
    <category>sun</category>
    <category>oracle</category>
            <description>Some intentions are documented &lt;a href="http://www.oracle.com/ocom/groups/public/documents/webcontent/038563.pdf" target="_blank"&gt;here&lt;/a&gt;.</description>          </item>
    <item>
    <guid isPermaLink="true">http://www.adam-bien.com/roller/abien/entry/two_amazing_netbeans_6_8beta</guid>
    <title>Two Amazing NetBeans 6.8Beta Features</title>
    <dc:creator>admin</dc:creator>
    <link>http://www.adam-bien.com/roller/abien/entry/two_amazing_netbeans_6_8beta</link>
        <pubDate>Thu, 29 Oct 2009 09:00:00 +0100</pubDate>
    <category>Netbeans</category>
    <category>beta</category>
    <category>javaee6</category>
            <description>&lt;p&gt;1. NetBeans 6.8Beta generates Unit-Tests for EJB 3.1 with Embeddable Container code. It looks like:&lt;/p&gt;&lt;p&gt;&lt;font class="Apple-style-span" face="'courier new', courier, monospace"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;@Test&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font class="Apple-style-span" face="'courier new', courier, monospace"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;public void testHello() throws Exception {&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font class="Apple-style-span" face="'courier new', courier, monospace"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;System.out.println(&amp;quot;hello&amp;quot;);&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font class="Apple-style-span" face="'courier new', courier, monospace"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;HelloService instance = (HelloService)javax.ejb.embeddable.EJBContainer.createEJBContainer().getContext().lookup(&amp;quot;java:global/classes/HelloService&amp;quot;);&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font class="Apple-style-span" face="'courier new', courier, monospace"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;String expResult = &amp;quot;&amp;quot;;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font class="Apple-style-span" face="'courier new', courier, monospace"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;String result = instance.hello();&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font class="Apple-style-span" face="'courier new', courier, monospace"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;assertEquals(expResult, result);&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font class="Apple-style-span" face="'courier new', courier, monospace"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// TODO review the generated test code and remove the default call to fail.&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font class="Apple-style-span" face="'courier new', courier, monospace"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fail(&amp;quot;The test case is a prototype.&amp;quot;);&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font class="Apple-style-span" face="'courier new', courier, monospace"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;/font&gt;&lt;/p&gt;&lt;p&gt;This is a nice feature: you don't have to look-up the JNDI-name...&lt;/p&gt;&lt;p&gt;2. NetBeans is capable to auto-complete a bound item in the data table:&lt;/p&gt;&lt;p&gt;&lt;font class="Apple-style-span" face="'courier new', courier, monospace"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;h:dataTable id=&amp;quot;hugo&amp;quot; value=&amp;quot;#{newTweet.messages}&amp;quot; var=&amp;quot;message&amp;quot;&amp;gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font class="Apple-style-span" face="'courier new', courier, monospace"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;h:column&amp;gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font class="Apple-style-span" face="'courier new', courier, monospace"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;h:outputText value=&amp;quot;#{message.content}&amp;quot;/&amp;gt; &amp;nbsp;&lt;b&gt;//the auto-completion works here!&lt;/b&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font class="Apple-style-span" face="'courier new', courier, monospace"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/h:column&amp;gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font class="Apple-style-span" face="'courier new', courier, monospace"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/h:dataTable&amp;gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;I tested NetBeans 6.8Beta in the last few days. It is stable, fast and especially interesting for Java EE 6 projects... Especially EJB 3.1 / JPA 2.0 support and JSF 2.0 editor were improved significantly....&amp;nbsp;&lt;/p&gt;</description>          </item>
  </channel>
</rss>
