<?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>everflux &#187; Web Entwicklung</title>
	<atom:link href="http://everflux.de/category/web-entwicklung/feed/" rel="self" type="application/rss+xml" />
	<link>http://everflux.de</link>
	<description>Java, Ubuntu - und das Leben.</description>
	<lastBuildDate>Sun, 05 Feb 2012 12:28:51 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
<atom:link rel="hub" href="http://pubsubhubbub.appspot.com" />
	<atom:link rel="hub" href="http://superfeedr.com/hubbub" />
			<item>
		<title>Glassfish 3.1: Probleme mit DWR 2 (und mehr)</title>
		<link>http://everflux.de/glassfish-3-1-probleme-mit-dwr-2-und-mehr-1791/</link>
		<comments>http://everflux.de/glassfish-3-1-probleme-mit-dwr-2-und-mehr-1791/#comments</comments>
		<pubDate>Mon, 28 Feb 2011 19:32:07 +0000</pubDate>
		<dc:creator>everflux</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Web Entwicklung]]></category>
		<category><![CDATA[glassfish]]></category>
		<category><![CDATA[hudson]]></category>
		<category><![CDATA[jenkins]]></category>
		<category><![CDATA[oracle]]></category>

		<guid isPermaLink="false">http://everflux.de/?p=1791</guid>
		<description><![CDATA[Oracle hat heute den Glassfish 3.1 freigegeben &#8211; gleichzeitig als Open Source und als Oracle Glassfish Edition. Es gibt eine Menge neues, und dazu gehören auch neue Probleme. Ich verwende Glassfish schon seit geraumer Zeit um mittels &#8220;Continuous Deployment&#8221; für aktuell entwickelte Anwendungen eine separate Umgebung zu haben, in der ich und Kollegen testen können. [...]<p>Artikel von: <a href="http://everflux.de/">everflux.de</a><br/><br/><a href="http://everflux.de/glassfish-3-1-probleme-mit-dwr-2-und-mehr-1791/">Glassfish 3.1: Probleme mit DWR 2 (und mehr)</a></p>
]]></description>
			<content:encoded><![CDATA[<p>Oracle hat heute den Glassfish 3.1 freigegeben &#8211; gleichzeitig als Open Source und als Oracle Glassfish Edition. Es gibt eine Menge neues, und dazu gehören auch neue Probleme.</p>
<p>Ich verwende Glassfish schon seit geraumer Zeit um mittels &#8220;Continuous Deployment&#8221; für aktuell entwickelte Anwendungen eine separate Umgebung zu haben, in der ich und Kollegen testen können. Das ganze funktioniert mittels eine CI-Servers (<del>Hudson</del> Jenkins in diesem Fall), Maven und einem Deploy Plugin.</p>
<p>Auch mit Glassfish 3.1 funktionierte das Deployment prima &#8211; also hier war kein Update von Jenkins oder dem Deploy Plugin erforderlich. Auch die Anwendung startete &#8211; jedoch funktionierte nichts. Exceptions über ungültige Sessions gab es, auch Log-Einträge vom hier für Ajax eingesetzten DWR (Direct Web Remoting)<br />
<code><br />
2011-02-28 18:57:13,037 [http-thread-pool-8090(2)] ERROR o.d.dwrp.Batch - A request has been denied as a potential CSRF attack.<br />
2011-02-28 19:03:02,105 [http-thread-pool-8090(5)] ERROR o.d.dwrp.Batch - A request has been denied as a potential CSRF attack.<br />
</code><br />
Dank Firebug etwas schlauem Rumraten und Probieren fand ich dann heraus: Glassfish 3.1 setzt Session Cookies per Default auf &#8220;HTTP Only&#8221;. Dazu gibt es bereits ein Ticket im Glassfish Tracker: <a href="http://java.net/jira/browse/GLASSFISH-15730">GLASSFISH-15730</a></p>
<p>Es gibt nun mehrere Möglichkeiten für die nötige Kompatibilität mit Bestandsanwendungen zu sorgen:</p>
<p>Wird man die Anwendung zukünftig immer in einem Servlet 3.0 kompatiblen Container deployen, so kann man in der web.xml das Verhalten umkonfigurieren:</p>
<pre><code>&lt;web-app&gt;
  &lt;session-config&gt;
    &lt;cookie-config&gt;
      <strong>&lt;http-only&gt;true&lt;/http-only&gt;</strong>
    &lt;/cookie-config&gt;
  &lt;/session-config&gt;
&lt;/web-app&gt;
</code></pre>
<p>Alternativ kann man bei DWR den CSRF Check deaktivieren, wovon ich jedoch abraten würde:</p>
<pre>&lt;servlet&gt;
  &lt;servlet-name&gt;dwr-invoker&lt;/servlet-name&gt;
  &lt;servlet-class&gt;org.directwebremoting.servlet.DwrServlet&lt;/servlet-class&gt;
  &lt;init-param&gt;
    &lt;param-name&gt;crossDomainSessionSecurity&lt;/param-name&gt;
    &lt;param-value&gt;false&lt;/param-value&gt;
  &lt;/init-param&gt;
&lt;/servlet&gt;</pre>
<p>Die letzte Möglichkeit ist &#8211; in diesem Fall &#8211; auf DWR 3 umzustellen, hier wurde das Problem grundsätzlich gelöst, so dass nicht mehr per JavaScript auf den Session Cookie zugegriffen werden muss. (Siehe <a href="http://slurm.dojotoolkit.org/jira/browse/DWR-26">DWR-26</a>) Leider gibt es von DWR 3 bisher noch kein Release, sondern lediglich vorab-Versionen.</p>
<p>Das Problem tritt übrigens auch mit Tomcat 7 auf, und nicht nur mit Glassfish 3.1 &#8211; ich frage mich, ob dies Verhalten am Ende sogar in der Servlet 3 Spezifikation vorgegeben ist.<br />
Natürlich betrifft dies nicht ausschließlich DWR, sondern auch andere Anwendungen, die per JavaScript auf den Session Cookie zugreifen wollen/müssen.</p>
<p>Artikel von: <a href="http://everflux.de/">everflux.de</a><br/><br/><a href="http://everflux.de/glassfish-3-1-probleme-mit-dwr-2-und-mehr-1791/">Glassfish 3.1: Probleme mit DWR 2 (und mehr)</a></p>
<p>Ähnliche Beiträge:<ol>
<li><a href='http://everflux.de/glassfish-3-1-und-httponly-session-cookie-1794/' rel='bookmark' title='Glassfish 3.1 und httpOnly Session Cookie'>Glassfish 3.1 und httpOnly Session Cookie</a></li>
<li><a href='http://everflux.de/netbeans-65-milestone-1-php-groovy-glassfish-und-mehr-604/' rel='bookmark' title='Netbeans 6.5 Milestone 1 PHP, Groovy, Glassfish und mehr'>Netbeans 6.5 Milestone 1 PHP, Groovy, Glassfish und mehr</a></li>
<li><a href='http://everflux.de/glassfish-v3-prelude-der-neue-glassfish-ist-da-725/' rel='bookmark' title='GlassFish v3 Prelude: Der neue Glassfish ist da'>GlassFish v3 Prelude: Der neue Glassfish ist da</a></li>
<li><a href='http://everflux.de/glassfish-remote-monitoring-mit-visualvm-auf-ubuntu-1720/' rel='bookmark' title='Glassfish remote Monitoring mit VisualVM auf Ubuntu'>Glassfish remote Monitoring mit VisualVM auf Ubuntu</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://everflux.de/glassfish-3-1-probleme-mit-dwr-2-und-mehr-1791/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Maven, Jetty und Reloads: Session persistieren</title>
		<link>http://everflux.de/maven-jetty-und-reloads-session-persistieren-1775/</link>
		<comments>http://everflux.de/maven-jetty-und-reloads-session-persistieren-1775/#comments</comments>
		<pubDate>Sat, 22 Jan 2011 15:24:31 +0000</pubDate>
		<dc:creator>everflux</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Web Entwicklung]]></category>
		<category><![CDATA[jetty]]></category>
		<category><![CDATA[maven]]></category>

		<guid isPermaLink="false">http://everflux.de/?p=1775</guid>
		<description><![CDATA[Entwickelt man mit Jetty als Servlet Container, so fällt der im Vergleich zu Glassfish relativ hohe Aufwand für Re-Deployments auf: Startet man Jetty per &#8220;mvn jetty:run&#8221; für jedes Deployment erneut, so dauert der Neustart erst mal relativ lange, dazu geht noch die gerade aktive Session verloren. So muss man sich gegebenenfalls nach jeder Änderung bzw. [...]<p>Artikel von: <a href="http://everflux.de/">everflux.de</a><br/><br/><a href="http://everflux.de/maven-jetty-und-reloads-session-persistieren-1775/">Maven, Jetty und Reloads: Session persistieren</a></p>
]]></description>
			<content:encoded><![CDATA[<p>Entwickelt man mit Jetty als Servlet Container, so fällt der im Vergleich zu Glassfish relativ hohe Aufwand für Re-Deployments auf: Startet man Jetty per &#8220;mvn jetty:run&#8221; für jedes Deployment erneut, so dauert der Neustart erst mal relativ lange, dazu geht noch die gerade aktive Session verloren. So muss man sich gegebenenfalls nach jeder Änderung bzw. jedem Restart erneut anmelden.<br />
Das kann man relativ einfach ändern: Jetty verfügt über die Möglichkeit die Session zu persistieren &#8211; dazu müssen natürlich Session Objekte serialisierbar sein, aber das sollten diese ja sowieso sein. (Stichwort &#8220;Session migration&#8221; und &#8220;Clustering&#8221;)<br />
Leider findet sich auf der Jetty Homepage lediglich eine Anleitung für Jetty 6 &#8211; Jetty 7 wird nun von Eclipse weiter entwickelt und damit gehen einige Änderungen einher, für die ich hier eine Beispielkonfiguration habe:</p>
<pre>&lt;plugin&gt;
&lt;groupId&gt;org.mortbay.jetty&lt;/groupId&gt;
&lt;artifactId&gt;jetty-maven-plugin&lt;/artifactId&gt;
&lt;version&gt;7.2.1.v20101111&lt;/version&gt;
&lt;configuration&gt;
  &lt;webAppConfig&gt;
    &lt;sessionHandler implementation="org.eclipse.jetty.server.session.SessionHandler"&gt;
      &lt;sessionManager implementation="org.eclipse.jetty.server.session.HashSessionManager"&gt;
      &lt;storeDirectory&gt;${basedir}/target/sessions/&lt;/storeDirectory&gt;
    &lt;/sessionManager&gt;
  &lt;/sessionHandler&gt;
&lt;contextPath&gt;/${project.artifactId}&lt;/contextPath&gt;
&lt;/webAppConfig&gt;
&lt;!--
&lt;reload&gt;automatic&lt;/reload&gt;
&lt;scanIntervalSeconds&gt;2&lt;/scanIntervalSeconds&gt;
&lt;scanTargets&gt;
&lt;scanTarget&gt;target/classes/&lt;/scanTarget&gt;
&lt;/scanTargets&gt;--&gt;
&lt;/configuration&gt;
&lt;/plugin&gt;
</pre>
<p>Mit dieser Einstellung werden die Session Daten in dem Order &#8220;target/sessions&#8221; persistiert, und man kann bei einem Neustart dort weitermachen, wo man aufgehört hat.</p>
<p>Artikel von: <a href="http://everflux.de/">everflux.de</a><br/><br/><a href="http://everflux.de/maven-jetty-und-reloads-session-persistieren-1775/">Maven, Jetty und Reloads: Session persistieren</a></p>
<p>Ähnliche Beiträge:<ol>
<li><a href='http://everflux.de/maven-jetty-und-der-extraclasspath-1780/' rel='bookmark' title='Maven, Jetty und der ExtraClasspath'>Maven, Jetty und der ExtraClasspath</a></li>
<li><a href='http://everflux.de/jetty-org-eclipse-jetty-io-eofexception-connection-closed-1788/' rel='bookmark' title='Jetty org.eclipse.jetty.io.EofException / Connection closed'>Jetty org.eclipse.jetty.io.EofException / Connection closed</a></li>
<li><a href='http://everflux.de/glassfish-3-1-und-httponly-session-cookie-1794/' rel='bookmark' title='Glassfish 3.1 und httpOnly Session Cookie'>Glassfish 3.1 und httpOnly Session Cookie</a></li>
<li><a href='http://everflux.de/maven-properties-werden-falsch-gefiltert-1698/' rel='bookmark' title='Maven Properties werden falsch gefiltert?'>Maven Properties werden falsch gefiltert?</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://everflux.de/maven-jetty-und-reloads-session-persistieren-1775/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Java Servlet (Spring Controller) auf Root Path mappen</title>
		<link>http://everflux.de/java-servlet-spring-controller-auf-root-path-mappen-1753/</link>
		<comments>http://everflux.de/java-servlet-spring-controller-auf-root-path-mappen-1753/#comments</comments>
		<pubDate>Wed, 12 Jan 2011 17:18:12 +0000</pubDate>
		<dc:creator>everflux</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Linux/OpenSource]]></category>
		<category><![CDATA[Web Entwicklung]]></category>
		<category><![CDATA[servlet]]></category>
		<category><![CDATA[spring]]></category>

		<guid isPermaLink="false">http://everflux.de/?p=1753</guid>
		<description><![CDATA[Nicht immer genuegt es, wenn man ein Servlets auf andere Pfade oder Patterns mappt, manchmal möchte man bereits auf den Context Root ein Servlet mappen. Der übliche Work-Around sieht so aus, dass man bspw. in einer &#8220;index.jsp&#8221; einen redirect auf eine tatsächlich einem Servlet zugeordnete URL (über den Pfad oder Datei Extension) macht, das könnte [...]<p>Artikel von: <a href="http://everflux.de/">everflux.de</a><br/><br/><a href="http://everflux.de/java-servlet-spring-controller-auf-root-path-mappen-1753/">Java Servlet (Spring Controller) auf Root Path mappen</a></p>
]]></description>
			<content:encoded><![CDATA[<p>Nicht immer genuegt es, wenn man ein Servlets auf andere Pfade oder Patterns mappt, manchmal möchte man bereits auf den Context Root ein Servlet mappen. Der übliche Work-Around sieht so aus, dass man bspw. in einer &#8220;index.jsp&#8221; einen redirect auf eine tatsächlich einem Servlet zugeordnete URL (über den Pfad oder Datei Extension) macht, das könnte so aussehen:<br />
<code><br />
&lt;%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %&gt;<br />
&lt;c:redirect url="/myServlet"/&gt;<br />
</code><br />
Das ist aber nicht immer praktikabel &#8211; nun soll es darum gehen ein Servlet direkt auf den &#8220;/&#8221; Pfad zu mappen &#8211; dafür gibt es mehrere Möglichkeiten:</p>
<ol>
<li>Das Default Servlet ersetzen, dazu wird auf den Root Pfad &#8220;/&#8221; in der web.xml ein Mapping angelegt:<code><br />
&lt;servlet-mapping&gt;<br />
&lt;servlet-name&gt;myServlet&lt;/servlet-name&gt;<br />
&lt;url-pattern&gt;/&lt;/url-pattern&gt;<br />
&lt;/servlet-mapping&gt;</code></li>
<li>Ab Servlet Spezifikation kann auch ein Servlet in der welcome-file-list in der web.xml gemappt werden:<br />
<code>&lt;welcome-file-list&gt;<br />
&lt;welcome-file&gt;myServlet&lt;/welcome-file&gt;<br />
&lt;welcome-file&gt;index.html&lt;/welcome-file&gt;<br />
&lt;welcome-file&gt;index.jsp&lt;/welcome-file&gt;<br />
&lt;/welcome-file-list&gt;</code></li>
</ol>
<p>Im folgenden beschreibe ich die Vor- und Nachteile der verschiedenen Ansätze, und welche Erfahrungen ich mit verschiedenen Web Containern dabei gemacht habe.<span id="more-1753"></span>Das Default Servlet wird in der Regel zur Auslieferung von statischen Ressourcen (z.B. Bilder, CSS Dateien) und dem Directory Listing verwendet. Ersetzt man das Default Servlet des Web Containers nun durch ein eigenes, muss man sich ggf. selber um die zusätzlichen Aufgaben kümmern, oder die statischen Inhalte über einen anderen Pfad ausliefern, z.B. &#8220;static&#8221; und diesen auf das Default Servlet mappen:</p>
<pre><code>&lt;servlet-mapping&gt;
    &lt;servlet-name&gt;default&lt;/servlet-name&gt;
    &lt;url-pattern&gt;/static/*&lt;/url-pattern&gt;
&lt;/servlet-mapping&gt;</code></pre>
<p>Da inzwischen wirklich überall Servlet 2.4 konforme Webcontainer im Einsatz sein dürften, ist der Web über ein Servlet als Welcome-File praktischer: Das vom Container bereitgestellte Default Servlet kommt weiterhin für die restlichen Ressourcen zum Einsatz, an der Struktur des Projektes muss nichts geändert werden. Die zugehörige Konfiguration in der web.xml für ein Spring Dispatcher Servlet könnte z.B. so aussehen:<br />
<code><br />
&lt;servlet&gt;<br />
&lt;description&gt;Spring Dispatcher Servlet&lt;/description&gt;<br />
&lt;servlet-name&gt;myServlet&lt;/servlet-name&gt;<br />
&lt;servlet-class&gt;org.springframework.web.servlet.DispatcherServlet&lt;/servlet-class&gt;<br />
&lt;load-on-startup&gt;1&lt;/load-on-startup&gt;<br />
&lt;/servlet&gt;</code></p>
<p>&lt;servlet-mapping&gt;<br />
&lt;servlet-name&gt;myServlet&lt;/servlet-name&gt;<br />
&lt;url-pattern&gt;*.do&lt;/url-pattern&gt;<br />
&lt;/servlet-mapping&gt;</p>
<p>&lt;welcome-file-list&gt;<br />
&lt;welcome-file&gt;myServlet&lt;/welcome-file&gt;<br />
&lt;welcome-file&gt;index.html&lt;/welcome-file&gt;<br />
&lt;welcome-file&gt;index.jsp&lt;/welcome-file&gt;<br />
&lt;/welcome-file-list&gt;</p>
<p>Das funktioniert soweit in Tomcat und Glassfish auch &#8211; allerdings nicht in Jetty. Und Jetty verwende ich sehr gerne zum lokalen Testen, z.B. über das Jetty Maven Plugin. Zu dem Fehler von Jetty gibt es auch einen Bug in der Jetty Bug Datenbank (<a href="http://jira.codehaus.org/browse/JETTY-936">936</a>), offenbar sind die Jetty Entwickler der Auffassung, dass die Spezifikation in diesem Punkt &#8220;stupid&#8221; sei, man weigert sich da auch in dem Codehaus Jetty 6.1.x das Defaultverhalten der Spezifikation gemäss anzupassen.<br />
Um das Verhalten zu korrigieren, muss man das Jetty Default Servlet anders konfigurieren &#8211; damit bekommt das Projekt eine Jetty Abhängigkeit, die in meinen Augen nicht gewünscht ist, vor allem nicht, wenn Jetty lediglich zur Entwicklung eingesetzt wird.</p>
<p>Jetty ist nun zu Eclipse umgezogen und mit Jetty 7 ändert sich das Problem ein wenig: Jetty 7 akzeptiert nun im Default auch Servlets für ein Welcome-File-Mapping &#8211; jedoch findet vorher noch eine Prüfung statt, ob die Datei existiert. Existiert sie nicht, wird ein 404 HTTP Fehler erzeugt. Natürlich kann man dies über Konfiguration des Default Servlets ändern &#8211; aber dann hat man wieder die Jetty Abhängigkeit im Projekt. Hier hilft ein kleiner Trick: Man legt einfach eine leere Datei, z.B. index.html, an, gibt diese (zusätzlich) in der Welcome-File-List an, und mappt diesen Pfad auch noch auf das entsprechende Servlet. Diese Lösung funktioniert mit allen von mir getesteten Containern. Also kommt zusätzlich in die web.xml:<br />
<code><br />
&lt;!-- for stupid jetty --&gt;<br />
&lt;servlet-mapping&gt;<br />
&lt;servlet-name&gt;myServlet&lt;/servlet-name&gt;<br />
&lt;url-pattern&gt;/index.html&lt;/url-pattern&gt;<br />
&lt;/servlet-mapping&gt;<br />
</code><br />
Für das Maven Plugin von Jetty 7 hat sich der Artefakt Name geändert, und auch der Default Context ist &#8220;/&#8221; statt des Artefakt Namens &#8211; so sieht der Eintrag im POM daher aus:</p>
<pre>&lt;plugin&gt;
  &lt;groupId&gt;org.mortbay.jetty&lt;/groupId&gt;
    &lt;artifactId&gt;jetty-maven-plugin&lt;/artifactId&gt;
    &lt;version&gt;7.2.1.v20101111&lt;/version&gt;
    &lt;configuration&gt;
      &lt;webAppConfig&gt;
        &lt;contextPath&gt;/${artifactId}&lt;/contextPath&gt;
      &lt;/webAppConfig&gt;
    &lt;/configuration&gt;
&lt;/plugin&gt;
</pre>
<p>Nun noch die Konfiguration für Spring 3 Controller, die auf den Root Path gemappt werden sollen.  Ich verwende hier die Spring Annotationen für @Controller und @RequestMapping. Das Problem hier: Jetty ruft &#8220;natürlich&#8221; die &#8220;index.html&#8221; auf &#8211; auch hierfür muss der Controller dann ein Mapping haben. Die Lösung dafür ist ein Pattern zu verwenden, was Spring erlaubt:</p>
<pre><code>@Controller
public class SampleController
{
   @RequestMapping(value = "*", method = RequestMethod.GET)
   public ModelAndView rootPathHandler()
   {
       //...
       return new ModelAndView("sample");
   }
}
</code></pre>
<p>Artikel von: <a href="http://everflux.de/">everflux.de</a><br/><br/><a href="http://everflux.de/java-servlet-spring-controller-auf-root-path-mappen-1753/">Java Servlet (Spring Controller) auf Root Path mappen</a></p>
<p>Ähnliche Beiträge:<ol>
<li><a href='http://everflux.de/netbeans-package-javax-servlet-jsp-does-not-exist-cannot-find-symbol-1751/' rel='bookmark' title='Netbeans: &#8220;package javax.servlet.jsp does not exist&#8221; (cannot find symbol)'>Netbeans: &#8220;package javax.servlet.jsp does not exist&#8221; (cannot find symbol)</a></li>
<li><a href='http://everflux.de/web-xml-tag-reihenfolge-relevant-1717/' rel='bookmark' title='web.xml Tag Reihenfolge: Relevant!'>web.xml Tag Reihenfolge: Relevant!</a></li>
<li><a href='http://everflux.de/heuschrecken-springsource-spring-framework-lock-in-673/' rel='bookmark' title='Heuschrecken @ SpringSource: Spring Framework lock-in'>Heuschrecken @ SpringSource: Spring Framework lock-in</a></li>
<li><a href='http://everflux.de/php-fastcgi-path-bug-ubuntu-hardy-1089/' rel='bookmark' title='PHP FastCGI Path Bug (Ubuntu Hardy)'>PHP FastCGI Path Bug (Ubuntu Hardy)</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://everflux.de/java-servlet-spring-controller-auf-root-path-mappen-1753/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Netbeans: &#8220;package javax.servlet.jsp does not exist&#8221; (cannot find symbol)</title>
		<link>http://everflux.de/netbeans-package-javax-servlet-jsp-does-not-exist-cannot-find-symbol-1751/</link>
		<comments>http://everflux.de/netbeans-package-javax-servlet-jsp-does-not-exist-cannot-find-symbol-1751/#comments</comments>
		<pubDate>Fri, 07 Jan 2011 20:45:22 +0000</pubDate>
		<dc:creator>everflux</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Web Entwicklung]]></category>
		<category><![CDATA[jsp]]></category>
		<category><![CDATA[maven]]></category>
		<category><![CDATA[netbeans]]></category>
		<category><![CDATA[servlet]]></category>

		<guid isPermaLink="false">http://everflux.de/?p=1751</guid>
		<description><![CDATA[Verwendet man Maven für ein Java JSP Projekt und Netbeans als IDE, so koennen erstaunliche Fehler entstehen: Um mit Servlets zu arbeiten, wird man im Maven die Abhängigkeit auf die Servlet API deklarieren. Da der Webcontainer sich später um die Implementierung der Servlets &#8211; und auch das Kompilieren von JSP Seiten &#8211; kümmert, gibt man [...]<p>Artikel von: <a href="http://everflux.de/">everflux.de</a><br/><br/><a href="http://everflux.de/netbeans-package-javax-servlet-jsp-does-not-exist-cannot-find-symbol-1751/">Netbeans: &#8220;package javax.servlet.jsp does not exist&#8221; (cannot find symbol)</a></p>
]]></description>
			<content:encoded><![CDATA[<p>Verwendet man Maven für ein Java JSP Projekt und Netbeans als IDE, so koennen erstaunliche Fehler entstehen: Um mit Servlets zu arbeiten, wird man im Maven die Abhängigkeit auf die Servlet API deklarieren. Da der Webcontainer sich später um die Implementierung der Servlets &#8211; und auch das Kompilieren von JSP Seiten &#8211; kümmert, gibt man als Scope &#8220;provided&#8221; an.</p>
<p>Beispielsweise so:</p>
<pre>&lt;dependency&gt;
   &lt;groupId&gt;javax.servlet&lt;/groupId&gt;
   &lt;artifactId&gt;servlet-api&lt;/artifactId&gt;
   &lt;version&gt;2.5&lt;/version&gt;
   &lt;scope&gt;provided&lt;/scope&gt;
&lt;/dependency&gt;
</pre>
<p>Damit funktioniert die Entwicklung dann auch prinzipiell &#8211; bis auf rote Hinweise und Fehlermeldungen im Netbeans JSP Editor:</p>
<p><strong>&#8220;package javax.servlet.jsp does not exist&#8221;<br />
(cannot find symbol)</strong></p>
<p>und so weiter und so fort. Bei allen JSP Direktiven, JSP Deklarationen etc. gibt es einen Hinweis darauf, dass Netbeans da etwas im Classpath fehlt. Und Netbeans hat dabei auch Recht &#8211; wenn man die JSP API nicht ebenfalls als Projekt Abhängigkeit deklariert. Hier hilft also ein kleiner Zusatz in der Maven pom.xml, der so aussehen könnte:</p>
<pre>&lt;dependency&gt;
   &lt;groupId&gt;javax.servlet.jsp&lt;/groupId&gt;
   &lt;artifactId&gt;jsp-api&lt;/artifactId&gt;
   &lt;version&gt;2.1&lt;/version&gt;
   &lt;scope&gt;provided&lt;/scope&gt;
&lt;/dependency&gt;
</pre>
<p>Hier ist die JSP Version 2.1 passend zur Servlet API 2.5 gewählt. Anschließend einmal &#8220;clean and build&#8221; in Netbeans geklickt, und die &#8220;package javax.servlet.jsp does not exist&#8221; Fehler sind behoben.</p>
<p>Artikel von: <a href="http://everflux.de/">everflux.de</a><br/><br/><a href="http://everflux.de/netbeans-package-javax-servlet-jsp-does-not-exist-cannot-find-symbol-1751/">Netbeans: &#8220;package javax.servlet.jsp does not exist&#8221; (cannot find symbol)</a></p>
<p>Ähnliche Beiträge:<ol>
<li><a href='http://everflux.de/java-servlet-spring-controller-auf-root-path-mappen-1753/' rel='bookmark' title='Java Servlet (Spring Controller) auf Root Path mappen'>Java Servlet (Spring Controller) auf Root Path mappen</a></li>
<li><a href='http://everflux.de/hamcrest-junit-nosuchmethoderror-zur-test-laufzeit-1801/' rel='bookmark' title='Hamcrest, Junit: NoSuchMethodError zur Test Laufzeit'>Hamcrest, Junit: NoSuchMethodError zur Test Laufzeit</a></li>
<li><a href='http://everflux.de/maven2-javax-transaction-jta-missing-not-really-336/' rel='bookmark' title='Maven2: javax transaction jta missing &#8211; not really.'>Maven2: javax transaction jta missing &#8211; not really.</a></li>
<li><a href='http://everflux.de/gridgain-und-maven-805/' rel='bookmark' title='GridGain und Maven'>GridGain und Maven</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://everflux.de/netbeans-package-javax-servlet-jsp-does-not-exist-cannot-find-symbol-1751/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>web.xml Tag Reihenfolge: Relevant!</title>
		<link>http://everflux.de/web-xml-tag-reihenfolge-relevant-1717/</link>
		<comments>http://everflux.de/web-xml-tag-reihenfolge-relevant-1717/#comments</comments>
		<pubDate>Sat, 18 Dec 2010 10:18:54 +0000</pubDate>
		<dc:creator>everflux</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Web Entwicklung]]></category>
		<category><![CDATA[glassfish]]></category>
		<category><![CDATA[servlet]]></category>

		<guid isPermaLink="false">http://everflux.de/?p=1717</guid>
		<description><![CDATA[Eine weitere Erfahrung mit Glassfish gemacht &#8211; und was dazu gelernt. Zumindest bei der Servlet 2.4 Spezifikation ist die Reihenfolge der inneren Tags im web.xml Deployment Descriptor relevant. Während Tomcat zufrieden dahin schnurrt, wenn man dies nicht beachtet, gibt es Fehler beim Deployment im Glassfish: com.sun.enterprise.admin.cli.CommandException: remote failure: Exception while deploying the app : java.io.IOException: [...]<p>Artikel von: <a href="http://everflux.de/">everflux.de</a><br/><br/><a href="http://everflux.de/web-xml-tag-reihenfolge-relevant-1717/">web.xml Tag Reihenfolge: Relevant!</a></p>
]]></description>
			<content:encoded><![CDATA[<p>Eine weitere Erfahrung mit Glassfish gemacht &#8211; und was dazu gelernt. Zumindest bei der Servlet 2.4 Spezifikation ist die Reihenfolge der inneren Tags im web.xml Deployment Descriptor relevant. Während Tomcat zufrieden dahin schnurrt, wenn man dies nicht beachtet, gibt es Fehler beim Deployment im Glassfish:<br />
<code><br />
com.sun.enterprise.admin.cli.CommandException: remote failure: Exception while deploying the app : java.io.IOException: org.xml.sax.SAXParseException: cvc-complex-type.2.4.a: Invalid content was found starting with element 'servlet-name'. One of '{"http://java.sun.com/xml/ns/j2ee":filter-name}' is expected.<br />
</code><br />
oder<br />
<code><br />
com.sun.enterprise.admin.cli.CommandException: remote failure: Exception while deploying the app : java.io.IOException: org.xml.sax.SAXParseException: cvc-complex-type.2.4.a: Invalid content was found starting with element 'url-pattern'. One of '{"http://java.sun.com/xml/ns/j2ee":servlet-name}' is expected.<br />
</code><br />
Dabei ist das kein Fehler vom Glassfish: Er hält sich streng an die Spezifikation und validiert die web.xml beim Parsen mit SAX (Streaming Parser) gegen die DTD.</p>
<p>Also einfach darauf achten: <strong>Erst</strong> kommt der Servlet/Filter Name und dann die Zuordnung auf ein URL-Pattern bzw. bei Filtern auch auf einen Servlet Namen, wie im folgenden Beispiel:<br />
<code><br />
&lt;servlet-mapping&gt;<br />
&lt;servlet-name&gt;admin&lt;/servlet-name&gt;<br />
&lt;url-pattern&gt;/admin/*&lt;/url-pattern&gt;<br />
&lt;/servlet-mapping&gt;</p>
<p>&lt;filter-mapping&gt;<br />
&lt;filter-name&gt;cacheFilter&lt;/filter-name&gt;<br />
&lt;servlet-name&gt;print&lt;/servlet-name&gt;<br />
&lt;/filter-mapping&gt;<br />
</code><br />
Ab Servlet Spec 2.5 darf man übrigens auch mehrere Mappings auf einmal angeben &#8211; falls man noch mit der web.xml und nicht mit Annotationen arbeitet spart es Tipparbeit und ist übersichtlicher.</p>
<p>Artikel von: <a href="http://everflux.de/">everflux.de</a><br/><br/><a href="http://everflux.de/web-xml-tag-reihenfolge-relevant-1717/">web.xml Tag Reihenfolge: Relevant!</a></p>
<p>Ähnliche Beiträge:<ol>
<li><a href='http://everflux.de/ubuntu-reihenfolge-der-netzwerkkarten-140/' rel='bookmark' title='Ubuntu: Reihenfolge der Netzwerkkarten'>Ubuntu: Reihenfolge der Netzwerkkarten</a></li>
<li><a href='http://everflux.de/java-servlet-spring-controller-auf-root-path-mappen-1753/' rel='bookmark' title='Java Servlet (Spring Controller) auf Root Path mappen'>Java Servlet (Spring Controller) auf Root Path mappen</a></li>
<li><a href='http://everflux.de/glassfish-3-1-probleme-mit-dwr-2-und-mehr-1791/' rel='bookmark' title='Glassfish 3.1: Probleme mit DWR 2 (und mehr)'>Glassfish 3.1: Probleme mit DWR 2 (und mehr)</a></li>
<li><a href='http://everflux.de/netbeans-package-javax-servlet-jsp-does-not-exist-cannot-find-symbol-1751/' rel='bookmark' title='Netbeans: &#8220;package javax.servlet.jsp does not exist&#8221; (cannot find symbol)'>Netbeans: &#8220;package javax.servlet.jsp does not exist&#8221; (cannot find symbol)</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://everflux.de/web-xml-tag-reihenfolge-relevant-1717/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Maven Properties werden falsch gefiltert?</title>
		<link>http://everflux.de/maven-properties-werden-falsch-gefiltert-1698/</link>
		<comments>http://everflux.de/maven-properties-werden-falsch-gefiltert-1698/#comments</comments>
		<pubDate>Wed, 15 Dec 2010 14:08:39 +0000</pubDate>
		<dc:creator>everflux</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Web Entwicklung]]></category>
		<category><![CDATA[maven]]></category>

		<guid isPermaLink="false">http://everflux.de/?p=1698</guid>
		<description><![CDATA[Updates haben nicht immer nur gutes &#8211; manchmal gibt es auch neue Fehler oder Animositäten. So auch bei Maven: Seit dem Maven Ressource Plugin Version 2.4.x wurden einige Ressource Dateien nicht mehr korrekt gefiltert. Das Filtern von Ressourcen kann man z.B. dazu verwenden, um automatisch Build oder Versionsnummern einzufügen. Die Konfiguration dafür ist einfach: &#60;resources&#62; [...]<p>Artikel von: <a href="http://everflux.de/">everflux.de</a><br/><br/><a href="http://everflux.de/maven-properties-werden-falsch-gefiltert-1698/">Maven Properties werden falsch gefiltert?</a></p>
]]></description>
			<content:encoded><![CDATA[<p>Updates haben nicht immer nur gutes &#8211; manchmal gibt es auch neue Fehler oder Animositäten. So auch bei Maven:<br />
Seit dem Maven Ressource Plugin Version 2.4.x wurden einige Ressource Dateien nicht mehr korrekt gefiltert. Das Filtern von Ressourcen kann man z.B. dazu verwenden, um automatisch Build oder Versionsnummern einzufügen.</p>
<p>Die Konfiguration dafür ist einfach:<br />
<code><br />
&lt;resources&gt;<br />
&lt;resource&gt;<br />
&lt;directory&gt;src/main/resources&lt;/directory&gt;<br />
&lt;filtering&gt;true&lt;/filtering&gt;<br />
&lt;includes&gt;<br />
&lt;include&gt;*.properties&lt;/include&gt;<br />
&lt;/includes&gt;<br />
&lt;/resource&gt;<br />
&lt;/resources&gt;</code></p>
<p>Schon kann man z.B. in der <em>version.properties</em> dann <em>revision = ${buildNumber}</em> eintragen, und erhält nach jedem Build die inkrementierte Build-Nummer. (Vom Maven Buildnumber Plugin)</p>
<p>Nur funktionierte es plötzlich nicht mehr. Genauer gesagt, es funktionierte nicht mehr bei allen Dateien. Die Ursache (nach langem Suchen): Das Zeichen &#8220;@&#8221; ist als neuer Delimiter hinzugefügt worden. Enthielt jetzt eine der zu filternden Dateien ein &#8220;@&#8221; eben als solches, und nicht als Teil eines Patterns, wurde das Filtern abgebrochen. Eine Fehlermeldung oder Warnung habe ich nicht gesehen &#8211; mag aber sein, dass Maven die irgendwo mal ausgespruckt hat.</p>
<p>Abhilfe schafft hier die folgende explizite Konfiguration des Maven Resource Plugin:<br />
<code><br />
&lt;plugin&gt;<br />
&lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;<br />
&lt;artifactId&gt;maven-resources-plugin&lt;/artifactId&gt;<br />
&lt;version&gt;2.4.3&lt;/version&gt;<br />
&lt;configuration&gt;<br />
&lt;useDefaultDelimiters&gt;false&lt;/useDefaultDelimiters&gt;<br />
&lt;delimiters&gt;<br />
&lt;delimiter&gt;${*}&lt;/delimiter&gt;<br />
&lt;/delimiters&gt;<br />
&lt;/configuration&gt;<br />
&lt;/plugin&gt;<br />
</code><br />
Damit wird das das alte Verhalten des Plugins wieder hergestellt, und &#8220;@&#8221; Zeichen als Trennzeichen für Ersetzungen ignoriert.</p>
<p>Vielleicht gibt es auch mal einen offiziellen Code fix &#8211; Maven Bug: http://jira.codehaus.org/browse/MRESOURCES-117</p>
<p>Artikel von: <a href="http://everflux.de/">everflux.de</a><br/><br/><a href="http://everflux.de/maven-properties-werden-falsch-gefiltert-1698/">Maven Properties werden falsch gefiltert?</a></p>
<p>Ähnliche Beiträge:<ol>
<li><a href='http://everflux.de/maven-jetty-und-der-extraclasspath-1780/' rel='bookmark' title='Maven, Jetty und der ExtraClasspath'>Maven, Jetty und der ExtraClasspath</a></li>
<li><a href='http://everflux.de/maven-jetty-und-reloads-session-persistieren-1775/' rel='bookmark' title='Maven, Jetty und Reloads: Session persistieren'>Maven, Jetty und Reloads: Session persistieren</a></li>
<li><a href='http://everflux.de/hudson-maven-java-net-sockettimeoutexception-accept-timed-out-1504/' rel='bookmark' title='Hudson + Maven: java.net.SocketTimeoutException: Accept timed out'>Hudson + Maven: java.net.SocketTimeoutException: Accept timed out</a></li>
<li><a href='http://everflux.de/gridgain-und-maven-805/' rel='bookmark' title='GridGain und Maven'>GridGain und Maven</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://everflux.de/maven-properties-werden-falsch-gefiltert-1698/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Firefox langsam und braucht viel Speicher?</title>
		<link>http://everflux.de/firefox-langsam-und-braucht-viel-speicher-1693/</link>
		<comments>http://everflux.de/firefox-langsam-und-braucht-viel-speicher-1693/#comments</comments>
		<pubDate>Mon, 06 Dec 2010 20:43:01 +0000</pubDate>
		<dc:creator>everflux</dc:creator>
				<category><![CDATA[Linux/OpenSource]]></category>
		<category><![CDATA[ubuntuusers.de]]></category>
		<category><![CDATA[Web Entwicklung]]></category>

		<guid isPermaLink="false">http://everflux.de/?p=1693</guid>
		<description><![CDATA[Firefox ist an sich ein recht ordentlicher Browser. Die Zeiten in denen er in Punkto Geschwindigkeit und &#8220;Schlankheit&#8221; ganz vorne war, sind allerdings vorbei. Aber damit koennen viele gut Leben &#8211; Firefox ist recht stabil, die Geschwindigkeit ist auch nicht schlecht und vor allem die Flexibilitaet dank der beinahe unendlichen Fuelle an Erweiterungen (Extensions / [...]<p>Artikel von: <a href="http://everflux.de/">everflux.de</a><br/><br/><a href="http://everflux.de/firefox-langsam-und-braucht-viel-speicher-1693/">Firefox langsam und braucht viel Speicher?</a></p>
]]></description>
			<content:encoded><![CDATA[<p>Firefox ist an sich ein recht ordentlicher Browser. Die Zeiten in denen er in Punkto Geschwindigkeit und &#8220;Schlankheit&#8221; ganz vorne war, sind allerdings vorbei. Aber damit koennen viele gut Leben &#8211; Firefox ist recht stabil, die Geschwindigkeit ist auch nicht schlecht und vor allem die Flexibilitaet dank der beinahe unendlichen Fuelle an Erweiterungen (Extensions / Add-Ons) machen den Firefox Browser attraktiv.</p>
<p>Dabei spielt es keine Rolle, ob es um Entwickler geht, die Firebug mit den dafür ebenfalls verfügbaren diversen Erweiterungen nutzen, oder den Gelegenheitssurfer der dank Adblock-Plus schneller und weniger genervt das Internet konsumieren kann. Für andere Nischen und spezielle Bedürfnisse gibt es ebenso viele Plugins von &#8220;Spass&#8221; bis &#8220;Produktivität&#8221; ist alles vertreten.</p>
<p>Jedoch wuchs der Neid bei mir wenn ich auf Chrome / Chromium blickte &#8211; ich wollte Firefox auch etwas schneller haben. Bekannt für Nachteile bei der Performance sind eben gerade jene Erweiterungen, die einem das Leben so schön erleichtern. Also habe ich einige deaktiviert, es wurde in der tat etwas schneller. Damit war das erledigt. Erfolg!</p>
<p>Bis mir auffiel, dass irgendetwas nicht stimmte. Bei Downloads verschlang Firefox immense Mengen an Speicher &#8211; ein Vielfaches dessen, was die Datei selber haben würde. Und auch die CPU Belastung, vor allem bei Downloads, wuchs dramatisch.</p>
<p>Erst hatte ich das Flashplugin in Verdacht &#8211; in der Regel trifft man damit den Richtigen, genauso wie pauschal auf Windows schimpfen. Aber daran lag es nicht, ich hatte extra keine Flash Seiten aufgemacht.</p>
<p>Erst als ich alle von Firebug abhaengigen Erweiterungen (und nicht nur Firebug selber) deaktiviert hatte, sowie TamperData und LiveHttpHeaders war endlich alles wie es sein sollte. Firefox brauchte weder Unmengen an Memory noch ging die CPU Last bei Downloads in die Höhe. Welches Plugin tatsächlich verantwortlich war, habe ich nicht mehr untersucht. Vermutlich ist es nicht gut, wenn man Plugins, die Firebug benötigen, aktiviert lässt, aber Firebug selber deaktiviert.</p>
<p>Um mir Arbeit zu sparen (wer moechte schon immer alle Erweiterungen ein- und ausschalten) habe ich mir mittels eine zweiten Firefox Profils das Leben leichter gemacht: Es gibt jetzt ein &#8220;dev&#8221; Profil für Entwicklung, da ist dann alles aktiviert, dass sich der Web-Entwickler wünscht. Daneben sind auch deutlich weniger, bzw. andere Bookmarks gesetzt: &#8220;Führe mich nicht in Versuchung&#8221;.</p>
<p>Um den Entwicklungs-Firefox zu starten, habe ich mir eine zusaetzliche Verknuepfung (mit Werkzeug-Symbol) in der Ubuntu Linux Taskbar angelegt, diese ruft folgendes Kommando auf:<br />
<code>firefox -no-remote -P dev<br />
</code><br />
Mittels &#8220;-P&#8221; kann man das Profil auswählen, welches verwendet werden soll, das &#8220;-no-remote&#8221; verhindert, dass bei einer bereits gestarteten Firefox Instanz (z.B. des default Profils) lediglich ein neues Fenster aufgemacht wird.</p>
<p>Probiert es mal aus &#8211; Kommentare und Feedback erwünscht!</p>
<p>Artikel von: <a href="http://everflux.de/">everflux.de</a><br/><br/><a href="http://everflux.de/firefox-langsam-und-braucht-viel-speicher-1693/">Firefox langsam und braucht viel Speicher?</a></p>
<p>Ähnliche Beiträge:<ol>
<li><a href='http://everflux.de/google-langsam-langsamer-toooo-slow-1556/' rel='bookmark' title='Google: Langsam, langsamer, toooo slow'>Google: Langsam, langsamer, toooo slow</a></li>
<li><a href='http://everflux.de/firefox-4-als-ubuntu-paket-installieren-1805/' rel='bookmark' title='Firefox 4 als Ubuntu Paket installieren'>Firefox 4 als Ubuntu Paket installieren</a></li>
<li><a href='http://everflux.de/firefox-31-in-ubuntu-816/' rel='bookmark' title='Firefox 3.1 in Ubuntu'>Firefox 3.1 in Ubuntu</a></li>
<li><a href='http://everflux.de/speicher-depot-techimport-spam-so-kann-man-sich-wehren-1875/' rel='bookmark' title='Speicher Depot (techimport) Spam: So kann man sich wehren!'>Speicher Depot (techimport) Spam: So kann man sich wehren!</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://everflux.de/firefox-langsam-und-braucht-viel-speicher-1693/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
		<item>
		<title>Yahoo 1337 &#8211; Leet Backlinks</title>
		<link>http://everflux.de/yahoo-1337-leet-backlinks-1688/</link>
		<comments>http://everflux.de/yahoo-1337-leet-backlinks-1688/#comments</comments>
		<pubDate>Mon, 06 Dec 2010 16:03:56 +0000</pubDate>
		<dc:creator>everflux</dc:creator>
				<category><![CDATA[SEO/SEM]]></category>
		<category><![CDATA[Web Entwicklung]]></category>

		<guid isPermaLink="false">http://everflux.de/?p=1688</guid>
		<description><![CDATA[Manchmal kann man bestimmte Assoziationen einfach nicht verhindern. Als Computer-Kind bedeutet die 1337 etwas besonderes (siehe auch Leetspeak) und so schmunzelte ich doch sehr als die Webanalyse Software Piwik mir folgende Backlink Statistik präsentierte: Piwik ist übrigens eine interessante Alternative zu Google Analytics, es handelt sich um eine kostenlose OpenSource Software, die mittels JavaScript, PHP [...]<p>Artikel von: <a href="http://everflux.de/">everflux.de</a><br/><br/><a href="http://everflux.de/yahoo-1337-leet-backlinks-1688/">Yahoo 1337 &#8211; Leet Backlinks</a></p>
]]></description>
			<content:encoded><![CDATA[<p>Manchmal kann man bestimmte Assoziationen einfach nicht verhindern. Als Computer-Kind bedeutet die 1337 etwas besonderes (siehe auch <a href="http://de.wikipedia.org/wiki/Leetspeak" target="_blank">Leetspeak</a>) und so schmunzelte ich doch sehr als die Webanalyse Software Piwik mir folgende Backlink Statistik präsentierte:</p>
<p><a href="http://everflux.de/wp-content/uploads/2010/12/yahoo-leet.png"><img class="alignnone size-full wp-image-1689" title="yahoo-leet" src="http://everflux.de/wp-content/uploads/2010/12/yahoo-leet.png" alt="" width="310" height="32" /></a></p>
<p>Piwik ist übrigens eine interessante Alternative zu Google Analytics, es handelt sich um eine kostenlose OpenSource Software, die mittels JavaScript, PHP und MySQL Webseitenstatistiken erzeugt. Bei großen Projekten wird die Last auf der Datenbank allerdings deutlich spürbar &#8211; vielleicht ist eine relationale Datenbank für Webanalyse eben nicht so gut, wie BigTable (Google) oder andere NoSQL Systeme. Im Gegensatz zu Google Analytics liefert Piwik jedoch auch eine Backlink, Pagerank und Alexa Analyse direkt dazu.</p>
<p>Artikel von: <a href="http://everflux.de/">everflux.de</a><br/><br/><a href="http://everflux.de/yahoo-1337-leet-backlinks-1688/">Yahoo 1337 &#8211; Leet Backlinks</a></p>
<p>Ähnliche Beiträge:<ol>
<li><a href='http://everflux.de/yahoo-und-hadoop-277/' rel='bookmark' title='Yahoo und Hadoop'>Yahoo und Hadoop</a></li>
<li><a href='http://everflux.de/slurp-30-yahoo-hat-neuen-crawler-530/' rel='bookmark' title='Slurp 3.0 &#8211; Yahoo hat neuen Crawler'>Slurp 3.0 &#8211; Yahoo hat neuen Crawler</a></li>
<li><a href='http://everflux.de/yahoo-steigt-bei-openid-ein-475/' rel='bookmark' title='Yahoo steigt bei OpenID ein'>Yahoo steigt bei OpenID ein</a></li>
<li><a href='http://everflux.de/yahoo-schneller-zugriff-vs-privacy-491/' rel='bookmark' title='Yahoo: Schneller Zugriff vs. Privacy'>Yahoo: Schneller Zugriff vs. Privacy</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://everflux.de/yahoo-1337-leet-backlinks-1688/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mysql und phpmyadmin: Daten encoded und falsch angezeigt?</title>
		<link>http://everflux.de/mysql-und-phpmyadmin-daten-encoded-und-falsch-angezeigt-1620/</link>
		<comments>http://everflux.de/mysql-und-phpmyadmin-daten-encoded-und-falsch-angezeigt-1620/#comments</comments>
		<pubDate>Tue, 10 Aug 2010 10:11:05 +0000</pubDate>
		<dc:creator>everflux</dc:creator>
				<category><![CDATA[Linux/OpenSource]]></category>
		<category><![CDATA[ubuntuusers.de]]></category>
		<category><![CDATA[Web Entwicklung]]></category>

		<guid isPermaLink="false">http://everflux.de/?p=1620</guid>
		<description><![CDATA[Bei der Migration einer MySQL Datenbank gab es ein merkwürdiges Phänomen: Nach dem Import der Daten von einem Server auf einen Ubuntu Lucid Server wurden die Daten falsch angezeigt. Es sah aus, als wenn sie base64 codiert wären, oder ein esoterisches Encoding Problem zugeschlagen hätte. Die Vermutung lag nahe, dass entweder der Dump (mittels mysqldump [...]<p>Artikel von: <a href="http://everflux.de/">everflux.de</a><br/><br/><a href="http://everflux.de/mysql-und-phpmyadmin-daten-encoded-und-falsch-angezeigt-1620/">Mysql und phpmyadmin: Daten encoded und falsch angezeigt?</a></p>
]]></description>
			<content:encoded><![CDATA[<p>Bei der Migration einer MySQL Datenbank gab es ein merkwürdiges Phänomen: Nach dem Import der Daten von einem Server auf einen Ubuntu Lucid Server wurden die Daten falsch angezeigt. Es sah aus, als wenn sie base64 codiert wären, oder ein esoterisches Encoding Problem zugeschlagen hätte.</p>
<p>Die Vermutung lag nahe, dass entweder der Dump (mittels mysqldump erzeugt) defekt war, oder falsch importiert wurde. (Der Import wurde über den mysql Kommandozeilen Client gemacht, MySQL lag auf beiden Systemen in der Ubuntu Lucid Version 5.1.41 vor.). Das Thema MySQL, Encoding, Collation und Charset kann sich dabei als sehr verwirrend herausstellen.<span id="more-1620"></span>So sahen die Daten im phpmyadmin auf dem neuen Ubuntu Server aus:</p>
<p><a href="http://everflux.de/wp-content/uploads/2010/08/phpmyadmin-encoding.png"><img class="alignnone size-medium wp-image-1621" title="phpmyadmin-encoding" src="http://everflux.de/wp-content/uploads/2010/08/phpmyadmin-encoding-300x199.png" alt="" width="300" height="199" /></a></p>
<p>Auf dem ursprünglichen Server standen hier lesbare Text. (Erst später sollte ich feststellen dass zwar die MySQL Datenbank auf beiden Systemen gleich war &#8211; nicht jedoch PHPMyAdmin: Auf dem ursprünglichen Server handelte es sich um ein PHPMyAdmin von der Projektseite, auf dem neuen Ubuntu System stammte sie aus dem Ubuntu Repository.)</p>
<p>Einen guten Überblick über Probleme mit Encodings im Zusammenhang mit MySQL gibt es hier: <a href="http://forge.mysql.com/wiki/How_to_Use_Charsets_and_Collations_Properly" target="_blank">http://forge.mysql.com/wiki/How_to_Use_Charsets_and_Collations_Properly</a></p>
<p>Nun zur Lösung des Problems: Die Daten waren korrekt in der Datenbank, wie man sich mittels dem mysql client auch ansehen kann. Lediglich PHPMyAdmin stellte die Daten anders dar: Hex kodiert. Der Grund war, dass die Collation der Felder auf &#8220;utf8_bin&#8221; gesetzt war, und das Ubuntu PHPMyAdmin offenbar standardmäßig die Option &#8220;Show binary content as HEX&#8221; gesetzt hat. Typischer Fall von Verkettung unglücklicher Umstände.<br />
Aendert man die Darstellungsoptionen oder setzt die (korrekte) Collation &#8220;utf_general_ci&#8221; werden die Daten auch von PHPMyAdmin korrekt angezeigt.</p>
<p><a href="http://everflux.de/wp-content/uploads/2010/08/phpmyadmin-options.png"><img class="alignnone size-medium wp-image-1622" title="phpmyadmin-options" src="http://everflux.de/wp-content/uploads/2010/08/phpmyadmin-options-300x178.png" alt="" width="300" height="178" /></a></p>
<p>Dies zeigt, wie wichtig es ist, die Collation korrekt zu setzen &#8211; und dies natuerlich passend zur Konfiguration der jeweiligen Anwendung, die mit den Daten arbeitet.</p>
<p><a href="http://everflux.de/wp-content/uploads/2010/08/phpmyadmin-utf8.png"><img class="alignnone size-medium wp-image-1623" title="phpmyadmin-utf8" src="http://everflux.de/wp-content/uploads/2010/08/phpmyadmin-utf8-253x300.png" alt="" width="253" height="300" /></a></p>
<p>Artikel von: <a href="http://everflux.de/">everflux.de</a><br/><br/><a href="http://everflux.de/mysql-und-phpmyadmin-daten-encoded-und-falsch-angezeigt-1620/">Mysql und phpmyadmin: Daten encoded und falsch angezeigt?</a></p>
<p>Ähnliche Beiträge:<ol>
<li><a href='http://everflux.de/phpmyadmin-blowfish_secret-fehler-nach-update-489/' rel='bookmark' title='phpMyAdmin: blowfish_secret Fehler nach Update'>phpMyAdmin: blowfish_secret Fehler nach Update</a></li>
<li><a href='http://everflux.de/ubuntu-mysql-und-innodb-nach-neuinstallation-222/' rel='bookmark' title='Ubuntu: mysql und InnoDB nach Neuinstallation'>Ubuntu: mysql und InnoDB nach Neuinstallation</a></li>
<li><a href='http://everflux.de/microsoft-access-mdb-konvertieren-odb-und-mysql-unter-ubuntu-1434/' rel='bookmark' title='Microsoft Access (mdb) konvertieren: ODB und MySQL unter Ubuntu'>Microsoft Access (mdb) konvertieren: ODB und MySQL unter Ubuntu</a></li>
<li><a href='http://everflux.de/sun-kauft-mysql-eine-milliarde-dollar-474/' rel='bookmark' title='Sun kauft MySQL: Eine Milliarde Dollar'>Sun kauft MySQL: Eine Milliarde Dollar</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://everflux.de/mysql-und-phpmyadmin-daten-encoded-und-falsch-angezeigt-1620/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SpringSource/Vmware: FAIL dank Google Analytics</title>
		<link>http://everflux.de/springsourcevmware-fail-dank-google-analytics-1454/</link>
		<comments>http://everflux.de/springsourcevmware-fail-dank-google-analytics-1454/#comments</comments>
		<pubDate>Wed, 13 Jan 2010 16:11:13 +0000</pubDate>
		<dc:creator>everflux</dc:creator>
				<category><![CDATA[Web Entwicklung]]></category>
		<category><![CDATA[fail]]></category>
		<category><![CDATA[google analytics]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://everflux.de/?p=1454</guid>
		<description><![CDATA[Das habe ich bisher noch nie gesehen. Die gesamte Webseite an Google geopfert! Aber von vorne: SpringSource, der Hersteller des Spring Framework, bietet auf seiner Webseite Downloads und andere interaktive Elemente an. Auf der Webseite kommt Google Analytics zum Einsatz, und natürlich auch JavaScript. Das frappierende: Ist JavaScript deaktiviert, oder Google Analytics geblockt, funktioniert die [...]<p>Artikel von: <a href="http://everflux.de/">everflux.de</a><br/><br/><a href="http://everflux.de/springsourcevmware-fail-dank-google-analytics-1454/">SpringSource/Vmware: FAIL dank Google Analytics</a></p>
]]></description>
			<content:encoded><![CDATA[<p>Das habe ich bisher noch nie gesehen. Die gesamte Webseite an Google geopfert! Aber von vorne: SpringSource, der Hersteller des Spring Framework, bietet auf seiner Webseite Downloads und andere interaktive Elemente an.<br />
Auf der Webseite kommt Google Analytics zum Einsatz, und natürlich auch JavaScript. Das frappierende: Ist JavaScript deaktiviert, oder Google Analytics geblockt, funktioniert die Webseite nicht mehr richtig. In der Tat hat damit SpringSource, die Firma die stets &#8220;loose coupling&#8221; und &#8220;keine Abhängigkeiten&#8221; als Verkaufsargumente nutzte eine Abhängigkeit zu Google eingeführt.</p>
<p><span id="more-1454"></span><br />
Hier der Ausschnitt aus der Webseite:</p>
<p><a href="http://everflux.de/wp-content/uploads/2010/01/spring-download.png"><img class="alignnone size-medium wp-image-1457" title="spring-download" src="http://everflux.de/wp-content/uploads/2010/01/spring-download-300x135.png" alt="" width="300" height="135" /></a></p>
<p><a href="http://everflux.de/wp-content/uploads/2010/01/google-dependency.png"><img class="alignnone size-medium wp-image-1456" title="google-dependency" src="http://everflux.de/wp-content/uploads/2010/01/google-dependency-300x168.png" alt="" width="300" height="168" /></a></p>
<p>Selbst der Versuch SpringSource zu kontaktieren scheiterte an Google Analytics! Lediglich der Bereich &#8220;America Sales&#8221; der Kontaktseite konnte aufgerufen werden:</p>
<p><a href="http://everflux.de/wp-content/uploads/2010/01/google-dependency2.png"><img class="alignnone size-medium wp-image-1455" title="google-dependency2" src="http://everflux.de/wp-content/uploads/2010/01/google-dependency2-300x94.png" alt="" width="300" height="94" /></a></p>
<p>Für das Umschalten zwischen den verschiedenen Tabs wurde jeweils wieder ein JavaScript Aufruf an Google Analytics durchgeführt &#8211; und schlägt dieser fehl, funktioniert das eben nicht.</p>
<p>Wie kann man es nun besser machen? Eine Webseite sollte auch dann funktionieren, wenn kein JavaScript aktiviert ist. (Ok, da kann man je nach Zielpublikum noch drueber reden.)</p>
<p>In jedem Fall sollte aber eine Webseite nicht den Dienst quittieren, wenn eine JavaScript Bibliothek oder ein Statistiksystem (temporär)  nicht zur Verfügung steht. Defensives Programmieren sollte gerade bei Adservern und Analyticsoftware zum Einsatz kommen, denn immer mehr Benutzer legen großen Wert auf die Privatsphäre.</p>
<p>Eine Abfrage, ob das benutzte JavaScript Objekt existiert, hätte das gesamte Problem vermutlich vermieden.</p>
<p>Artikel von: <a href="http://everflux.de/">everflux.de</a><br/><br/><a href="http://everflux.de/springsourcevmware-fail-dank-google-analytics-1454/">SpringSource/Vmware: FAIL dank Google Analytics</a></p>
<p>Ähnliche Beiträge:<ol>
<li><a href='http://everflux.de/gatineau-microsoft-reagiert-auf-google-analytics-273/' rel='bookmark' title='Gatineau &#8211; Microsoft reagiert auf Google Analytics'>Gatineau &#8211; Microsoft reagiert auf Google Analytics</a></li>
<li><a href='http://everflux.de/fedex-fail-1501/' rel='bookmark' title='FedEx: Fail'>FedEx: Fail</a></li>
<li><a href='http://everflux.de/google-tote-gibts-bei-ebay-fail-1265/' rel='bookmark' title='Google: Tote gibts bei ebay (fail)'>Google: Tote gibts bei ebay (fail)</a></li>
<li><a href='http://everflux.de/fileupload-fur-bilder-mit-jquery-dank-ajax-mit-vorschaufunktion-762/' rel='bookmark' title='Fileupload für Bilder mit jQuery &#8211; dank Ajax mit Vorschaufunktion'>Fileupload für Bilder mit jQuery &#8211; dank Ajax mit Vorschaufunktion</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://everflux.de/springsourcevmware-fail-dank-google-analytics-1454/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>jQuery: HTML Inhalt einfärben</title>
		<link>http://everflux.de/jquery-html-inhalt-1448/</link>
		<comments>http://everflux.de/jquery-html-inhalt-1448/#comments</comments>
		<pubDate>Wed, 30 Dec 2009 10:59:32 +0000</pubDate>
		<dc:creator>everflux</dc:creator>
				<category><![CDATA[Web Entwicklung]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>

		<guid isPermaLink="false">http://everflux.de/?p=1448</guid>
		<description><![CDATA[Es kam die Frage auf, wie man bei einer Web Anwendung, bei der die Ausgabe vorgegeben ist, die Präsentation anpassen kann. Ohne eben die Web Anwendung ändern zu müssen. Wenn man auf die Ausgabe gewissen Einfluss hat (z.B. über Templates), so kann man mit JavaScript und jQuery sehr einfach Anpassungen vornehmen &#8211; sogar aufgrund des [...]<p>Artikel von: <a href="http://everflux.de/">everflux.de</a><br/><br/><a href="http://everflux.de/jquery-html-inhalt-1448/">jQuery: HTML Inhalt einfärben</a></p>
]]></description>
			<content:encoded><![CDATA[<p>Es kam die Frage auf, wie man bei einer Web Anwendung, bei der die Ausgabe vorgegeben ist, die Präsentation anpassen kann. Ohne eben die Web Anwendung ändern zu müssen.<br />
Wenn man auf die Ausgabe gewissen Einfluss hat (z.B. über Templates), so kann man mit JavaScript und jQuery sehr einfach Anpassungen vornehmen &#8211; sogar aufgrund des HTML Inhalts. (In diesem Fall ging es um die optische Anpassung von Tabellen Zeilen, wenn es sich um premium Kunden handelt.)<span id="more-1448"></span></p>
<p>Möchte man den Inhalt von HTML Elementen  nutzen, so nutzt man einfach die jQuery Filter, die auch auf HTML content zugreifen können.</p>
<p>Beispiel:<br />
<code><br />
jQuery("tr&gt;td:contains(Prem)").addClass("highlight");<br />
</code><br />
Hier wird nun auf Tabellenzellen, die &#8220;Prem&#8221; als Inhalt haben, die CSS Klasse &#8220;highlight&#8221; angewendet.<br />
Ein vollständiges Beispiel incl. CSS:<br />
<code><br />
&lt;?xml version="1.0" encoding="iso-8859-1"?&gt;<br />
&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;<br />
&lt;html dir="ltr" xmlns="http://www.w3.org/1999/xhtml"&gt;<br />
&lt;head&gt;<br />
&lt;title&gt;Content color&lt;/title&gt;<br />
&lt;script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"&gt;&lt;/script&gt;<br />
&lt;style type="text/css"&gt;<br />
.highlight { color: red; }<br />
&lt;/style&gt;<br />
&lt;/head&gt;</p>
<p>&lt;body&gt;<br />
&lt;script type="text/javascript"&gt;<br />
jQuery(document).ready(function(){</p>
<p>jQuery("tr&gt;td:contains(Prem)").addClass("highlight");</p>
<p>});<br />
&lt;/script&gt;</p>
<p>&lt;h1&gt;Beispiel f&amp;uuml;r jQuery&lt;/h1&gt;<br />
&lt;table&gt;<br />
&lt;tr&gt;<br />
&lt;td width=40&gt;Prem&lt;/td&gt;<br />
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;<br />
&lt;/body&gt;<br />
&lt;/html&gt;<br />
</code></p>
<p>Artikel von: <a href="http://everflux.de/">everflux.de</a><br/><br/><a href="http://everflux.de/jquery-html-inhalt-1448/">jQuery: HTML Inhalt einfärben</a></p>
<p>Ähnliche Beiträge:<ol>
<li><a href='http://everflux.de/fileupload-fur-bilder-mit-jquery-dank-ajax-mit-vorschaufunktion-762/' rel='bookmark' title='Fileupload für Bilder mit jQuery &#8211; dank Ajax mit Vorschaufunktion'>Fileupload für Bilder mit jQuery &#8211; dank Ajax mit Vorschaufunktion</a></li>
<li><a href='http://everflux.de/ajax-file-upload-mit-jquery-ohne-dwr-743/' rel='bookmark' title='Ajax File upload mit jQuery &#8211; ohne DWR'>Ajax File upload mit jQuery &#8211; ohne DWR</a></li>
<li><a href='http://everflux.de/netbeans-7-1-jslint-und-jquery-used-before-defined-1918/' rel='bookmark' title='Netbeans 7.1, JSLint und jQuery: $ used before defined'>Netbeans 7.1, JSLint und jQuery: $ used before defined</a></li>
<li><a href='http://everflux.de/javascript-error-mit-google-admanager-und-adblock-vermeiden-790/' rel='bookmark' title='JavaScript Error mit Google Admanager und adblock vermeiden'>JavaScript Error mit Google Admanager und adblock vermeiden</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://everflux.de/jquery-html-inhalt-1448/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Chromium Browser: Schneller Entwickeln!</title>
		<link>http://everflux.de/chromium-browser-schneller-entwickeln-1278/</link>
		<comments>http://everflux.de/chromium-browser-schneller-entwickeln-1278/#comments</comments>
		<pubDate>Sat, 01 Aug 2009 11:27:37 +0000</pubDate>
		<dc:creator>everflux</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Linux/OpenSource]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[ubuntuusers.de]]></category>
		<category><![CDATA[Web Entwicklung]]></category>
		<category><![CDATA[chromium]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[netbeans]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://everflux.de/?p=1278</guid>
		<description><![CDATA[Welche IDE man bevorzugt, darüber kann man sicherlich vortrefflich streiten. Genauso übrigens auch über Webbrowser. Doch eins ist klar: Bei der Entwicklung zählt jede gesparte Sekunde. Gerade in Webanwendungen wird man nicht um manuelles Testen und Ausprobieren herumkommen. Ich habe gemerkt, dass man mit dem Firefox (Firebug, Webdeveloper Toolbar, etc. pp) wunderbar Debugging betreiben kann. [...]<p>Artikel von: <a href="http://everflux.de/">everflux.de</a><br/><br/><a href="http://everflux.de/chromium-browser-schneller-entwickeln-1278/">Chromium Browser: Schneller Entwickeln!</a></p>
]]></description>
			<content:encoded><![CDATA[<p>Welche IDE man bevorzugt, darüber kann man sicherlich vortrefflich streiten. Genauso übrigens auch über Webbrowser. Doch eins ist klar: Bei der Entwicklung zählt jede gesparte Sekunde. Gerade in Webanwendungen wird man nicht um manuelles Testen und Ausprobieren herumkommen. Ich habe gemerkt, dass man mit dem Firefox (Firebug, Webdeveloper Toolbar, etc. pp) wunderbar Debugging betreiben kann. Das Tooling ist in meinen Augen ungeschlagen.<span id="more-1278"></span></p>
<p>Doch geht es ums &#8220;herumklicken&#8221; und Ausprobieren ist meiner Erfahrung nach der chromium-browser ungeschlagen schnell. (Vermutlich auch weil er bei mir absolut ohne Addons, Plugins und Erweiterungen läuft.) Der Browser ist unter Ubuntu/Linux zwar noch sehr beta, doch immerhin gibt es für Ubuntu ein PPA, so dass die Installation der Chromium Beta 3 kein Problem darstellt.</p>
<p>Die Installation des chromium Browsers (Entwicklerversion) geht am einfachsten über das PPA mit den folgenden Befehlen:<br />
<code><br />
echo "deb http://ppa.launchpad.net/chromium-daily/ppa/ubuntu `lsb_release -cs` main" &gt; /tmp/chromium.list<br />
sudo mv /tmp/chromium.list /etc/apt/sources.list.d/<br />
sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 5A9BF3BB4E5E17B5<br />
sudo apt-get update<br />
sudo apt-get install chromium-browser<br />
</code><br />
Auch sehr praktisch: Man kann den Browser so starten, dass er alle während der Tests erzeugten Daten in ein temporäres Verzeichnis legt und so keine großen Altlasten bleiben. Eine beispielhafte Konfiguration in Netbeans 6.7 mit Chromium als Browser sieht so aus:</p>
<p><a href="http://everflux.de/wp-content/uploads/2009/08/netbeans-chromium.png"><img class="alignnone size-medium wp-image-1279" title="netbeans-chromium" src="http://everflux.de/wp-content/uploads/2009/08/netbeans-chromium-300x188.png" alt="netbeans-chromium" width="300" height="188" /></a></p>
<p>Netbeans weist den Chromium Browser hier an sein Profil unterhalb von /tmp anzulegen. So muss man zwar einmalig &#8220;nichts importieren&#8221; und &#8220;nicht als Default Browser&#8221; anklicken, dafür bleibt jedoch auch wenig übrig, wenn die Entwicklung fertig ist. Zum Debugging (Ajax, JavaScript etc. pp) kann man natürlich dann auf den Firefox oder Tests zurückgreifen.</p>
<p>Damit soll übrigens nicht gesagt sein, dass Firefox insgesamt schlecht oder langsam wäre. Sicherlich wird die nächste Version von Firefox auch nochmal deutlich schneller werden, und zum täglichen Gebrauch werde ich ganz sicher (so bald) nicht zu Chromium wechseln. Für diesen speziellen Zweck macht sich Chromium bei mir jedoch sehr bezahlt. (In so fern mein &#8220;Dankeschön&#8221; an Google für die Entwicklung des Google Chrome Browsers, ohne den es auch kein Chromium gäbe.)</p>
<p>Artikel von: <a href="http://everflux.de/">everflux.de</a><br/><br/><a href="http://everflux.de/chromium-browser-schneller-entwickeln-1278/">Chromium Browser: Schneller Entwickeln!</a></p>
<p>Ähnliche Beiträge:<ol>
<li><a href='http://everflux.de/google-chrome-extensions-kommen-fur-chromium-768/' rel='bookmark' title='Google Chrome: Extensions kommen für Chromium'>Google Chrome: Extensions kommen für Chromium</a></li>
<li><a href='http://everflux.de/browser-speed-was-ist-drann-an-chrome-v8-und-co-774/' rel='bookmark' title='Browser Speed &#8211; was ist drann an Chrome, V8 und Co?'>Browser Speed &#8211; was ist drann an Chrome, V8 und Co?</a></li>
<li><a href='http://everflux.de/yahoo-schneller-zugriff-vs-privacy-491/' rel='bookmark' title='Yahoo: Schneller Zugriff vs. Privacy'>Yahoo: Schneller Zugriff vs. Privacy</a></li>
<li><a href='http://everflux.de/browser-malware-mit-einem-klick-entfernen-1268/' rel='bookmark' title='Browser Malware mit einem Klick entfernen&#8230;'>Browser Malware mit einem Klick entfernen&#8230;</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://everflux.de/chromium-browser-schneller-entwickeln-1278/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Canoo Webtest: NullPointerException durch JavaScript</title>
		<link>http://everflux.de/canoo-webtest-nullpointerexception-durch-javascript-1118/</link>
		<comments>http://everflux.de/canoo-webtest-nullpointerexception-durch-javascript-1118/#comments</comments>
		<pubDate>Fri, 15 May 2009 05:00:26 +0000</pubDate>
		<dc:creator>everflux</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Web Entwicklung]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://everflux.de/?p=1118</guid>
		<description><![CDATA[Canoo Webtest bietet seit einiger Zeit auch (begrenzte) Unterstützung für JavaScript. Das ist gerade zum Testen von Web 2.0 Anwendungen interessant, kann jedoch auch zu sehr merkwürdigen Fehlern führen. In meinem Fall quittierte Webtest die Arbeit mit der hilfreichen Meldung com.gargoylesoftware.htmlunit.ScriptException: Wrapped java.lang.NullPointerException Der Grund für die NullPointerException im Webtest war dann auch (relativ) schnell [...]<p>Artikel von: <a href="http://everflux.de/">everflux.de</a><br/><br/><a href="http://everflux.de/canoo-webtest-nullpointerexception-durch-javascript-1118/">Canoo Webtest: NullPointerException durch JavaScript</a></p>
]]></description>
			<content:encoded><![CDATA[<p>Canoo Webtest bietet seit einiger Zeit auch (begrenzte) Unterstützung für JavaScript. Das ist gerade zum Testen von Web 2.0 Anwendungen interessant, kann jedoch auch zu sehr merkwürdigen Fehlern führen.</p>
<p>In meinem Fall quittierte Webtest die Arbeit mit der hilfreichen Meldung<br />
<code>com.gargoylesoftware.htmlunit.ScriptException: Wrapped java.lang.NullPointerException</code><br />
<span id="more-1118"></span>Der Grund für die NullPointerException im Webtest war dann auch (relativ) schnell identifiziert:<br />
In der zu testenden Anwendung war ein wenig JavaScript eingebaut, genau genommen in einem Formularfeld, dass ich per Webtest ausfülle. Dabei wird per JavaScript der Blur Event abgefangen und dann &#8220;this.blur()&#8221; augerufen:<br />
<code>&lt;input type="text" name="mail" onblur="this.blur();" size="25" /&gt;</code></p>
<p>Mir ist der Sinn davon zwar schleierhaft &#8211; jedoch bringt es Webtest dazu die Arbeit zu verweigern. (Oder HTMLUnit, ich habe das nicht weiter analysiert.)</p>
<p>Eine Lösung wäre nun das JavaScript Fragment aus der zu testenden Anwendung zu entfernen &#8211; doch die wollte ich nicht ändern. Somit bleibt nur den standardmäßig aktivierten JavaScript Support in Webtest für diesen Step zu deaktivieren. (Zum Glück handelt es sich um eine Web 0.9 Anwendung die kein JavaScript benötigt.)</p>
<p>Dafür bietet <a href="http://webtest.canoo.com/" target="_blank">Webtest</a> einen  &#8220;Extension Step&#8221; an: <a href="http://webtest.canoo.com/webtest/manual/enableJavaScript.html" target="_blank">enableJavaScript</a>. Damit könnte die Konfiguration so aussehen:</p>
<p><code><br />
&lt;webtest name="test without javascript"&gt;</code><code><br />
&lt;!-- import global config --&gt;<br />
&amp;hostConfig;<br />
&lt;steps&gt;<br />
&lt;!-- crashes with javascript --&gt;<br />
&lt;enableJavaScript description="Disable javascript to avoid bugs" enable="false"/&gt;<br />
</code><br />
Wenn ich den Fehler genauer eingrenzen kann, wäre eine Fehlermeldung an Webtest oder HTTPUnit wohl angebracht.</p>
<p>Artikel von: <a href="http://everflux.de/">everflux.de</a><br/><br/><a href="http://everflux.de/canoo-webtest-nullpointerexception-durch-javascript-1118/">Canoo Webtest: NullPointerException durch JavaScript</a></p>
<p>Ähnliche Beiträge:<ol>
<li><a href='http://everflux.de/canoo-webtest-gui-monitor-deaktivieren-1113/' rel='bookmark' title='Canoo Webtest: GUI monitor deaktivieren'>Canoo Webtest: GUI monitor deaktivieren</a></li>
<li><a href='http://everflux.de/netbeans-javascript-support-php-und-andere-features-562/' rel='bookmark' title='Netbeans JavaScript Support, PHP und andere Features'>Netbeans JavaScript Support, PHP und andere Features</a></li>
<li><a href='http://everflux.de/javascript-error-mit-google-admanager-und-adblock-vermeiden-790/' rel='bookmark' title='JavaScript Error mit Google Admanager und adblock vermeiden'>JavaScript Error mit Google Admanager und adblock vermeiden</a></li>
<li><a href='http://everflux.de/zend-framework-und-php-beschleunigung-durch-caching-454/' rel='bookmark' title='Zend Framework und PHP: Beschleunigung durch Caching'>Zend Framework und PHP: Beschleunigung durch Caching</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://everflux.de/canoo-webtest-nullpointerexception-durch-javascript-1118/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Canoo Webtest: GUI monitor deaktivieren</title>
		<link>http://everflux.de/canoo-webtest-gui-monitor-deaktivieren-1113/</link>
		<comments>http://everflux.de/canoo-webtest-gui-monitor-deaktivieren-1113/#comments</comments>
		<pubDate>Thu, 14 May 2009 15:34:05 +0000</pubDate>
		<dc:creator>everflux</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Web Entwicklung]]></category>
		<category><![CDATA[groovy]]></category>

		<guid isPermaLink="false">http://everflux.de/?p=1113</guid>
		<description><![CDATA[Canoo Webtest ist ein auf ant und Groovy basierendes Framework zum automatisierten Testen von Webanwendungen. Anders als beispielsweise bei Selenium wird HTMLUnit als &#8220;Browser&#8221; verwendet. Die Dokumentation von Webtest läßt jedoch trotz der zeitlichen Reife des Projektes an einigen Stellen zu wünschen übrig. Hier kann ein Blick in &#8220;webtest.xml&#8221; sowie in &#8220;resources/build/WebTestReport.reference.xml&#8221; im Installationsverzeichnis von [...]<p>Artikel von: <a href="http://everflux.de/">everflux.de</a><br/><br/><a href="http://everflux.de/canoo-webtest-gui-monitor-deaktivieren-1113/">Canoo Webtest: GUI monitor deaktivieren</a></p>
]]></description>
			<content:encoded><![CDATA[<p>Canoo Webtest ist ein auf ant und Groovy basierendes Framework zum automatisierten Testen von Webanwendungen. Anders als beispielsweise bei Selenium wird HTMLUnit als &#8220;Browser&#8221; verwendet.</p>
<p>Die <a href="http://webtest.canoo.com/webtest/manual/manualOverview.html" target="_blank">Dokumentation</a> von <a href="http://webtest.canoo.com/" target="_blank">Webtest</a> läßt jedoch trotz der zeitlichen Reife des Projektes an einigen Stellen zu wünschen übrig. Hier kann ein Blick in &#8220;webtest.xml&#8221; sowie in &#8220;resources/build/WebTestReport.reference.xml&#8221; im Installationsverzeichnis von Webtest etwas inspirieren.<span id="more-1113"></span>In meinem konkreten Fall wollte ich den Webtest Monitor (ein kleines Groovy Fenster) deaktivieren. (Sobald das Fenster aufgeht schnappt es sich den Fokus und stört damit meinen Arbeitsablauf.)</p>
<p>Die Lösung dafür war &#8211; anders als erwartet &#8211; nicht eine XML &lt;option&gt;, sondern eine Änderung in der buil.xml in der ich ein ant Property setzen mußte um den Webtest Groovy Monitor zu deaktivieren:</p>
<p><code>&lt;property name="wt.webtestMonitor.skip" value="skip" description="WebTestMonitor should not be started"/&gt;</code></p>
<p>Damit kann jetzt nach Herzenslust getestet werden &#8211; und parallel weiter <span style="text-decoration: line-through;">gechattet</span> gearbeitet werden.</p>
<p>Artikel von: <a href="http://everflux.de/">everflux.de</a><br/><br/><a href="http://everflux.de/canoo-webtest-gui-monitor-deaktivieren-1113/">Canoo Webtest: GUI monitor deaktivieren</a></p>
<p>Ähnliche Beiträge:<ol>
<li><a href='http://everflux.de/canoo-webtest-nullpointerexception-durch-javascript-1118/' rel='bookmark' title='Canoo Webtest: NullPointerException durch JavaScript'>Canoo Webtest: NullPointerException durch JavaScript</a></li>
<li><a href='http://everflux.de/springsource-kauft-ein-groovy-und-grails-g2one-735/' rel='bookmark' title='SpringSource kauft ein: Groovy und Grails G2One'>SpringSource kauft ein: Groovy und Grails G2One</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://everflux.de/canoo-webtest-gui-monitor-deaktivieren-1113/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Java/JavaFX -&gt; iPhone + IpodTouch?</title>
		<link>http://everflux.de/java-javafx-iphone-ipodtouch-1003/</link>
		<comments>http://everflux.de/java-javafx-iphone-ipodtouch-1003/#comments</comments>
		<pubDate>Thu, 05 Mar 2009 13:11:45 +0000</pubDate>
		<dc:creator>everflux</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Web Entwicklung]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[silverlight]]></category>
		<category><![CDATA[sun]]></category>
		<category><![CDATA[Windows/Microsoft]]></category>

		<guid isPermaLink="false">http://everflux.de/?p=1003</guid>
		<description><![CDATA[Sun hat mit JavaFX ein großes Vorhaben gestartet: JavaFX soll Java in einem Bereich populär machen, in dem Java ursprünglich brillierte: Rich Internet applications (RIA). Damals waren es die Java Applets, die für Lauftext, interaktive Menüs und ganze Lernprogramme eingesetzt wurde. JavaFX soll eine neue Generation von Internet Anwendungen einläuten, Desigern wie Entwicklern neue Möglichkeiten [...]<p>Artikel von: <a href="http://everflux.de/">everflux.de</a><br/><br/><a href="http://everflux.de/java-javafx-iphone-ipodtouch-1003/">Java/JavaFX -> iPhone + IpodTouch?</a></p>
]]></description>
			<content:encoded><![CDATA[<p>Sun hat mit JavaFX ein großes Vorhaben gestartet: JavaFX soll Java in einem Bereich populär machen, in dem Java ursprünglich brillierte: Rich Internet applications (RIA). Damals waren es die Java Applets, die für Lauftext, interaktive Menüs und ganze Lernprogramme eingesetzt wurde.</p>
<p>JavaFX soll eine neue Generation von Internet Anwendungen einläuten, Desigern wie Entwicklern neue Möglichkeiten an die Hand geben. Und mit JavaFX mobile soll die Philosophie &#8220;write once, run everywhere&#8221; für mobile Anwendungen wahr(er) werden. JavaFX Mobile wird auf Blackberrys, Android und anderen Mobilgeräten laufen, solange zumindest JavaME vorhanden ist. (Die JavaFX Mobile runtime wird ggf. nachinstalliert) Auch wenn Nokia noch nicht offiziell im Boot ist, könnte ich mir eine entsprechende Ankündigung zur JavaOne gut vorstellen.</p>
<p>Doch was ist mit Java und dem iPhone von Apple? Auch der Apple ipod touch, der eine ähnliche Plattform wie das iPhone darstellt besitzt derzeit weder Flash noch Java Support. (Wenn man von einem Jailbreak Gerät absieht.)<span id="more-1003"></span>In meinen Augen besteht hier eine riesen Chance für Sun, Entwicklern eine wirklich attraktive Plattform an die Hand zu geben. Denn auch wenn Java auf dem iPhone derzeit nicht von Applet gestattet wird, ist der Anreiz immens: Der Umsatz der über den Apple Store mit dem iPhone erzielbar ist, ist immens. Außer dem Android Store (und vielleicht demnächst Nokia mit einem eigenen Süppchen) gibt es eine andere Lösung, die so einfach den Kauf und die Zahlungsabwicklung ermöglicht. Das mag ein Grund sein, weshalb iPhone Besitzer eher Anwendungen kaufen, als z.B. Symbian User.</p>
<p>Mich würde es daher nicht überraschen, wenn Sun zur JavaOne ein strategisches Abkommen mit Apple verkündet, dass Java Anwendungen zukünftig auf dem iPhone unterstützt werden. (Dabei mag es dann Einschränkungen geben, wie bei den nativen Cocoa iPhone Anwendungen auch, aber es wäre ein Anfang.)</p>
<p>Und auch wenn Apple nicht &#8220;mitspielt&#8221;, es gibt sicher noch weitere Möglichkeiten, einem JavaFX (mobile) Entwickler Werkzeuge an die Hand zu geben. Ich denke da z.B. an cross-compiler. Als Entwickler würde ich meine JavaFX mobile Anwendung entwickeln, und erhielte dann eine iPhone cocoa Anwendung zur Distribution. Klingt utopisch? Ein Indiz dafür könnte sein, dass <a href="http://blogs.sun.com/tor/" target="_blank">Tor Norbeye</a>, der für die Unterstützung zusätzlicher Sprachen an Netbeans gearbeitet hat, abgezogen und nun an einem (ganz geheimen) JavaFX Projekt arbeitet. Und so ist seit dem auch kein Blogeintrag bei Tor mehr zu lesen. Nachrichtensperre?</p>
<p>Dass sogar aus Java Bytecode eine Übersetzung zu Cocoa/iPhone Code möglich ist, zeigt Arno Puder in <a href="http://www.youtube.com/watch?v=s8nMpi5-P-I" target="_blank">diesem</a> Google Techtalk mit der <a href="http://www.xmlvm.org/overview/" target="_blank">xmlvm</a>.</p>
<p>Gelingt Sun ein solcher Schachzug, wäre JavaFX <strong>die</strong> Plattform für mobile Geräte &#8211; und auch RIAs. Einmal dabei könnte dann noch zu Microsoft <a href="http://silverlight.net/" target="_blank">Silverlight mobile</a> cross-compiliert werden. Ein Horror in der Wartung der Inkompatibilitäten &#8211; aber ein Segen für Entwickler, wenn alles tut. Zeit Sun Aktien zu kaufen?</p>
<p>Artikel von: <a href="http://everflux.de/">everflux.de</a><br/><br/><a href="http://everflux.de/java-javafx-iphone-ipodtouch-1003/">Java/JavaFX -> iPhone + IpodTouch?</a></p>
<p>Ähnliche Beiträge:<ol>
<li><a href='http://everflux.de/java-auf-den-iphone-von-apple-508/' rel='bookmark' title='Java auf den iPhone von Apple'>Java auf den iPhone von Apple</a></li>
<li><a href='http://everflux.de/apple-iphone-arger-mit-akkulaufzeit-246/' rel='bookmark' title='Apple iPhone: &#8220;rger mit Akkulaufzeit'>Apple iPhone: &#8220;rger mit Akkulaufzeit</a></li>
<li><a href='http://everflux.de/iphone-ohne-simlock-419/' rel='bookmark' title='iPhone ohne Simlock'>iPhone ohne Simlock</a></li>
<li><a href='http://everflux.de/iphone-in-deutschland-mit-umts-317/' rel='bookmark' title='iPhone in Deutschland mit UMTS'>iPhone in Deutschland mit UMTS</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://everflux.de/java-javafx-iphone-ipodtouch-1003/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

