<?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>zer(o_0)ne &#187; Java</title>
	<atom:link href="http://www.zero0ne.de/category/java/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.zero0ne.de</link>
	<description>Datenreisender, Cyberpunk, Sysadmin, Console Cowboy ... lebt in der Wired</description>
	<lastBuildDate>Thu, 26 Jan 2012 15:34:06 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Tomcat &#8211; server.xml</title>
		<link>http://www.zero0ne.de/2011/06/tomcat-server-xml/</link>
		<comments>http://www.zero0ne.de/2011/06/tomcat-server-xml/#comments</comments>
		<pubDate>Wed, 22 Jun 2011 12:42:44 +0000</pubDate>
		<dc:creator>zer(o_0)ne</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[server.xml]]></category>
		<category><![CDATA[tomcat]]></category>

		<guid isPermaLink="false">http://www.zero0ne.de/?p=2227</guid>
		<description><![CDATA[In der server.xml werden die Startparameter definiert. Der HTTP-Connector, AJP-Connector und die Hosteinstellungen. Auch die Port-Einstellungen sind hier festgehalten. Der Tomcat hat 4 wichtige Ports. Den Anfang macht dabei immer der Shutdown-Port im Server-Tag der Konfiguration. Der Standard für diesen ist „8005“. Betreibt man mehrere Tomcats muss ab dem 2. Tomcat hier etwas Anderes eingetragen [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">In der server.xml werden die Startparameter definiert. Der HTTP-Connector, AJP-Connector und die Hosteinstellungen. Auch  die Port-Einstellungen sind hier festgehalten. Der Tomcat hat 4 wichtige Ports. Den Anfang macht dabei immer der Shutdown-Port im Server-Tag der Konfiguration. Der Standard für diesen ist „<strong>8005</strong>“. Betreibt man mehrere Tomcats muss ab dem 2. Tomcat hier etwas Anderes eingetragen werden. Auf einen Port kann immer nur ein Prozess laufen. Der nächste Port steht im ersten der beiden Standard Connectoren. Dies ist per Default der HTTP-Connector und läuft auf Port „<strong>8080</strong>“ und hat einen SSL-Redirect auf „<strong>8443</strong>“. Der zweite Connector ist als AJP-Connector konfiguriert und läuft standardmäßig auf Port „<strong>8009</strong>“.<span id="more-2227"></span></p>
<p style="text-align: justify;">Über die Connectoren kann Verbindung zum Tomcat aufbauen. Über den HTTP-Connector kann man, wie der Name schon sagt HTTP-Verbindungen aufbauen. Also der Port über den alle Webseiten ausgeliefert werden. Bei Tomcat ist dies defaultmäßig immer &#8220;<strong>8080</strong>&#8220;. Im Gegensatz zu Port &#8220;<strong>80</strong>&#8220;, welcher z.B. bei Apache2 genommen wird. Dies ist so, da Tomcat selten direkt als Webserver auftritt. Meist sind ihm immer noch Webserver vorgeschalten. Zum Beispiel Nginx per Reverse Proxy oder Apache2. Dieser verbindet sich meist über mod_jk. Damit kämen wir dann zum AJP-Connector. Dieser wird also zur kommunikation zwischen dem Apache2 Modul mod_jk und Tomcat benutzt. Das Protokoll ist ein binäres, es wird also kein HTTP gesprochen. Von jedem Connector kann es immer mehrere geben, jeweils natürlich mit unterschiedlichen Ports.</p>
<p style="text-align: justify;">Die „<strong>server.xml</strong>“ ist im XML Stil ausgebaut. Alles wird mit Tags definiert. Alles umschließt das „<strong>&lt;server&gt;</strong>“-Tag. Innerhalb davon sind dann immer einige Listener und Resourcen definiert. Im weiteren Verlauf kommt dann das „<strong>&lt;service&gt;</strong>“-Tag. Darin enthalten sind die Connectoren für HTTP und AJP. Weiterhin noch das „<strong>&lt;engine&gt;</strong>“-Tag. Damit kann man den Standardhost für den Tomcat angeben, welcher genommen werden soll, wenn kein anderer passt. Darin enthalten ist dann einmal das Realm-Tag und dann noch das besagte „<strong>&lt;host&gt;</strong>“-Tag. Dieses entspricht grob den Vhosts beim Apache2-Webserver. Damit kann man Hostnames auf Applikationen mappen. Die „<strong>appBase</strong>“ (DocumentRoot) festlegen und weitere Feature zur Behandlung von Sourcecode. Innerhalb hiervon kann man wiederum „<strong>&lt;context&gt;</strong>“-Tags festlegen, welche dann die Applikationen noch genauer beschreiben und auch Domain-Pfade kennen. Und letztendlich kann man jetzt wieder „<strong>&lt;resource&gt;</strong>“-Tags anlegen, um der Applikation z.B. feste Datenbankverbindungen mitzugeben.</p>
<p style="text-align: justify;">Applikationen kann man hier definieren, muss man aber nicht. Eine wesentlich dynamischere Variante wäre hier, die &#8220;<strong>context.xml</strong>&#8221; zu benutzten. Denn bei Änderungen an der server.xml muss danach der Tomcat neu gestartet werden. Benutzt man die &#8220;<strong>context.xml</strong>&#8221; braucht es zum einspielen keinen Neustart.</p>
<p style="text-align: justify;">&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.zero0ne.de/2011/06/tomcat-server-xml/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Aufbau Apache Tomcat</title>
		<link>http://www.zero0ne.de/2011/06/aufbau-apache-tomcat/</link>
		<comments>http://www.zero0ne.de/2011/06/aufbau-apache-tomcat/#comments</comments>
		<pubDate>Wed, 22 Jun 2011 09:38:47 +0000</pubDate>
		<dc:creator>zer(o_0)ne</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[container]]></category>
		<category><![CDATA[jsp]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[servlet]]></category>
		<category><![CDATA[tomcat]]></category>

		<guid isPermaLink="false">http://www.zero0ne.de/?p=2220</guid>
		<description><![CDATA[Die wichtigsten Verzeichnisse beim Tomcat sind einmal „common/lib“, „conf“, „webapps“ und „work“. Die restlichen Verzeichnisse sind Systemverzeichnisse und haben für die meisten Belange eher eine untergeordnete Bedeutung. Ich lege meine Tomcats oft ins Verzeichnis „/opt/tomcat/“. Dies ist kein Tomcat Standard. Im Wesentlichen sind die neueren Tomcats ähnlich aufgebaut wie der 5.5. Einziger unterschied ist, das die [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Die wichtigsten Verzeichnisse beim Tomcat sind einmal „<strong>common/lib</strong>“, „<strong>conf</strong>“, „<strong>webapps</strong>“ und „<strong>work</strong>“. Die restlichen Verzeichnisse sind Systemverzeichnisse und haben für die meisten Belange eher eine untergeordnete Bedeutung. Ich lege meine Tomcats oft ins Verzeichnis „<strong>/opt/tomcat/</strong>“. Dies ist kein Tomcat Standard. Im Wesentlichen sind die neueren Tomcats ähnlich aufgebaut wie der 5.5. Einziger unterschied ist, das die Libs nicht mehr unter „<strong>common/lib</strong>“ liegen sondern direkt unter „<strong>lib/</strong>“. Weiterhin unterscheiden sie sich natürlich durch neuere Servlet-Engines. Was aber für den Serverbetrieb nicht wichtig ist.</p>
<p style="text-align: justify;">Baumansicht der Verzeichnisstruktur eines Tomcat 5.5</p>
<p style="padding-left: 30px;">|&#8211; bin<br />
|&#8211; common<br />
|   |&#8211; classes<br />
|   |&#8211; endorsed<br />
|   |&#8211; i18n<br />
|   `&#8211; lib<br />
|&#8211; conf<br />
|&#8211; logs<br />
|&#8211; server<br />
|   |&#8211; classes<br />
|   |&#8211; lib<br />
|   `&#8211; webapps<br />
|       |&#8211; host-manager<br />
|       `&#8211; manager<br />
|&#8211; shared<br />
|   |&#8211; classes<br />
|   `&#8211; lib<br />
|&#8211; temp<br />
|&#8211; webapps<br />
|   `&#8211; AG_Public<br />
`&#8211; work<br />
`&#8211; Catalina<br />
<span id="more-2220"></span></p>
<p style="text-align: justify;"><span style="font-size: 15px; font-weight: bold;">Das Lib-Verzeichnis</span></p>
<p style="text-align: justify;">Unterhalt „<strong>common</strong>“ liegt das Verzeichnis für die ganzen Libaries die Tomcat-weit genutzt werden können. Auf diese Libs haben alle Applikationen zugriff.</p>
<h3 style="text-align: justify;">Das Konfigurationsverzeichnis „conf“</h3>
<p style="text-align: justify;">Hier liegen alle Dateien die Konfiguration betreffend. Wichtig sind hier die „<strong>server.xml</strong>“ und die „<strong>web.xml</strong>“. Will man die einfache HTTP-Auth von Tomcat nutzen, ist dann noch die „<strong>tomcat-users.xml</strong>“. Es gibt weiterhin noch eine weitere wichtige Konfig die aber im „bin“-Verzeichnis liegt. Das ist die „<strong>catalina.sh</strong>“. Hier kann man noch Startoptionen für die Tomcat-JVM einstellen. Z.B. Heapsize oder GarbageCollector.</p>
<h3 style="text-align: justify;">Das WebApp-Verzeichnis</h3>
<p style="text-align: justify;">Hie liegt die eigentlich Applikation. Entweder als Verzeichnis oder als WAR-Datei. Es kann auch beides nebeneinander liegen, aber auch nur eins von beiden vorhanden sein. dies obliegt den Einstellungen in der „<strong>server.xml</strong>“. Wenn beides vorhanden ist, ist es meist auch so, das wenn man das WAR löscht, auch das Verzeichnis vom Tomcat selbst entfernt wird.</p>
<h3 style="text-align: justify;">Das „work“-Verzeichnis</h3>
<p style="text-align: justify;">Hier lagert der Tomcat die ganzen compilierten Klassen, Servlets und JSP. Dabei wird alles im Unterordner „<strong>Catalina</strong>“ gespeichert. Hier wiederum wird das ganze noch nach Hosts aufgeteilt. In der Regel sollte bei einer Applikation, dann auch nur ein Verzeichnis mit Namen „<strong>localhost</strong>“ da sein. Hat man in der „<strong>server.xml</strong>“ mehrere Hosts definiert, findet man die hier alle wieder. Wenn man die Vermutung hat, das der Tomcat die neuen Sourcen, welche man gerade eingespielt hat, noch nicht übernommen hat, dann sollte man den Tomcat einmal stoppen, das „<strong>work</strong>“-Verzeichnis leeren und ihn dann wieder starten. Dann ist er gezwungen alles noch mal neu zu compilieren.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.zero0ne.de/2011/06/aufbau-apache-tomcat/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Apache &#8211; Tomcat: Tomcat-Worker Verwendung in VHosts</title>
		<link>http://www.zero0ne.de/2011/02/apache-tomcat-tomcat-worker-verwendung-in-vhosts/</link>
		<comments>http://www.zero0ne.de/2011/02/apache-tomcat-tomcat-worker-verwendung-in-vhosts/#comments</comments>
		<pubDate>Mon, 28 Feb 2011 09:25:11 +0000</pubDate>
		<dc:creator>zer(o_0)ne</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Stuff]]></category>
		<category><![CDATA[apache2]]></category>
		<category><![CDATA[tomcat]]></category>
		<category><![CDATA[VirtualHost]]></category>
		<category><![CDATA[worker]]></category>

		<guid isPermaLink="false">http://www.zero0ne.de/?p=2015</guid>
		<description><![CDATA[Hat man nun alles dementsprechende konfiguriert, kann man in jeden X-beliebigen VHost darauf zugreifen. Dazu gibt man entweder „jkmount“ an, um Pfade auf einen Tomcat-Worker/Balancer zu lenken oder „jkunmount“ um bestimmt Pfade genau davon auszuschließen. Bei den Mount-Direktiven kann man Pfade, Dateien, Dateipfade oder Pattern angeben. Man kann also sagen „jkmount / WorkerName“ um alles [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Hat man nun alles dementsprechende konfiguriert, kann man in jeden X-beliebigen VHost darauf zugreifen. Dazu gibt man entweder „<strong>jkmount</strong>“ an, um Pfade auf einen Tomcat-Worker/Balancer zu lenken oder „<strong>jkunmount</strong>“ um bestimmt Pfade genau davon auszuschließen. Bei den Mount-Direktiven kann man Pfade, Dateien, Dateipfade oder Pattern angeben. Man kann also sagen „<strong>jkmount / WorkerName</strong>“ um alles dieser Domain ab dem Root auf den Tomcat „<strong>WorkerName</strong>“ zu lenken. Also die Syntax ist bei beiden Direktiven immer gleich „<strong>Kommando Pattern Tomcat</strong>“. Möglich wäre also z.B. auch „<strong>jkmount /cms/*.html WorkerName</strong>“ und „<strong>jkunmount /*.php</strong>“. Das erst besagt, das alle Requests auf HTMLs unterhalb von „<strong>/cms</strong>“ an dem Tomcat gesendet werden sollen und das andere, das alle Requests auf PHP-Dateien nicht an an den Tomcat gesendet werden.</p>
<p style="text-align: justify;">&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.zero0ne.de/2011/02/apache-tomcat-tomcat-worker-verwendung-in-vhosts/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Apache &#8211; Tomcat: jk-workers.properties</title>
		<link>http://www.zero0ne.de/2011/02/apache-tomcat-jk-workers-properties/</link>
		<comments>http://www.zero0ne.de/2011/02/apache-tomcat-jk-workers-properties/#comments</comments>
		<pubDate>Mon, 28 Feb 2011 09:13:38 +0000</pubDate>
		<dc:creator>zer(o_0)ne</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Stuff]]></category>
		<category><![CDATA[apache2]]></category>
		<category><![CDATA[jk-workers.properties]]></category>
		<category><![CDATA[konfiguration]]></category>
		<category><![CDATA[tomcat]]></category>

		<guid isPermaLink="false">http://www.zero0ne.de/?p=2006</guid>
		<description><![CDATA[Hier werden wie weiter oben schon besprochen Worker und Balancer konfiguriert. Am Anfang der Datei gibt es eine sogenannte „worker.list“. Alles was hierin aufgelistet wird, ist dem Apache2 später auch bekannt. Darunter folgt dann meist die Konfiguration der einzelnen Worker und Balancer. Wobei ein Balancer auch nur eine Art Worker ist. Ein Worker ist einfach [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Hier werden wie weiter oben schon besprochen Worker und Balancer konfiguriert. Am Anfang der Datei gibt es eine sogenannte „<strong>worker.list</strong>“. Alles was hierin aufgelistet wird, ist dem Apache2 später auch bekannt. Darunter folgt dann meist die Konfiguration der einzelnen Worker und Balancer. Wobei ein Balancer auch nur eine Art Worker ist. Ein Worker ist einfach nur die Beschreibung eines Tomcats. Dabei lässt er sich mit 3 Zeilen abbilden. Man gibt mit „<strong>worker.Name.port</strong>“ den AJP-Connector Port an , mit „<strong>worker.Name.host</strong>“ den Hostnamen oder die IP und mit „<strong>worker.Name.type</strong>“ noch den Typ an. Beim Typ kann man entweder „<strong>ajp13</strong>“ oder „lb“ angeben. Wobei „lb“ dann für Load Balancer steht und „<strong>ajp13</strong>“ für einen normalen Worker. Der „<strong>Name</strong>“ im mittleren Teil der 3 Parameter sollte im dem der JVMRoute aus dem Engine-Tag der Server.xml des Tomcats entsprechen. Im Eigentlich ist dies aber nur wichtig, wenn man einen LB aufbauen möchte. Da so der Apache2 genau die Tomcats unterschieden kann. Hat man also diese 3 Parameter, hat man auch schon einen Worker, diesen fügt man dann noch der am Anfang erwähnten „<strong>worker.list</strong>“ hinzu. Einfach den Namen des Worker dort eintragen in einer Komma-separierten Liste. Anschließend dann noch „<strong>/etc/init.d/apache2 reload</strong>“. Damit ist ein Worker eingerichtet.<span id="more-2006"></span></p>
<p style="text-align: justify;">Einen LoadBalancer richtet man ebenso einfach ein. Zuerst braucht man aber mindestens einen Worker und damit es Sinn macht am besten gleich einen 2. dazu. Den Balancer kann man frei benennen. Mit „<strong>worker.TestBalancer.balance_workers</strong>“ legt man fest, welche Worker Teil des Balancer sind. Dort Komma- separiert die Liste an Tomats mit ihren Worker-Namen eintragen. „<strong>worker.TestBalancer.type</strong>“ setzt man dann auf „<strong>lb</strong>“. Wenn man in seiner Webapplikation mit Seesions arbeitet sollte man dann noch „<strong>worker.adminbalancer.sticky_session</strong>“ auf „<strong>1</strong>“ setzten. Damit man immer auf dem selben Worker bleibt und nicht mit jeden Request hin und her springt. Für die „<strong>method</strong>“ gibt es dann mehrere Optionen, hier ein Auszug aus der offiziellen Doku(1):</p>
<ul style="text-align: justify;">
<li>If method is set to <strong>R[equest] </strong>the balancer will use number of requests to find the best worker. Accesses will be distributed according to the lbfactor in a sliding time window. This is the default value and should be working well for most applications.</li>
<li>If method is set to <strong>S[ession] </strong>the balancer will use number of sessions to find the best worker. Accesses will be distributed according to the lbfactor in a sliding time window. Because the balancer does not keep any state, it actually does not know the number of sessions. Instead it counts each request without a session cookie or URL encoding as a new session. This method will neither know, when a session is being invalidated, nor will it correct its load numbers according to session timeouts or worker failover. This method should be used, if sessions are your limiting resource, e.g. when you only have limited memory and your sessions need a lot of memory.</li>
<li>If set to <strong>T[raffic] </strong>the balancer will use the network traffic between JK and Tomcat to find the best worker. Accesses will be distributed according to the lbfactor in a sliding time window. This method should be used, if network to and from the backends is your limiting resource.</li>
<li>If set to <strong>B[usyness] </strong>the balancer will pick the worker with the lowest current load, based on how many requests the worker is currently serving. This number is divided by the workers lbfactor, and the lowest value (least busy) worker is picked. This method is especially interesting, if your request take a long time to process, like for a download application.</li>
</ul>
<p style="text-align: justify;">Request und Session haben sich bis jetzt bewährt. Der gesamte Parameter wird dann wieder mit „w<strong>orker.TestBalancer.method</strong>“ gesetzt. Damit wäre dann auch ein Balancer konfiguriert. diesen dann nur noch in der „<strong>worker.list</strong>“ mit seinen Namen hinzufügen.</p>
<p style="text-align: justify;">&nbsp;</p>
<p style="text-align: justify;">(1): http://tomcat.apache.org/connectors-doc/reference/workers.html</p>
]]></content:encoded>
			<wfw:commentRss>http://www.zero0ne.de/2011/02/apache-tomcat-jk-workers-properties/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Asterisk-Java Originate</title>
		<link>http://www.zero0ne.de/2010/06/asterisk-java-originate/</link>
		<comments>http://www.zero0ne.de/2010/06/asterisk-java-originate/#comments</comments>
		<pubDate>Fri, 11 Jun 2010 13:33:01 +0000</pubDate>
		<dc:creator>zer(o_0)ne</dc:creator>
				<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://www.zero0ne.de/?p=1567</guid>
		<description><![CDATA[Was kann man denn hierbei so furchtbar falsch machen? irgendwie will der shice Asterisk nicht das machen was ich will. Der Channel wird aufgebaut, aber sobalt man abhebt, wird einfach aufgelegt. Asterisk-Extension und Dialplan-mässig ist eigentlich auch alles ok. Ich starte das ganze aus einer WebApplikation her raus. Als selbst laufendes Jahr funktioniert das ganze [...]]]></description>
			<content:encoded><![CDATA[<p>Was kann man denn hierbei so furchtbar falsch machen? irgendwie will der shice Asterisk nicht das machen was ich will. Der Channel wird aufgebaut, aber sobalt man abhebt, wird einfach aufgelegt. Asterisk-Extension und Dialplan-mässig ist eigentlich auch alles ok. Ich starte das ganze aus einer WebApplikation her raus. Als selbst laufendes Jahr funktioniert das ganze auch.<span id="more-1567"></span></p>
<blockquote><p>private void doAction() throws IllegalStateException, IOException, AuthenticationFailedException, TimeoutException<br />
{<br />
OriginateAction originateAction;<br />
ManagerResponse originateResponse;</p>
<p>originateAction = new OriginateAction();</p>
<p>if (sSipServer != null)<br />
{<br />
log.info(&#8220;OriginateTo: &#8221; + sCallMethod + &#8220;/&#8221; + sCallerNumber + &#8220;@&#8221; + sSipServer);<br />
originateAction.setChannel(sCallMethod + &#8220;/&#8221; + sCallerNumber + &#8220;@&#8221; + sSipServer);<br />
}<br />
else<br />
{<br />
log.info(&#8220;OriginateTo: &#8221; + sCallMethod + &#8220;/&#8221; + sCallerNumber);<br />
originateAction.setChannel(sCallMethod + &#8220;/&#8221; + sCallerNumber);<br />
}<br />
originateAction.setContext(sContext);<br />
originateAction.setExten(sCalleeNumber);<br />
originateAction.setPriority(iPriority);<br />
originateAction.setTimeout(iTimeOut);<br />
originateAction.setAsync(true);</p>
<p>// connect to Asterisk and log in<br />
managerConnection.login();</p>
<p>// send the originate action and wait for a maximum of 30 seconds for Asterisk<br />
// to send a reply<br />
originateResponse = managerConnection.sendAction(originateAction, 30000);</p>
<p>// print out whether the originate succeeded or not<br />
log.info(&#8220;originateResponse: &#8221; + originateResponse.getResponse());</p>
<p>// and finally log off and disconnect<br />
managerConnection.logoff();<br />
}</p></blockquote>
<p>EDIT: Hat sich alles erledigt, ich hatte nur eine Variable falsch gesetzt &lt;&lt; &#8230; damn Millisekunden &#8230; ^^</p>
]]></content:encoded>
			<wfw:commentRss>http://www.zero0ne.de/2010/06/asterisk-java-originate/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Change Tomcat Dynamic Web Module from 2.5 to 2.4 in Eclipse</title>
		<link>http://www.zero0ne.de/2010/01/change-tomcat-dynamic-web-module-from-2-5-to-2-4-in-eclipse/</link>
		<comments>http://www.zero0ne.de/2010/01/change-tomcat-dynamic-web-module-from-2-5-to-2-4-in-eclipse/#comments</comments>
		<pubDate>Fri, 15 Jan 2010 16:22:39 +0000</pubDate>
		<dc:creator>zer(o_0)ne</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[2.4]]></category>
		<category><![CDATA[2.5]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[servlet]]></category>
		<category><![CDATA[servlet-api]]></category>
		<category><![CDATA[tomcat]]></category>

		<guid isPermaLink="false">http://www.zero0ne.de/?p=1264</guid>
		<description><![CDATA[Hat man mal ein dynamisches Webprojekt in Eclipse mit Tomcat 6 angelegt und will nun zurück auf Tomcat 5.5, kann das scheinbar nicht ganz so einfach sein. Will man nämlich in den Projekt Facets einfach die Dynamic Web Modul API von 2.5 auf 2.4 ändern, geht dies nicht. Man kann es zwar auswählen, doch nicht [...]]]></description>
			<content:encoded><![CDATA[<p><!-- 		@page { margin: 2cm } 		P { margin-bottom: 0.21cm } --></p>
<p style="text-align: justify;"><a href="http://www.zero0ne.de/blog/wp-content/uploads/Eclipse_icon.png"><img class="size-full wp-image-1265 alignleft" style="border: 0pt none; margin: 5px;" title="Eclipse_icon" src="http://www.zero0ne.de/blog/wp-content/uploads/Eclipse_icon.png" alt="" width="128" height="128" /></a>Hat man mal ein dynamisches Webprojekt in Eclipse mit Tomcat 6 angelegt und will nun zurück auf Tomcat 5.5, kann das scheinbar nicht ganz so einfach sein. Will man nämlich in den Projekt Facets einfach die Dynamic Web Modul API von 2.5 auf 2.4 ändern, geht dies nicht. Man kann es zwar auswählen, doch nicht bestätigen, da Eclipse die Übernahme der Optionen verweigert.</p>
<p style="text-align: justify;">Doch lässt sich dies ganz einfach Lösen. Einfach nicht den Einstellungs-Dialog von Eclipse nutzen und schon wird alles ganz einfach. In Eclipse einfach den <strong>Navigator</strong>-View auf machen und im betroffenen Projekt den Ordner &#8220;<strong>.settings</strong>&#8221; öffnen. Hier finden wir nun einiges Konfigurationsdateien, die zwar ganz nett sind, die Interessante ist aber <span style="font-family: DejaVu Sans;">﻿</span>&#8220;<strong>org.eclipse.wst.common.project.facet.core.xml</strong>&#8220;. Diese öffnen wir und ändern dort einfach den Parameter &#8220;<strong>&lt;installed facet=&#8221;jst.web&#8221; version=&#8221;2.5&#8243;/&gt;</strong>&#8220;. Hier nur die 2.5 gegen <strong>2.4</strong> austauschen, speichern und fertig. Und schon haben wir unsere Servlet API geändert. Jetzt sollte das Projekt auch wieder im Tomcat 5.5 laufen.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.zero0ne.de/2010/01/change-tomcat-dynamic-web-module-from-2-5-to-2-4-in-eclipse/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>JMX bei einem Gentoo Tomcat aktivieren</title>
		<link>http://www.zero0ne.de/2009/07/jmx-bei-einem-gentoo-tomcat-aktivieren/</link>
		<comments>http://www.zero0ne.de/2009/07/jmx-bei-einem-gentoo-tomcat-aktivieren/#comments</comments>
		<pubDate>Mon, 20 Jul 2009 18:16:21 +0000</pubDate>
		<dc:creator>zer(o_0)ne</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[config]]></category>
		<category><![CDATA[configuration]]></category>
		<category><![CDATA[gentoo]]></category>
		<category><![CDATA[jconsole]]></category>
		<category><![CDATA[jmx]]></category>
		<category><![CDATA[JVM]]></category>
		<category><![CDATA[konfiguration]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[tomcat]]></category>

		<guid isPermaLink="false">http://www.zero0ne.de/?p=853</guid>
		<description><![CDATA[Heute wollte ich endlich mal JMX für meine Tomcats aktivieren. Doch entgegen aller Beschreibungen wollte dies nicht wirklich funktionieren. Normaler weise muss man ja nur in &#8220;/TOMCAT_HOME/bin/catalina.sh&#8221; folgendes eintragen: export CATALINA_OPTS=&#8221;$CATALINA_OPTS \ -Dcom.sun.management.jmxremote \ -Dcom.sun.management.jmxremote.port=9494 \ -Dcom.sun.management.jmxremote.ssl=false \ -Dcom.sun.management.jmxremote.authenticate=false \ Danach hat man erstmal grob Zugang zum Tomcat. Natürlich sollte man das noch mit SSL [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Heute wollte ich endlich mal JMX für meine Tomcats aktivieren. Doch entgegen aller Beschreibungen wollte dies nicht wirklich funktionieren.<span id="more-853"></span><br />
Normaler weise muss man ja nur in &#8220;<strong>/TOMCAT_HOME/bin/catalina.sh</strong>&#8221; folgendes eintragen:</p>
<p style="padding-left: 30px;"><em>export CATALINA_OPTS=&#8221;$CATALINA_OPTS \<br />
-Dcom.sun.management.jmxremote \<br />
-Dcom.sun.management.jmxremote.port=9494 \<br />
-Dcom.sun.management.jmxremote.ssl=false \<br />
-Dcom.sun.management.jmxremote.authenticate=false \<br />
</em></p>
<p style="text-align: justify;">Danach hat man erstmal grob Zugang zum Tomcat. Natürlich sollte man das noch mit SSL und nem Passwort absichern. Doch ich wollte erstmal die grundsätzliche Funktionalität Testen.  Doch jegliche Versuche damit schlugen fehl. Ersteinmal sei auch gesagt, dass ein &#8220;<strong>export</strong>&#8221; davor muss und kein &#8220;<strong>set</strong>&#8220;, wie manche schreiben. Bei einer normalen Tomcat Installation ist es damit dann auch schon getan. Doch bei Gentoo muss das ganze nicht in die catalina.sh eingetragen. Trägt man es dort ein, wird es schlicht und einfach ignoriert. Also wohin nun damit? Für den an Gentoo gewöhnten Admin ist es klar das das nach &#8220;<strong>/etc/conf.d/tomcat-5.5</strong>&#8221; muss, für einen Debian/Ubuntu Admin ist dies allerdings nicht ganz so klar. Und auch Google verschwieg mir dies Information. Ich hatte mich dann nur daran erinnert das neulich beim Apache ähnlich schritte vollführt werden mussten. Da war es dann auf einmal auch ganz logisch, das dies beim Tomcat ähnlich sein würde. Doch darauf kam ich erst nach einer deprimierenden Suche und vielen im Nachhinein unnötigen Test.</p>
<p style="text-align: justify;">In die &#8220;<strong>/etc/conf.d/tomcat-5.5</strong>&#8221; muss nun eben das ganze ohne &#8220;export&#8221; am Anfang eingetragen werden. Wenn man in der Datei ein wenig nach unten geht, findet man auch schon eine dafür vorbereitet Stelle, um die Daten dort einzufügen. Natürlich können sie innerhalb der Datei überall stehen, doch ein wenig Ordnung schadet ja auch nicht. Also hab ich dann dort Folgendes eingefügt:</p>
<p style="text-align: justify;">&nbsp;</p>
<p style="padding-left: 30px;"><em>export CATALINA_OPTS=&#8221;$CATALINA_OPTS \<br />
-Dcom.sun.management.jmxremote \<br />
-Dcom.sun.management.jmxremote.port=9494 \<br />
-Dcom.sun.management.jmxremote.ssl=false \<br />
-Dcom.sun.management.jmxremote.authenticate=false \<br />
</em></p>
<p>&nbsp;</p>
<p style="text-align: justify;">Nachdem ich also alles in &#8220;<strong>/etc/conf.d/tomcat-5.5</strong>&#8221; eingetragen hatte, den Tomcat zum X. mal neu gestartet hatte, konnte ich mich nun endlich per <strong>jconsole</strong> auf diesen verbinden und mir das innere der JVM ansehen.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.zero0ne.de/2009/07/jmx-bei-einem-gentoo-tomcat-aktivieren/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ant + ECJ</title>
		<link>http://www.zero0ne.de/2009/02/ant-ecj/</link>
		<comments>http://www.zero0ne.de/2009/02/ant-ecj/#comments</comments>
		<pubDate>Thu, 26 Feb 2009 22:16:21 +0000</pubDate>
		<dc:creator>zer(o_0)ne</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[ant]]></category>
		<category><![CDATA[ant task]]></category>
		<category><![CDATA[build.xml]]></category>
		<category><![CDATA[Classpath]]></category>
		<category><![CDATA[compile]]></category>
		<category><![CDATA[compiler]]></category>
		<category><![CDATA[ecj]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[eclipse.jdt]]></category>
		<category><![CDATA[eclipse.jdt.core]]></category>
		<category><![CDATA[failonerror]]></category>
		<category><![CDATA[javac]]></category>
		<category><![CDATA[javac-task]]></category>
		<category><![CDATA[jdt]]></category>
		<category><![CDATA[JDTCompilerAdapter]]></category>
		<category><![CDATA[Kompiler]]></category>
		<category><![CDATA[kompilieren]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[proceedOnError]]></category>
		<category><![CDATA[task]]></category>

		<guid isPermaLink="false">http://www.zero0ne.de/?p=381</guid>
		<description><![CDATA[Wenn man in Bezug auf ant mal nicht javac als Compiler nehmen will sondern ECJ, dann braucht man nicht viel zu tun. Als erste schnappt man sich das &#8220;org.eclipse.jdt.core_3.4.2.v_883_R34x.jar&#8221; aus einer Eclipseversion. Hier zum Beispiel aus Eclipse 3.4.1.. Das kopiert man dann in das &#8220;lib&#8221;-Verzeichnis von ant. Bei mir liegt dies unter &#8220;/usr/share/ant/lib&#8221;. Wenn man [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Wenn man in Bezug auf ant mal nicht javac als Compiler nehmen will sondern ECJ, dann braucht man nicht viel zu tun. Als erste schnappt man sich das &#8220;org.eclipse.jdt.core_3.4.2.v_883_R34x.jar&#8221; aus einer Eclipseversion. Hier zum Beispiel aus Eclipse 3.4.1.. Das kopiert man dann in das &#8220;lib&#8221;-Verzeichnis von ant. Bei mir liegt dies unter &#8220;/usr/share/ant/lib&#8221;. Wenn man da keine Schreibrechte hat, kann man das JAR auch nach &#8220;~/.ant/lib&#8221; kopieren. Dort findet es ant dann auch. <span id="more-381"></span>So die Theorie, leider klappe das nicht ganz so einfach auf meinen Fedora 9 System. Ich musste noch aus dem oben genannten JAR das darin enthaltende &#8220;jdtCompilerAdapter.jar&#8221; entpacken und auch in das lib-Verzeichnis von ant. Danach ging alles. Und dieses alles ist folgendes: in seiner &#8220;build.xml&#8221; muss man jetzt nur noch ein spezielles &#8220;property&#8221; setzen.</p>
<p><code>&lt;property name="build.compiler" value="org.eclipse.jdt.core.JDTCompilerAdapter" /&gt;</code></p>
<p style="text-align: justify;">Und damit wären wir auch schon fertig! Jetzt wird beim kompilieren mit dem &#8220;javac task&#8221; immer ECJ genommen anstatt der Compiler des System-JDK.</p>
<p style="text-align: justify;">Und wenn man mal &#8220;fehlerhafte&#8221; Klassen kompilieren will, kann man jetzt das &#8220;javac Flag&#8221; &#8220;failonerror&#8221; auf &#8220;off&#8221; setzten. Anders als der Standard Java Compiler, welcher den build-Prozess dann zwar als erfolgreich markiert, aber nichts macht, kompiliert ECJ auch fehlerhafte Klassen. Also zum Beispiel Klassen wo wiederum andere Klassen importiert werden, welche aber nicht im &#8220;Classpath&#8221; stehen. Denn ECJ bietet das Feature &#8220;proceedOnError&#8221;, welche durch &#8221;failonerror=off&#8221; gesetzt wird.</p>
<p><code> &lt;javac failonerror="off"&gt; blubb &lt;/javac&gt;</code></p>
]]></content:encoded>
			<wfw:commentRss>http://www.zero0ne.de/2009/02/ant-ecj/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Java Archive</title>
		<link>http://www.zero0ne.de/2009/01/java-archive/</link>
		<comments>http://www.zero0ne.de/2009/01/java-archive/#comments</comments>
		<pubDate>Wed, 21 Jan 2009 17:16:15 +0000</pubDate>
		<dc:creator>zer(o_0)ne</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[arbeit]]></category>
		<category><![CDATA[archive]]></category>
		<category><![CDATA[jdk]]></category>
		<category><![CDATA[jdk-1.5]]></category>
		<category><![CDATA[jre]]></category>
		<category><![CDATA[openjdk]]></category>
		<category><![CDATA[sun]]></category>
		<category><![CDATA[sun-jdk]]></category>
		<category><![CDATA[sun-jre]]></category>

		<guid isPermaLink="false">http://www.zero0ne.de/?p=233</guid>
		<description><![CDATA[Wenn man viel mit Java zutun hat, kennt man das Problem der Versionen vllt. Also in der einen unterversion im JDK 1.5 ging noch alles, nach einen vermeintlich harmlosen update, geht auf einmal nichts mehr. Brauch man nun also wieder eine ältere Version muss man meist einige zeit suchen bis man die gewünschte gefunden hat. [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Wenn man viel mit Java zutun hat, kennt man das Problem der Versionen vllt. Also in der einen unterversion im JDK 1.5 ging noch alles, nach einen vermeintlich harmlosen update, geht auf einmal nichts mehr. Brauch man nun also wieder eine ältere Version muss man meist einige zeit suchen bis man die gewünschte gefunden hat. ja die Java seite is dann auch nciht allzu auskunftsfreundlich und liefert einen nur die aktuellen dinge.</p>
<p style="text-align: justify;">Doch ein wenig versteckt biete Sun alle seine Versionen doch noch an. Es gibt sogar ein nettes Interface was einem dies leicht zugänglich macht:  <a href="http://java.sun.com/products/archive/" target="_blank">Das SUN Java Archive</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.zero0ne.de/2009/01/java-archive/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

