<?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>Privates Blog von Karsten Gresch &#187; Software</title>
	<atom:link href="http://blog.gresch.de/tag/software/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.gresch.de</link>
	<description>Varia, Miscellania</description>
	<lastBuildDate>Wed, 06 Jul 2011 18:23:07 +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>(M)eine Singleton-Lösung</title>
		<link>http://blog.gresch.de/2007/07/26/meine-singleton-loesung/</link>
		<comments>http://blog.gresch.de/2007/07/26/meine-singleton-loesung/#comments</comments>
		<pubDate>Thu, 26 Jul 2007 19:23:00 +0000</pubDate>
		<dc:creator>KG</dc:creator>
				<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[architecture]]></category>
		<category><![CDATA[develop]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[oo]]></category>
		<category><![CDATA[patterns]]></category>
		<category><![CDATA[singleton]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://web636.webbox122.server-home.org/wpkg/?p=202</guid>
		<description><![CDATA[Auf Googles Singleton-Detector gesto&#223;en und mir noch einmal die Begr&#252;ndungen angeschaut, weshalb Singletons b&#246;se sind. Das ist alles nicht wirklich neu, wiewohl aus meiner Sicht ein Singleton durchaus Sinn machen kann (gilt die Kritik nicht eigentlich jeder statischen Factory-Methode?). Wie auch immer, f&#252;r mich ist guter Stil, zu begr&#252;nden, weshalb man ein Singleton verwendet. Ebenso, [...]]]></description>
			<content:encoded><![CDATA[<p>Auf Googles <a href="http://code.google.com/p/google-singleton-detector/" target="_blank">Singleton-Detector</a> gesto&szlig;en und mir noch einmal die Begr&uuml;ndungen angeschaut, <a href="http://c2.com/cgi/wiki?SingletonsAreEvil" target="_blank">weshalb Singletons b&ouml;se sind</a>. Das ist alles nicht wirklich neu, wiewohl aus meiner Sicht ein Singleton durchaus Sinn machen kann (gilt die Kritik nicht eigentlich jeder statischen Factory-Methode?).</p>
<p>Wie auch immer, f&uuml;r mich ist guter Stil, zu begr&uuml;nden, weshalb man ein Singleton verwendet. Ebenso, wie man manchmal explizit nichts in einem Code-Block ausf&uuml;hren m&ouml;chte:</p>
<pre>if(this){&nbsp; do();}else if (scary){&nbsp; <font color="#008000"><strong>// empty on purpose!</strong></font>}else{&nbsp; doOther();}</pre>
<p>(da g&auml;bs sicherlich bessere Beispiele, ein besseres w&auml;re der leere private Konstruktor von nicht instantiierbaren Klassen),&nbsp; sollte man im JavaDoc eines Singletons erw&auml;hnen, <strong>dass </strong>es sich um eines handelt, <strong>weshalb</strong> es als Singleton verwendet wird und ggf. wie es <strong>getestet</strong> werden kann resp. welche Besonderheiten f&uuml;r das Testen von Klassen anfallen, die das Singleton verwenden.</p>
<p>Das geht h&ouml;chstwahrscheinlich dar&uuml;ber hinaus, was z.B. in Spring mit den DAO-Klassen erfolgt (sollen die alle schlecht sein?), ist aber gerade f&uuml;r die Arbeit im Team n&uuml;tzlich.&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.gresch.de/2007/07/26/meine-singleton-loesung/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JOptionPane mit JGoodies</title>
		<link>http://blog.gresch.de/2007/07/11/joptionpane-mit-jgoodies/</link>
		<comments>http://blog.gresch.de/2007/07/11/joptionpane-mit-jgoodies/#comments</comments>
		<pubDate>Wed, 11 Jul 2007 21:18:00 +0000</pubDate>
		<dc:creator>KG</dc:creator>
				<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[develop]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[swing]]></category>
		<category><![CDATA[tools]]></category>
		<category><![CDATA[ui]]></category>

		<guid isPermaLink="false">http://web636.webbox122.server-home.org/wpkg/?p=198</guid>
		<description><![CDATA[Wenn das Ekel LAF angezeigt wird: &#160;&#160;&#160; UIManager.put(&#34;ClassLoader&#34;, LookUtils.class.getClassLoader());&#160;&#160;&#160; UIManager.setLookAndFeel(new Plastic3DLookAndFeel()); &#160;]]></description>
			<content:encoded><![CDATA[<p>Wenn das Ekel LAF angezeigt wird:</p>
<pre>&nbsp;&nbsp;&nbsp; UIManager.put(&quot;ClassLoader&quot;, LookUtils.class.getClassLoader());&nbsp;&nbsp;&nbsp; UIManager.setLookAndFeel(new Plastic3DLookAndFeel()); </pre>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.gresch.de/2007/07/11/joptionpane-mit-jgoodies/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JAX 2007: Spring Framework: Enterprise Java ganz einfach! (Eberhard Wolff, Mike Wiesner, Interface 21)</title>
		<link>http://blog.gresch.de/2007/04/27/jax-2007-spring-framework-enterprise-java-ganz-einfach-eberhard-wolff-mike-wiesner-interface-21/</link>
		<comments>http://blog.gresch.de/2007/04/27/jax-2007-spring-framework-enterprise-java-ganz-einfach-eberhard-wolff-mike-wiesner-interface-21/#comments</comments>
		<pubDate>Fri, 27 Apr 2007 06:47:26 +0000</pubDate>
		<dc:creator>KG</dc:creator>
				<category><![CDATA[Konferenzen]]></category>
		<category><![CDATA[develop]]></category>
		<category><![CDATA[frameworks]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[JAX]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[spring]]></category>

		<guid isPermaLink="false">http://web636.webbox122.server-home.org/wpkg/?p=183</guid>
		<description><![CDATA[Eberhard Wolff &#8211; Java Champion, Autor d. Buchs im dpunkt-Verlag (Eberhard Wolff &#8211; Spring) (dpunkt). Mike Wiesner: Fokus auf Security. Interface 21. Rod Johnson. J&#252;rgen H&#246;ller (Linz) Hauptentwickler Ausgangspunkt: Kritik an EJB. Deshalb mit POJOs (also known as &#34;Simple Objects&#34;) arbeiten. Java EE Design-Pattern-Ansatz zu komplex. DI &#8211; AOP &#8211; Portable Service Abstractions. Pluggable Architecture. [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Eberhard Wolff</strong> &#8211; Java Champion, Autor d. Buchs im dpunkt-Verlag (<a href="index.php?/archives/142-Eberhard-Wolff-Spring-dpunkt.html">Eberhard Wolff &#8211; Spring) (dpunkt)</a>. <br /><strong>Mike Wiesner</strong>: Fokus auf Security.
<p>Interface 21. Rod Johnson. J&uuml;rgen H&ouml;ller (Linz) Hauptentwickler</p>
<p><strong>Ausgangspunkt</strong>: Kritik an EJB. Deshalb mit POJOs (also known as &quot;Simple Objects&quot;) arbeiten.</p>
<p>Java EE Design-Pattern-Ansatz zu komplex.</p>
<p>DI &#8211; AOP &#8211; Portable Service Abstractions.</p>
<p>Pluggable Architecture. Spring MVC. JNDI JPA, JTI etc.</p>
<p>Leightweight remoting, JMX. </p>
<p><strong><br />Inversion of Control</strong></p>
<p>Inversion of Control</p>
<p>^-Dependency Lookup ^-DI</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ^-Setter Injection ^-Constructor Injection</p>
<p><strong><br />Setter Injection</strong></p>
<p>Spring setzt setter-Werte. <em>Parameterloser Konstruktor n&ouml;tig.</em></p>
<p>Nachteil: Inkonsistenter Zustand m&ouml;glich, wenn wesentliche Properties fehlen. BeanInterface (aber schlecht: abh&auml;ngig vom Framework) &#8211; besser init method =&gt; Ruft init-Methode auf. Oder setter mit @required erstellen, dann pr&uuml;ft Spring von selbst. noch besser:</p>
<p><strong><br />Constructor Injection</strong></p>
<p>Kann mit setter-I. kombiniert werden. Indizierung der Parameter. </p>
<p><em>&lt;constructor-arg index=&quot;0&quot; ref=&quot;accountDao&quot; /&gt; </em>(Index kann bei unterschiedlichen Typen auch weggelassen werden).</p>
<p>Dagegen spricht: super()-Aufruf bei Vererbung, Parameter <em>so</em> nicht mehr verwendbar. Kein Mechanismus, den Objekt-Status zu refreshen.</p>
<p><strong><br />Unit Test</strong></p>
<p>Nicht an Container denken, Objekte mit new() erzeugen.</p>
<p><strong><br />Spring Containers</strong><br />IoC und lookup Features. mit new einfach zu erzeugen:<br /><em>ApplicationContext theContext = new ClassPathXmlApplicationContext(&quot;spring-config.xml&quot;);</em></p>
<p>Bsp. deklarativ in web.xml &#8211; aber nicht empfohlen. Test-Case-Bsp.: protected String[] getConfigLocations()</p>
<p>Spring-Beans brauchen nicht ausgelesen zu werden. ###Files mit Aufgaben und Pr&auml;sentation hochladen###</p>
<p><strong><br />AbstractTransactionalDataSourceSpringContextTests</strong>: <br />Rollt DS nach Testaufruf auf Anfangszustand zur&uuml;ck.</p>
<p><strong><br />Autowiring</strong><br />Um Referenzen automatisch zuzuweisen. Nachteil: Weniger verst&auml;ndlich. Empfehlung: Eher nicht benutzen.</p>
<p><strong>AOP</strong><br />Spring AOP kann ohne DI benutzt werden. Bsp. Eclipse RCP. &quot;Decoration through configuration&quot;.<br /><em>Crosscutting concerns</em>. <em>Advices</em> &#8211; <em>Pointcuts</em>. Einige Aspects out-of-the-box. <br /><em>jamon</em> &#8211; Monitoring einfach einzurichten.</p>
<p><em>AOP-Proxy</em> &#8211; bezieht sich nur auf Spring-Beans (!), also z.B. nicht bei Selbstreferenzierung. Aspekte f&uuml;r AspectJ transformierbar von Spring AOP. Unterschiede: Keine Feldzugriffe mit Spring AOP. Dadurch, dass Bytecode erzeugt wird, kann AspectJ auch selbstinstantiierende Klassen finden. </p>
<p><em>Advice-Typen</em>: around (via <em>ProceedingJoinPoint</em>), before, after, throws.<br />Kurzer Verweis auf http://www.easymock.org/</p>
<p>Beispiel f&uuml;r Einbindung.</p>
<p><font face="courier new,courier" size="1">    &lt;aop:config&gt;<br />&nbsp; &lt;aop:aspect id=&quot;traceAspect&quot; ref=&quot;traceInterceptor&quot;&gt;<br />&nbsp;&nbsp;&nbsp; &lt;aop:around pointcut=&quot;execution(* dao.*+.*(..))&quot; method=&quot;trace&quot; /&gt;<br />&nbsp; &lt;/aop:aspect&gt;<br />    &lt;/aop:config&gt;</font>
<p>&nbsp;</p>
<p>Aufruf Unit-Test auch mit <em>-DSPRING_XML_FILE=aop-pojo.xml </em>in Eclipse als VM arg. Annotation-Aspects gut f&uuml;r Transaktionen, ansonsten immer schlecht, wo es schlecht ist, wenn der Code ge&auml;ndert wird.</p>
<p><em>    @Pointcut(&quot;execution(* dao.*+.*(..))&quot;)<br />    public void traceMethods()&nbsp; {<br />    }</em></p>
<p>Hack, damit &uuml;ber </p>
<p><em>@Around(&quot;traceMethods()&quot;)</em></p>
<p>darauf referenziert werden kann.</p>
<p>Annotations-Aspekt kann auch in AspectJ wiederverwendet werden, XML-POJO nicht. Bestimmte Views der SpringIDE: Bean Explorer; Bean Cross Reference; Spring AOP Event Trace.</p>
<p><strong>Effective Middle Tier</strong><br />Service Objects /Business Facade _transactional boundaries. Logik auch in Domain-Objekt, zu Lasten der Interoperabilit&auml;t.<br />Stateless, POJO. <br /><em>DAO Interfaces</em><br /><em>DAO Implementations</em></p>
<p><strong>Data Access Layer</strong> <br />Persistence hidden; Impl Class; Throws unchecked exception; Stateless, POJO. Gut mit Singleton Spring Beans. Dom&auml;nenobjekte. POJOs. </p>
<p><strong>Distributed Spring</strong><br />Referenzen auf Server injizieren. RMI, HttpInvoker &#8211; http + Serialisierung.</p>
<p>Server erstellen. Client erstellen. Seeeehr einfach. Funktioniert auch mit JMX. <em>BeanFactoryPostProcessor</em>. (Erl&auml;uterung, wie man &uuml;ber PropertyPlaceholderConfigurer Werte in *.properties-Datei [oder DB oder Input etc. etc.] auslagert und Werte in XML mit ${valuename} auslagert.</p>
<p>spring-modules hat auch eine Impl f&uuml;r Commons Configuration.</p>
<p><strong>Template Pattern</strong><br />Extreme Vereinfachung von Zugriff auf Persistenzl&ouml;sungen + JMS. Von Spring verwaltet, ohne M&auml;chtigkeit zu verlieren. Beispiel: </p>
<p><em>getSimpleJdbcTemplate().update(&quot;DELETE FROM T_ITEM WHERE ID=?&quot;, &quot;name&quot;);</em></p>
<p><strong>Exception Hierarchies.</strong><br />DataAccessException &#8211; all exceptions extend one single class. Erweiterbar. Vorbereitete Klassen, z.B. f&uuml;r SPs, die Fehlercode zur&uuml;ckgeben.<br />Datasource auch &uuml;ber JNDI-Lookup im J EE Appserver.</p>
<p>###Notiz: Wenn man Convention over Configuration folgte, sollte man IMHO f&uuml;r Spring stets drei Defaultverbindungen verwenden.### </p>
<p><strong>Transactions</strong><br />DAOs nehmen automatisch an Transaktionen teil. Gilt auch f&uuml;r Verbindungen von Persistenzl&ouml;sungen. DataSource &uuml;ber Connection. <em>Two-Phase-Commit</em>: JOTEM/Atomicus f. Java SE. Ansonsten Integration mit Appserver und JTA. </p>
<p><strong>iBATIS</strong><br />&quot;Sweet spot&quot; zwischen JDBC und ORM. Wohlbekannt&#8230; <img src='http://blog.gresch.de/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> <br />Integration mit JavaSpaces: AUf Java Modules (?). Spring ist technologieneutrales API.<br />MSB &#8211; Support injizierbar.</p>
<p><strong>Spring + JSF</strong><br />Auf Spring Beans via JSF zugreifen, als w&auml;ren es Managed Beans.<br /><em>jsf-spring-Projekt</em>: Umgekehrt. </p>
<p><strong>Quartz</strong><br />Wie JMS. POJO-Bean mit  Aufrufmethoden. Sah sehr einfach aus.</p>
<p><strong>Security</strong><br />Acegi. Unabh&auml;ngiges Framework. ServletFilter.</p>
<p><strong><br />KGs Fazit:</strong></p>
<p>Der Stoff eines ganzen Buches von zwei h&ouml;chstprofessionellen, aber augenscheinlich gelangweilt-genervervten-ersch&ouml;pften &quot;Trainern&quot;. H&auml;tte ich den Enthusiasmus, das Feuer bei der Pr&auml;sentation als Richtschnur genommen,&nbsp; w&auml;re ich unweigerlich zur Vermutung gelangt, die beiden w&auml;ren vom Java EE Marketing aufgekauft. Spring ist ein excellentes Framework, das die Entwicklung verteilter Anwendungen ungemein erleichtern kann. Dies wurde zwar vermittelt, aber in einer Weise, als ob es sich um etwas Langweiliges handele. F&uuml;r einen &quot;Rundumschlag&quot; an einem Tag, der IMHO damit enden sollte, dass alle Entwickler begeistert noch auf der Heimfahrt an den Beispielen weiterarbeiten, fehlte der Elan, vielleicht auch die didaktischen F&auml;higkeiten von Eberhard Wolff, dessen Naturell aber vielleicht eher auf Coolness/Phlegma hingerichtet ist. </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.gresch.de/2007/04/27/jax-2007-spring-framework-enterprise-java-ganz-einfach-eberhard-wolff-mike-wiesner-interface-21/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JAX 2007: Maven 2 &#8211; Umstellung eines Projekts von Ant zu Maven 2 (Oliver Stauss, eXXcellent solutions)</title>
		<link>http://blog.gresch.de/2007/04/26/jax-2007-maven-2-ae-umstellung-eines-projekts-von-ant-zu-maven-2-oliver-stauss-exxcellent-solutions/</link>
		<comments>http://blog.gresch.de/2007/04/26/jax-2007-maven-2-ae-umstellung-eines-projekts-von-ant-zu-maven-2-oliver-stauss-exxcellent-solutions/#comments</comments>
		<pubDate>Thu, 26 Apr 2007 08:46:36 +0000</pubDate>
		<dc:creator>KG</dc:creator>
				<category><![CDATA[Konferenzen]]></category>
		<category><![CDATA[ant]]></category>
		<category><![CDATA[develop]]></category>
		<category><![CDATA[frameworks]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[JAX]]></category>
		<category><![CDATA[maven]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://web636.webbox122.server-home.org/wpkg/?p=179</guid>
		<description><![CDATA[Historie &#8211; von make Ã¼ber Ant, Maven 1 zu Maven 2. Einfluss der Rails-Community. Komplett neue Implementierung von 1. Paradigmenwechsel: Nicht Build-Skripte erstellen, sondern Projekte konfigurieren. Nicht das wie des zu erzeugenden, sondern das was. Mehr managen als erzeugen. OO-Mechanismen zur Konfiguration (also Projekt). mvn2 hilft bei einem GroÃŸteil des Entwicklungsprozesses. UnterstÃ¼tzung fÃ¼r Kompilation Releaserstellung [...]]]></description>
			<content:encoded><![CDATA[<p>Historie &#8211; von make Ã¼ber Ant, Maven 1 zu Maven 2. Einfluss der Rails-Community. Komplett neue Implementierung von 1.</p>
<p />
<p>Paradigmenwechsel: Nicht Build-Skripte erstellen, sondern Projekte konfigurieren.</p>
<p>Nicht das <i>wie</i> des zu erzeugenden, sondern das <i>was</i>. Mehr managen als erzeugen. OO-Mechanismen zur Konfiguration (also Projekt).</p>
<p>mvn2 hilft bei einem GroÃŸteil des Entwicklungsprozesses. UnterstÃ¼tzung fÃ¼r</p>
<ul>
<li>Kompilation</li>
<li>Releaserstellung</li>
<li>BibliotheksabhÃ¤ngigkeiten</li>
<li>Dokumentation</li>
<li>Unit- und Integrationstests</li>
<li>nn</li>
<li>nn</li>
</ul>
<p>Weniger ein Tool wie Ant &#8211; vielmehr eine standardisierte Best-Practices-Enforcment-Box. </p>
<p><b></b></p>
<p />
<p><b></b></p>
<p />
<p><b>Konzepte </b></p>
<p><b>P</b>roject <b>O</b>bject <b>M</b>odel, beschrieben in <i>pom.xml</i>. Name + Version + Typ, Vererbung, Unterprojekte (Module), AbhÃ¤ngigkeiten und Repos, Lifecycle- Plugin Konfigurationen, Profile, Properties, sonstiges (Issue Tracker, Version Control etc). </p>
<p><b></b></p>
<p />
<p />
<p><b>Artifact</b>: </p>
<p>Ergebnis (Produkt) eines mvn2-Projekts. Typen: jar, war, ear, sar; plugin, archetype, pom.</p>
<p>Werden in Rep abgelegt. Jedes mvn2-Projekt erzeugt lediglich <b>ein</b> Ergebnis (dadurch Modularisierung erzwungen).</p>
<p />
<p><b></b></p>
<p />
<p><b>Goal</b></p>
<p>Wie Ant-Target.</p>
<p />
<p><b></b></p>
<p />
<p><b></b></p>
<p><b>Plugin</b></p>
<p>Logische Gruppierung von Goals. In Reps verwaltet.</p>
<p>Syntax: <i>plugin:goal</i></p>
<p><i>archetype:create</i> &#8211; Skeleton fÃ¼r weitere Projekte.</p>
<p><i>cargo:start</i> &#8211; FÃ¼r Java EE interessant.</p>
<p><i>compiler:compile</i>: Quellcode kompilieren.</p>
<p />
<p><b></b></p>
<p />
<p />
<p><b>Repositories</b></p>
<p>Zentrale Stelle, in der alle Artifacts abgelegt werden. Zwei Type: Lokal (file://[user-home].m2/repository), Remote (z.B. <a href="http://repo1.maven.org">http://repo1.maven.org</a>)<b></b></p>
<p><b></b></p>
<p />
<p><b></b></p>
<p />
<p />
<p><b>Dependency-Management</b></p>
<p>Alle abhÃ¤ngigen Artefakte Ã¼ber Repositories verwaltet, werden nicht physische in das Projekt kopiert. Kein &quot;Jarmaggedon&quot;.</p>
<p><b>Build-Lifecycle</b></p>
<p>Definiert in Phasen: validate-generate-resource-compile-test_compile-test-package-integration_test-install-deploy. Phasen mit plugin-goals verbunden.</p>
<p><b>Reports</b></p>
<p>QA-Reports, generelle Projektinformationen. <b></b></p>
<p><b>Frage: Wie funktioniert das innerhalb Eclipse?</b></p>
<p>Antwort: Plugins, libraries in rep</p>
<p><b>Ãœbergang von Ant zu Maven 2</b></p>
<p>Refactoring des Ant-Projekts. Projektstrukturen vereinfachen! Bei mehreren Artifacts in Unterprojekte aufteilen.</p>
<p>AuflÃ¶sen der AbhÃ¤ngigkeiten. Verwendete Bibliotheken identifzieren (mit Version!) &#8211; das ist normalerweise der aufwendigste Punkt.</p>
<p> Einspielen von 3rd-Party- und Inhouse-Bibliotheken in internes Repository.</p>
<p>POM definieren. Spezielle Ant-Targets in mvn2 umsetzen. Weitere features nutzen, um QualitÃ¤t zu steigern. </p>
<p> <b>Beispiel: antAuthProject</b></p>
<p />
<p />
<p>/src und /test/src-Folders. /lib, /etc; client, common und server-Packages. </p>
<p>=&gt; mvn: drei Verzeichnisse /server, /common, /client und eine <i>pom.xml</i> auf root-Ebene und jeweils in den drei Verzeichnissen. Sourcen darunter in /src/main (Mvn2-Konzept) und /src/test. Alles andere in /resources.</p>
<p>AuflÃ¶sen der AbhÃ¤ngigkeiten: Gut, wenn Versionsnummer in jar-Namen enthalten sind.</p>
<p>mvn install:install-file, um Libs in Rep zu bekommen (fÃ¼r internes Rep).</p>
<p>Mvn-plugin fÃ¼r spezielle Ant-targets. &lt;parent&gt;-Tag fÃ¼r Submodule. Submodule erben Konfig des Hauptprojekts (z.B. Unit-Tests, CodeCoverage).</p></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.gresch.de/2007/04/26/jax-2007-maven-2-ae-umstellung-eines-projekts-von-ant-zu-maven-2-oliver-stauss-exxcellent-solutions/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JAX 2007: Polyglot Programming (Neal Ford, ThoughtWorks)</title>
		<link>http://blog.gresch.de/2007/04/25/jax-2007-polyglot-programming-neal-ford-thoughtworks/</link>
		<comments>http://blog.gresch.de/2007/04/25/jax-2007-polyglot-programming-neal-ford-thoughtworks/#comments</comments>
		<pubDate>Wed, 25 Apr 2007 18:30:55 +0000</pubDate>
		<dc:creator>KG</dc:creator>
				<category><![CDATA[Konferenzen]]></category>
		<category><![CDATA[develop]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[JAX]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://web636.webbox122.server-home.org/wpkg/?p=178</guid>
		<description><![CDATA[Bridge building as metaphor for sw. Jack W. Reeves &#34;What is sw design?&#34; Design: Sourcecode itself. Manufacturing incredibly cheap. Design small parts, then bigger. Our design tool: Java. C/C++-origins. Stupid Java Tricks: static block. 6 ways to initialize sthg. in Java. Enum example. Inner class inherits List&#60;String&#62; s = new ArrayList&#60;String&#62;() { { add(&#34;hi&#34;); //etc. [...]]]></description>
			<content:encoded><![CDATA[<p>Bridge building as metaphor for sw. Jack W. Reeves &quot;What is sw design?&quot;</p>
<p>Design: Sourcecode itself. Manufacturing incredibly cheap. </p>
<p>Design small parts, then bigger. Our design tool: Java. C/C++-origins. </p>
<p>Stupid Java Tricks: static block. 6 ways to initialize sthg. in Java. </p>
<p>Enum example. </p>
<p>Inner class inherits</p>
<p>List&lt;String&gt; s = new ArrayList&lt;String&gt;() </p>
<p>{</p>
<p>  { add(&quot;hi&quot;); //etc.</p>
<p>
Justin Gehtland.</p>
<p>Language entropy &#8211; languages tend to become more complex. </p>
<p>Java language is the design, Java platform the manufacture.</p>
<p />
<p> Jaskell, Scala &#8211; Functional languages &#8211; e.g. automatically thread-safe</p>
<p />
<p>More declarative than imperative code.</p>
<p />
<p>Paul Graham, <i>Hackers and Painters</i>. Scale of the power of languages. LISP as the most powerful predecessor &#8211; no language that goes so far, Java only 4 features, Groovy 6 (?), Ruby 7</p>
<p>Ruby example&#8230; Calendar cal; cal.2.days.fromToday&#8230;</p>
<p>Testing is the rigor of SW dev.</p>
<p><b>KGs Summary</b>:</p>
<p>The most inspiring and personally important session which I attended. Neal Ford made clear that following the test-first-approach (and testing in general) is more needed than type-safety. And even more needed than the IDE (or whatever) is the programming language as developer&#8217;s tool. But what the programmer most necessarily needs is &#8211; his brain. If he doesn&#8217;t think but just rely in the compiler warnings etc. there is no gain at all. As Neal Ford explained that FUD very often distracts from thinking, his recommendation is to evaluate, I think, every Java developer should take a mid-complex personal project and rewrite it in Ruby.</p>
<p>But I&#8217;m also sure, many won&#8217;t. This is caused in the fact that there are many programmers which have no &quot;personal project&quot; &#8211; they even haven&#8217;t any IDE installed at home. </p>
<p>To me it seems, the programming world is not only splitted into MS and non-MS programmers or those who use a plaintext editor and those who use a full-featured IDE, but also in those who want to be efficient (in the Pragmatic Programmer&#8217;s sense) and those who just want to stay where they are. There is a big &quot;gap of passion&quot; and IMHO, the less a developer is passionated about software development the more she/he&#8217;ll produce and consume FUD.</p>
<p> </p>
</p>
<p>Addendum: On Neal Ford:</p>
<p>Homepage: <a href="http://www.nealford.com/">http://www.nealford.com/</a></p>
<p>Blog: <a href="http://memeagora.blogspot.com/">http://memeagora.blogspot.com/</a></p>
<p />
<p />
<p />
<p />
<p />
]]></content:encoded>
			<wfw:commentRss>http://blog.gresch.de/2007/04/25/jax-2007-polyglot-programming-neal-ford-thoughtworks/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JAX 2007: Garbage Collection &#8211; Memories are made of this (Rainer Jung, kippdata)</title>
		<link>http://blog.gresch.de/2007/04/25/jax-2007-garbage-collection-memories-are-made-of-this-rainer-jung-kippdata/</link>
		<comments>http://blog.gresch.de/2007/04/25/jax-2007-garbage-collection-memories-are-made-of-this-rainer-jung-kippdata/#comments</comments>
		<pubDate>Wed, 25 Apr 2007 14:34:08 +0000</pubDate>
		<dc:creator>KG</dc:creator>
				<category><![CDATA[Konferenzen]]></category>
		<category><![CDATA[develop]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[JAX]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://web636.webbox122.server-home.org/wpkg/?p=177</guid>
		<description><![CDATA[Zu Rainer Jung: Tomcat-Commiter, Cluster, mod_jk, GeschÃ¤ftsfÃ¼hrer kippdata GmbH Warm-Up-Fragen, etc. wer benutzt noch 1.3 etc, Statistik XX-Optionen: 412 + 32 Diagnose 367 in DevBuild 53 Optionen mit verschiedenen Defaults BeschrÃ¤nkung auf Sun JVM 1.4.2, 1.5, 1.6 Drei Fragestellungen: GC run blockiert Anwendung GC blockiert CPU Zeiten GroÃŸes Memory ist teuer =&#62; Drei widersprÃ¼chliche Ziele. [...]]]></description>
			<content:encoded><![CDATA[<p>Zu Rainer Jung: Tomcat-Commiter, Cluster, mod_jk, GeschÃ¤ftsfÃ¼hrer kippdata GmbH</p>
<p>Warm-Up-Fragen, etc. wer benutzt noch 1.3 etc, </p>
<p>Statistik XX-Optionen: 412 + 32 Diagnose</p>
<p>367 in DevBuild</p>
<p>53 Optionen mit verschiedenen Defaults</p>
<p>BeschrÃ¤nkung auf Sun JVM 1.4.2, 1.5, 1.6</p>
<p>Drei <b>Fragestellungen</b>: </p>
<ol>
<li>GC run blockiert Anwendung</li>
<li>GC blockiert CPU Zeiten</li>
<li>
GroÃŸes Memory ist teuer</li>
</ol>
<p>=&gt; Drei widersprÃ¼chliche Ziele.</p>
<p>Objekterreichbarkeit &#8211; lebt, wenn es Kette v. ObjRefs von &quot;root&quot; zum Obj gibt.</p>
<p><i>roots</i>: static fields in Klassen, Args, MEmber der Methoden in allen aktuellen Threads.</p>
<p>Realisierungsziele</p>
<ul>
<li>schnelleObjAllokation: <b>Eden</b>-Stack; Ende d Stacks wird hochgesetzt -Inkrementierung d Pointers. Was, wenn Eden &quot;voll ist&quot;? Eden leerrÃ¤umen: In <b>Survivor Space</b> () [=&gt;Minor GC] wird Eden umkopiert. SS kleiner als Eden.<br />Was, wenn SS voll ist? Zwei SSes Survivor A + Survivor B. Eden=&gt;A=&gt;B. Dabei werden die From und To-Rollen immer abwechselnd vertauscht. Deshalb heiÃŸen die SSes auch &quot;Semi-Spaces&quot;. </li>
<li><b>New</b>: Var 1: Eden+ 1 Semi-Space</li>
<li>Var2: Eden + beide SSes.</li>
<li>Was, wenn SemiSpace voll ist? Objekte nicht mehr &quot;jung&quot; &#8211; <b>Tenured</b> &#8211; enthÃ¤lt Ã¤ltere Objekte. Nach MGC =&gt; Eden leer, From leer, alle Objekte in To und Tenured.</li>
<li>Objekte im SS erhalten Alter &quot;age&quot;, wird bei Umkopieren um eins erhÃ¶ht; Objekte oberhalb eines Age-limits (default 31 (1.4.2), 15 (1.6) und 31/15 (1.5), Ã¤nderbar) kommen nach Tenured.</li>
<li>Suche letztes Age A, welches unter N% liegt.</li>
<li><b>meisten Obj sterben jung</b></li>
<li>wenig Overhead + StÃ¶rung d. App</li>
</ul>
<p>Schalter -server / -client VerÃ¤ndert Memory Defaults. 64 bit immer Server. </p>
<p>Server Class Detection: Linux: Anhand d Memory-Werts. </p>
<p>-X-Argumente sind nicht standardisiert. -XX:+/-[Schalter] -XX:[key=value]</p>
<p>Argumente an CL oder .hotspotrc oder _JAVA_PREFIC envvar</p>
<p>Heap: Eden+2*Semi+Tenure</p>
<p>Dynamisches Resizing. Defaults 40/70%</p>
<p>FÃ¼r Produktion Xmx=Xms</p>
<p>New Size= Eden + 2*Semi</p>
<p>(Kein Schalter f. Tenured). New Size als Anteil New:Tenured = 1:NewRatio </p>
<p>New generation (in Doku): Ein Semi-Space + Eden</p>
<p><b></b></p>
<p />
<p><b>Survivor Ratio</b> 1 Semi Space also New /(SurvivorRatio+2)</p>
<p>4 = Eden 4/6, SS 1/6</p>
<p><b></b></p>
<p />
<p><b>Tenuring-Verhalten</b> beeinflussen</p>
<p>TargetSurvivorRatio (ZielfÃ¼llstand SemiSpaces %)</p>
<p>MaxTenurinbgThreshold</p>
<p><b></b></p>
<p />
<p><b>OutOfMemoryErrors</b></p>
<p>OnError &#8211; KommandoÃ¼bergabe.</p>
<p>Schalter <i>ShowMessageBoxOnError</i>: HÃ¤lt Prozess an, damit man Debugger anklemmen kann.</p>
<p>Seit 1.4.2. parallele Minor GC (Throughput Collector). Concurrent: Abarbeitung wÃ¤hrend App nicht gestoppt wird.</p>
<p>Schalter UseParallelGC bei CMS UseParNewGC, Default ab 1.5 bei server</p>
<p />
<p>Anzahl benutzter Threads nach Formel</p>
<p>(ncpus &lt;= ?) ncpus : 8 + (ncpus -8)* 5/ 8</p>
<p>ParallelGCThreads=x einstellen besser!</p>
<p>GC-Ergonomie, in Verbiindung m. Server-Class detection. Andere defaults der Mem-GrÃ¶ÃŸen.</p>
<p><i>UseAdaptiveSizingPolicy</i> &#8211; soll Eden und SemiSpaces automatisch skalieren. Wohl weniger performant, zu prÃ¼fen.</p>
<p />
<p><b></b></p>
<p />
<p><b>Major GC</b> / <i>Full GC</i><br />Entfernung toter Objekte aus Tenured. Steht nicht in jedem Log. Tenured &quot;voll&quot;? Ganz unterschiedliche AnsÃ¤tze Tenured-Size Eden &#8211; Size 1 Semi ODER 68% Tenured </p>
<p>System.gc() (aber kein Vertrag).</p>
<p>Webapp-Trick: &lt;% System.gc(); %&gt; &#8211; fÃ¼r Tests &#8211; ULR aufrufen.</p>
<p>GB-Tenured GC kann im Mehrsekundenbereich liegen; vor 1.6 single-threaded. </p>
<p><b></b></p>
<p />
<p><b>Zwei Algorithmen</b></p>
<p><i>Mark Sweep Compact</i> (Exact GC), default: </p>
<p>Geht nicht nur durch, um tote Obj zu entfernen, sondern &quot;defragmentiert&quot; auch</p>
<p><u>ab 1.5.06/1.6</u></p>
<p>optionale parallele Abarbeitung &#8211; mehrere Threads Parallel!=Concurrent-Vorsicht!</p>
<p>Gleicher Thread Count</p>
<p><i>Concurrent Mark Sweep [CMS] GC</i> (seit 1.4.2)<i></i></p>
<p>Anwendung nur kurz stoppen, GC in mehreren Phasen. UseConMarkSweepGC mit Minor GC nur mit UseParNewGC</p>
<p>Pausenzeiten deutlich kÃ¼rzer. Anfangs sehr buggy, jetzt aber empfehlenswert.</p>
<p>Gefahr: Fragmentierung von Tenured. erhÃ¶hter Memory Bedarf in Tenured (~30%?) </p>
<p>Neu in 1.6: CMS auch fÃ¼r System.gc(), Schalter <i>ExplicitGCInvokesConcurrent</i></p>
<p>Parallele Mark-Phase (stop)</p>
<p>1.4.2. ignoriert SurvivorRatio.</p>
<p>Class Garbage Collection;</p>
<p><b>Demo</b>: Eden und JMeter sendet Requests byteArray allozieren Speicher.</p>
<p>jconsole zeigt Ansteigen der Belegung d Eden Space an. </p>
<p><b>Demo</b>: Aging Distribution</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.gresch.de/2007/04/25/jax-2007-garbage-collection-memories-are-made-of-this-rainer-jung-kippdata/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JAX 2007: Tomcat und Apache in der Produktion (Peter RoÃŸbach)</title>
		<link>http://blog.gresch.de/2007/04/25/jax-2007-tomcat-und-apache-in-der-produktion-peter-roabach/</link>
		<comments>http://blog.gresch.de/2007/04/25/jax-2007-tomcat-und-apache-in-der-produktion-peter-roabach/#comments</comments>
		<pubDate>Wed, 25 Apr 2007 11:58:08 +0000</pubDate>
		<dc:creator>KG</dc:creator>
				<category><![CDATA[Konferenzen]]></category>
		<category><![CDATA[admin]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[develop]]></category>
		<category><![CDATA[frameworks]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[JAX]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://web636.webbox122.server-home.org/wpkg/?p=176</guid>
		<description><![CDATA[Verbindung HTTP + TC. http://tomcat.objektpark.org/index.html ProxyLoadBalancer Apache httpd &#8211; ist am Browser-bug-resistentesten.Analyse mit Live HTTP Headers Catalina Architecture: Non Blocking IO Handler. ThreadHandler von Session separat. APR f&#252;r NBZ.B. 10.000 gleichzeitige Verbindungen auf derselben Box. Viele Verbindungen, die aber nicht alle gleichzeitig aktiv sind. Tomcat-Pipeline intern: Datenstr&#246;me werden &#34;mundgerecht&#34; zerlegt in Objektrepr&#228;sentationen.Was, wenn ein Server [...]]]></description>
			<content:encoded><![CDATA[<p>Verbindung HTTP + TC. <a href="http://tomcat.objektpark.org/index.html">http://tomcat.objektpark.org/index.html</a> ProxyLoadBalancer Apache httpd &#8211; ist am Browser-bug-resistentesten.<br />Analyse mit Live HTTP Headers</p>
<p><b>Catalina Architecture</b>: Non Blocking IO Handler. ThreadHandler von Session separat.</p>
<p><b>APR</b> f&uuml;r NB<br />Z.B. 10.000 gleichzeitige Verbindungen auf derselben Box. Viele Verbindungen, die aber nicht alle gleichzeitig aktiv sind.</p>
<p>Tomcat-Pipeline intern: Datenstr&ouml;me werden &quot;mundgerecht&quot; zerlegt in Objektrepr&auml;sentationen.<br />Was, wenn ein Server nicht mehr ausreicht?</p>
<p><b>mod_jk</b> -Konzept. &Uuml;ber httpd analysiert und an via <b>A</b>pache <b>J</b>ava <b>P</b>rotocol verbundene Tomcat-Instanzen. &quot;Sauschnell&quot; &#8211; stehende TCP/IP-Verbindungen, wie RPC.</p>
<p><b>jserv</b> -Protokoll: Senden von Kommandos und Datenbl&ouml;cken statt Stream mit Header und Body. Einziges Problem: 8k-Header-Beschr&auml;nkung bei SSL-Verbindungen. Kann aber vergr&ouml;&szlig;ert werden, zu Lasten des allgemeinen Speicherverbrauchs.<br />2-Byte-Kodierung mit Header-Strings. 30%-40% Perfomancegewinn iVglz <i>http_proxy</i>.<br />mod_jk-Konfiguration</p>
<p><i>JKWorkerProperty (ies) setzen:</i></p>
<p><i>worker.list=loadbalancer,jkstatus<br />~node01.port=8009/host=lch/type=ajp13<br />~loadbalancer.type=lb<br />~.balance_workers=node01<br />worker.jkstatus.type=status<br />JkMount /jkstatus status<br />JkMount /myapps* loadbalancer</i></p>
<p>server.xml:<br />jvmRoute=&quot;node01&quot;<br />protocol=&quot;AJP/1.3&quot;</p>
<p><b>AJP im Einsatz</b></p>
<p><b>Real Connect</b>: CPING-Paket hin, CPONG zur&uuml;ck<br />Request: RQ Header<br />Response: Nur wenn Requests beendet sind.<br />LogLevel Trace</p>
<p><b>Template</b><br />einmalige Konfiguration, auf die f&uuml;r viele Instanzen referenziert werden kann.</p>
<p><b>Timeouts</b><br />socket_timeout, connection_pool_~, connect_~, prepost_~, reply_~</p>
<p><b>Recovery </b> +4 Recovery-mode: connection close after ERROR<br /> 3 &#8211; Lieblingsmodus von P.R.</p>
<p> <b>Z&auml;hler-Methoden</b> : Requests, Sessions (PR f&uuml;r statusbehaftete), Busy (kleinste Anzahl von Anfragen, von PR f&uuml;r statuslose Sessions), Traffic (kleinster r+w Traffic); nur Requests, die keine JSessionId erhalten haben.</p>
<p> LB-Algorithmus (PSEUDO-CODE)<br /> DEF service<br /> FIND &lt;worker that handles request&gt;<br /> CALL_get_most_suitable_worker<br /> IF EXISTS &lt;worker candidate&gt;<br /> FIND &lt;worker_endpoint&gt;<br /> IF EXIST &lt;worker_endpoint&gt;<br /> SET WORKER.ATTR.state_busy<br /> SET ATTR.lbvalue<br /> IF LB.ATTR</p>
<p>[###von Folie holen!###]<br /> Weiter mit FIND MOST SUITABLE Algorithmus<br /> Weiter mit FIND BEST Algorithmen<br /> <b>Retries</b></p>
<p>Loadbalancer oder Worker</p>
<p> <i>jk_status</i> : F&uuml;r Analyse zur Ermittlung des geeigneten LoadBalancers.<br /><i>mo_jk</i> <b>State</b> &#8211; Recoverable, Force Recoverable. <b>JKRequestLogFormat</b> &#8211; dezidierte Analysen. <br /> <b>Location Mapping</b>. Eine Maschine liefert statischen Content aus. Loadbalancer immer nutzen, schon wegen <i>jk_status</i>.</p>
<p>Empfohlene Mindestkonfiguration: Zwei Rechner mit je zwei Instanzen (stabiler und updatef&auml;hig.).</p>
<p><b>Hot Standby</b> -<br /><b>Routing</b> &#8211; Konfiguration: Szenario &quot;Monatschabschlussbericht.&quot;reportlb zustandslos einrichten<br /><b>Cluster-Session State</b> &#8211; &uuml;ber Domainen hinweg. Nodes bleiben nicht gleich. State auf anderen Rechner auslagern.<br /><b>Zellen</b> &#8211; <b>Distance</b>: Auch zum Trennen unterschiedlicher Standorte weltweit.<br /><b>Virtual Server via Direct Routing</b>. LoadBalancer &auml;ndert R&uuml;ckroute IPVS wird dadurch nicht zum Flaschenhals.<br /><b>Tomcat APR Connector</b>: Direkter OpenSSL-Support in Tomcat. Senden statischer Ressourcen mit OS sendfile (*ix); Viele KeepAlive &#8211; Verbindungskonstrukte jetzt m&ouml;glich (z.B. f&uuml;r AJAX)<b>IOPointer</b> wird Poller zugewiesen. </p>
<p><b>ApacheBench</b> &#8211; TestClient</p>
<p>IO ist derzeit der Performanceblocker, CPU nicht mehr. Gr&ouml;&szlig;te Installation mit 80 Tomcat-Instanzen auf 30-40-Maschinen.</p>
<p>&nbsp;</p>
<p> <span id="more-176"></span><br />
<h2 style="font-size: 11pt; width: 410px"> </h2>
]]></content:encoded>
			<wfw:commentRss>http://blog.gresch.de/2007/04/25/jax-2007-tomcat-und-apache-in-der-produktion-peter-roabach/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JAX 2007: Apache Trinidad &#8211; JavaServer Faces Erster Klasse! (Matthias Weßendorf, Oracle Corp.)</title>
		<link>http://blog.gresch.de/2007/04/25/jax-2007-apache-trinidad-javaserver-faces-erster-klasse-matthias-weaendorf-oracle-corp/</link>
		<comments>http://blog.gresch.de/2007/04/25/jax-2007-apache-trinidad-javaserver-faces-erster-klasse-matthias-weaendorf-oracle-corp/#comments</comments>
		<pubDate>Wed, 25 Apr 2007 10:18:04 +0000</pubDate>
		<dc:creator>KG</dc:creator>
				<category><![CDATA[Konferenzen]]></category>
		<category><![CDATA[ant]]></category>
		<category><![CDATA[develop]]></category>
		<category><![CDATA[frameworks]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[JAX]]></category>
		<category><![CDATA[jsf]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://web636.webbox122.server-home.org/wpkg/?p=174</guid>
		<description><![CDATA[Geschichte Oracle-Schenkung (vormals Oracle ADF Faces). Incubator-Projekt beendet am 22.04.2007; jetzt Unterprojekt von MyFaces. Craig Mc Clannaghan Incubator Mentor. Wiki Komponenten Ca. 105 Komponenten. HTML AJAX Renderkit. Dialogframework. Testframework. Facelet-UnterstÃ¼tzung &#34;out-of-the-box&#34;. Dazu sind die Maven-Facelet-Plugins erforderlich. Tomahawk-UnterstÃ¼tzung. AJAX4JSF-, Seam-UnterstÃ¼tzung. Tobago schwierig. tr:charts &#8211; SVG-Graphiken, ziemlich beeindruckend. tr:breadCrumbs &#8211; &#34;HÃ¤nsel u. Gretel-Navigation&#34; tr:document &#8211; individuelle Load-Manipulation. [...]]]></description>
			<content:encoded><![CDATA[<p><b>Geschichte</b></p>
<p>Oracle-Schenkung (vormals Oracle ADF Faces). Incubator-Projekt beendet am 22.04.2007; jetzt Unterprojekt von MyFaces. Craig Mc Clannaghan Incubator Mentor.</p>
<p><a href="http://wiki.apache.org/myfaces/Trinidad">Wiki</a></p>
<p><a href="http://myfaces.apache.org/wiki/Trinidad"></a></p>
<p><b></b></p>
<p><b></b></p>
<p><b>Komponenten</b></p>
<p>Ca. 105 Komponenten. HTML AJAX Renderkit.</p>
<p>Dialogframework. Testframework. Facelet-UnterstÃ¼tzung &quot;out-of-the-box&quot;. Dazu sind die Maven-Facelet-Plugins erforderlich.</p>
<p>Tomahawk-UnterstÃ¼tzung. AJAX4JSF-, Seam-UnterstÃ¼tzung. Tobago schwierig.</p>
<p><i>tr:charts</i> &#8211; SVG-Graphiken, ziemlich beeindruckend.</p>
<p><i>tr:breadCrumbs</i> &#8211; &quot;HÃ¤nsel u. Gretel-Navigation&quot;</p>
<p><i>tr:document</i> &#8211; individuelle Load-Manipulation.</p>
<p><i>tr:form</i> &#8211; Anders als normal</p>
<p><i>tr:icon</i> &#8211; Skin-Icon</p>
<p><i>tr:inputListOfValue</i> action kann sich auf bestimmte Datei beziehen.</p>
<p><i>tr:inputSpinBox</i> Zahlenwert in Mini-List, mit Tastatur Ã¤nderbar</p>
<p><i>tr:legend</i> &#8211; fÃ¼r Skin Icons</p>
<p><i>tr:navigationPane</i> z.B. als Tab gerendert. Abstrakte Klasse aus dem Model Ã¼berschreiben (&quot;Swingy&quot;).</p>
<p />
<p><i>tr:navigationTree</i></p>
<p><i>tr:page</i> &#8211; f. Grundstruktur d. Layouts</p>
<p><i>tr:panel</i> &#8211; diverse Layout-Komponenten, Border-, Group-, Form-Layout (wie Layout-Mgr). (###?Tomahawk document?###) </p>
<p><i>tr:poll</i> Fortschrittsbalken &#8211; ziemlich cool &#8211; partialTriggers=&quot;poll&quot; setzen. So lange wie Transaktion nicht abgeschlossen, wird die Seite angezeigt. action=&quot;[Seite/Zustand nach Beendigung]&quot;; Beispiel: Auch fÃ¼r regelmÃ¤ÃŸiges Pollen auf Daten mÃ¶glich (z.B. Aktienticker). Auch z.B. zum ÃœberprÃ¼fen aktiver Session.</p>
<p><i>tr:selectOne[...]</i> &#8211; Zum AuswÃ¤hlen nur eines Elements (v.a. choice)</p>
<p><i>tr:selectManyShuttle</i> &#8211; zwei ListBoxes mit MÃ¶glichkeit, Werte von einer in die andere zu Ã¼bertragen.</p>
<p><i>tr:singleStepButton</i> </p>
<p><i>tr:subform</i> &#8211; Vorversenden von Formteilen</p>
<p><i>tr:treeTable</i> </p>
<p>Table-Sortierung sehr einfach, ebenso Selektion. </p>
<p><i>tr:setActionListener</i> (auch in JSF 1.2 default &#8211; fÃ¼r den Service Manager sehr interessant).</p>
<p />
<p />
<p />
<p><b>Projektstruktur</b></p>
<ul>
<li><i>trinidad-api</i> <br />Basisklassen, abstrakte Klassen, Code nur fÃ¼r Trinidad-Entwickler interessant&#8230;</li>
<li><i>trinidad-impl</i></li>
<li><i>trinidad-build</i></li>
</ul>
<p>JSF-Komponentenerstellung beschrÃ¤nkt sich auf das Schreiben lediglich der Rendererklasse (!). Facelets u.U. problematisch. </p>
<p> </p>
<p><b>Framework</b></p>
<p>API. Vereinfachung der Komponentenerstellung. Dialogframework. Optimierte Komponentenspeicherung: UIXComponentBase benutzt direkt Map und delegiert Bean-Methoden. </p>
<p> Maven2-Plugins. TagDoc Personalisierung. Skinning-Dateien.</p>
<p>Dialogframework z.B: fÃ¼r Wizards. processScope zw. Request und Session. Events: launch und return. </p>
<p><b>HTML AJAX RenderKit</b></p>
<p>Partial Page Rendering. iframe anstelle von XmlHttpRequest-Objekt. Clientseitige Validierung, kein form.submit(). WÃ¤re u.U. auch sehr interessant f. Service Manager.</p>
<p><i>autoSubmit</i> &#8211; input Components f. action, <i>partialSubmit</i> &#8211; command, partialTriggers &#8211; fÃ¼r listener, bezieht sich auf partial/autoSubmit Komponente</p>
<p>PPR via Java API auch mÃ¶glich (in action-Methode; RequestContext-Objekt von Trinidad nicht mit Faces-OBjekt verwechseln.).</p>
<p><i>RenderKit Extension</i> &#8211; JS an Client senden (programmatisch).</p>
<p>RenderKit Skinning Architecture. CSS anlegen, registrieren in <i>trinidad-config.xml</i> und <i>trinidad-skins.xml</i></p>
<p>Referenzieren auf Komponenten Ã¼ber Pseudoelemente, <i>af|Komponente::Attribut { &#8230; }</i> </p>
<p>Skinning-Verhalten Ã¼ber EL dynamisch Ã¤nderbar! </p>
<p>Accessibility: default, inaccessible, screenreader (f. Blinde), right-to-left, debug-output</p>
<p>Demo-Anwendung <a href="http://code.google.com/p/facesgoodies">http://code.google.com/p/facesgoodies</a>.</p>
<p><b></b></p>
<p><b></b></p>
<p />
<p><b>Arbeiten mit Trinidad</b></p>
<p>Vergleich JSF-Standard ./. Trinidad. Sehr angenehm: tr-Tags mit anderen (f) einsetzbar.</p>
<p>JSF 1.2 nur im branch, wartet auf MyFaces update. Aber stable, mit &quot;magic script&quot; permanentes Merge, derzeit keine nightly builds, das Continuum derzeit down.</p>
<p><b>Gesamteindruck</b></p>
<p>Sehr mÃ¤chtig, sehr traurig, dass das HTML AJAX RenderKit auf iframe basiert</p>
<p><b></b></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.gresch.de/2007/04/25/jax-2007-apache-trinidad-javaserver-faces-erster-klasse-matthias-weaendorf-oracle-corp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JAX 2007: Keynote From Eclipse to Jazz (Erich Gamma)</title>
		<link>http://blog.gresch.de/2007/04/24/jax-2007-keynote-from-eclipse-to-jazz-erich-gamma/</link>
		<comments>http://blog.gresch.de/2007/04/24/jax-2007-keynote-from-eclipse-to-jazz-erich-gamma/#comments</comments>
		<pubDate>Tue, 24 Apr 2007 17:30:54 +0000</pubDate>
		<dc:creator>KG</dc:creator>
				<category><![CDATA[Konferenzen]]></category>
		<category><![CDATA[collaboration]]></category>
		<category><![CDATA[develop]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[frameworks]]></category>
		<category><![CDATA[JAX]]></category>
		<category><![CDATA[plugins]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://web636.webbox122.server-home.org/wpkg/?p=173</guid>
		<description><![CDATA[Learning, describing, tooling &#34;The Eclipse way&#34;. From closed to open &#8211; not only regarding OS, but also direct interaction with the dev team. Project gives community and vice versa. &#34;Village Effect&#34; create accountability without blaming others. Transparency &#8211; who does what. Continuity (?) =&#62; continuous health. Mindmap of Eclipse practices ###get### Organizational Patterns of Agile [...]]]></description>
			<content:encoded><![CDATA[<p>Learning, describing, tooling &quot;The Eclipse way&quot;.</p>
<p>From closed to open &#8211; not only regarding OS, but also direct interaction with the dev team.</p>
<p>Project gives community and vice versa. &quot;Village Effect&quot; create accountability without blaming others. Transparency &#8211; who does what. Continuity (?) =&gt; continuous health.</p>
<p>Mindmap of Eclipse practices ###get###</p>
<p><i>Organizational Patterns of Agile SW Dev</i> / Coplien ###get###</p>
<p>Bugzilla Pivotgraph demo. </p>
<p>EPF examples. Bottom-down-and-up-collaboration; </p>
<p>Process/practice awareness: Instead of writing documentation help on the tool level.First products 2 b released in 2008. &quot;Open commercial&quot; software &#8211; seems that Jazz&#8217;ll be fully commercial (hm, maybe as commercial as EPF is considering the &quot;RUP composer&quot;). </p>
<p>Jazz overview. Team first &#8211; codesharing.</p>
<p><b>KG&#8217;s summary</b></p>
<p>Finally we can see something &#8211; after a long time of waiting (since <a href="http://portal.acm.org/citation.cfm?id=965670&#038;coll=portal&#038;dl=ACM&#038;CFID=21208174&#038;CFTOKEN=43773194" target="_blank">http://portal.acm.org/citation.cfm?id=965670&amp;coll=portal&amp;dl=ACM&amp;CFID=21208174&amp;CFTOKEN=43773194</a> I&#8217;m eager to see more) there&#8217;s a clear concept. If I understood it correctly, the tool-suite shall only be released commercially <img src='http://blog.gresch.de/wp-includes/images/smilies/icon_neutral.gif' alt=':-|' class='wp-smiley' />  </p>
<p>I hope this can be understood in the sense of never giving Eclipse for free or the RUP composer&#8230; I assume, there&#8217;ll be connectors to Lotus or Rational stuff &#8211; hope this&#8217;ll be a separate commercial part.</p>
<p>The vision I understood was this: One can design a collaborative process within EPF and apply it to Jazz-enabled IDEs in the way that it ensures that the developers stick to the process. This would work &#8211; plain documentation not.</p>
<p />
]]></content:encoded>
			<wfw:commentRss>http://blog.gresch.de/2007/04/24/jax-2007-keynote-from-eclipse-to-jazz-erich-gamma/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JAX 2007: Mylar &#8211; The Task Focused UI (Mik Kersten, Mylar Lead)</title>
		<link>http://blog.gresch.de/2007/04/24/jax-2007-mylar-the-task-focused-ui-mik-kersten-mylar-lead/</link>
		<comments>http://blog.gresch.de/2007/04/24/jax-2007-mylar-the-task-focused-ui-mik-kersten-mylar-lead/#comments</comments>
		<pubDate>Tue, 24 Apr 2007 09:58:27 +0000</pubDate>
		<dc:creator>KG</dc:creator>
				<category><![CDATA[Konferenzen]]></category>
		<category><![CDATA[develop]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[JAX]]></category>
		<category><![CDATA[mylar]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[tools]]></category>

		<guid isPermaLink="false">http://web636.webbox122.server-home.org/wpkg/?p=170</guid>
		<description><![CDATA[Objective/Background Eclipse overloaded with information. E.g. Package Explorer in normal projects.Context loss when multi-tasking. No integration with IDE workflow. Demo Eclipse &#34;empty&#34; except of task view. Hyperlinking also to sourcecode (### &#8211; need to check).Search view &#8211; (### try with Trac).Search for Duplicates when submitting a bug based on stack trace. Collaboration Template for commit [...]]]></description>
			<content:encoded><![CDATA[<p><b>Objective/Background</b></p>
<p>Eclipse overloaded with information. E.g. Package Explorer in normal projects.<br />Context loss when multi-tasking. No integration with IDE workflow.</p>
<p><b>Demo</b></p>
<p>Eclipse &quot;empty&quot; except of task view. Hyperlinking also to sourcecode (### &#8211; need to check).<br />Search view &#8211; (### try with Trac).<br />Search for Duplicates when submitting a bug based on stack trace.</p>
<p><b>Collaboration</b></p>
<p>Template for commit messages. Mylar-teamrule: Never write your own commit message.</p>
<p>### Eclipse UI for only searching and submitting. ###</p>
<p><b>Planning</b></p>
<p>Focus on work week; <b></b></p>
<p><b>Schedule</b></p>
<p>2.0 June 29th (with Europa)</p>
<p><b>Background</b></p>
<p>Decrease-of-interest model. Both direct and indirect. Landmark/Interesting/Uninteresting. </p>
<p><b>Framework</b></p>
<p>Four different APIs. Look the docs.</p>
<p><b>Integration</b></p>
<p>Xplanner-Connector. IssueZilla; Rally Software; Code Beamer; DLTK Structure Bridge (supporting ); </p>
<p><b>Tasktop-Demo</b></p>
<p>Task-based work also for office work. Unfortunately focussed on MS Office (and therefor MS Windows).</p>
<p>Default-Browser = Eclipse;</p>
<p />
<p><b></b></p>
<p><b></b></p>
<p><b></b></p>
<p />
<p><b></b></p>
<p><b></b></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.gresch.de/2007/04/24/jax-2007-mylar-the-task-focused-ui-mik-kersten-mylar-lead/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JAX 2007 &#8211; Hands on Apache Axis (Thilo Frotscher, Marc Teufel)</title>
		<link>http://blog.gresch.de/2007/04/23/jax-2007-hands-on-apache-axis-thilo-frotscher-marc-teufel/</link>
		<comments>http://blog.gresch.de/2007/04/23/jax-2007-hands-on-apache-axis-thilo-frotscher-marc-teufel/#comments</comments>
		<pubDate>Mon, 23 Apr 2007 07:12:06 +0000</pubDate>
		<dc:creator>KG</dc:creator>
				<category><![CDATA[Konferenzen]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[axis]]></category>
		<category><![CDATA[develop]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[JAX]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[webservice]]></category>
		<category><![CDATA[ws]]></category>
		<category><![CDATA[xml]]></category>

		<guid isPermaLink="false">http://web636.webbox122.server-home.org/wpkg/?p=167</guid>
		<description><![CDATA[Einf&#252;hrung Axis 1 &#8211; Retro; u.a. in WAS integriert, Inkompatibilit&#228;ten; Axis 2 &#8211; Anforderungen ge&#228;ndert, nicht mit Axis 1 erreichbar; WS-Security; Performance; 3rd Generation WS Framwework; andere XFire, MS Indigo; Axis 2 mit asynchronem Modell; MEP &#8211; Message Exchange Pattern; Pull-Parser / StAX; Unterschiedliche Data Bindingm&#246;glichkeiten; MTOM/SwA Attachments; WSDL 2.0; Handlerketten dynamisch; Hot Deployment/Hot Update [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Einf&uuml;hrung</strong><br />
Axis 1 &#8211; Retro; u.a. in WAS integriert, Inkompatibilit&auml;ten;</p>
<p>Axis 2 &#8211; Anforderungen ge&auml;ndert, nicht mit Axis 1 erreichbar; WS-Security; Performance; 3rd Generation WS Framwework; andere XFire, MS Indigo; </p>
<p>Axis 2 mit asynchronem Modell; <strong>MEP</strong> &#8211; Message Exchange Pattern; Pull-Parser / StAX; Unterschiedliche Data Bindingm&ouml;glichkeiten; MTOM/SwA Attachments; WSDL 2.0;<br />
Handlerketten dynamisch; Hot Deployment/Hot Update f. Services; Modularisierungsf&auml;higkeit;</p>
<p>Erl&auml;uterung Streaming-Parser  vers. DOM-Parser; Push (z.B. SAX) vers. Pull Parser; StAX &#8211; Streaming API for XML</p>
<p><b>Axiom</b> <br />
eingest&auml;ndiges Projekt, wrappt StAX;<br />
Simuliertes baumbasiertes Parsing; &quot;deferred building&quot;; in Wirklichkeit Stream-Parser im Hintergrund;</p>
<p>Spez. SOAP-API;</p>
<p><b>Service Archive</b><br />
*.aar; neues Deploymentmodell; Ant-, Eclipse-Unterst&uuml;tzung; META-INF muss zumindest  services.xml enthalten, normalerweise auch die WSDL-Dateien.<b></p>
<p>Repository</b><br />
Ein R. f&uuml;r jede Axis-Installation; Standalone-Services m&ouml;glich; HTTP;TCP;SMTP/JMS-Listener; zwei Ordner: <i>services</i> (&#8230;) und <i>modules</i> (Erweiterungen);</p>
<p>
Automatischer REST-Support (muss gesondert disabled werden).</p>
<p>
&Auml;nderungen in Axis-Konsole <b>nicht</b> persistent, also nicht f&uuml;r Produktivbetrieb geeignet!  &Auml;nderungen m&uuml;ssen in Service-Archiven vorgenommen werden, um persistent zu sein;</p>
<p><b>XML Data Binding</b></p>
<ul>
<li>ADB (Axis D.B.); Default;</li>
<li>XMLBeans;</li>
<li>JiBX;</li>
<li>JaxME;</li>
<li>JAXB-Reference Implementation;</li>
</ul>
<p>Entscheidender Einfluss auf Gesamtperformance; ggf. auf DB-Framework verzichten;</p>
<p><b>Axis2-Engine</b></p>
<p>SOAP-Request (HTTP)<br />
=&gt;AxisServlet~MessageContext-MC_req~<br />
=&gt;AxisEngine~H1&#8230;n (Message Handler, weitergeben, transformieren, filterm&auml;&szlig;ig)~[end in-flow]<br />
=&gt;<b>MessageReceiver</b> (ruft WS auf, dieser kann alles durch Java Aufrufbare sein; leicht selbst zu implemetieren)<br />
=&gt;WS-Aufruf<br />
=&gt;MessageReceiver (wei&szlig; um Synchronit&auml;tsinformationen)~MC_resp~<br />
=&gt;[falls Antwort]: neue AxisEngine-Instanz[start out-flow]~H1..n~neu<br />
=&gt;<b>Transport Sender</b>-&gt;MC_resp<br />
=&gt;AxisServlet<br />
=&gt;SOAP response</p>
<p>Frage: Muss Factory f&uuml;r Identifzierung des Clients erstellt werden (im Message Receiver)? Antwort: Letztlich &uuml;ber Message Context</p>
<p><b><br />
Axis auf Clientseite</b><br />
OutInAxisOperation: Verwaltet MC_req und _resp; Vier Flows f&uuml;r Frage/Antwort; Komplement&auml;re Handler; Konfigurierbar, nicht programmatisch, Beispiel: Verschl&uuml;sselung.</p>
<p><b>Phasen</b></p>
<p>&bull; Eine Phase ist</p>
<p><span id="1209368654874E" style="display: none;">&nbsp;</span>&bull; Handler sind mit Regeln verkn&uuml;pft</p>
<blockquote>
<ul type="circle">
<li>In welche Phase soll der Handler kommen?</li>
<li>Soll er erster Handler einer Phase sein oder letzter?</li>
<li>&bdquo;Handler A immer vor/nach Handler B ausf&uuml;hren&ldquo;</li>
</ul>
</blockquote>
<p>&bull; Standard-Phasen:</p>
<blockquote><p>    Transport, Security, Pre-Dispatch, Dispatch, Policy Determination</p></blockquote>
<p>&bull; Konzept erlaubt dynamische Anordnung von Handlern</p>
<p>&nbsp;</p>
<p><b>Module</b></p>
<ul>
<li>Gruppieren Menge von Handler;</li>
<li>Separat deployed (*.mar);</li>
<li>Beispiele f&uuml;r Module; Z.B. Transformation &auml;lterer Nachrichtenstrukturversionen. SOAP-Monitor.</li>
<li>Engaging-Konzept &#8211; Modul wird f&uuml;r bestimmte Services/Service Gruppen aktiviert;</li>
</ul>
<p><b><br />
Client-API</b><br />
AXIOM-basiert; RPC-Kommunikation unterst&uuml;tzt; Dual protocol transport in request + response;  WS-Addressing support; echte Asynchronizit&auml;t;</p>
<p><b><br />
Code-Generierung</b><br />
Derzeit: Java, C#, C++. XML-Darstellung von Konfiguration und WSDL. Ant-Unterst&uuml;tzung. Java2WSDL (&#8230;). Maven2 bald. WS-Policy basierte Erweiterungen. Lifecycle-Management (f. Inbetriebnahme etc.).</p>
<p>JAX-WS + Annotations. JSON.</p>
<p><b><br />
Entwicklungsbeispiel</b><br />
Code-first (Implementierung zuerst) / Contract first (WSDL/Schema zuerst). Problematisierung des Code-first-Ansatzes. Arbeit von WS-I unterst&uuml;tzt Interoperabilit&auml;t besser, deshalb geringeres Risiko. Hinweis: Generierte WSDL-Datei mit WS-I-Tools pr&uuml;fen!</p>
<p>
<b>POJO-Beispiel</b></p>
<ol>
<li>POJO programmieren.</li>
<li>Service-Konfigurationsdatei schreiben (<i>service<b>s</b>.xml</i>).</li>
<li>Service-Archiv erstellen.</li>
<li>Deployment.</li>
</ol>
<p>RPC-Message-Receiver f. POJOS. Bestimmte Methoden k&ouml;nnen ausgeschlossen werden (in <i>services.xml</i>, excludeOperations-Tag). Dateiname d. Service-Archivs bestimmt den Namen.</p>
<p>
Einfaches Beispiel. Besondere Lektion: &Uuml;berschreiben der Methoden nicht m&ouml;glich, keine Polymorhpie.</p>
<p>
Document-Style sollte vorgezogen werden. RPC &uuml;ber Reflection. Document-Attribut allgemeiner, deshalb nur scheinbarer Widerspruch, das Struktur RPC entspricht.</p>
<p>
Target-Namespace kann festgelegt werden.</p>
<p>
invokeBlocking (RPCClient): synchroner Aufruf. RPCInOnlyMessageReceiver.</p>
<p><b><br />
Services und Service-Gruppen</b></p>
<p>Gruppen &#8211; einfacher zu deployen. Kommunikation unter Services m&ouml;glich. Dateiname des Servicearchivs: Jeder Service hat ein Name-Attribut. Dateiname = Name der Service-Gruppe.</p>
<p><b><br />
Code-Generierung</b></p>
<p>WSDL2Code-Optionen (&Uuml;bersicht); Eclipse-Plugin l&auml;sst nicht alle Kommandozeilenoptionen zu.</p>
<p>Session-Verwaltung</p>
<p>Handler/Phasen/Module</p>
<p><span id="more-167"></span>
<p>Restaurantservice</p>
<p>Trennung Schemata. WSDL beim PortType beginnen. Data-Binfinh, Service-Klassen,Client Classen; ExtensionMapper &#8211; Hilfsklasse, ignorieren. Generierte Klassen serializeable machen.</p>
<p>Von SkeletonImpl-Datei ableiten und implementieren. Dann Referenz auf &uuml;berschreibende Datei, nicht mehr auf Skeleton.</p>
<p><b>axis2.xml</b> &#8211; zentrale Konfigurationsdatei;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.gresch.de/2007/04/23/jax-2007-hands-on-apache-axis-thilo-frotscher-marc-teufel/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Axis (1): Must include type attribute for Handler deployment!</title>
		<link>http://blog.gresch.de/2007/03/02/axis-1-must-include-type-attribute-for-handler-deployment/</link>
		<comments>http://blog.gresch.de/2007/03/02/axis-1-must-include-type-attribute-for-handler-deployment/#comments</comments>
		<pubDate>Fri, 02 Mar 2007 19:49:00 +0000</pubDate>
		<dc:creator>KG</dc:creator>
				<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[axis]]></category>
		<category><![CDATA[develop]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[webservice]]></category>
		<category><![CDATA[ws]]></category>

		<guid isPermaLink="false">http://web636.webbox122.server-home.org/wpkg/?p=155</guid>
		<description><![CDATA[This error normally occurs if the DocumentBuilderFactory is&#160; overlapped by e.g. gnujaxp or an outdated Xerces version. Solution: Try to point to Xerces, e.g. by using a system var or remove suspicious jars, e.g. gnujaxp.jar from your classpath. (Asked by a colleague today). &#160; A better error message would be useful, must check how the [...]]]></description>
			<content:encoded><![CDATA[<p><font face="Verdana">This error normally occurs if the <em>DocumentBuilderFactory</em> is&nbsp; overlapped by e.g. gnujaxp or an outdated Xerces version. </font></p>
<p><font face="Verdana">Solution: </font><font face="Verdana">Try to point to Xerces, e.g. by using a system var or remove suspicious jars, e.g. gnujaxp.jar from your classpath.<br />
</font></p>
<p><font face="Verdana">(Asked by a colleague today). </font></p>
<p>&nbsp;</p>
<p><font face="Verdana">A better error message would be useful, must check how the behaviour is in Axis2.</font><font face="Verdana"></font></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.gresch.de/2007/03/02/axis-1-must-include-type-attribute-for-handler-deployment/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HeapSpace Profiling mit Java 6</title>
		<link>http://blog.gresch.de/2007/02/19/heapspace-profiling-mit-java-6/</link>
		<comments>http://blog.gresch.de/2007/02/19/heapspace-profiling-mit-java-6/#comments</comments>
		<pubDate>Mon, 19 Feb 2007 20:11:55 +0000</pubDate>
		<dc:creator>KG</dc:creator>
				<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[develop]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[problem]]></category>
		<category><![CDATA[profiling]]></category>
		<category><![CDATA[qa]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[sun]]></category>

		<guid isPermaLink="false">http://web636.webbox122.server-home.org/wpkg/?p=146</guid>
		<description><![CDATA[Nein, wie ist das sch&#246;n: Programm mit -XX:+HeapDumpOnOutOfMemoryError aufrufen, um eine HeapDump-Datei zu erstellen. Jetzt mit jhat -J-mx768m [HeapDump-Datei, z.B. java_pid804.hprof] die Datei analysieren lassen. Wie auch bei den &#34;integrierten&#34; WebServices wird dabei ein interner Http-Server gestartet, der grunds&#228;tzlich auf Port 7000 lauscht. Jetzt &#252;ber http://localhost:7000 analysieren&#8230; OQL wird auch unterst&#252;tzt. Gef&#228;llt mit besser als [...]]]></description>
			<content:encoded><![CDATA[<p>Nein, wie ist das sch&ouml;n:</p>
<ol>
<li>Programm mit <strong>-XX:+HeapDumpOnOutOfMemoryError</strong> aufrufen, um eine HeapDump-Datei zu erstellen.</li>
<li>Jetzt mit <strong>jhat -J-mx768m [HeapDump-Datei, z.B. java_pid804.hprof]</strong> die Datei analysieren lassen. Wie auch bei den &quot;integrierten&quot; WebServices wird dabei ein interner Http-Server gestartet, der grunds&auml;tzlich auf Port 7000 lauscht.</li>
<li>Jetzt &uuml;ber http://localhost:7000 analysieren&#8230; OQL wird auch unterst&uuml;tzt.</li>
</ol>
<p>Gef&auml;llt mit besser als das frustrierende Geraffel mit der Eclipse TPTP, auch wenn diese sch&ouml;nere Icons vorweisen kann. Die L&ouml;sung aus dem JDK scheint mir einfacher, stabiler und vor allem funktionaler zu sein. (Der TPTP-Agent selbst muss z.B. derzeit unter 1.4 laufen, das soll man einmal wissen).</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.gresch.de/2007/02/19/heapspace-profiling-mit-java-6/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Logitech-SW&#8230; :-(</title>
		<link>http://blog.gresch.de/2007/02/14/logitech-sw/</link>
		<comments>http://blog.gresch.de/2007/02/14/logitech-sw/#comments</comments>
		<pubDate>Wed, 14 Feb 2007 20:48:00 +0000</pubDate>
		<dc:creator>KG</dc:creator>
				<category><![CDATA[Vermischtes]]></category>
		<category><![CDATA[hardware]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://web636.webbox122.server-home.org/wpkg/?p=144</guid>
		<description><![CDATA[Hm, da frag ich mich, wozu Terminaldienste aktiviert sein m&#252;ssen, damit man die Treiber und Software f&#252;r eine Webcam verwenden kann: Webcam-Formusthread. Da wundere sich niemand &#252;ber Sicherheitsprobleme&#8230;]]></description>
			<content:encoded><![CDATA[<p>Hm, da frag ich mich, wozu Terminaldienste aktiviert sein m&uuml;ssen, damit man die Treiber und Software f&uuml;r eine Webcam verwenden kann: <a href="http://forums.logitechio.com/logitech/board/message?board.id=quickcam_software&amp;message.id=11487" title="Webcam-Forumsthread">Webcam-Formusthread</a>.  Da wundere sich niemand &uuml;ber Sicherheitsprobleme&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.gresch.de/2007/02/14/logitech-sw/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Eberhard Wolff &#8211; Spring (dpunkt)</title>
		<link>http://blog.gresch.de/2007/02/03/eberhard-wolff-spring-dpunkt/</link>
		<comments>http://blog.gresch.de/2007/02/03/eberhard-wolff-spring-dpunkt/#comments</comments>
		<pubDate>Sat, 03 Feb 2007 19:44:00 +0000</pubDate>
		<dc:creator>KG</dc:creator>
				<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[buch]]></category>
		<category><![CDATA[develop]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[frameworks]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://web636.webbox122.server-home.org/wpkg/?p=143</guid>
		<description><![CDATA[Derzeit am Durchkauen des Buchs von Eberhard Wolff, vormals Saxonia Systems, jetzt Interface21 Mitarbeiter. &#160; Der Autor ist, als Spring-&#34;Committer&#34; neben J&#252;rgen H&#246;ller der einzige native Deutschsprachler im Team und aufgrund seiner Autorent&#228;tigkeit beim Java-Magazin sowie seiner freundlich-intelligenten Vortragsart bei Konferenzen vorz&#252;glich geeignet, ein Buch &#252;ber Spring zu verfassen. Das Buch behandelt, dem Inhaltsverzeichnis folgend, [...]]]></description>
			<content:encoded><![CDATA[<p>Derzeit am Durchkauen des Buchs von Eberhard Wolff, vormals Saxonia Systems, jetzt <a href="http://www.interface21.com/" title="if21">Interface21</a> Mitarbeiter.</p>
<p>&nbsp;</p>
<p>Der Autor ist, als Spring-&quot;Committer&quot; neben J&uuml;rgen H&ouml;ller der einzige native Deutschsprachler im Team und aufgrund seiner Autorent&auml;tigkeit beim Java-Magazin sowie seiner freundlich-intelligenten Vortragsart bei Konferenzen vorz&uuml;glich geeignet, ein Buch &uuml;ber Spring zu verfassen.  Das Buch behandelt, dem Inhaltsverzeichnis folgend, so ziemlich alle Bereiche:</p>
<p>&nbsp;</p>
<p>Von den Grundkonzepten (DI, AOP) &uuml;ber Persistenz zu JAAS, MVC bis hin zu Spring.NET.  Da dr&auml;ngt sich einem der Eindruck auf: Das kann man unm&ouml;glich auf gut dreihundert Seiten behandeln!</p>
<p>&nbsp;</p>
<p>Tats&auml;chlich wird der Text sich f&uuml;r jemanden, der noch nicht mit Spring gearbeitet  hat, so hermetisch darstellen, dass er ohne gleichzeitiges Nachvollziehen mit einem Beispielprojekt hoffnungslos verloren sein d&uuml;rfte. Das stellt sich die Frage, ob vielleicht mehr Informationen &uuml;ber die <a href="http://www.spring-buch.de/Beispiele/index.html" title="Codebeispiele">Codebeispiele</a> zu erhalten sind. Aber hier fangen die Probleme an:</p>
<p>&nbsp;</p>
<p>Eberhard Wolff stellt ein Eclipse-Projekt zur Verf&uuml;gung, das auf User-Libraries basiert, deren Inhalt aber nirgends erw&auml;hnt ist.  Eine <em>ant.properties</em>-Datei, die in der einzigen Hilfestellung, <em>LiesMich.txt</em>, aufgef&uuml;hrt ist, geht fehl, da die <em>build.xml</em> auf einen anderen Pfad verweist als die eigentlich zu verwendende Variable <em>xdoclet.home</em> aus der Property-Datei.  Das ist sehr lieblos gemacht und Wolff ebenso wie seinem Lektor vorzuwerfen, die offenbar gar nicht versucht haben, die Konfiguration einmal auf einem frischen System auszuprobieren.</p>
<p>Allein der Umstand, dass nicht erw&auml;hnt wird, mit welchem JDK (grunds&auml;tzlich eher 1.4, aber wohl auch Tiger), welcher Version von JBoss oder Tomcat oder JUnit gearbeitet wird und wie, ist einfach mangelhaft &#8211; im Arbeitsalltag wollte man nicht auf diese Weise in ein Projekt eingef&uuml;hrt werden.  Aber da h&auml;tte man den Trost, daf&uuml;r bezahlt zu werden.</p>
<p>&nbsp;</p>
<p>Diesen Trost hat man hier nicht. Im Gegenteil.</p>
<p>&nbsp;</p>
<p>Ich habe immer mehr den Eindruck, viele der IT-B&uuml;cher werden nur noch verfasst, um den Autoren die M&ouml;glichkeit zu geben, sich zu profilieren, nicht aber: Um Wissen weiterzugeben.</p>
<p>&nbsp;</p>
<p>Dass es anders ginge, beweist ja gerade <a href="http://appfuse.org/" title="AppFuse 2 - Home">AppFuse</a> von Matt Raible, das ja auf dem Buch <a href="http://www.amazon.com/Spring-Live-Matt-Raible/dp/0974884375" title="Spring Live - Amazon Link">Spring Live</a> weitgehend basiert. Und in der Version 2 von AppFuse macht Raible auch vor, wie das aussehen kann: Einfach mit <a href="http://maven.apache.org/" title="Maven - Link">Maven</a> sich das Projekt holen, konfigurieren &#8211; fertig!  Selbst wenn Eberhard Wolff sich diese M&uuml;he nicht machen wollte (und die Bandbreite f&uuml;r ein Maven Repository nicht zur Verf&uuml;gung stand) &#8211; ein &quot;Out-of-the-Box&quot; Projekt f&uuml;r Eclipse w&auml;re doch sicherlich zu erwarten gewesen, immerhin kostet Wolffs Buch 36,- EUR, das ist zu teuer, als dass man auch noch Stunden mit dem Einrichten des Beispielprojekts verbringen muss.</p>
<p>
Oder wenigstens *.userlibraries-Dateien zum Importieren/Nachvollziehen anbieten&#8230; oder ggf. die SpringIDE erw&auml;hnen, wenn er von dieser ausgehen sollte.  Dieses Buch scheint mir nur f&uuml;r Schulungen geeignet, in denen E. Wolff ein &quot;Hands-On-Training&quot; durchf&uuml;hrt und den Anwesenden das Buch als Vademecum &uuml;berreicht.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.gresch.de/2007/02/03/eberhard-wolff-spring-dpunkt/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

