<?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>Again I go unnoticed &#187; Java</title>
	<atom:link href="http://www.thiswayup.de/schlagwoerter/java/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.thiswayup.de</link>
	<description>me, my thoughts of flowers threwn</description>
	<lastBuildDate>Wed, 05 May 2010 19:14:17 +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>Running Mediawiki on Tomcat</title>
		<link>http://www.thiswayup.de/2010/04/running-mediawiki-on-tomcat/</link>
		<comments>http://www.thiswayup.de/2010/04/running-mediawiki-on-tomcat/#comments</comments>
		<pubDate>Mon, 12 Apr 2010 06:44:58 +0000</pubDate>
		<dc:creator>tbk</dc:creator>
				<category><![CDATA[Codecrunch]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Mediawiki]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Quercus]]></category>
		<category><![CDATA[Tomcat]]></category>

		<guid isPermaLink="false">http://www.thiswayup.de/?p=915</guid>
		<description><![CDATA[The idea of running a PHP-Application on a Java application server might seem weird to most people &#8211; but if you have a working Java infrastructure and are familiar with setting up Tomcat this might be an option to avoid the &#8220;compiling PHP/Apache &#8211; hassle&#8221;. Follow my step-by-step guide to get Mediawiki up and running [...]]]></description>
			<content:encoded><![CDATA[<p>The idea of running a PHP-Application on a Java application server might seem weird to most people &#8211; but if you have a working Java infrastructure and are familiar with setting up Tomcat this might be an option to avoid the &#8220;compiling PHP/Apache &#8211; hassle&#8221;. Follow my step-by-step guide to get Mediawiki up and running on Tomcat.</p>
<p><span id="more-915"></span></p>
<h2>1. Install Resin Quercus</h2>
<p>Make sure you have a proper <a href="http://java.sun.com">JDK</a> and a recent <a href="http://tomcat.apache.org">Tomcat</a> installed. Download the <a href="http://caucho.com/download/quercus-4.0.3.war">latest Quercus Release</a> and extract it into a folder <code>mediawiki</code> the Tomcat&#8217;s <code>/webapps</code> folder (hint: it&#8217;s a ZIP-file, rename and unzip).</p>
<h2>2. Extract Mediawiki</h2>
<p>Download the <a href="http://download.wikimedia.org/mediawiki/1.15/mediawiki-1.15.3.tar.gz">latest Mediawiki</a> and extract in the <code>mediawiki</code> &#8211; Folder created in the last step. In your Tomcat installation, you should now have a <code>mediawiki</code> &#8211; folder in which you have a Mediawiki-Installation plus two special folders, <code>WEB-INF</code> and <code>META-INF</code>. Update the <code>web.xml</code> with the following bold part.</p>
<h2>3. Configure Quercus</h2>
<p>Quercus comes with a preconfigured <code>web.xml</code> in the <code>WEB-INF</code> &#8211; folder. We have to &#8220;pimp&#8221; it a little to make Mediawiki run properly.</p>
<p><code class="block">&lt;servlet&gt;<br />
    &lt;servlet-name&gt;Quercus Servlet&lt;/servlet-name&gt;<br />
    &lt;servlet-class&gt;com.caucho.quercus.servlet.QuercusServlet&lt;/servlet-class&gt;<br />
    &lt;!--<br />
      Tells Quercus to use the following JDBC database and to ignore the<br />
      arguments of mysql_connect(). We'll configure the MySQL database<br />
      pool in the next step.<br />
    --&gt;<br />
    <strong>&lt;init-param&gt;<br />
      &lt;param-name&gt;database&lt;/param-name&gt;<br />
      &lt;param-value&gt;jdbc/mediawiki&lt;/param-value&gt;<br />
    &lt;/init-param&gt;</strong><br />
  &lt;/servlet&gt;<br />
  &lt;!--<br />
    Tells the Quercus Servlet to parse all files ending on .php<br />
  --&gt;<br />
  &lt;servlet-mapping&gt;<br />
    &lt;servlet-name&gt;Quercus Servlet&lt;/servlet-name&gt;<br />
    &lt;url-pattern&gt;*.php&lt;/url-pattern&gt;<br />
  &lt;/servlet-mapping&gt;<br />
  &lt;!--<br />
    Tells the Quercus Servlet to parse all Requests starting with index.php/<br />
    We need this to support the pretty urls in Mediawiki<br />
  --&gt;<br />
  <strong>&lt;servlet-mapping&gt;<br />
    &lt;servlet-name&gt;Quercus Servlet&lt;/servlet-name&gt;<br />
    &lt;url-pattern&gt;index.php/*&lt;/url-pattern&gt;<br />
  &lt;/servlet-mapping&gt;</strong><br />
&lt;/servlet&gt;<br />
</code></p>
<h2>3. Configure MySQL as JNDI-Datasource in Tomcat</h2>
<p>In order to unleash the full power of a JEE-powered Mediawiki, we&#8217;ll configure a pooled MySQL datasource. In order to access MySQL from Tomcat, we need a proper MySQL database driver. <a href="http://www.mysql.com/downloads/connector/j/">Download it here</a> and place the contained <code>mysql-connector-java-5.1.12-bin.jar</code> in Tomcat&#8217;s <code>/lib</code> directory. Prepare a MySQL database to hold the Mediawiki database tables. Create a MySQL user if necessary.</p>
<p>Then place a file named <code>context.xml</code> in the <code>/webapps/mediawiki/META-INF</code> folder. Fill the variables with values matching your environment:</p>
<p><code class="block">&lt;?xml version="1.0" encoding="UTF-8"?&gt;<br />
&lt;Context&gt;<br />
  &lt;Resource name="jdbc/mediawiki" auth="Container"<br />
    type="javax.sql.DataSource"<br />
    maxActive="20" maxIdle="2" maxWait="10000"<br />
    username="&lt;&lt;MYSQL_USERNAME&gt;&gt;" password="&lt;&lt;MYSQL_PASSWORD&gt;&gt;"<br />
    driverClassName="com.mysql.jdbc.Driver"<br />
    url="jdbc:mysql://&lt;&lt;MYSQL_HOST&gt;&gt;:&lt;&lt;MYSQL_PORT&gt;&gt;/&lt;&lt;MYSQL_DATABASE_NAME&gt;&gt;"/&gt;<br />
&lt;/Context&gt;<br />
</code></p>
<h2>4. Run the Mediawiki-Installer</h2>
<p>Fire up Tomcat and go to <a href="http://localhost:8080/mediakwiki/config/index.php">http://localhost:8080/mediakwiki/config/index.php</a>. Follow the installation steps of Mediawiki. For debugging purposes place a <code>phpinfo.php</code> file in the <code>/webapps/mediawiki</code> folder:</p>
<p><code class="block">&lt;?php<br />
  phpinfo();<br />
?&gt;</code></p>
<p>Enjoy! In the next post I&#8217;ll write some lines about Single-Sign-On with NTLM and Tomcat/Apache/Mediawiki.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.thiswayup.de/2010/04/running-mediawiki-on-tomcat/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mein eigener Websphere-Bug</title>
		<link>http://www.thiswayup.de/2009/01/mein-eigener-websphere-bug/</link>
		<comments>http://www.thiswayup.de/2009/01/mein-eigener-websphere-bug/#comments</comments>
		<pubDate>Tue, 27 Jan 2009 07:48:19 +0000</pubDate>
		<dc:creator>tbk</dc:creator>
				<category><![CDATA[Codecrunch]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Websphere]]></category>

		<guid isPermaLink="false">http://www.thiswayup.de/?p=631</guid>
		<description><![CDATA[Die Umstellungsarbeiten von Websphere Application Server (WAS) Version 6 auf Version 7 gingen eigentlich ziemlich gut voran. Sogar das Clustering der Webanwendungen lief wie geschmiert. Trotzdem habe ich mich &#8211;  wie bei allem IBM-Produkten &#8211; gefragt, wann und in welcher Gestalt der &#8220;Showstopper&#8221; kommt.
Gestern war es dann soweit. Der JSP-Parser (der endlich Java 5 [...]]]></description>
			<content:encoded><![CDATA[<p>Die Umstellungsarbeiten von Websphere Application Server (WAS) Version 6 auf Version 7 gingen eigentlich ziemlich gut voran. Sogar das Clustering der Webanwendungen lief wie geschmiert. Trotzdem habe ich mich &#8211;  wie bei allem IBM-Produkten &#8211; gefragt, wann und in welcher Gestalt der &#8220;Showstopper&#8221; kommt.</p>
<p>Gestern war es dann soweit. Der JSP-Parser (der endlich Java 5 &#038; 6 spricht) versagt bei einer doppelten Definition eines Tag-Verzeichnisses:</p>
<p><code class="block">SRVE0293E: [Servlet-Fehler]-[/WEB-INF/jsp/index.jsp]: com.ibm.ws.jsp.JspCoreException: /WEB-INF/jsp/index.jsp(66,63) /WEB-INF/jsp/other.jsp(5,53) JSPG0240E: Es wurde versucht, das PrÃ¤fix "ringwelt" in "urn:jsptagdir:/WEB-INF/tags" zu Ã¤ndern, obwohl es im aktuellen Geltungsbereich bereits mit "/WEB-INF/tags" definiert ist.</code></p>
<p> Nach einigem Suchen ließ sich das Problem wiefolgt isolieren: Die JSP <code>index.jsp</code> inkludiert die JSP <code>other.jsp</code> statisch. Beide Dateien enthalten eine identische Tagdir-Definition und nutzen den gleichen Taglib-Prefix. Sobald der Include in der <code>index.jsp</code> innerhalb eines JSP-Tags erfolgt, schmeißt der WAS7 die o.g. Exception.</p>
<p><strong>index.jsp</strong><br />
<code class="block">&lt;%@ page contentType="text/html;charset=UTF-8"%&gt;<br />
&lt;%@ taglib prefix="ringwelt" tagdir="/WEB-INF/tags"%&gt;<br />
&lt;%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %&gt;<br />
&lt;!-- This will work --&gt;<br />
&lt;%@ include file="other.jsp" %&gt;<br />
&lt;!--<br />
   This will fail due to the second declaration of<br />
   the tagdir prefix above<br />
--&gt;<br />
&lt;c:if test="${1 == 1}"&gt;<br />
   &lt;%@ include file="other.jsp" %&gt;<br />
&lt;/c:if&gt;</code></p>
<p><strong>other.jsp</strong><br />
<code class="block">&lt;%@ page contentType="text/html;charset=UTF-8"%&gt;<br />
&lt;taglib prefix="ringwelt" tagdir="/WEB-INF/tags"%&gt;<br />
&lt;ringwelt:hello /&gt;<br />
</code></p>
<p>Wie kann man so etwas nicht getestet haben? Ist mir unbegreiflich? Wir haben den Bug zur IBM gegeben. Vielleicht zeigt sich &#8220;Big Blue&#8221; ja erkenntlich und lädt mich zu irgendeiner Webspherekonferenz ein. Gerne in Übersee ;-)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.thiswayup.de/2009/01/mein-eigener-websphere-bug/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Extreme Feedback Device</title>
		<link>http://www.thiswayup.de/2009/01/extreme-feedback-device/</link>
		<comments>http://www.thiswayup.de/2009/01/extreme-feedback-device/#comments</comments>
		<pubDate>Mon, 12 Jan 2009 07:58:43 +0000</pubDate>
		<dc:creator>tbk</dc:creator>
				<category><![CDATA[Codecrunch]]></category>
		<category><![CDATA[Extreme Feedback]]></category>
		<category><![CDATA[Hudson]]></category>
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://www.thiswayup.de/?p=536</guid>
		<description><![CDATA[Zugegeben, die Idee eines &#8220;Extreme Feedback Devices&#8221; ist für agile Projekte nicht wirklich neu. Sie stellen den Zustand es aktuellen Softwarebuilds unmittelbar für das gesamte Team &#8211; durchaus sehr plastisch &#8211; dar, z.B. in Form einer Ampel. Rot steht für einen fehlgeschlagenen Compile, gelb für fehlgeschlagene Tests und grün für alles Schoko. Über die Sinnhaftigkeit [...]]]></description>
			<content:encoded><![CDATA[<p>Zugegeben, die Idee eines &#8220;<strong>Extreme Feedback Devices</strong>&#8221; ist für agile Projekte <a href="http://www.google.de/search?q=extreme+feedback">nicht wirklich neu</a>. Sie stellen den Zustand es aktuellen Softwarebuilds unmittelbar für das gesamte Team &#8211; durchaus sehr plastisch &#8211; dar, z.B. in Form einer Ampel. Rot steht für einen fehlgeschlagenen Compile, gelb für fehlgeschlagene Tests und grün für alles Schoko. Über die Sinnhaftigkeit kann man vielleicht vorher schmunzeln, aber so ein Teil wirkt. Ich habe Tests noch nie so schnell gefixt gesehen.</p>
<p><img src="http://www.thiswayup.de/wp-content/uploads/2009/01/buildampel_aufbau2.png" alt="buildampel_aufbau2" title="buildampel_aufbau2" width="400" height="180" class="aligncenter size-full wp-image-543" /></p>
<p>Als ich einen Teil der Buildprozesse beim Deutschen Ring auf den <a href="https://hudson.dev.java.net/">Hudson Buildserver</a> umgestellt habe, bin ich auf das &#8220;<a href="http://hudson.gotdns.com/wiki/pages/viewpage.action?pageId=20250625">Red Bear Alert Extreme Feedback Device</a>&#8221; gestossen. Die Idee, farbige Lampen über eine USB-Steckdose zu schalten war so einfach und genial &#8211; das wollte ich auch. Leider habe ich keinen reine 5V-USB-Lösung gefunden, dafür aber eine relativ kostengünstige Steckdosenleiste, die sich per USB von einem Windowsrechner steuern lässt. Da ich den Spaß privat bezahlt habe, sollten noch ein paar günstige Lampen dazu und fertig.</p>
<p><span id="more-536"></span></p>
<p><code><strong>Die Einzelteile</strong></code></p>
<ul>
<li><a href="http://www.conrad.de/goto.php?artikel=610808">SIS-PM Steckdosenleiste über USB</a> schaltbar (EUR 25,- mit Conradgutschein)</li>
<li>3 Mal <a href="http://www.ikea.com/de/de/catalog/products/90029221">Grönö</a> von IKEA (3 x EUR 3,99)</li>
<li>je 1 Paket rote, grüne und gelbe Glühbirnen von IKEA (3 x EUR 2,59)</li>
</ul>
<p>Macht zusammen <strong>EUR 44,47</strong> &#8230; geht noch.</p>
<p><code><strong>Der Zusammenbau</strong></code><br />
Der Zusammenbau ist straight forward. Glühbirne in Lampe, Lampe in Steckdose, Steckdose per USB an einen Windowsrechner. </p>
<p><img src="http://www.thiswayup.de/wp-content/uploads/2009/01/buildampel_aufbau.png" alt="buildampel_aufbau" title="buildampel_aufbau" width="400" height="222" class="aligncenter size-full wp-image-545" /></p>
<p>Dann die <a href="http://p101185.typo3server.info/treiber/SIS-PMS.zip">Software für die SIS-PM</a> von Gembird herunterladen und installieren (für die man leider lokale Adminrechte benötigt!).</p>
<p><img src="http://www.thiswayup.de/wp-content/uploads/2009/01/powermanager.jpg" alt="powermanager" title="powermanager" width="160" class="aligncenter size-full wp-image-572" /></p>
<p>Zur besseren Ansteuerbarkeit habe ich eindeutige, sprechende Namen über die Gembirdsoftware vergeben. Anschließend habe ich das Kommandozeileninterface getestet. Einziges Manko ist, dass man den aktuellen Zustand der Leiste nicht via Kommandozeile abgreifen kann.</p>
<p><code class="block">pm.exe -on Ampel -Gruen<br />
pm.exe -off Ampel -Gelb</code></p>
<p><code><strong>Ansteuern über das Netzwerk</strong></code><br />
Unser Softwarebuild erfolgt dezentral, deshalb sollte das Device über HTTP angesprochen werden. Getreu dem Motto &#8220;Für einen Mann mit einem Hammer ist die Welt voller Nägel&#8221; habe ich eine kleine Javakapsel um die Kommandozeilenaufrufe geschrieben, die über HTTP verschiedene Methoden zur Verfügung stellt:</p>
<ul>
<li><strong><code>buildFailed</code></strong> &#8211; Der Compile ist fehlgeschlagen, die Ampel wird rot</li>
<li><strong><code>testsFailed</code></strong> &#8211; Die Tests sind fehlgeschlagen, die Ampel wird gelb</li>
<li><strong><code>ok</code></strong> &#8211; Alles Schoko, die Ampel wird grün</li>
<li><strong><code>building</code></strong> &#8211; Ein neuer Build wurde gestartet. Die Ampel blinkt in Ihrer aktuellen Farbe</li>
<li><strong><code>disco</code></strong> &#8211; Die Vorführfunktion für Gäste ;-)</li>
</ul>
<p>Intern zieht die Software einen Jetty hoch, der die HTTP-Anfragen verarbeitet und via SWT liegt ein Icon im Tray, mit der sich die Anwendung steuern lässt. </p>
<p><img src="http://www.thiswayup.de/wp-content/uploads/2009/01/screenshot1.jpg" alt="screenshot1" title="screenshot1" width="343" height="88" class="aligncenter size-full wp-image-573" /></p>
<p><code><strong>Integration in den Buildprozess</strong></code><br />
Die Integration in unseren ANT-Buildprozess war denkbar einfach. Über den <code>GET</code>-Task lassen sich URLs aus ANT aufrufen:</p>
<p><code class="block">&lt;get src="http://bob.intra....de/feedack/ringwelt/ok" dest="${java.io.tmpdir}/.feedback"/&gt;</code></p>
<p>Fertig. Übrigens: Das Kategoriebild für &#8220;<a href="/themen/codecrunch/">Codecrunch</a>&#8221; ist die Buildampel beim Deutschen Ring in Aktion!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.thiswayup.de/2009/01/extreme-feedback-device/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
