<?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>Olaf&#039;s blog &#187; tomcat</title>
	<atom:link href="http://olafsblog.sysbsb.de/category/tomcat/feed/" rel="self" type="application/rss+xml" />
	<link>http://olafsblog.sysbsb.de</link>
	<description>Olaf&#039;s blog on software development and life</description>
	<lastBuildDate>Thu, 18 Nov 2010 07:57:20 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Using apache to redirect from the root “/” context to a webapp context</title>
		<link>http://olafsblog.sysbsb.de/using-apache-to-redirect-from-the-root-%e2%80%9c%e2%80%9d-context-to-a-webapp-context/</link>
		<comments>http://olafsblog.sysbsb.de/using-apache-to-redirect-from-the-root-%e2%80%9c%e2%80%9d-context-to-a-webapp-context/#comments</comments>
		<pubDate>Mon, 12 Oct 2009 19:54:26 +0000</pubDate>
		<dc:creator>olaf</dc:creator>
				<category><![CDATA[apache]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[tomcat]]></category>

		<guid isPermaLink="false">http://olafsblog.sysbsb.de/?p=75</guid>
		<description><![CDATA[Just a short note:
The best way of doing this avoiding endless recursion is to use apaches RedirectMatch rule, like this:

   RedirectMatch ^/$ http://targethost/mywebapp

Easy, agreed. But i&#8217;ve seen (and done it wrong my self) quite often&#8230;
]]></description>
			<content:encoded><![CDATA[<p>Just a short note:</p>
<p>The best way of doing this avoiding endless recursion is to use <a href="http://httpd.apache.org/docs/2.2/mod/mod_alias.html#redirectmatch">apaches RedirectMatch rule</a>, like this:</p>
<p><code><br />
   RedirectMatch ^/$ http://targethost/mywebapp<br />
</code></p>
<p>Easy, agreed. But i&#8217;ve seen (and done it wrong my self) quite often&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://olafsblog.sysbsb.de/using-apache-to-redirect-from-the-root-%e2%80%9c%e2%80%9d-context-to-a-webapp-context/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Spring context, überall &#8211; auch mit openAMF</title>
		<link>http://olafsblog.sysbsb.de/spring-context-uberall-auch-mit-openamf/</link>
		<comments>http://olafsblog.sysbsb.de/spring-context-uberall-auch-mit-openamf/#comments</comments>
		<pubDate>Wed, 12 Mar 2008 12:45:22 +0000</pubDate>
		<dc:creator>olaf</dc:creator>
				<category><![CDATA[J2EE]]></category>
		<category><![CDATA[System architecture]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[spring]]></category>
		<category><![CDATA[tomcat]]></category>

		<guid isPermaLink="false">http://olafsblog.sysbsb.de/?p=27</guid>
		<description><![CDATA[Benutzt man zur Anbindung eines Flash-Frontends openAMF oder macht man irgend etwas Ähnliches, was am DispatcherServlet vorbei geht, muss man nicht auf die AOP basierten scopes verzichten. In diesem Fall stellt ein einfacher Filter in der web.xml die entsprechenden Scopes ur Verfügung: 

    &#60;filter&#62;
        &#60;filter-name&#62;springContextFilter&#60;/filter-name&#62;
 [...]]]></description>
			<content:encoded><![CDATA[<p>Benutzt man zur Anbindung eines Flash-Frontends <a href="http://www.openamf.com/cms/">openAMF</a> oder macht man irgend etwas Ähnliches, was am <a href="http://static.springframework.org/spring/docs/2.5.x/api/org/springframework/web/servlet/DispatcherServlet.html">DispatcherServlet</a> vorbei geht, muss man nicht auf die <a href="http://static.springframework.org/spring/docs/2.5.x/reference/aop-api.html">AOP basierten scopes</a> verzichten. In diesem Fall stellt ein einfacher Filter in der web.xml die entsprechenden Scopes ur Verfügung: </p>
<pre class="brush: xml;">
    &lt;filter&gt;
        &lt;filter-name&gt;springContextFilter&lt;/filter-name&gt;
        &lt;filter-class&gt;org.springframework.web.filter.RequestContextFilter&lt;/filter-class&gt;
    &lt;/filter&gt;

    &lt;filter-mapping&gt;
        &lt;filter-name&gt;springContextFilter&lt;/filter-name&gt;
        &lt;url-pattern&gt;/*&lt;/url-pattern&gt;
    &lt;/filter-mapping&gt;
</pre>
<p>Mehr dazu gibt&#8217;s natürlich in der <a href="http://static.springframework.org/spring/docs/2.0.x/api/org/springframework/web/filter/RequestContextFilter.html">spring-doku</a>!</p>
]]></content:encoded>
			<wfw:commentRss>http://olafsblog.sysbsb.de/spring-context-uberall-auch-mit-openamf/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tomcat mit der Apache Portable Runtime (APR)</title>
		<link>http://olafsblog.sysbsb.de/tomcat-mit-der-apache-portable-runtime-apr/</link>
		<comments>http://olafsblog.sysbsb.de/tomcat-mit-der-apache-portable-runtime-apr/#comments</comments>
		<pubDate>Fri, 15 Feb 2008 10:30:18 +0000</pubDate>
		<dc:creator>olaf</dc:creator>
				<category><![CDATA[J2EE]]></category>
		<category><![CDATA[System architecture]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[tomcat]]></category>

		<guid isPermaLink="false">http://olafsblog.sysbsb.de/?p=26</guid>
		<description><![CDATA[Tomcat-Benutzer finden gelegentlich diese Fehlermeldung im catalina.out:

INFO: The Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: ...

Zumindest dann, wenn die APR-Komponente in der server.xml konfiguriert ist:

&#60;Server port=&#34;...&#34; shutdown=&#34;SHUTDOWN&#34;&#62;
   ...
  &#60;Listener className=&#34;org.apache.catalina.core.AprLifecycleListener&#34; /&#62;
  ...

Dies liegt daran, dass diese Komponenten eine Abhängigkeit auf native [...]]]></description>
			<content:encoded><![CDATA[<p>Tomcat-Benutzer finden gelegentlich diese Fehlermeldung im catalina.out:</p>
<p><code><br />
INFO: The Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: ...<br />
</code></p>
<p>Zumindest dann, wenn die APR-Komponente in der server.xml konfiguriert ist:</p>
<pre class="brush: xml;">
&lt;Server port=&quot;...&quot; shutdown=&quot;SHUTDOWN&quot;&gt;
   ...
  &lt;Listener className=&quot;org.apache.catalina.core.AprLifecycleListener&quot; /&gt;
  ...
</pre>
<p>Dies liegt daran, dass diese Komponenten eine Abhängigkeit auf native Bibliotheken hat, welche auf dem System installiert sein müssen und deren Pfad in die java.library.path-Variable eingetragen sein sollte.</p>
<p>Das ist kein kritischer Fehler, aber es ist wahr, dass die APR auf Produktivsystemen einen spürbaren Vorteil bietet.</p>
<p>Im <a href="http://www.javablog.fi">Javablog</a> gibt es dazu zwei exzellente Beiträge:</p>
<p><a href="http://javablog.fi/blog/default/Java/2007/03/05/Using-Tomcat-with-Apache-Portable-Runtime">Dieser Beitrag schildert die Installation der APR</a>.</p>
<p><a href="http://javablog.fi/blog/default/Java/2007/03/16/E-commerce-at-lightspeed">In dieser Beitrag wird der gemessene Performance-Gewinn durch APR gezeigt</a>.</p>
<p>Beides sehr lesenswert!</p>
]]></content:encoded>
			<wfw:commentRss>http://olafsblog.sysbsb.de/tomcat-mit-der-apache-portable-runtime-apr/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tomcat 5 und crosscontext-Konfiguration</title>
		<link>http://olafsblog.sysbsb.de/tomcat-5-und-crosscontext-konfiguration/</link>
		<comments>http://olafsblog.sysbsb.de/tomcat-5-und-crosscontext-konfiguration/#comments</comments>
		<pubDate>Thu, 31 Jan 2008 14:22:44 +0000</pubDate>
		<dc:creator>olaf</dc:creator>
				<category><![CDATA[J2EE]]></category>
		<category><![CDATA[System architecture]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[tomcat]]></category>

		<guid isPermaLink="false">http://olafsblog.sysbsb.de/?p=21</guid>
		<description><![CDATA[Manchmal ist es sinvoll, aus einem Context in Tomcat auf einen Anderen zuzugreifen. zum Beispiel dann, wenn eine CMS-Applikation getrennt von statischen, von Benutzern gepflegten Ressourcen gehalten werden soll.
Zugriff von einem Context auf einen anderen über die Servlet-API
Will man von einem anderen Context auf einen anderen zugreifen, lässt sich der gewünschte Context recht einfach aus [...]]]></description>
			<content:encoded><![CDATA[<p>Manchmal ist es sinvoll, aus einem Context in Tomcat auf einen Anderen zuzugreifen. zum Beispiel dann, wenn eine CMS-Applikation getrennt von statischen, von Benutzern gepflegten Ressourcen gehalten werden soll.</p>
<h4>Zugriff von einem Context auf einen anderen über die Servlet-API</h4>
<p>Will man von einem anderen Context auf einen anderen zugreifen, <a href="http://java.sun.com/products/servlet/2.3/javadoc/javax/servlet/ServletContext.html#getContext(java.lang.String)">lässt sich der gewünschte Context recht einfach aus dem <code>ServletContext</code></a> erhalten:<br />
<span id="more-21"></span></p>
<pre class="brush: java;">
 ...
 ServletContext otherContext = servletContext.getContext(&quot;/othercontext&quot;);
 // The context may be null if the application server does not permit cross-context access.
 if (otherContext != null) {
     ...
 }
 ...
</pre>
<p>Wobei man sich den aktuellen Context beispielsweise über einen <a href="http://java.sun.com/products/servlet/2.3/javadoc/javax/servlet/ServletContextListener.html">Listener</a> oder <a href="http://java.sun.com/products/servlet/2.3/javadoc/javax/servlet/Filter.html">Filter</a> besorgen kann.</p>
<h4>Zugriff ermöglichen: Context-Konfiguration in tomcat</h4>
<p>Im <a href="http://tomcat.apache.org">tomcat application server</a> liefert der Aufruf dieser Methode jedoch stets <code>null</code> zurück &#8211; Die Sicherheitseinstellungen von tomcat lassen den Zugriff auf andere Webapps per default nicht zu.</p>
<p>Der Zugriff funktioniert erst, wenn im Context, aus welchem man auf die anderen Contexts zugreifen möchte, das Attribut <code>crossContext</code> auf <em>true</em> gesetzt ist.</p>
<pre class="brush: xml;">
   &lt;Context path=&quot;[Pfad]&quot; crossContext=&quot;true&quot; ... /&gt;
</pre>
<p>(siehe dazu die <a href="http://tomcat.apache.org/tomcat-6.0-doc/config/context.html">Context-Doku von tomcat 6</a>).</p>
<p>Allerdings funktioniert diese Konfiguration erst ab tomcat 6 ohne Schwierigkeiten. in Tomcat 5 gibt es eine Reihe von Bugs, insbesondere dann, wenn die crosscontext-webapp die ROOT-webapp ist. Damit crossContext im 5&#8242;er-Tomcat läuft, darf das <code>path</code>-Attribut <em>nicht</em> auf &#8220;/&#8221; gesetzt sein (Dies ist ohnehin ein ärgerlicher Verstoss gegen die servlet-Spezifikation), sonder muss &#8220;&#8221; lauten. Ansonsten greift <em>crossContext=&#8221;true&#8221;</em> nicht.</p>
<p>Demenstprechend sähe eine context-Konfiguration für die ROOT-webapp so aus:</p>
<pre class="brush: xml;">
   &lt;Context path=&quot;&quot; crossContext=&quot;true&quot; ... /&gt;
</pre>
<p>Wer jedoch <a href="http://tomcat.apache.org/tomcat-6.0-doc/deployer-howto.html">WAR-Deployment<br />
</a> im 5&#8242;er Tomcat verwendet wird nun feststellen müssen, dass tomcat die WAR-Dateien nicht mehr entpackt und die Applikation nicht mehr ausliefert &#8211; ohne eine Fehlermeldung.</p>
<p>Dieses Verhalten lässt sich erst dadurch beheben, dass man als <em>appBase</em>-Attribut den Dateinamen des .war-Archives angibt, welches unter $CATALINA_BASE/webapps deployt ist, bspw. ROOT.war:</p>
<pre class="brush: xml;">
   &lt;Context path=&quot;&quot; crossContext=&quot;true&quot; appBase=&quot;ROOT.war&quot; /&gt;
</pre>
<p>Jetzt wird auch die .war-Datei wieder entpackt.<br />
Dummerweise ist es nun möglich, dass Tomcat die welcome-files (index.jsp) nicht mehr beim Aufruf von &#8220;/&#8221; ausliefert, was weitere workarounds nach sich zieht.</p>
<h4>Fazit</h4>
<p>Wer <code>crossContext</code>-Zugriffe benötigt, ist gut beraten, den aktuellen tomcat 6 zu verwenden bzw. auf diesen umzusteigen &#8211; erst die 6&#8242;er Reihe verhält sich diesbezüglich spezifikationsgemäss.</p>
]]></content:encoded>
			<wfw:commentRss>http://olafsblog.sysbsb.de/tomcat-5-und-crosscontext-konfiguration/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Continuum-1.1 aufsetzen</title>
		<link>http://olafsblog.sysbsb.de/java-entwicklungsarchitektur-teil-1-continuum-11-aufsetzen/</link>
		<comments>http://olafsblog.sysbsb.de/java-entwicklungsarchitektur-teil-1-continuum-11-aufsetzen/#comments</comments>
		<pubDate>Fri, 18 Jan 2008 18:11:19 +0000</pubDate>
		<dc:creator>olaf</dc:creator>
				<category><![CDATA[J2EE]]></category>
		<category><![CDATA[System architecture]]></category>
		<category><![CDATA[System engineering]]></category>
		<category><![CDATA[continuum]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[maven 2]]></category>
		<category><![CDATA[tomcat]]></category>

		<guid isPermaLink="false">http://olafsblog.sysbsb.de/?p=15</guid>
		<description><![CDATA[In diesem Post zeige ich, wie der Continuous-Integration Server Continuum mit tomcat 6     und MYSQL aufgesetzt und konfiguriert werden kann. 
Hin und wieder ist man in der Universität mit der vergnüglichen Tatsache konfrontiert, dass es weder eine brauchbare vorhandene Anzahl an Entwicklungswerkzeugen gibt, noch dass sich irgend jemand &#8211; ausserhalb von [...]]]></description>
			<content:encoded><![CDATA[<p>In diesem Post zeige ich, wie der Continuous-Integration Server <a href="http://maven.apache.org/continuum/ ">Continuum</a> mit <a href="http://tomcat.apache.org/">tomcat 6</a>     und MYSQL aufgesetzt und konfiguriert werden kann. </p>
<p>Hin und wieder ist man in der Universität mit der vergnüglichen Tatsache konfrontiert, dass es weder eine brauchbare vorhandene Anzahl an Entwicklungswerkzeugen gibt, noch dass sich irgend jemand &#8211; ausserhalb von Lehrveranstaltungen &#8211; um Prozesse in der Softwareentwicklung kümmert.</p>
<p>Sprich: Ein Projekt soll umgesetzt werden, und auÃŸer einem SVN-Account gibt&#8217;s nichts.</p>
<p>Bei einem Team von 8 Leuten ist das völlig unzureichend. Neben einem ordentlichen <a href="http://en.wikipedia.org/wiki/Issue_tracking">Issue tracking</a> bin ich auch daran gewöhnt,<span id="more-15"></span> mittels eines <a href="http://en.wikipedia.org/wiki/Continuous_integration">Continous Integration-Systems</a> aktuelle Buildstände abzurufen und den Stand der Dinge im Auge behalten zu können. Von einem ordentlichen WIKI zur Projektdoku ganz zu schweigen.</p>
<p>Da der Code an sich mittels Maven2 verwaltet wird, hatte ich sofort <a href="http://maven.apache.org/continuum/">continuum</a> ins Auge gefasst &#8211; schlieÃŸlich ist continuum selbst Java-basiert und speziell für maven &#8211; Projekte entwickelt.</p>
<h3>1.1: Voraussetzungen</h3>
<p>Da Continuum eine J2EE-Webapplikation ist, muss zunächst einmal ein entsprechender Servletcontainer her.<br />
Im recht schwachbrüstigen <a href="http://docs.codehaus.org/display/CONTINUUMUSER/Home">WIKI</a> werden Resin, JBOSS, tomcat und glassfish als Referenzen angeführt.<br />
Da ich mich gut mit <a href="http://tomcat.apache.org">Tomcat</a> auskenne entschloss ich mich, continuum mit diesem zu installieren. als JDK entschied ich mich für Sun&#8217;s <a href="http://java.sun.com/javase/downloads/index.jsp">JDK 1.6.3</a>, Datenbank sollte nicht die integrierte Derby, sondern ein vorhandenes MYSQL werden.</p>
<h3>1.2: Die richtige Distribution herunterladen</h3>
<p>Auf der <a href="http://maven.apache.org/continuum/download.html">continuum-Downloadseite</a> stehen unterschiedliche Arten des 1.1-Releases zur Verfügung:<br />
Die etwas schräge standalone-Distribution (Warum sollte man so etwas benutzen, wo es ein schönes, Standardkonformes WAR-Deployment gibt?), und die webapp-Distribution.<br />
Ich empfehle in jedem Fall letztere zu verwenden, da somit kein Herumgefrickel in irgendwelchen Scripten notwendig wird.</p>
<h3>1.3: continuum deployen und konfigurieren</h3>
<h4>1.3.1: Tomcat installieren</h4>
<p>Der gute Tomcat lässt sich sehr einfach installieren. Ist das JDK vorhanden muss lediglich die Umgebungsvariable JAVA_HOME gesetzt sein.<br />
Dann reicht es, wenn man keine weiteren Anpassungen braucht, die <a href="http://tomcat.apache.org/download-60.cgi#6.0.16">tomcat 6 core-distribution herunterzuladen</a> und zu entpacken. Unix-typisch sind unter <em>bin/</em> die ausführbaren Dateien, sprich start-Scripts (auch das weiter unten erwähnte catalina.sh &#8211; Script).<br />
Unter <em>conf/</em> findet man die <em>server.xml</em>, in welcher man die unten angeführten Anpassungen für die mysql-Anbindung durchführen kann.</p>
<h4>1.3.2: continuum-Parameter in Umgebungsvariablen</h4>
<p>Aus einem mir unklaren Grund brauch die continuum-webapp zwei JVM-Parameter um sich &#8220;zu orientieren&#8221;:<br />
appserver.home und appserver.base sollten entsprechend auf das CATALINA_HOME und CATALINA_BASE Verzeichnis zeigen.<br />
Bei einer sauberen default- Installation sind diese Verzeichnisse identisch. Ich habe das durch einen Eintrag am Anfang der <em>catalina.sh</em> erledigt:</p>
<pre class="brush: java;">
export CATALINA_OPTS=&quot;-Dappserver.home=$CATALINA_HOME -Dappserver.base=$CATALINA_HOME&quot;
</pre>
<h4>1.3.3: MYSQL anbinden</h4>
<p>Out-Of-The-Box verwendet Continuum Derby als Datenbank. Da ich MYSQL verwenden wollte war es notwendig, eigene <em>DataSource</em>-Konfigurationen vorzunehmen.<br />
DataSources können Global oder Kontext-spezifisch in Tomcat Konfiguriert werden. Ich entschied mich, sie im <code>&lt;Context&gt;</code> Element der server.xml zu konfigurieren:</p>
<pre class="brush: xml;">
&lt;Context path=&quot;/continuum&quot; docBase=&quot;continuum&quot;&gt;
&lt;Resource name=&quot;jdbc/users&quot;
            auth=&quot;Container&quot;
            type=&quot;javax.sql.DataSource&quot;
            username=&quot;...&quot;
            password=&quot;...&quot;
            driverClassName=&quot;com.mysql.jdbc.Driver&quot;
            url=&quot;jdbc:mysql://localhost/...?autoReconnect=true&quot; /&gt;

  &lt;Resource name=&quot;jdbc/continuum&quot;
            auth=&quot;Container&quot;
            type=&quot;javax.sql.DataSource&quot;
            username=&quot;...&quot;
            password=&quot;...&quot;
            driverClassName=&quot;com.mysql.jdbc.Driver&quot;
            url=&quot;jdbc:mysql://localhost/...?autoReconnect=true&quot; /&gt;

  &lt;Resource name=&quot;mail/Session&quot;
            auth=&quot;Container&quot;
            type=&quot;javax.mail.Session&quot;
            mail.smtp.host=&quot;localhost&quot;/&gt;
&lt;/Context&gt;
</pre>
<p>Dazu muss der passende mysql-connector natürlich im lib-Verzeichnis des Tomcats platziert werden. (Bei 5&#8242;er Tomcats unter common/lib, ab 6 einfach &#8220;lib&#8221;).<br />
Wichtig ist, dass der Datenbanknutzer Tabellen etc. anlegen darf. Zudem ist bei der Anbindung von continuum an MYSQL oft folgende Fehlermeldung zu sehen:</p>
<p><code><br />
Error thrown executing CREATE TABLE '.....'<br />
...<br />
com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: Specified key was too long; max key length is 765 bytes<br />
</code></p>
<p>Das Problem existiert, da Continuum PRIMARY KEY-Constraints über mehrere varchar-Felder (als composite primary key) verwendet und tritt auf, wenn für<br />
das Encoding der für continuum verwendeten Datenbank ein Encoding gewählt wurde, wass mehr als ein Byte pro Character verwendet &#8211; Beispielsweise &#8220;utf8_general_ci&#8221;.<br />
Ich habe aus diesem Grund ein latin1-Encoding verwendet &#8211; Danach lief alles glatt.</p>
<h4>1.3.4: Richtiges ablegen der .war-Datei</h4>
<p>Extrem wichtig ist, dass Verzeichnis der continuum webapp unter &#8220;webapps&#8221; genau so zu nennen wie den Contextnamen:</p>
<pre class="brush: xml;">
&lt;Context path=&quot;/continuum&quot; docBase=&quot;continuum&quot;&gt;
</pre>
<p>Da es ansonsten zu unangenehmen Fehlern bei der Auflösung der konfigurierten Datasource kommt.<br />
Das continuumâ€¦.war-File sollte also unter &#8220;webapps&#8221; am besten als &#8220;continuum.war&#8221; gespeichert werden.</p>
<h4>1.3.5: Start!</h4>
<p>Mit diesen Einstellungen sollte die Continuum webapp starten. Der Startvorgang wird recht ausführlich im logs-verzeichnis von catalina protokolliert.</p>
<h3 id="improveconf">1.4: Konfiguration verbessern</h3>
<p>Die Out-Of-The-Box Konfiguration hat noch ein paar Defizite, welche in der application.xml der ausgepackten .war-Datei verbessert werden können.<br />
Diese findet sich unter â€¦/webapps/continuum/WEb-INF/classes/META-INF/plexus.</p>
<p>Unter</p>
<pre class="brush: xml;">
    &lt;!--
    | The mail notifier
    |--&gt;
    &lt;component&gt;
      &lt;role&gt;org.codehaus.plexus.notification.notifier.Notifier&lt;/role&gt;
      &lt;role-hint&gt;mail&lt;/role-hint&gt;
      &lt;implementation&gt;org.apache.maven.continuum.notification.mail.MailContinuumNotifier&lt;/implementation&gt;
    ...
</pre>
<p>Sollte beispielsweise die sender-mailbox konfiguriert werden, da continuum sonst als continuum@localhost Nachrichten per SMTP versendet:</p>
<pre class="brush: xml;">
    &lt;configuration&gt;
        &lt;from-mailbox&gt;continuum@myhost.domain&lt;/from-mailbox&gt;
        &lt;from-name&gt;Continuum Server&lt;/from-name&gt;
</pre>
<h3>1.5: Problem mit Jsch beheben</h3>
<p>In der mit Continuum ausgelieferten Version enthält die <a href="http://www.jcraft.com/jsch/">java secure channel-Blibliothek</a> Noch einen Nullpointer-Fehler, der sich<br />
allerdings erst dann zeigt, wenn tatsächlich ein build in continuum durchgeführt wird. Dann erscheint folgendes im build-log:</p>
<p><code><br />
...<br />
java.lang.NullPointerException<br />
at com.jcraft.jsch.ChannelSession.run(Unknown Source)<br />
...<br />
</code></p>
<p>Zum Beheben einfach das jsch&#8230;.jar File aus dem WEB-INF/lib Verzeichnes der continuum webapp mit einer aktuelleren Version, in meinem Fall jsch-0.1.36.jar, ersetzen.</p>
<p>Weiter geht es in <a href="http://olafsblog.sysbsb.de/?p=5">Maven2-Projekt in Continuum konfigurieren</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://olafsblog.sysbsb.de/java-entwicklungsarchitektur-teil-1-continuum-11-aufsetzen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

