<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	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:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>javathreads.de &#187; EJB</title>
	<atom:link href="http://javathreads.de/tag/ejb/feed/" rel="self" type="application/rss+xml" />
	<link>http://javathreads.de</link>
	<description>Blog rund um Java und Web Entwicklung</description>
	<lastBuildDate>Wed, 02 Nov 2011 10:37:22 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Schnellen &#220;berlick auf JSF oder JPA mit Hilfe von Spickzetteln</title>
		<link>http://javathreads.de/2008/10/schnellen-ueberlick-auf-jsf-oder-jpa-mit-hilfe-von-spickzetteln/</link>
		<comments>http://javathreads.de/2008/10/schnellen-ueberlick-auf-jsf-oder-jpa-mit-hilfe-von-spickzetteln/#comments</comments>
		<pubDate>Sun, 05 Oct 2008 06:30:47 +0000</pubDate>
		<dc:creator>Markus Kühle</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Cheat Cheet]]></category>
		<category><![CDATA[EJB]]></category>
		<category><![CDATA[JPA]]></category>
		<category><![CDATA[JSF]]></category>
		<category><![CDATA[Refcard]]></category>
		<category><![CDATA[Spickzettel]]></category>

		<guid isPermaLink="false">http://javathreads.de/?p=519</guid>
		<description><![CDATA[Es sind wieder zwei wirklich interessante Spickzettel auf DZone erschienen. Dort hei&#223;en sie &#8220;Refcardz&#8221; und sind somit auch unter refcardz.dzone.com zu erreichen.



Die erste Refcard beinhaltet die Grundlagen &#252;ber Java Server Faces (JSF). Es wird der Entwicklunsprozess, der Lebenszyklus (Lifecycle), die Konfigurationsdatei faces-config.xml, die JSF Expression Language (EL) sowie die JSF Core und HTML Tags und [...]]]></description>
			<content:encoded><![CDATA[<p>Es sind wieder zwei wirklich interessante Spickzettel auf DZone erschienen. Dort hei&#223;en sie &#8220;Refcardz&#8221; und sind somit auch unter <a href="http://refcardz.dzone.com/">refcardz.dzone.com</a> zu erreichen.</p>
<div class="singleImgDiv">
<a href="http://refcardz.dzone.com"><img src="http://javathreads.de/data/uploads/2008/10/dzonerefcardzlogosmall.png" alt="" title="DZone Logo" width="327" height="78" class="alignnone size-full wp-image-535" /></a>
</div>
<p>Die <a href="http://refcardz.dzone.com/refcardz/javaserver-faces?oid=hom4917">erste Refcard</a> beinhaltet die Grundlagen &#252;ber <strong>Java Server Faces (JSF)</strong>. Es wird der Entwicklunsprozess, der Lebenszyklus (Lifecycle), die Konfigurationsdatei <span class="code">faces-config.xml</span>, die JSF Expression Language (EL) sowie die JSF Core und HTML Tags und noch einiges anderes aufgezeigt.</p>
<p>Die <a href="http://refcardz.dzone.com/refcardz/getting-started-with-jpa?oid=hom5110">zweite Refcard</a> beinhaltet die Gundlagen &#252;ber <strong>Java Persistence API (JPA)</strong>. Themen sind unter anderem das Objektrelationale Mapping, den EntityManager erhalten und verwenden, Transaktionen verwenden, Queries ausf&#252;hren und noch einiges mehr.</p>
<table style="width: 100%; margin-bottom: 15px;">
<tr>
<td style="width: 50%; text-align:center">
<a href="http://refcardz.dzone.com/refcardz/javaserver-faces?oid=hom4917"><img src="http://javathreads.de/data/uploads/2008/10/dzonerefcardjsf.png" alt="" title="DZone Refcard JSF" width="206" height="266" class="alignnone size-full wp-image-522" /></a>
</td>
<td style="width: 50%; text-align:center">
<a href="http://refcardz.dzone.com/refcardz/getting-started-with-jpa?oid=hom5110"><img src="http://javathreads.de/data/uploads/2008/10/dzonerefcardjpa.png" alt="" title="DZone Refcard JPA" width="206" height="266" class="alignnone size-full wp-image-521" /></a>
</td>
</tr>
</table>
<p>Ich finde vor allem die JPA Refcard wirklich brauchbar. Es behandelt viele grunds&#228;tzliche Themen die man bei jedem Projekt, was mit JPA oder Hibernate durchf&#252;hrt, ben&#246;tigt und dient dadurch wirklich als n&#252;tzliche Hilfe. Man kann es auch sehr gut als Unterst&#252;tzung in den Einstieg von JPA oder Hibernate verwenden, was nat&#252;rlich auch f&#252;r alle anderen Spickzettel gilt.</p>
<p>Die JSF Refcard behandelt auch viele grunds&#228;tzliche Themen, aber letztlich finde ich z.B. eine online TLD f&#252;r die Tags z.b. wesentlich praktischer. Andererseits ist z.B. auch bei jedem Html Tag ein Screenshot der Komponente zu sehen, was zum Beispiel den Unterschied zwischen &#8220;<span class="code">h:selectOneListbox</span>&#8220;, &#8220;<span class="code">h:selectOneMenu</span>&#8220;, &#8220;<span class="code">h:selectManyListbox</span>&#8221; und &#8220;<span class="code">h:selectManyMenu</span>&#8221; schnell und deutlich hervorhebt. Viele verwechseln gerade bei diesen eben genannten immer gerne die Komponenten bzw. das daraus resultierende Html Ergebnis ;).</p>
<p>Neben den beiden hier vorgestellten Refcardz zu JSF und JPA sind schon eine Reihe anderer interessanter Spickzettel ver&#246;ffentlicht worden. So findet man zum Beispiel Spickzettel zu &#8220;<a href="http://refcardz.dzone.com/refcardz/dependency-injection-in-ejb3">Dependency Injection in EJB 3</a>&#8220;, &#8220;<a href="http://refcardz.dzone.com/refcardz/design-patterns">Design Patterns</a>&#8220;, &#8220;<a href="http://refcardz.dzone.com/refcardz/getting-started-eclipse">Getting Started with Eclipse</a>&#8221; oder f&#252;r alle die mit RichFaces, Ajax und dadurch auch mit <a href="http://jquery.com">jQuery</a> zu tun haben &#8220;<a href="http://refcardz.dzone.com/refcardz/jquery-selectors">jQuery Selectors</a>&#8220;.</p>
<table style="width: 100%">
<tr>
<td style="width: 25%; text-align:center">
<a href="http://refcardz.dzone.com/refcardz/dependency-injection-in-ejb3"><img src="http://javathreads.de/data/uploads/2008/10/dzonerefcarddependencyinjectionejb3.png" alt="" title="DZone Refcard Dependency Injection with EJB 3" width="103" height="133" class="alignnone size-full wp-image-524" /></a>
</td>
<td style="width: 25%; text-align:center">
<a href="http://refcardz.dzone.com/refcardz/design-patterns"><img src="http://javathreads.de/data/uploads/2008/10/dzonerefcarddesignpatterns.png" alt="" title="DZone Refcard Design Patterns" width="103" height="133" class="alignnone size-full wp-image-525" /></a>
</td>
<td style="width: 25%; text-align:center">
<a href="http://refcardz.dzone.com/refcardz/getting-started-eclipse"><img src="http://javathreads.de/data/uploads/2008/10/dzonerefcardgettingstartedwitheclipse.png" alt="" title="DZone Refcard Getting Started with Eclipse" width="103" height="133" class="alignnone size-full wp-image-526" /></a>
</td>
<td style="width: 25%; text-align:center">
<a href="http://refcardz.dzone.com/refcardz/jquery-selectors"><img src="http://javathreads.de/data/uploads/2008/10/dzonerefcardjqueryselectors.png" alt="" title="DZone Refcard jQuery Selectors" width="103" height="133" class="alignnone size-full wp-image-527" /></a>
</td>
</tr>
</table>
<p>Man kann alle Refcardz auf <a href="http://refcardz.dzone.com/">refcardz.dzone.com</a> herunterladen, muss allerdings leider erst registrieren. Falls sich das einer g&#228;nzlich sparen m&#246;chte schicke ich sie ihm auch gerne per Mail zu =).</p>
]]></content:encoded>
			<wfw:commentRss>http://javathreads.de/2008/10/schnellen-ueberlick-auf-jsf-oder-jpa-mit-hilfe-von-spickzetteln/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Tutorial: Mit JBoss Seam und JEE5 unter Eclipse starten</title>
		<link>http://javathreads.de/2008/09/tutorial-mit-jboss-seam-und-jee5-unter-eclipse-starten/</link>
		<comments>http://javathreads.de/2008/09/tutorial-mit-jboss-seam-und-jee5-unter-eclipse-starten/#comments</comments>
		<pubDate>Thu, 04 Sep 2008 08:30:56 +0000</pubDate>
		<dc:creator>Markus Kühle</dc:creator>
				<category><![CDATA[Tools]]></category>
		<category><![CDATA[Eclipse Ganymede]]></category>
		<category><![CDATA[EJB]]></category>
		<category><![CDATA[JBoss Seam]]></category>
		<category><![CDATA[JBoss Tools]]></category>
		<category><![CDATA[JPA]]></category>
		<category><![CDATA[JSF]]></category>
		<category><![CDATA[Tutorial]]></category>

		<guid isPermaLink="false">http://javathreads.de/?p=71</guid>
		<description><![CDATA[Wer mit JBoss Seam eine Anwendung entwickeln m&#246;chte muss sich vor der eigentlichen Entwicklung erst die Entwicklungsumgebung einrichten. Und gerade diese ersten Schritte sind oft nicht ganz klar obwohl es hinterher eigentlich immer einfach erscheint. Aus diesem Grund m&#246;chte ich in diesem Artikel die einzelnen Schritte aufzeigen und beschreiben die notwendig sind um Eclipse mit [...]]]></description>
			<content:encoded><![CDATA[<p>Wer mit <a href="http://www.jboss.com/products/seam">JBoss Seam</a> eine Anwendung entwickeln m&#246;chte muss sich vor der eigentlichen Entwicklung erst die Entwicklungsumgebung einrichten. Und gerade diese ersten Schritte sind oft nicht ganz klar obwohl es hinterher eigentlich immer einfach erscheint. Aus diesem Grund m&#246;chte ich in diesem Artikel die einzelnen Schritte aufzeigen und beschreiben die notwendig sind um Eclipse mit dem JBoss Application Server (AS), JBoss Seam und als Datenbank die MySQL zu konfigurieren, so dass die eigentliche Entwicklung einer JBoss Seam JEE5 Anwendung starten kann. Ist die Umgebung einmal eingerichtet wird auch gleich ein &#8220;Hello World&#8221; Projekt erstellt und deployt.</p>
<div class="subHeadline">Verwendete Tools und Versionen</div>
<p>Damit klar ist mit welchen Tools und deren Versionen in diesem Tutorial gearbeitet wird hier eine kurze Auflistung. Es wird sp&#228;ter noch einmal darauf eingegangen wenn die Tools heruntergeladen werden m&#252;ssen:</p>
<ul>
<li><a href="http://www.eclipse.org/">Eclipse Ganymede</a> &#8211; IDE for Java EE Developers</li>
<li><a href="http://www.jboss.org/jbossas/">JBoss Application Server</a> Version 4.2.2.GA</li>
<li><a href="http://www.jboss.com/products/seam">JBoss Seam</a> Version 2.0.2</li>
<li><a href="http://www.jboss.org/tools/">JBoss Tools</a> Version 3.0.0 Alpha 1</li>
<li><a href="http://dev.mysql.com/downloads/mysql/5.0.html#downloads">MySQL</a> Version 5.0.x</li>
<li><a href="http://dev.mysql.com/downloads/gui-tools/5.0.html">MySQL GUI Tools</a> f&#252;r die Version 5.0</li>
<li><a href="http://dev.mysql.com/downloads/connector/j/5.1.html">MySQL Connector</a> for Java 5.1</li>
</ul>
<div class="subHeadline">Ziel des Tutorials</div>
<p>Sobald die Entwicklungsumgebung mit den eben aufgelisteten Tools eingerichtet ist soll noch ein kleines &#8220;Hello World Seam Projekt&#8221; mit Hilfe der JBoss Tools Plugins aus Eclipse heraus erstellt werden. Das Ergebnis wird wie folgt aussehen:</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2008/09/0808_seamentwtut_browser_helloworldapp_modified.jpg" alt="" title="Seam Entwicklungsumgebung Tutorial - Hello World Seam Projekt Ergebnis" class="borderGray alignnone size-full wp-image-333" />
</div>
<div class="subHeadline" style="margin-top: 25px">Gliederung</div>
<p>Das Tutorial ist in folgende Abschnitte unterteilt:</p>
<ul class="gliederung">
<li>
<a href="#HerunterladenSoftware">Herunterladen der notwendigen Software und Tools</a></p>
<ul class="subGliederung">
<li><a href="#HerunterladenSoftwareEclipse">Eclipse herunterladen<a/></li>
<li><a href="#HerunterladenSoftwareJBossAS">JBoss AS herunterladen</a></li>
<li><a href="#HerunterladenSoftwareJBossSeam">JBoss Seam herunterladen</a></li>
<li><a href="#HerunterladenSoftwareMySQL">MySQL herunterladen</a></li>
</ul>
</li>
<li><a href="#Ordnerstruktur">Ordnerstruktur und Eclipse vorbereiten</a>
<ul class="subGliederung">
<li><a href="#OrdnerstrukturEclipse">Eclipse und Projekt Workspace</a></li>
<li><a href="#OrdnerstrukturJBoss">JBoss AS und JBoss Seam</a></li>
<li><a href="#OrdnerstrukturVerzeichnisstruktur">Fertige Verzeichnisstruktur</a></li>
<li><a href="#OrdnerstrukturEclipseStartparameter">Eclipse Startparameter und Teststart</a></li>
<li><a href="#OrdnerstrukturJBossToolsPlugins">JBoss Tools Eclipse Plugins installieren</a></li>
</ul>
</li>
<li><a href="#DBMySQL">MySQL Datenbank installieren und konfigurieren</a>
<ul class="subGliederung">
<li><a href="#DBMySQLInstallieren">MySQL Installieren</a></li>
<li><a href="#DBMySQLDBSchema">Datenbankschema in MySQL erstellen</a></li>
<li><a href="#DBMySQLDBBenutzer">Datenbankbenutzer in MySQL erstellen</a></li>
<li><a href="#DBMySQLConnectorJ">MySQL Connector/J Treiber dem JBoss AS bekannt machen</a></li>
</ul>
</li>
<li><a href="#EclipseSeamProjekt">Erstes Hello World Seam Projekt erstellen</a>
<ul class="subGliederung">
<li><a href="#EclipseSeamProjektSeamGen">Projektgenerierung mit Hilfe von Seam Gen</a></li>
<li><a href="#EclipseSeamProjektSeamWebProjekt">JBoss Seam Web Projekt erstellen</a></li>
<li><a href="#EclipseSeamProjektErsterWizzardDialog">Erster Wizzard Dialog &#8220;Seam Web Project&#8221;</a></li>
<li><a href="#EclipseSeamProjektZweiterWizzardDialog">Zweiter Wizzard Dialog &#8220;Web Module&#8221;</a></li>
<li><a href="#EclipseSeamProjektDritterWizzardDialog">Dritter Wizzard Dialog &#8220;JSF Capabilities&#8221;</a></li>
<li><a href="#EclipseSeamProjektVierterWizzardDialog">Vierter Wizzard Dialog &#8220;Seam Facet&#8221;</a></li>
<li><a href="#EclipseSeamProjektProjektGenerierung">Projekt Generierung</a></li>
<li><a href="#EclipseSeamProjektGenerierteProjektstruktur">Generierte Projektstruktur</a></li>
</ul>
</li>
<li><a href="#ErstesDeployment">Erstes Deployment und das ber&#252;hmte &#8220;Hello World&#8221;</a>
<ul class="subGliederung">
<li><a href="#ErstesDeploymentAngabenJBoss">Deployment Angaben f&#252;r den JBoss &#252;berpr&#252;fen</a></li>
<li><a href="#ErstesDeploymentJBossAsStarten">Erster Start des JBoss AS aus Eclipse heraus</a></li>
<li><a href="#ErstesDeploymentErfolgreicherJBossStart">Erfolgreicher JBoss AS Start und Deployment</a></li>
<li><a href="#ErstesDeploymentAufrufWebAnwendung">Aufruf der Web Anwendung im Browser</a></li>
<li><a href="#ErstesDeploymentErstesEditieren">Erstes Editieren: &#8220;Hello World&#8221; Text hinzuf&#252;gen</a></li>
</ul>
</li>
<li><a href="#Fazit">Fazit</a>
<ul>
<li><a href="#FazitWieGehtEsWeiter">Wie geht es weiter?</a></li>
</ul>
</li>
</ul>
<p><span id="more-71"></span></p>
<h2><a name="HerunterladenSoftware" class="noLink">Herunterladen der notwendigen Software und Tools</a></h2>
<p>Ich m&#246;chte kurz erw&#228;hnen, dass die folgenden Beschreibungen sich auf Windows beziehen. Das ist zwar generell unabh&#228;ngig, allerdings sind manche Angaben Pfadabh&#228;ngig und gelten in diesem Fall f&#252;r eine Windows Umgebung.</p>
<div class="subHeadline"><a name="HerunterladenSoftwareEclipse" class="noLink">Eclipse herunterladen</a></div>
<p>Als erstes muss Eclipse besorgt werden. Dazu auf <a href="http://www.eclipse.org">eclipse.org</a> gehen und im Men&#252; auf Download klicken. Die einfachste Variante ist direkt das <a href="http://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/ganymede/R/eclipse-jee-ganymede-win32.zip">Eclipse f&#252;r Java EE Developers Package</a> herunterzuladen. Der Vorteil liegt darin, dass das Web Tools Projekt und andere notwendige Abh&#228;ngigkeiten bereits vorinstalliert sind und mit dem angebotenen Eclipse zusammenspielen.</p>
<div class="singleImgDiv">
<a href="http://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/ganymede/R/eclipse-jee-ganymede-win32.zip" title="Eclipse f&#252;r Java EE Developers Package"><img src="http://javathreads.de/data/uploads/2008/06/0806_seamentwtut_eclipsedownload.png" alt="" title="Seam Entwicklungsumgebung Tutorial - Eclipse Ganymede Download" class="borderGray alignnone size-full wp-image-72" /></a>
</div>
<div class="subHeadline"><a name="HerunterladenSoftwareJBossAS" class="noLink">JBoss AS herunterladen</a></div>
<p>Weil JBoss Seam ein Framework f&#252;r die einfache Verbindung zwischen EJB 3 und JSF ist sollten wir uns auch den passenden Application Server besorgen. JBoss Seam kann man auch auf einem Servlet Container, wie zum Beispiel Apache Tomcat, laufen lassen allerdings ben&#246;tigt man dazu das <a href="http://docs.jboss.com/seam/latest/reference/en-US/html/configuration.html#config.install.embedded">Embedded JBoss Packet</a>.<br />
Den JBoss AS findet man auf seiner <a href="http://www.jboss.org/jbossas">offiziellen Seite</a> unter jboss.org und dort wieder auf den Button <a href="http://www.jboss.org/jbossas/downloads/">Download</a> klicken. F&#252;r dieses Tutorial wird die letzte stabile <a href="https://sourceforge.net/project/showfiles.php?group_id=22866&#038;package_id=16942&#038;release_id=614346">Version 4.2.2.GA</a> verwendet. Mit der zuletzt ver&#246;ffentlichten Version 4.2.3.GA wird der Seam Phaselistener doppelt installiert, was zu einem fehlerhaften Zustand f&#252;hrt. Aus diesem Grund wird die vorherige Version 4.2.2.GA hier verwendet.</p>
<div class="singleImgDiv">
<a href="http://www.jboss.org/jbossas/downloads/" title="Seam Entwicklungsumgebung Tutorial - JBoss AS Download"><img src="http://javathreads.de/data/uploads/2008/09/0808_seamentwtut_tools_jbossasdownload422.png" alt="" title="Seam Entwicklungsumgebung Tutorial - JBoss AS Download" class="borderGray alignnone size-full wp-image-315" /></a>
</div>
<div class="subHeadline"><a name="HerunterladenSoftwareJBossSeam" class="noLink">JBoss Seam herunterladen</a></div>
<p>Und nun zu dem eigentlichen Framework um das es hier geht: <a href="http://www.jboss.com/products/seam">JBoss Seam</a>. Auch hier wird die letzte stabile Version 2.0.2 SP1 <a href="http://www.seamframework.org/Download">heruntergeladen</a>.</p>
<div class="singleImgDiv">
<a href="http://www.seamframework.org/Download"><img src="http://javathreads.de/data/uploads/2008/08/0808_seamentwtut_seamdownload.png" alt="" title="Seam Entwicklungsumgebung Tutorial - JBoss Seam Download" class="borderGray alignnone size-full wp-image-191" /></a>
</div>
<div class="subHeadline"><a name="HerunterladenSoftwareMySQL" class="noLink">MySQL herunterladen</a></div>
<p>Als Datenbank wird die <a href="http://dev.mysql.com/downloads/mysql/5.0.html">MySQL</a> verwendet. Dazu auch hier die letzte stabile Version 5.0 <a href="http://dev.mysql.com/downloads/mysql/5.0.html#win32">herunterladen</a>.</p>
<div class="singleImgDiv">
<a href="http://dev.mysql.com/downloads/mysql/5.0.html#win32"><img src="http://javathreads.de/data/uploads/2008/08/0808_seamentwtut_mysqldownload.png" alt="" title="Seam Entwicklungsumgebung Tutorial - MySQL Download" class="borderGray alignnone size-full wp-image-193" /></a>
</div>
<p>Sehr n&#252;tzlich f&#252;r die Datenbankentwicklung mit der MySQL sind die <a href="http://dev.mysql.com/downloads/gui-tools/5.0.html">MySQL Admin GUI Tools</a>. Auch hier die letzte Version 5.0 herunterladen.</p>
<p>Um sp&#228;ter von einer Java Anwendung aus auf die MySQL Datenbank zugreifen zu k&#246;nnen m&#252;ssen noch die Connector Treiber f&#252;r Java &#8220;<a href="http://dev.mysql.com/downloads/connector/j/5.1.html">MySQL Connector/J</a>&#8221; heruntergeladen werden.</p>
<div class="singleImgDiv">
<a href="http://dev.mysql.com/downloads/connector/j/5.1.html"><img src="http://javathreads.de/data/uploads/2008/08/0808_seamentwtut_mysqlconnectorjdownload.png" alt="" title="Seam Entwicklungsumgebung Tutorial - MySQL Connector/J Download" class="borderGray alignnone size-full wp-image-261" /></a>
</div>
<h2><a name="Ordnerstruktur" class="noLink">Ordnerstruktur und Eclipse vorbereiten</a></h2>
<p>Ich pers&#246;nlich bevorzuge immer einen Projektordner der zu einem Thema ausgerichtet ist und alle f&#252;r dieses Thema ben&#246;tigten Tools enth&#228;lt, sofern das m&#246;glich ist. In diesem Tutorial soll eine JBoss Seam Entwicklungsumgebung erstellt werden und dazu wurde der Ordner <span class="code">D:\Projekte\JBossSeam</span> erstellt und s&#228;mtliche Tools darunter entpackt. </p>
<div class="subHeadline"><a name="OrdnerstrukturEclipse" class="noLink">Eclipse und Projekt Workspace</a></div>
<p>Gleich als erstes wird Eclipse Ganymede entpackt. Das heruntergeladene <span class="code">.zip</span> einfach direkt im Projektordner entpacken. Anschlie&#223;end sollte ein Verzeichnis <span class="code">eclipse</span> vorhanden sein. Nun fehlt nur noch der Eclipse Workspace um eine gl&#252;ckliche Eclipse Installation fertigzustellen. Alle Eclipse Projekte in dieser Umgebung sollen im <span class="code">workspace</span> Verzeichnis liegen. Dieses wird gleich neben dem <span class="code">eclipse</span> Verzeichnis erstellt.</p>
<div class="subHeadline"><a name="OrdnerstrukturJBoss" class="noLink">JBoss AS und JBoss Seam</a></div>
<p>F&#252;r den JBoss AS und JBoss Seam wird ein Verzeichnis mit dem Namen <span class="code">jboss</span> erstellt. Darin wird das JBoss AS und das JBoss Seam .zip entpackt. Anschlie&#223;end sollte in dem Verzeichnis <span class="code">jboss</span> die Ordner <span class="code">jboss-4.2.2.GA</span> und <span class="code">jboss-seam-2.0.1.GA</span> liegen.</p>
<div class="subHeadline"><a name="OrdnerstrukturVerzeichnisstruktur" class="noLink">Fertige Verzeichnisstruktur</a></div>
<p>Die fertige Verzeichnisstruktur sieht anschlie&#223;end bei mir wie folgt aus:</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2008/09/0808_seamentwtut_ordnerstruktur5.png" alt="" title="Seam Entwicklungsumgebung Tutorial - Verzeichnisstruktur" class="borderGray alignnone size-full wp-image-319" />
</div>
<div class="subHeadline"><a name="OrdnerstrukturEclipseStartparameter" class="noLink">Eclipse Startparameter und Teststart</a></div>
<p>Zum Starten von Eclipse habe verwende ich eine <span class="code">start_eclipse.bat</span> Datei um Eclipse noch ein paar Startparameter wie den Workspace oder VM Speicherangaben mitzugeben:</p>
<div class="codebox" style="margin-top: 5px;">@start eclipse\eclipse.exe -data workspace -vmargs -Xmx512M -Xms254M -XX:MaxPermSize=254M</div>
<p>Die Speicherangaben sind notwendig weil unter anderem der JBoss direkt aus Eclipse heraus gestartet werden soll und Eclipse somit gen&#252;gend reservierten Arbeitsspeicher zur Verf&#252;gung hat. Ist eine solche <span class="code">.bat</span> Datei oder eine Verkn&#252;pfung erstellt worden, sollte gleich getestet werden ob sich Eclipse auch starten l&#228;sst.</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2008/08/0808_seamentwtut_eclipseganymedelogosmall.png" alt="" title="Seam Entwicklungsumgebung Tutorial - Eclipse Ganymede" width="455" height="118" class="borderGray alignnone size-full wp-image-197" />
</div>
<p>Ist dies der Fall fehlen noch die JBoss Tools Plugins in Eclipse und die Datenbank f&#252;r das erste &#8220;Hello World&#8221; mit JBoss Seam.</p>
<div class="subHeadline"><a name="OrdnerstrukturJBossToolsPlugins" class="noLink">JBoss Tools Eclipse Plugins installieren</a></div>
<p>Mit den <a href="http://www.jboss.org/tools/">JBoss Tools</a> erh&#228;lt man in Eclipse eine sehr gute Unterst&#252;tzung f&#252;r die Entwicklung mit den verschiedensten JBoss Elementen. Besonders sch&#228;tze ich die Hibernate Tools, die Seam Tools und den RichFaces Visual Editor f&#252;r die Syntax Unterst&#252;tzung. Mit den Seam Tools wird sp&#228;ter das Seam Projekt erstellt. Zuvor m&#252;ssen diese allerdings erst installiert werden.<br />
Bis vor kurzem mussten die einzelnen JBoss Tools Plugins noch als <a href="http://javathreads.de/2008/07/jboss-tools-unter-eclipse-ganymede-verwenden/">Nightly Build unter Eclipse Ganymede installiert werden</a>. Seit ein paar Tagen ist allerdings die erste Version der JBoss Tools 3.0.0 (Alpha 1) ver&#246;ffentlicht worden und man kann diese nun &#252;ber den Eclipse Update Manager installieren. </p>
<p>Eclipse starten und im Hauptmen&#252; unter &#8220;Help->Software Updates&#8230;->Available Software Tab->Add Site&#8230;&#8221; die JBoss Tools Development Update Seite <a href="http://download.jboss.org/jbosstools/updates/development">http://download.jboss.org/jbosstools/updates/development</a> hinzuf&#252;gen.<br />
Anschlie&#223;end aufklappen und folgende im Screenshot sichtbar JBoss Tools Plugins selektieren:</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2008/08/0808_seamentwtut_eclipse_jbosstoolsinstallation.png" alt="" title="Seam Entwicklungsumgebung Tutorial - Eclipse - JBoss Tools Plugins Installation" class="borderGray alignnone size-full wp-image-243" />
</div>
<p>Die Installation mit dem Button &#8220;Install&#8230;&#8221; starten, der Lizenz zustimmen und Eclipse nach der erfolgreichen Installation neu starten.</p>
<p>Wer eine ausf&#252;hrliche Beschreibung der Installation dieser 3.0.0 Alpha 1 Version sowie Schreenshots der neuen Features sehen m&#246;chte sollte sich den Artikel &#8220;<a href="http://javathreads.de/2008/08/jboss-tools-300-alpha1-langsam-geht-es-vorwaerts/">JBoss Tools 3.0.0 Alpha1 &#8211; langsam geht es vorw&#228;rts</a>&#8221; anschauen.</p>
<h2><a name="DBMySQL" class="noLink">MySQL Datenbank installieren und konfigurieren</a></h2>
<div class="subHeadline"><a name="DBMySQLInstallieren" class="noLink">MySQL Installieren</a></div>
<p>Die MySQL kann auf verschiedene Arten installiert werden. Ich verwende immer das Installationsprogramm und habe f&#252;r meine Entwicklung eine MySQL Systemweit als Windows Dienst installiert. Den Dienst starte ich immer von Hand, wenn ich ihn ben&#246;tige. Arbeitet man jeden Tag in dieser Umgebung kann man die Datenbank auch automatisch starten lassen.</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2008/08/0808_seamentwtut_mysqldienst.png" alt="" title="Seam Entwicklungsumgebung Tutorial - MySQL Windows Dienst" class="borderGray alignnone size-full wp-image-195" />
</div>
<p>Bei der Installation der Datenbank ist nichts zu beachten au&#223;er, dass man ein Passwort f&#252;r seinen root User vergeben sollte an das man sich erinnert ;).<br />
Anschlie&#223;en noch die MySQL GUI Tools installieren. Ist beides Installiert kann man die Installation testen indem die Datenbank gestartet und sich &#252;ber den MySQL Administrator (eines der GUI Tools) mit dem Benutzer root und dem vergebenen Passwort verbunden wird:</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2008/08/0808_seamentwtut_mysqladministrator.png" alt="" title="Seam Entwicklungsumgebung Tutorial - MySQL Administrator" class="borderGray alignnone size-full wp-image-196" />
</div>
<div class="subHeadline"><a name="DBMySQLDBSchema" class="noLink">Datenbankschema in MySQL erstellen</a></div>
<p>Es wird f&#252;r das &#8220;Hello World Seam Projekt&#8221; eine Datenbank ben&#246;tigt auf die wir vollen Zugriff haben. In MySQL muss dazu ein neues Schema erstellt werden. Am einfachsten und schnellsten geht das &#252;ber das MySQL Administrator GUI Tool. Diesen also starten und sich als root auf localhost einloggen (Vorher nat&#252;rlich noch MySQL starten).<br />
Um ein neues Schema zu erstellen auf &#8220;Kataloge&#8221; klicken und anschlie&#223;en darunter in der Liste der Schemata aus dem Context Men&#252; (rechte Maustaste) &#8220;Neues Schema anlegen&#8221; selektieren.</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2008/08/0808_seamentwtut_mysqladmin_schemaerstellen.png" alt="" title="Seam Entwicklungsumgebung Tutorial - MySQL Administrator - Schema erstellen" class="borderGray alignnone size-full wp-image-198" />
</div>
<p>Ich habe es <span class="code">seamprojekt</span> genannt. Das neu erstellte Schema wird nun neben den anderen aufgelistet.</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2008/08/0808_seamentwtut_mysqladmin_schemaseamprojekt.png" alt="" title="Seam Entwicklungsumgebung Tutorial - MySQL Administrator - Schema &#039;Seamprojekt&#039; erstellt" class="borderGray alignnone size-full wp-image-297" />
</div>
<div class="subHeadline"><a name="DBMySQLDBBenutzer" class="noLink">Datenbankbenutzer in MySQL erstellen</a></div>
<p>Nun fehlt noch der Benutzer f&#252;r die Datenbankverbindung. Dazu auf den Punkt &#8220;Benutzerverwaltung&#8221; klicken und den Button &#8220;Neuen Nutzer anlegen&#8221; klicken (ist am unteren Rand zu finden). Username und Passwort vergeben &#8211; bei mir hei&#223;t hier <span class="code">seamdb</span> mit dem Passwort <span class="code">seam</span> &#8211; und den Button &#8220;Anwenden&#8221; dr&#252;cken.</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2008/08/0808_seamentwtut_mysqladmin_usererstellen.png" alt="" title="Seam Entwicklungsumgebung Tutorial - MySQL Administrator - DB User erstellen" class="borderGray alignnone size-full wp-image-199" />
</div>
<p>Als letztes m&#252;ssen dem eben erstellten User noch die notwendigen Rechte vergeben werden. Dazu in dem User editieren Panel bleiben und das Tab &#8220;Schema-Berechtigungen&#8221; selektieren. Dort das zuvor erstellte Schema <span class="code">seamprojekt</span> selektieren und s&#228;mtliche Rechte zuweisen. Das ganze mit dem Button &#8220;Anwenden&#8221; abschlie&#223;en.</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2008/08/0808_seamentwtut_mysqladmin_schemarechte.png" alt="" title="Seam Entwicklungsumgebung Tutorial - MySQL Administrator - Schema Rechte an User vergeben" class="borderGray alignnone size-full wp-image-200" />
</div>
<p>In einer Produktivumgebung vergibt man die Rechte nat&#252;rlich selektiver &#8211; hier geht es lediglich um ein Testprojekt und erste Schritte mit Seam.</p>
<div class="subHeadline"><a name="DBMySQLConnectorJ" class="noLink">MySQL Connector/J Treiber dem JBoss AS bekannt machen</a></div>
<p>Damit der JBoss sp&#228;ter von der deployten Anwendung aus auf die MySQL Datenbank zugreifen kann muss er den Datenbank Treiber im Classpath finden.<br />
Dazu das heruntergeladene MySQL Connector/J Zip entpacken und das darin liegende <span class="code">mysql-connector-java-5.1.6-bin.jar</span> in das <span class="code">lib</span> Verzeichnis der JBoss Default Server Instanz legen (<span class="code">D:\Projekte\JBossSeam\jboss\jboss-4.2.2.GA\server\default\lib</span>).</p>
<p>Nun ist die MySQL Datenbank und der JBoss soweit vorbereitet, dass es endlich an das erste Projekt gehen kann.</p>
<h2><a name="EclipseSeamProjekt" class="noLink">Erstes Hello World Seam Projekt erstellen</a></h2>
<p>Nun gelangen wir endlich zu dem interessanten Teil:  das &#8220;Hello World Seam Projekt&#8221; wird erstellt. Um ein solches Projekt zu erstellen bietet das JBoss Seam Framework uns die M&#246;glichkeit das Grundger&#252;st eines Seam Projektes generieren zu lassen, was wir nat&#252;rlich der Einfachheit halber ausnutzen wollen.</p>
<div class="subHeadline"><a name="EclipseSeamProjektSeamGen" class="noLink">Projektgenerierung mit Hilfe von Seam Gen</a></div>
<p>Seam liefert eine ziemlich coole Projektgenerierung mit dem Namen Seam Gen (<span class="code">seam-gen.bat</span>) von Haus aus mit. In diesem Tutorial soll nicht mit Seam Gen ein Eclipse Projekt erstellt werden sondern mit den JBoss Tools Plugins, die einen Projekt Wizzard f&#252;r Eclipse mitbringen. Wer einen Blick auf Seam Gen werfen m&#246;chte der kann dazu auch die ausf&#252;hrliche Anleitung aus der <a href="http://docs.jboss.com/seam/2.0.2.SP1/reference/en-US/html/gettingstarted.html">offiziellen Seam Dokumenation in Kapitel 2</a> lesen.</p>
<p>Noch ganz kurz zu dem elementaren Unterschied zwischen Seam Gen und den JBoss Tools Plugins: Mit Seam Gen wird ein einzelnes, erst einmal IDE unabh&#228;ngiges, Projekt erstellt welches alle drei Teilbereiche (Web, EJB, EAR) sowie die Teststruktur in einem Ordner h&#228;lt. Zus&#228;tzlich wird ein universelles Ant Build File f&#252;r das Deployment, Erzeugung von neuen Seam Komponenten und Tests erstellt. Man kann sp&#228;ter noch ausw&#228;hlen ob eine Projektstruktur f&#252;r Eclipse oder Netbeans erstellt werden soll. Generell arbeitet man aber dennoch IDE unabh&#228;ngig mit dem Ant Build File.</p>
<p>Das Utility &#8220;Seam Gen&#8221; befindet sich im Seam Verzeichnis unterhalb des Ordners <span class="code">seam-gen</span>. Bei uns ist es somit im Verzeichnis &#8220;<span class="code">D:\Projekte\JBossSeam\jboss\jboss-seam-2.0.1.GA\seam-gen</span>&#8221; zu finden.</p>
<div class="subHeadline"><a name="EclipseSeamProjektSeamWebProjekt" class="noLink">JBoss Seam Web Projekt erstellen</a></div>
<p>Mit den Seam Tools Eclipse Plugin werden drei Einzelprojekte (Web, EJB, EAR) erstellt die zusammen ein ganzes ergeben. Das Testprojekt wird als viertes, auch separat liegendes Projekt, erzeugt, welches auf die anderen referenziert. Mehr zu dieser Projektstruktur sehen wir sp&#228;ter noch. Arbeitet man also mit den Seam Tools legt man sich von vornherein auf die Eclipse als IDE fest und bekommt kein ANT Build File erstellt. Man deployt, erstellt und testet direkt aus Eclipse heraus.</p>
<p>Weil f&#252;r die Projektgenerierung nicht das Batch File <span class="code">seam-gen.bat</span> sondern das durch die Seam Tools verf&#252;gbare Eclipse Projekt Wizzard ist es wichtig, dass die JBoss Tools Plugins korrekt installiert wurden. Ist das der Fall kann eine JBoss Seam Perspektive in Eclipse ausgew&#228;hlt werden.</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2008/08/0808_seamentwtut_eclipse_seamperspective.png" alt="" title="Seam Entwicklungsumgebung Tutorial - Eclipse - Seam Perspektive" class="borderGray alignnone size-full wp-image-201" />
</div>
<p>In der Seam Perspektive stehen &#252;ber das Hauptmen&#252; (File->New) verschiedene M&#246;glichkeiten f&#252;r die Erstellung von Seam Komponenten (Action, Entity, Conversation, &#8230;) und einem Seam Web Projekt zur Verf&#252;gung. Wir selektieren nat&#252;rlich die Auswahl &#8220;<strong>Seam Web Projekt</strong>&#8220;.</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2008/08/0808_seamentwtut_eclipse_newseamproject.png" alt="" title="Seam Entwicklungsumgebung Tutorial - Eclipse - Neues Seam Web Projekt" class="borderGray alignnone size-full wp-image-202" />
</div>
<div class="subHeadline"><a name="EclipseSeamProjektErsterWizzardDialog" class="noLink">Erster Wizzard Dialog &#8220;Seam Web Project&#8221;</a></div>
<p>Es &#246;ffnet sich ein Projekt Wizzard mit dem ersten Dialog unter dem Namen &#8220;Seam Web Project&#8221; in dem schon einiges angegeben werden muss. Als erstes wird der Projektname vergeben &#8211; in diesem Beispiel soll das Projekt &#8220;<strong>HelloWorldSeamProjekt</strong>&#8221; benannt werden.</p>
<div class="paragraph">Server Runtime Environment erstellen</div>
<p>Als n&#228;chstes muss eine Server Runtime Target konfiguriert werden, wie auch im Dialog mit der Fehlermeldung &#8220;Target Runtime cannot be emtpy&#8221; angezeigt wird.</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2008/08/0808_seamentwtut_eclipse_projektwizzard_1.png" alt="" title="Seam Entwicklungsumgebung Tutorial - Eclipse - Projekt Wizzard - New Seam Project - Projektname und Server Runtime" class="borderGray alignnone size-full wp-image-247" />
</div>
<p>Um eine neue Server Runtime Target zu erstellen rechts neben der &#8220;Target Runtime&#8221; Auswahl auf den Button &#8220;New&#8230;&#8221; klicken um den JBoss AS 4.2 als Target Runtime zu selektieren.<br />
In diesem Dialog werden unter zwei Ordnern JBoss AS Server Versionen angeboten. Wir verwenden &#8220;<strong>JBoss, a division of Red Hat</strong>&#8221; denn dieser wird durch die JBoss Tools mitgeliefert. Es muss nat&#252;rlich die &#8220;JBoss 4.2 Runtime&#8221; selektiert werden und das H&#228;ckchen bei &#8220;Create a new local server&#8221; wird auch noch gesetzt. So ersparen wir uns sp&#228;ter diesen Schritt.</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2008/08/0808_seamentwtut_eclipse_projektwizzard_targetruntime.png" alt="" title="Seam Entwicklungsumgebung Tutorial - Eclipse - Projekt Wizzard - Target Runtime JBoss 4.2"  class="borderGray alignnone size-full wp-image-248" />
</div>
<p>Anschlie&#223;end auf den Button &#8220;Next >&#8221; dr&#252;cken. Im zweiten Schritt muss das Home Verzeichnis angegeben werden indem der JBoss AS liegt. Bei uns liegt er wie oben beschrieben unter &#8220;D:\Projekte\JBossSeam\jboss\jboss-4.2.2.GA&#8221;.</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2008/08/0808_seamentwtut_eclipse_projektwizzard_targetruntimedir.png" alt="" title="Seam Entwicklungsumgebung Tutorial - Eclipse - Projekt Wizzard - Target Runtime JBoss 4.2 Home Verzeichnis" class="borderGray alignnone size-full wp-image-250" />
</div>
<p>Button &#8220;Next >&#8221; dr&#252;cken. Im letzten Schritt wird der Fehler &#8220;Deploy folder not specified&#8221; angeben, welcher ignoriert werden kann, denn das Deploy Directory ist ordentlich f&#252;r die Default JBoss Server Instanz angegeben. Der Target Runtime Wizzard kann somit mit dem Button &#8220;Finish&#8221; beendet werden.</p>
<p>Man gelangt wieder in den ersten Dialog &#8220;New Seam Project&#8221; und die eben konfigurierte Target Runtime wurde angegeben. Auch der Target Server wurde durch das Setzen der Checkbox &#8220;Create a new local server&#8221; im Target Runtime Dialog unter dem Namen &#8220;JBoss 4.2 Server&#8221; erstellt und nun selektiert.</p>
<div class="paragraph">JBoss Seam Configuration selektieren</div>
<p>Als n&#228;chstes muss die &#8220;Dynamic Web Module version&#8221; ausgew&#228;hlt werden. Wir verwenden die Version 2.5, welche wahrscheinlich auch schon vorselektiert wurde.</p>
<p>Die letzte wichtige Konfiguration auf diesem Dialog ist der letzte ganz unten unter &#8220;Configuration&#8221;. Dort muss &#8220;Dynamic Web Project with Seam 2.0&#8243; selektiert sein.</p>
<p>Der fertig konfigurierte Dialog sieht anschlie&#223;end wie folgt aus:</p>
<div class="singleImgDiv">
<a href="http://javathreads.de/data/uploads/2008/08/0808_seamentwtut_eclipse_projektwizzard_newseamproject2.png"><img src="http://javathreads.de/data/uploads/2008/08/0808_seamentwtut_eclipse_projektwizzard_newseamproject2.png" alt="" title="Seam Entwicklungsumgebung Tutorial - Eclipse - Projekt Wizzard - New Seam Project 2" class="borderGray alignnone size-full wp-image-251" /></a>
</div>
<p>Mit dem Button &#8220;Next >&#8221; diesen ersten Dialog verlassen und in den n&#228;chsten Schritt gehen um das Web Modul zu konfigurieren. </p>
<div class="subHeadline"><a name="EclipseSeamProjektZweiterWizzardDialog" class="noLink">Zweiter Wizzard Dialog &#8220;Web Module&#8221;</a></div>
<p>In diesem zweiten Dialog &#8220;Web Module&#8221; kann angegeben werden unter welchem Context Root (Teil der Url: http://localhost:8080/<context root>) die Web Anwendung erreichbar sein soll. Ich pers&#246;nlich verwende an dieser Stelle immer den Projektnamen und lass die Default Einstellung so stehen.<br />
Die zweite Angabe ist das &#8220;Content Directory&#8221;. Die Default Angabe ist immer &#8220;WebContent&#8221; &#8211; ich &#228;nder das immer auf &#8220;web&#8221; ab. Aber das ist Geschmackssache. Das &#8220;Content Directory&#8221; ist im Web Projekt der Ordner unter dem die <span class="code">.xhtml</span> Dateien, der <span class="code">/META-INF</span> Ordner und die <span class="code">web.xml</span> liegen.<br />
Das &#8220;Java Source Directory&#8221; bleibt auf &#8220;src&#8221; und die Checkbox f&#252;r &#8220;Generate deployment descriptor&#8221; ist selektiert.</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2008/08/0808_seamentwtut_eclipse_projektwizzard_webmodule.png" alt="" title="Seam Entwicklungsumgebung Tutorial - Eclipse - Projekt Wizzard - Web Module" class="borderGray alignnone size-full wp-image-253" />
</div>
<p>Mit dem Button &#8220;Next >&#8221; diesen Dialog beenden und in den n&#228;chsten Schritt gehen um die JSF Einstellungen zu konfigurieren.</p>
<div class="subHeadline"><a name="EclipseSeamProjektDritterWizzardDialog" class="noLink">Dritter Wizzard Dialog &#8220;JSF Capabilities&#8221;</a></div>
<p>In diesem Dialog bleibt alles so wie vorgegeben.</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2008/08/0808_seamentwtut_eclipse_projektwizzard_jsfcapabilities.png" alt="" title="Seam Entwicklungsumgebung Tutorial - Eclipse - Projekt Wizzard - JSF Capabilities" class="borderGray alignnone size-full wp-image-305" />
</div>
<p>Somit direkt mit dem Button &#8220;Next >&#8221; weitergehen um Seam zu konfigurieren.</p>
<div class="subHeadline"><a name="EclipseSeamProjektVierterWizzardDialog" class="noLink">Vierter Wizzard Dialog &#8220;Seam Facet&#8221;</a></div>
<p>In diesem Dialog &#8220;Seam Facet&#8221; muss die &#8220;Seam Runtime&#8221; angegeben werden wie auch die Fehlermeldung &#8220;Seam Runtime is not selected&#8221; aufzeigt.</p>
<div class="paragraph">Abschnitt &#8220;General&#8221;</div>
<p>Zuerst muss die Seam Runtime erstellt und konfiguriert werden.</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2008/08/0808_seamentwtut_eclipse_projektwizzard_seamfacet_seamruntime.png" alt="" title="Seam Entwicklungsumgebung Tutorial - Eclipse - Projekt Wizzard - Seam Runtime" class="borderGray alignnone size-full wp-image-257" />
</div>
<p>Den Button &#8220;Add&#8230;&#8221; dr&#252;cken um in einen Unterdialog f&#252;r die Seam Runtime Konfiguration zu gelangen. In dem &#8220;Seam Runtime&#8221; Dialog den &#8220;Seam Home Folder&#8221;, also das Seam Verzeichnis, angeben. Bei uns liegt dieser neben dem JBoss AS unter &#8220;<span class="code">D:\Projekte\JBossSeam\jboss\jboss-seam-2.0.1.GA</span>&#8220;.</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2008/08/0808_seamentwtut_eclipse_projektwizzard_seamfacet_seamruntimedialog.png" alt="" title="Seam Entwicklungsumgebung Tutorial - Eclipse - Projekt Wizzard - Seam Runtime Dialog" class="borderGray alignnone size-full wp-image-258" />
</div>
<p>Den Unterdialog mit dem Button &#8220;Finish&#8221; beenden.</p>
<p>Anschlie&#223;end ist die &#8220;Seam Runtime&#8221; konfiguriert und da wir ein <strong>EAR Projekt</strong> erstellen wollen muss der EAR Radio Button noch selektiert werden.</p>
<div class="paragraph">Abschnitt &#8220;Connection Profile konfigurieren&#8221;</div>
<p>Nachdem die Seam Runtime nun konfiguriert ist wird bem&#228;ngelt, dass noch kein &#8220;Connection Profile&#8221; selektiert ist.</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2008/08/0808_seamentwtut_eclipse_projektwizzard_seamfacet_noconnectionprofile2.png" alt="" title="Seam Entwicklungsumgebung Tutorial - Eclipse - Projekt Wizzard - Seam Runtime No Connection Profile" class="borderGray alignnone size-full wp-image-268" />
</div>
<p>Um ein &#8220;Connection Profile&#8221; selektieren zu k&#246;nnen muss erst einmal eines erstellt werden. Dazu zuerst unter &#8220;Database Type&#8221; die MySQL &#8220;MySQL 5 (InnoDB)&#8221; heraussuchen und selektieren. Anschlie&#223;end neben der noch leeren &#8220;Connection Profile&#8221; Angabe den Button &#8220;New&#8230;&#8221; dr&#252;cken. Es erscheint ein neuer Connection Profile Wizzard.<br />
Darin den Connection Profile Type &#8220;MySQL&#8221; selektieren und einen Namen, z.B. &#8220;Lokale MySQL&#8221;, daf&#252;r vergeben.</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2008/08/0808_seamentwtut_eclipse_projektwizzard_seamfacet_connectionprofile_1.png" alt="" title="Seam Entwicklungsumgebung Tutorial - Eclipse - Projekt Wizzard - Seam Runtime Connection Profile Type" class="borderGray alignnone size-full wp-image-260" />
</div>
<p>Mit dem Button &#8220;Next >&#8221; in den n&#228;chsten Schritt gehen um den MySQL Treiber zu konfigurieren.<br />
Es wird verlangt, dass man einen Treiber definiert und selektiert. </p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2008/08/0808_seamentwtut_eclipse_projektwizzard_seamfacet_connectionprofile_driver1.png" alt="" title="Seam Entwicklungsumgebung Tutorial - Eclipse - Projekt Wizzard - Seam Runtime Connection Profile - No Driver" class="borderGray alignnone size-full wp-image-263" />
</div>
<p>Dazu rechts neben der leeren Treiber Selektbox auf den Button (ist nur ein rundes gebliches Bild) &#8220;New Driver Definition&#8221; klicken. Anschlie&#223;end im ersten Reiter &#8220;Name/Type&#8221; den Namen und Typ der MySQL angeben. Wir verwenden eine &#8220;MySQL 5.0&#8243;.</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2008/08/0808_seamentwtut_eclipse_projektwizzard_seamfacet_connectionprofile_driver2.png" alt="" title="Seam Entwicklungsumgebung Tutorial - Eclipse - Projekt Wizzard - Seam Runtime Connection Profile - Reiter Name/Type" class="borderGray alignnone size-full wp-image-264" />
</div>
<p>Im zweiten Reiter &#8220;Jar List&#8221; muss nun der MySQL Connector/J Treiber selektiert werden. Dazu erst den voreingetragenen Wert mit dem Button &#8220;Clear All&#8221; entfernen und anschlie&#223;end mit dem Button &#8220;Add Jar/Zip&#8221; den im JBoss Default Server abgelegten MySQL Connector/J Treiber <span class="code">mysql-connector-java-5.1.6-bin.jar</span> hinzuf&#252;gen. Zur Erinnerung: der Treiber wurde im Projektordner im JBoss AS Verzeichnis abgelegt (<span class="code">D:\Projekte\JBossSeam\jboss\jboss-4.2.2.GA\server\default\lib</span>).</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2008/08/0808_seamentwtut_eclipse_projektwizzard_seamfacet_connectionprofile_driver31.png" alt="" title="Seam Entwicklungsumgebung Tutorial - Eclipse - Projekt Wizzard - Seam Runtime Connection Profile - Reiter Jar List" class="borderGray alignnone size-full wp-image-290" />
</div>
<p>Den Dialog mit &#8220;OK&#8221; beenden.<br />
Anschlie&#223;end k&#246;nnen die Daten f&#252;r die bereits eingerichtete Datenbank <span class="code">seamprojekt</span> (url: <span class="code">jdbc:mysql://localhost:3306/seamprojekt </span>) angegeben (user: <span class="code">seamdb</span> &amp; pw: <span class="code">seam</span>) werden.</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2008/08/0808_seamentwtut_eclipse_projektwizzard_seamfacet_connectionprofile_driver4.png" alt="" title="Seam Entwicklungsumgebung Tutorial - Eclipse - Projekt Wizzard - Seam Runtime Connection Profile - Datenbank Konfiguration" class="borderGray alignnone size-full wp-image-266" />
</div>
<p>Mit dem Button &#8220;Test Connection&#8221; kann die konfigurierte Verbindung getestet werden. Die Pr&#252;fung sollte positiv mit einer &#8220;Ping succeeded!&#8221; Meldung enden.</p>
<p>Wenn dem nicht so ist sollte &#252;berpr&#252;ft werden ob die Datenbank generell l&#228;uft (MySQL Administrator), ob der User und das Passwort richtig vergeben sind (man kann sich z.B. mit dem MySQL Query Browser gegen die Datenbank mit dem User verbinden) und ob die Angaben in dem Dialog korrekt eingegeben wurden.</p>
<p>Funktioniert die Datenbankverbindung kann der Dialog mit &#8220;Finish&#8221; beendet werden.<br />
Nun ist das Connection Profile eingerichtet und als letztes muss noch das Datenbank Schema angegeben werden. In unserem Fall hei&#223;t es wie die konfigurierte Datenbank selbst: &#8220;seamprojekt&#8221;.</p>
<div class="paragraph">Abschnitt &#8220;Code Generation&#8221;</div>
<p>Der letzte in diesem Dialog zu konfigurierende Punkt sind die Package Vorgaben f&#252;r die Code Generation. Wenn das Projekt erstellt wird, werden initial einige Java Klassen erstellt. Die hier konfigurierten Package Namen werden daf&#252;r verwendet. Aber auch f&#252;r die sp&#228;ter &#252;ber die verf&#252;gbaren Seam Dialoge (File->New&#8230;) erstellten Klassen werden diese Angaben hier verwendet. Aus diesem Grund sollten wir sie also richtig anpassen. Man kann als Package Namen verwenden was man m&#246;chte &#8211; ich nehme nat&#252;rlich <span class="code">de.javathreads.helloworldseamprojekt</span> (Java Packages sollten &#252;brigens klein geschrieben werden).<br />
Mein vollst&#228;ndiges Dialogfenster mit konfigurierter Seam Runtime, dem Connection Profile und den Package Angaben sieht nun wie folgt aus:</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2008/09/0808_seamentwtut_eclipse_projektwizzard_seamfacet_finish2.png" alt="" title="Seam Entwicklungsumgebung Tutorial - Eclipse - Projekt Wizzard - Seam Facet Settings" class="borderGray alignnone size-full wp-image-323" />
</div>
<p>Den Projekt Wizzard mit dem Button &#8220;Finish&#8221; beenden.</p>
<div class="subHeadline"><a name="EclipseSeamProjektProjektGenerierung" class="noLink">Projekt Generierung</a></div>
<p>Das &#8220;Hello Word Seam Projekt&#8221; EAR Projekt wird nun automatisch erstellt und mit allen Grundkonfigurationen versehen.</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2008/08/0808_seamentwtut_eclipse_projektwizzard_finish.png" alt="" title="Seam Entwicklungsumgebung Tutorial - Eclipse - Projekt Wizzard - Projekt wird erstellt" class="borderGray alignnone size-full wp-image-272" />
</div>
<div class="subHeadline"><a name="EclipseSeamProjektGenerierteProjektstruktur" class="noLink">Generierte Projektstruktur</a></div>
<p>Es werden insgesamt vier Teilprojekte von den Seam Tools erstellt. Dabei sind drei f&#252;r das EAR Projekt direkt relevant und das letzte ist ein Projekt f&#252;r die Unit Tests.</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2008/08/0808_seamentwtut_eclipse_helloworldseamprojekt_teilprojekte.png" alt="" title="Seam Entwicklungsumgebung Tutorial - Eclipse - Seam EAR Projekt - Teilprojekte" class="borderGray alignnone size-full wp-image-274" />
</div>
<h2><a name="ErstesDeployment" class="noLink">Erstes Deployment und das ber&#252;hmte &#8220;Hello World&#8221;</a></h2>
<p>Nachdem nun die Entwicklungsumgebung eingerichtet ist und das Projekt scheinbar ordentlich erstellt wurde kann man es direkt auf den JBoss AS deployen. Es wurde ein lauff&#228;higes EAR Projekt mit der Verwendung von Hibernate, Sun JSF-RI 1.2, RichFaces und Facelets erstellt und vorkonfiguriert. Das Projekt m&#252;sste eigentlich auch automatisch dem konfiguriertem JBoss Server f&#252;r das Deployment hinzugef&#252;gt worden sein.</p>
<div class="subHeadline"><a name="ErstesDeploymentAngabenJBoss" class="noLink">Deployment Angaben f&#252;r den JBoss &#252;berpr&#252;fen</a></div>
<p>Aber es lohnt sich das noch einmal selbst kurz zu &#252;berpr&#252;fen. Um das Projekt auf dem JBoss zu deployen muss die JBoss Server View ge&#246;ffnet werden. Diese sollte sogar schon sichtbar sein ansonsten &#252;ber das Hauptmen&#252; die JBoss Server View &#246;ffnen: &#8220;Windows->Show View->Other&#8230;->Server->JBoss Server View&#8221;. Um das Projekt dem Server f&#252;r das Deployment bekannt zu machen mit der rechten Maustaste auf den Server klicken und &#8220;Add and Remove Projects&#8230;&#8221; selektieren.</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2008/08/0808_seamentwtut_eclipse_serverviewaddremoveprojects.png" alt="" title="Seam Entwicklungsumgebung Tutorial - Eclipse - Server View - Add and Remove Projects..." class="borderGray alignnone size-full wp-image-278" />
</div>
<p>Anschlie&#223;end ist ein Dialog zu sehen in dem auf der linken Seite alle f&#252;r ein Deployment verf&#252;gbaren Projekte und rechts alle Projekte die auf diesem JBoss deployt werden sollen zu sehen. In unserem Fall sieht man das <span class="code">HelloWorldSeamProjekt.ear</span> und eine Datasource Konfiguration <span class="code">HelloWorldSeamProjekt-ds.xml</span>. Diese Datei muss mit auf den JBoss deployt werden weil es die Datenkbankkonfiguration f&#252;r unser Hello World Projekt enth&#228;lt. Auf einem JBoss werden die Datenbankkonfigurationen in einem bestimmten XML Format in die Server Instanz gelegt und somit bekannt gemacht.<br />
Der Dialog kann mit Finish beendet werden und anschlie&#223;end ist das Projekt und die Datasource unter JBoss 4.2 sichtbar.</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2008/08/0808_seamentwtut_eclipse_serverviewaddedproject.png" alt="" title="Seam Entwicklungsumgebung Tutorial - Eclipse - Server View - Projekt dem JBoss hinzugef&#252;gt" class="borderGray alignnone size-full wp-image-311" />
</div>
<div class="subHeadline"><a name="ErstesDeploymentJBossAsStarten" class="noLink">Erster Start des JBoss AS aus Eclipse heraus</a></div>
<p>Der JBoss kann nun gestartet werden. Dazu mit der rechten Maustaste auf den JBoss 4.2 Server->Start oder den Server selektieren und den gr&#252;nen runden Start Button in der Server View dr&#252;cken. Unter Windows kann es passieren, dass man gefragt wird ob der Server oder Java weiterhin geblockt werden sollen aber wir erlauben nat&#252;rlich die Ausf&#252;hrung dieser Programme.</p>
<p>Ist der Server einmal gestartet so steht als Status &#8220;Started&#8221;, was noch nicht bedeuten muss, dass dieser auch erfolgreich gestartet ist.</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2008/08/0808_seamentwtut_eclipse_serverview_serverstatusstarted.png" alt="" title="Seam Entwicklungsumgebung Tutorial - Eclipse - Server View - Server Status &quot;Started&quot;" class="borderGray alignnone size-full wp-image-313" />
</div>
<p>In der Console sind die Log Ausgaben des JBoss Servers zu sehen. Man sollte die Logausgaben des JBoss AS immer auf Fehler &#252;berpr&#252;fen. Dazu die Console View selektieren und einmal komplett nach oben scrollen um sich zu vergewissern, dass keine Exception w&#228;hrend des Starts geworfen wurde.</p>
<div class="paragraph">Fehler w&#228;hrend des JBoss Starts: Falsches DB Passwort</div>
<p>Bei mir kam z.B. beim ersten Start folgende Exception:</p>
<div class="codebox">
20:49:35,285 WARN  [SettingsFactory] Could not obtain connection metadata<br />
org.jboss.util.NestedSQLException: Could not create connection; &#8211; nested throwable:<br />
(java.sql.SQLException: Access denied for user &#8217;seamdb&#8217;@'localhost&#8217; (using password: YES));
</div>
<p>Und Tats&#228;chlich hatte sich in meiner Datasource Konfiguration in dem Passwort ein falsches Zeichen am Ende eingeschlichen (das PW lautet nur &#8220;seam&#8221; und nicht &#8220;seamd&#8221;). Die Datasource Konfiguration <span class="code">HelloWorldSeamProjekt-ds.xml</span> befindet sich &#252;brigens im EAR Projekt <span class="code">HelloWorldSeamProjekt-ear</span> unterhalb des <span class="code">resources</span> Ordner:</p>
<pre name="code" class="xml">
<datasources>
  <local-tx-datasource>
    <jndi-name>HelloWorldSeamProjektDatasource</jndi-name>
    <connection-url>jdbc:mysql://localhost:3306/seamprojekt</connection-url>
    <driver-class>com.mysql.jdbc.Driver</driver-class>
    <user-name>seamdb</user-name>
<password>seamd</password>
  </local-tx-datasource>
</datasources>
</pre>
<p>Das falsche Zeichen habe ich nun entfernt und den Server neu gestartet.</p>
<div class="subHeadline"><a name="ErstesDeploymentErfolgreicherJBossStart" class="noLink">Erfolgreicher JBoss AS Start und Deployment</a></div>
<p>Nun ist dieser ohne Exceptions zu werfen, wie es auch sein sollte, hochgefahren und gestartet. Das korrekte Deployment kann in der Console nachgepr&#252;ft werden. Die letzte Zeilen sagen aus, dass das Projekt deployt wurde und der Server erfolgreich gestartet ist.</p>
<div class="codebox">
21:19:47,890 INFO  [EARDeployer] Started J2EE application: file:/D:/Projekte/JBossSeam/jboss/jboss-4.2.2.GA/server/default/deploy/HelloWorldSeamProjekt-ear.ear/<br />
21:19:48,005 INFO  [Http11Protocol] Starting Coyote HTTP/1.1 on http-localhost%2F127.0.0.1-8080<br />
21:19:48,016 INFO  [AjpProtocol] Starting Coyote AJP/1.3 on ajp-localhost%2F127.0.0.1-8009<br />
21:19:48,022 INFO  [Server] JBoss (MX MicroKernel) [4.2.2.GA (build: SVNTag=JBoss_4_2_2_GA date=200710221139)] Started in 24s:531ms
</div>
<p>Alle deployten Anwendungen werden, wie weiter oben in dem Server Runtime Environment konfiguriert, in die JBoss Default Server Instanz deployt. Im Jboss liegen alle Anwendungen im Verzeichnis <span class="code">default</span> unterhalb des JBoss Server Instanz Verzeichnisses. Unsere eben deployte Anwendung befindet sich somit im Verzeichnis <span class="code">D:\Projekte\JBossSeam\jboss\jboss-4.2.2.GA\server\default\deploy</span>, wie auch der Screenshot zeigt:</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2008/08/0808_seamentwtut_jbossas_appdeployt.png" alt="" title="Seam Entwicklungsumgebung Tutorial -JBoss AS - Default Instanz - Deploy Verzeichnis" class="borderGray alignnone size-full wp-image-307" />
</div>
<div class="subHeadline"><a name="ErstesDeploymentAufrufWebAnwendung" class="noLink">Aufruf der Web Anwendung im Browser</a></div>
<div class="paragraph">JBoss Management Konsole</div>
<p>Der lokale JBoss bzw. dessen Management Konsole ist per Default unter dem Port <span class="code">8080</span> erreichbar. Mit der Adresse <span class="code">http://localhost:8080</span> gelangt man somit auf die Einstiegsseite des lokalen JBoss AS:</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2008/08/0808_seamentwtut_jbossas_localhostmanagement.png" alt="" title="Seam Entwicklungsumgebung Tutorial -JBoss AS - Localhost JBoss Management" class="borderGray alignnone size-full wp-image-309" />
</div>
<div class="paragraph">Aufruf der &#8220;Hello World Seam Projekt&#8221; Web Anwendung im Browser</div>
<p>Und der Aufruf zu dem generierten &#8220;Hello World Seam Projekt&#8221; ist unter der URL <span class="code"><strong>http://localhost:8080/HelloWorldSeamProjekt</strong></span>  erreichbar:</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2008/09/0808_seamentwtut_browser_helloworldapp2.jpg" alt="" title="Seam Entwicklungsumgebung Tutorial - Generiertes Projekt erster Aufruf auf localhost" class="borderGray alignnone size-full wp-image-332" />
</div>
<div class="subHeadline"><a name="ErstesDeploymentErstesEditieren" class="noLink">Erstes Editieren: &#8220;Hello World&#8221; Text hinzuf&#252;gen</a></div>
<p>Als letztes fehlt uns noch zu unserem Gl&#252;ck der eigentliche &#8220;Hello World&#8221; Text. Dazu &#246;ffnen wir im Visual Page Editor, welcher per default f&#252;r die Dateien mit der Endung <span class="code">.xhtml</span> unter Eclipse verkn&#252;pft ist, die <span class="code">home.xhtml</span>. Diese Datei befindet sich im Web Projekt, welches das einzige Projekt ohne Zusatz ist und als Icon eine Weltkugel &#252;ber dem Ordner hat. Alternativ kann nat&#252;rlich auch mit STRG-SHIFT-R der &#8220;Open Resource&#8221; Dialog ge&#246;ffnet werden um die Datei zu &#246;ffnen.</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2008/09/0808_seamentwtut_eclipse_visualpageeditor.png" alt="" title="Seam Entwicklungsumgebung Tutorial - Eclipse - Visual Page Editor" class="borderGray alignnone size-full wp-image-329" />
</div>
<p>Speichert man die &#196;nderungen startet das Hot Deployment der ge&#228;nderten Dateien auf den JBoss AS. Per default wird das Hot Deployment erst nach 15 Sekunden durchgef&#252;hrt.</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2008/09/0808_seamentwtut_eclipse_hotdeployment.png" alt="" title="Seam Entwicklungsumgebung Tutorial - Eclipse - Hot Deployment" class="borderGray alignnone size-full wp-image-331" />
</div>
<p>Anschlie&#223;end im Browser F5 dr&#252;cken oder in der Adressleiste noch einmal die URL aufrufen und das eben erstellte &#8220;Hello World&#8221; erscheint.</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2008/09/0808_seamentwtut_browser_helloworldapp_modified.jpg" alt="" title="Seam Entwicklungsumgebung Tutorial - Hello World Seam Projekt Aufruf im Browser" class="borderGray alignnone size-full wp-image-333" />
</div>
<h2><a name="Fazit" class="noLink">Fazit</a></h2>
<p>Obwohl es viel und evtl. sogar kompliziert aussieht werden diejenigen, die ein solches Projekt schon einmal von Hand aufgesetzt und konfiguriert haben merken, dass es nun wesentlich schneller und einfacher ging. Vor allem f&#252;r einen schnellen Einstieg in die Entwicklung eines JBoss Seam JEE5 Projektes aber auch f&#252;r ein gew&#246;hnliches Web Projekt ist dieser Weg sehr bequem.<br />
Hat man diesen Projekt Wizzard erst einmal initial konfiguriert kann man bereits konfigurierte Teile f&#252;r die Erstellung eines n&#228;chsten Projektes wiederverwenden.<br />
Ist man erst einmal vertraut mit dem Projekt Wizzard erstellt man ein neues Projekt binnen ein paar Minuten.</p>
<p>Meiner Meinung nach ist der gr&#246;&#223;te Vorteil der, dass verschiedenen Frameworks wie Facelets, JBoss RichFaces, JBoss Seam und JSF 1.2 RI bereits so konfiguriert sind, dass sie miteinander arbeiten. Unerfahrene Leute ben&#246;tigen allein an der Konfiguration f&#252;r das Zusammenspiel der einzelnen Frameworks sehr viel Zeit.</p>
<div class="subHeadline"><a name="FazitWieGehtEsWeiter" class="noLink">Wie geht es weiter?</a></div>
<p>Wer mit JBoss Seam, JBoss RichFaces, Facelets oder gar JSF generell noch nicht vertraut ist sollte damit Anfangen das generierte Projekt zu erkunden und damit herumspielen. Das f&#228;ngt bei der Verwendung von Facelets mit dem Template und Tags an, geht &#252;ber die Verwendung der RichFaces Komponenten bis hin zu Ajax, dann kommt JBoss Seam mit seinen verschiedenen Komponenten (Authentifizierung, EntityQuery, EntityHome, Scopes) bis zuletzt zu der Verwendung von JEE 5 Technologien wie EJB 3.0 und JPA/Hibernate f&#252;r die Persistierung.<br />
Man kann allein bei dem generiertem Projekt viel lernen und ausprobieren. Viel kaputtmachen kann man nicht denn zur Not erstellt man sich das Projekt einfach schnell noch einmal neu.</p>
<p>Wer sich mit den Technologien auskennt sollte das Projekt nach seinem Geschmack anpassen wie z.b. das erstellen des Dom&#228;nenmodells, Packages anpassen, Testprojekt aufsetzen usw..</p>
<p>Insgesamt sollte dieses Tutorial nur aufzeigen wie man in ein solches Projekt f&#252;r JBoss Seam aufsetzen kann und mein Fazit dar&#252;ber ist, dass es noch nie so einfach war ein solches Projekt zu starten bzw. sich zu erstellen.<br />
Ich werde wohl in Zukunft noch des &#246;fteren auf diese Tutorial Bezug nehmen &#8211; vor allem wenn ich einzelne Teile von Seam oder sonstiger JSF Entwicklung beschreiben werde.</p>
<p>Viel Spass beim ausprobieren!</p>
]]></content:encoded>
			<wfw:commentRss>http://javathreads.de/2008/09/tutorial-mit-jboss-seam-und-jee5-unter-eclipse-starten/feed/</wfw:commentRss>
		<slash:comments>83</slash:comments>
		</item>
		<item>
		<title>Eine EJB als JMX MBean f&#252;r JBoss AS erstellen</title>
		<link>http://javathreads.de/2008/06/eine-ejb-als-jmx-mbean-fuer-jboss-as-erstellen/</link>
		<comments>http://javathreads.de/2008/06/eine-ejb-als-jmx-mbean-fuer-jboss-as-erstellen/#comments</comments>
		<pubDate>Tue, 24 Jun 2008 14:52:24 +0000</pubDate>
		<dc:creator>Markus Kühle</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[EJB]]></category>
		<category><![CDATA[JBoss]]></category>
		<category><![CDATA[JEE]]></category>
		<category><![CDATA[JEE 5]]></category>
		<category><![CDATA[JMX]]></category>
		<category><![CDATA[MBean]]></category>

		<guid isPermaLink="false">http://javathreads.de/?p=69</guid>
		<description><![CDATA[Die Java Management Extensions (JMX) sind eine sehr gute Wahl um Aufgaben zentraler Natur zu steuern, eine Anwendung von au&#223;en zu beeinflussen oder zu &#252;berwachen. So k&#246;nnten zum Beispiel das Logverhalten ver&#228;ndert oder administrative Anwendungsfunktionen ausgef&#252;hrt werden ohne den Betrieb der Anwendung zu st&#246;ren.
Um JMX zu nutzen werden sogenannte MBeans (Managed Beans) erstellt welche &#252;ber [...]]]></description>
			<content:encoded><![CDATA[<p>Die <a href="http://java.sun.com/javase/technologies/core/mntr-mgmt/javamanagement/">Java Management Extensions</a> (JMX) sind eine sehr gute Wahl um Aufgaben zentraler Natur zu steuern, eine Anwendung von au&#223;en zu beeinflussen oder zu &#252;berwachen. So k&#246;nnten zum Beispiel das Logverhalten ver&#228;ndert oder administrative Anwendungsfunktionen ausgef&#252;hrt werden ohne den Betrieb der Anwendung zu st&#246;ren.</p>
<p>Um JMX zu nutzen werden sogenannte MBeans (Managed Beans) erstellt welche &#252;ber einen Adapter, wie zum Beispiel einen HTTP Adapter, &#252;ber den Web Browser zug&#228;nglich gemacht werden. Mit Java 5 kommt auch noch die M&#246;glichkeit auf die JConsole zu verwenden um auf MBeans zuzugreifen. Mehr zu den Grundlagen der Java Management Extension auch in der online Ausgabe <a href="http://www.galileodesign.de/openbook/javainsel5/javainsel23_000.htm">Java ist auch eine Insel &#8211; Kapitel 23</a>.</p>
<div class="singleImgDiv"><img src='http://www.webthreads.de/article-data/uploads/2008/01/jbossjmxmbeanview.png' alt='JBoss JMX MBean View' class="borderGray"/></div>
<p>Der JBoss AS (Application Server) steuert seine Konfigurationen &#252;ber einen eigenen JMX Bus und bietet dazu eine Menge an MBeans an &#8211; siehe dazu auch aus dem <a href="http://docs.jboss.org/jbossas/jboss4guide/r2/html/">JBoss AS Guide</a> &#8211; Kapitel 2 &#8211; <a href="http://docs.jboss.org/jbossas/jboss4guide/r2/html/ch2.chapter.html">The JBoss JMX Microkernel</a>. Weil die JMX Unterst&#252;tzung eine Kernkomponente f&#252;r den JBoss ist bietet er einfache M&#246;glichkeiten an diese Infrastruktur f&#252;r die eigenen Zwecke zu verwenden. Wie man diese am einfachsten verwenden und selbst eine JMX MBean schreiben kann soll im folgenden gezeigt werden.</p>
<p>Dieser Artikel ist in die folgenden Abschnitten unterteilt:</p>
<ul>
<li><a href="#verschArtenMBeans">Verschiedene Arten der JBoss MBean Services</a></li>
<li><a href="#jbossServicePojo">JBoss Service POJO</a></li>
<li><a href="#mgmtIfXml">JMX Konsole &#8211; Management Interface mit XML beschreiben</a></li>
</ul>
<p><span id="more-69"></span></p>
<div class="subHeadline"><a name="verschArtenMBeans" class="noLink">Verschiedene Arten der JBoss MBean Services</a></div>
<p>M&#246;chte man eine JMX Bean f&#252;r die eigene Anwendung, welche auf dem <a href="http://www.jboss.org/products/jbossas">JBoss AS</a> (Application Server) l&#228;uft, schreiben so bietet JBoss mehrere M&#246;glichkeiten an. Folgende drei M&#246;glichkeiten bestehen eine MBean f&#252;r die JMX Konsole zu implementieren und zu registrieren:</p>
<ul>
<li>JBoss Standard MBean</li>
<li>JBoss XMBean</li>
<li>JBoss Servie POJO</li>
</ul>
<p>Obwohl ich nur auf die dritte und letzte M&#246;glichkeit eingehen m&#246;chte, werden vorab die beiden anderen Varianten kurz erw&#228;hnt, so dass man diese einordnen kann.</p>
<div class="subHeadline">JBoss Standard MBean</div>
<p>F&#252;r die erste Variante implementiert man einen JBoss MBean Service (auch Standard MBean genannt). Dazu erstellt man ein Interface welches sich von <span class="code">org.jboss.system.ServiceMBean</span> sowie eine Klasse die dieses Interfaces implementiert. Diese MBean Service Klasse ist selbst von der Klasse org.jboss.system.ServiceMBeanSupport abgeleitet ist. Diese Klasse wird nun in der Datei jboss-service.xml als MBean konfiguriert und so dem JBoss AS bekannt gemacht.<br />
Ein kleines &#8220;Hello World Service&#8221; Tutorial f&#252;r das Erstellen eines solchen JBoss MBean Services findet sich im <a href="http://wiki.jboss.org/wiki/ExampleHelloWorldService">JBoss Wiki</a>.</p>
<div class="subHeadline"> JBoss XMBean</div>
<p>Die zweite Variante basiert auf der eben vorgestellten, nur dass die MBean &#252;ber das JBoss XMBean Framework seine Metadaten beschreibt. An dieser Stelle kommt die M&#246;glichkeit einfache POJOs als MBeans zu verwenden ins Spiel und es ist nicht mehr notwendig das oben beschriebene Interface ServiceMBean zu implementieren oder andere Regeln in der MBean Klasse einzuhalten. Allerdings wird f&#252;r diese sogenannte <a href="http://wiki.jboss.org/wiki/XMBean">XMBean</a> Deployment Descriptor in Form eines XML Dokuments ben&#246;tigt. Aus diesem Grund hei&#223;t diese MBean XMBean.<br />
In diesem Deplyoment Descriptor k&#246;nnen s&#228;mtliche Attribute, Methoden und deren Parameter beschrieben werden. Ein weiter Vorteil war die M&#246;glichkeit Interceptor-Methoden zu implementieren. Diese konnte man zum Beispiel f&#252;r <a href="http://wiki.jboss.org/wiki/XMBeansforSecurity">Sicherheits&#252;berpr&#252;fungen</a> bei Methodenaufrufe verwenden. Eine sch&#246;ne ausf&#252;hrliche Beschreibung der XMBean findet sich auf dem Blog von <a href="http://vladimirvivien.com/blogs/ot/2007/06/part-2-creating-advanced-jboss-4.html">organig thoughts</a>.</p>
<p>Die hier eben kurz erw&#228;hnten Wege eine JBoss MBean bzw. XMBean (beides sind JMX MBean) zu erstellen k&#246;nnen auch noch einmal in der offiziellen JBoss <a href="http://www.redhat.com/docs/manuals/jboss/jboss-eap-4.2/doc/Server_Configuration_Guide/">Server Configuration Guide</a> im Kapitel 3.4.3 mit dem Titel &#8220;<a href="http://www.redhat.com/docs/manuals/jboss/jboss-eap-4.2/doc/Server_Configuration_Guide/Using_JMX_as_a_Microkernel-Writing_JBoss_MBean_Services.html">Writing JBoss MBean Services</a>&#8221; nachgelesen werden.</p>
<p>Die dritte Variante ist die in diesem Artikel eigentlich fokussierte Variante mit dem Namen JBoss Service POJOs.</p>
<div class="subHeadline"><a name="jbossServicePojo" class="noLink">JBoss Service POJO</a></div>
<p>Die einfachste Variante eine JBoss MBean f&#252;r die JMX Konsole zu erstellen ergibt sich durch die JBoss eigene <span class="code">@org.jboss.annotation.ejb.Service Annotation</span>. Diese Annotation <span class="code">@Service</span> definiert im JBoss einen Service der als Singleton, also nur mit einer Instanz (Singleton), verf&#252;gbar ist. So ergibt sich der erste Schritt daraus, einen solchen Service zu erstellen.</p>
<pre name="code" class="java">
import org.jboss.annotation.ejb.Service;

@Service(objectName="MyApplication:service=MyService")
public class MyServiceMBean {

}
</pre>
<p>Noch einmal: die Besonderheit an dieser Service Bean besteht darin, dass auf dem Server nur eine Instanz davon besteht. Im Gegensatz zu EJB Services ist ein MBean Service nicht gepoolt, beh&#228;lt seinen Status (stateful) und hat application-scope. Letztlich ist dies aber eine normale Session Bean, von der lediglich nur eine Instanz besteht. Man arbeitet somit in dem Context der Anwendung und kann auf alle konfigurierten Resourcen, wie z.b. den EntityManager oder andere EJBs, zugreifen.</p>
<p>Um diese Service EJB nun noch JMX f&#228;hig zu machen und sie an einem MBean Server anmelden zu k&#246;nnen, muss nun noch ein Management Interface erstellt und der Service Bean durch die <span class="code">@org.jboss.annotation.ejb.Management</span> Annotation bekannt gemacht werden.</p>
<p>Hier das Management Interface, welche die Getter und Setter f&#252;r das Attribut &#8220;<span class="code">lastWrittenText</span>&#8221; sowie die Service-Methode <span class="code">printOut()</span> deklariert, die sp&#228;ter &#252;ber die JMX Konsole aufgerufen werden k&#246;nnen.</p>
<pre name="code" class="java">
public interface MyManagementInterface {

  public String getLastWrittenText();
  public void setLastWrittenText(String lastWrittenText);

  void printOut(String text);
}
</pre>
<p>Die erstellte Service MBean &#8220;<span class="code">MyServiceMBean</span>&#8221; muss dieses Interface nun noch implementieren und zudem das gleiche Interface durch die <span class="code">@Management</span> Annotation bekannt machen. Erst durch diese <span class="code">@Management</span> Annotation wird der JBoss aus den beschriebenen Attributen und Methoden eine Service MBean erstellen und registrieren. Im folgenden der vollst&#228;ndige Source Code f&#252;r den POJO Service  &#8220;<span class="code">MyServiceMBean</span>&#8220;:</p>
<pre name="code" class="java">
import org.jboss.annotation.ejb.Management;
import org.jboss.annotation.ejb.Service;

@Service(objectName="MyApplication:service=MyService")
@Management(MyManagementInterface.class)
public class MyServiceMBean implements MyManagementInterface {

  private String lastWrittenText;

  public void printOut(String text) {
    System.out.println("Given text: " + text);
    lastWrittenText = text;
  }

  public String getLastWrittenText() {
    return lastWrittenText;
  }

  public void setLastWrittenText(String lastWrittenText) {
    this.lastWrittenText = lastWrittenText;
  }
}
</pre>
<p>In dem Code ist zu sehen, das bei der <span class="code">@Service</span> Annotation noch ein Objektname zu finden ist. Dieser dort definierte Name erscheint nach dem Starten des JBoss und dem erfolgreichem deployen der Anwendung in der JMX Konsole (Aufzurufen durch <span class="code">http://localhost:8080/jmx-console/</span>). Im folgenden Screenshot findet man die definierten Namen wieder:</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2008/06/0806_jbosstest_jmx_myservice.gif" alt="" title="JBoss JMX Konsole - POJO Service MBean" class="borderGray alignnone size-full wp-image-81" />
</div>
<p>Selektiert man diesen Service gelangt man in die Service View, in der man alle Attribute und Methoden des Services sehen und aufrufen kann. In diesem Beispiel soll die Methode <span class="code">printOut(String)</span> aufgerufen werden:</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2008/06/0806_jbosstest_jmx_mbean.gif" alt="" title="JBoss Service MBean View" class="borderGray alignnone size-full wp-image-82" />
</div>
<p>Nach der Eingabe des Methodenparameters &#8220;<span class="code">test string</span>&#8221; und dem anschlie&#223;enden Klicken des Buttons &#8220;invoke&#8221; erscheint auch, wie erwartet, der &#252;bergebene Text in der Server Konsole:</p>
<div class="codebox" style="margin-top: 5px; margin-bottom: 25px;">
&#8230;<br />
23:08:51,882 INFO  [Server] JBoss (MX MicroKernel) [4.2.2.GA (build: SVNTag=JBoss_4_2_2_GA date=200710221139)] Started in 21s:386ms<br />
22:09:12,668 INFO  [STDOUT] Given text: test string
</div>
<div class="subHeadline"><a name="mgmtIfXml" class="noLink">JMX Konsole &#8211; Management Interface mit XML beschreiben</a></div>
<p>Leider hat man durch die Verwendung der Annotationen keine M&#246;glichkeit die Service Bean, Attribute, Methoden oder Paramter zu beschreiben, wie es bei der urspr&#252;nglichen XMBean Variante noch als gro&#223;er Vorteil angepriesen wurde.<br />
Die gute Nachricht ist, dass auch hier eine M&#246;glichkeit besteht diese Beschreibungen zu liefern. Der Nachteil an der Sache ist, man muss wieder auf eine XML Beschreibung zur&#252;ckgreifen. Und zwar kommt wieder der XML Deployment Descriptor der XMBeans ins Spiel. Man kann genau diesen in der <span class="code">@Service</span> Annotation angeben.</p>
<pre name="code" class="java">
@Service(objectName="MyApplication:service=MyService",
		 xmbean="resource:META-INF/myService-xmbean.xml")
public class MyServiceMBean  implements MyManagementInterface {
  ...
}
</pre>
<p>Wichtig ist, dass die <span class="code">@Management</span> Annotation entfernt werden muss weil nun wieder der XMBeans Deployment Descriptor die Beschreibung der MBean &#252;bernimmt. In diesem Beispiel hei&#223;t der Deployment Descriptor <span class="code">myService-xmbean.xml</span> und liegt im <span class="code">META-INF</span> Ordner, direkt neben der <span class="code">persistence.xml</span> Datei. Wenn die Datei nicht gefunden wird schmei&#223;t der JBoss AS w&#228;hrend des Startens Exceptions, so dass der Fehler schnell bemerkt wird.</p>
<p>Der XMBeans Deployment Descriptor <span class="code">myService-xmbean.xml</span> sieht f&#252;r die oben gelistete POJO Service Klasse wie folgt aus:</p>
<p><code></p>
<pre name="code" class="xml">
&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;!DOCTYPE mbean PUBLIC "-//JBoss//DTD JBOSS XMBEAN 1.0//EN"
  "http://www.jboss.org/j2ee/dtd/jboss_xmbean_1_0.dtd"&gt;

<mbean>
  <description>javathreads.de - MyService MBean Beschreibung</description>

  <class>de.webthreads.tippit.mgmt.MyServiceMBean</class>

  <!-- Attributes -->
  <attribute access="read-write" getMethod="getLastWrittenText" setMethod="setLastWrittenText">
    <description>Der zuletzt ausgegebene Text wird hier gehalten.</description>
    <name>LastWrittenText</name>
    <type>java.lang.String</type>
  </attribute>

  <!-- Operations -->
  <operation>
    <description>Methode um einen Text auf der Konsole auszugeben.</description>
    <name>printOut</name>
<parameter>
      <description>Der Text der ausgegeben werden soll.</description>
      <name>text</name>
      <type>java.lang.String</type>
    </parameter>
    <return-type>void</return-type>
  </operation>
</mbean>
</pre>
<p></code></p>
<p>In der XML Datei sind die Beschreibungen f&#252;r das Attribut sowie der Methode zu sehen. Die DTD des <span class="code">mbean</span> Elements sieht wie folgt aus:</p>
<div style="text-align:center">
<a href="http://www.redhat.com/docs/manuals/jboss/jboss-eap-4.2/doc/Server_Configuration_Guide/JBoss_JMX_Implementation_Architecture-JBoss_XMBeans.html"><img src="http://javathreads.de/data/uploads/2008/07/xmbean_1_2_dtd.jpg" alt="" title="jboss_xmbean_1_2.dtd" class="borderImgGray alignnone size-full wp-image-132" /></a>
</div>
<p>Schaut man sich jetzt die JMX Konsole an sind die Beschreibungen nun auch vorhanden, wie man im folgenden Screenshot sehen kann:</p>
<div class="singleImgDiv">
<img src="http://javathreads.de/data/uploads/2008/06/0806_jbosstest_jmx_servicebean-xmbean.gif" alt="" title="JBoss Service MBean View - XMBean mit Beschreibungen" class="borderGray alignnone size-full wp-image-83" />
</div>
<p>Ich habe in diesem Screenshot mal die Abh&#228;ngkigkeit zur XMBean hervorgehoben. Vergleicht man diese Zeile mit dem Screenshot der JMX MBean View der MBean, die mit der <span class="code">@Management</span> erstellt wurde, so sieht man dort die Zeile: <span class="code">MBean Java Class: de.javathreads.jbosstest.mgmt.MyManagementInterface</span></p>
<p>Auch so kann man also erkennen welcher Weg gegangen wurde um eine MBean f&#252;r die JMX Konsole zu erstellen.</p>
<div class="subHeadline">Fazit</div>
<p>Insgesamt war das Erstellen einer solchen Service MBean im JBoss so einfach, dass ich es hier kurz dokumentieren musste =). Der Weg dahin hat doch etwas l&#228;nger gedauert aber dadurch bin ich &#252;ber einige interessante Seiten gestolpert, wie zum Beispiel das <a href="http://wiki.jboss.org/wiki/Wiki.jsp?page=FAQJBossJMX">JBoss Wiki &#8211; JMX FAQ</a> oder das wirklich gute Tutorial von <a href="http://trailblazer.demo.jboss.com/EJB3Trail/serviceobjects/jmx/">JBoss Trailblazer</a>. Nach dem lesen und googeln habe ich es ausprobiert und es hat tats&#228;chlich (fast) auf Anhieb funktioniert.<br />
Und jetzt w&#228;hrend ich diesen Artikel fast zu Ende geschrieben habe entdecke ich noch eine <a href="http://www.tutego.com/blog/javainsel/2007/02/service-ejbs-bei-jboss-ejb-31-ruft.html">Blitzanleitung</a> auf dem Blog von Christian Ullenboom (Author von Java ist auch eine Insel) mit einer Schnelleinf&#252;hrung..</p>
<p>Und gerade weil das Erstellen eines solchen JMX MBean Service eigentlich so einfach ist sollten diese Erkenntnisse hier festgehalten werden.</p>
<div style="margin-top: 20px">
Updates<br />
[27.06.] <em>Aufgrund einer Nachfrage im Kommentar wurde der Abschnitt &#8220;<a href="#verschArtenMBeans">Verschiedene Arten der JBoss MBean Services</a>&#8221; und der letzte Abschnitt &#8220;<a href="#mgmtIfXml">Management Interface mit XML Beschreiben</a>&#8221; nachtr&#228;glich in diesem Artikel eingef&#252;gt.</em><br />
[21.07.] <em>XMBean DTD Grafik und Link zur JBoss Doku hinzugef&#252;gt.</em>
</div>
]]></content:encoded>
			<wfw:commentRss>http://javathreads.de/2008/06/eine-ejb-als-jmx-mbean-fuer-jboss-as-erstellen/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
	</channel>
</rss>

