<?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; frameworks</title>
	<atom:link href="http://blog.gresch.de/tag/frameworks/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>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: Testing with Selenium (Neal Ford, Thoughtworks)</title>
		<link>http://blog.gresch.de/2007/04/26/jax-2007-testing-with-selenium-neal-ford-thoughtworks/</link>
		<comments>http://blog.gresch.de/2007/04/26/jax-2007-testing-with-selenium-neal-ford-thoughtworks/#comments</comments>
		<pubDate>Thu, 26 Apr 2007 13:53:29 +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[testing]]></category>
		<category><![CDATA[thoughtworks]]></category>
		<category><![CDATA[tools]]></category>
		<category><![CDATA[webapp]]></category>

		<guid isPermaLink="false">http://web636.webbox122.server-home.org/wpkg/?p=182</guid>
		<description><![CDATA[Origins &#34;Teflon-Effect&#34;: Thoughtworks Time and Expenses System (with Plone). Mercury testing suite (element Selenium protects from Mercury toxity). Acceptance Testing Tool. Test runs directly in the browser, analysing the DOM. BrowserBot -takes commands and exercises the app as if it was the user. http://selenium.houghtworks.com http://www.openqa.org/selenium Usage Modes: TestRunner -put core alongside the app (means static [...]]]></description>
			<content:encoded><![CDATA[<p><b>Origins</b></p>
<p>&quot;Teflon-Effect&quot;: Thoughtworks Time and Expenses System (with Plone). Mercury testing suite (element Selenium protects from Mercury toxity).</p>
<p>Acceptance Testing Tool. Test runs directly in the browser, analysing the DOM. BrowserBot -takes commands and exercises the app as if it was the user.</p>
<p>http://selenium.houghtworks.com</p>
<p>http://www.openqa.org/selenium</p>
<p><b>Usage</b></p>
<p>Modes: </p>
<p><i>TestRunner</i> -put core alongside the app (means static HTML dir).</p>
<p><i>RemoteControl</i> (&quot;driven mode&quot;).</p>
<p> Test cases: Simple HTML tables</p>
<p>| Ignored |   </p>
<p>Command | Target | Value</p>
<p>Command | Target | &amp;nbsp;</p>
<p>Assertion | Expectet | Actual</p>
<p>TestSuites possible. </p>
<p>Understands everthing that can be done by the user and additionally things like changing cookie values.</p>
<p><b>Concepts</b></p>
<p><i>Locators</i>: Find things on the page. id, name, identifier, dom=JS expression</p>
<p><i>Matching Patterns</i>: glob:pattern, regexp, exact, default is glob</p>
<p><i>Select</i>: label, value, id, index</p>
<p><i>Actions</i>: Action, actionAndWait, open</p>
<p><i>Assertions</i>: Assert, Verify (continue the test in case of a failure), waitFor (e.g. for AJAX &#8211; wait until field changes the value) </p>
<p><i>assertConfirmation</i>: JS confirmation dialog.</p>
<p><i>Parameters and Variables</i>: store, storeValue, storeText, storeAttribute, stored in JS map <i>storedVars</i></p>
<p><i></i>Variable Substitution &#8211; JS Evaluation</p>
<p />
<p><b>Selenium Techniques</b></p>
<p>Generating UIDs</p>
<p>Creating Test Case JSPs. </p>
<p />
<p>Assert sthg not existing. assertXPath extension (on openqa).</p>
<p>Fits into CruiseControl. </p>
<p>auto=&quot;true&quot; =&gt; /postResults =&gt; CC</p>
<p><b>Remote Control Selenium</b> </p>
<p>Drivers for Java, .NET, Python, Perl, Squeak, and Ruby. Jetty-based proxy-server. Issue Selenium commands &#8211; allows to issue all commands via JUnit tests&#8230;</p>
<p>Purely declarative Selenium syntax can be broken up.</p>
<p><b>User-Extensions</b></p>
<p><i>user-extensions.js</i> : e.g. own actions. Own locators and assertions (see openqa). </p>
<p><b>Selenium-IDE</b></p>
<p>Firefox-Extension. Recorder. With intelligent addons-e.g. forward-engineer macros to remote scripts in all languages.</p>
<p>###XPather + XPath Checker ###</p>
<p>Future</p>
<p>Driver capabilities. 1.0 soon. Documentation for driver. DSL-like language to supplement HTML.</p>
<p>File Uploads possible with Firefox.</p>
<p>Question: What about integration with Fit/FitNesse (e.g. <a href="http://www.cornetdesign.com/2006/09/fitnesse-selenium-wrapper.html">http://www.cornetdesign.com/2006/09/fitnesse-selenium-wrapper.html</a> or <a href="http://storytestiq.sourceforge.net/index.html">http://storytestiq.sourceforge.net/index.html</a>)? Neal Ford didn&#8217;t seem to see any use for it as he understands FitNesse also for functional tests and Selenium only for acceptance tests. ###TODO: Send an e-mailÂ  to him###</p>
<p><i>https</i>-Support (one-time import of the certificate)</p>
<p />
<p><b>(KG&#8217;s) Summary</b></p>
<p>This is &quot;best-of-breed&quot; technology for free. Whoever works in smaller/midrange IT departments and wants to spend money for a commercial tool is going to burn money. The multi-language facility via the remote runner makes Selenium quite adjustable. E.g. the integration with CruiseControl and even JUnit test cases makes it highly valuable.</p>
<p>The Selenium IDE can compete with professional Testing UIs. It&#8217;s AJAX support is stunning. Haven&#8217;t seen any commercial competitors yet.<b></b></p>
<p />
<p />
]]></content:encoded>
			<wfw:commentRss>http://blog.gresch.de/2007/04/26/jax-2007-testing-with-selenium-neal-ford-thoughtworks/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>JAX 2007: Facelets und JSF (Thomas Spiegl, IRIAN.at)</title>
		<link>http://blog.gresch.de/2007/04/26/jax-2007-facelets-und-jsf-thomas-spiegl-irian-at/</link>
		<comments>http://blog.gresch.de/2007/04/26/jax-2007-facelets-und-jsf-thomas-spiegl-irian-at/#comments</comments>
		<pubDate>Thu, 26 Apr 2007 12:12:00 +0000</pubDate>
		<dc:creator>KG</dc:creator>
				<category><![CDATA[Konferenzen]]></category>
		<category><![CDATA[develop]]></category>
		<category><![CDATA[facelets]]></category>
		<category><![CDATA[frameworks]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[JAX]]></category>
		<category><![CDATA[jsf]]></category>

		<guid isPermaLink="false">http://web636.webbox122.server-home.org/wpkg/?p=181</guid>
		<description><![CDATA[Thomas Spiegl: Committer MyFaces. Einstieg: http://facelets.dev.java.net Nachteile von JSP&#8230; JSF 1.1-Problem falsche plazierte Renderung, kein Template-Framework. MyFaces hat Tiles-ViewHandler. Warum Facelets verwenden: HTML-Content kann schlecht in Komponentenbaum eingefÃ¼gt werden. 1.es Beispiel &#60;h:panelGrid columns=1&#34;&#62; &#60;h1&#62;&#60;h:outputText value=&#34;text&#34; /&#62; &#60;/h1&#62;&#60;/h:panelGrid&#62; Rendert als: &#60;table&#62;&#60;tr&#62;&#60;td&#62;text&#60;/td&#62;&#60;/tr&#62; &#60;h1&#62;&#60;/h1&#62; &#60;/table&#62; (Ist aber bei 1.2 gelÃ¶st mit automatischem verbatim-Tag). 2.es Beispiel &#60;h:outputLabel for=&#34;name&#34; /&#62; [...]]]></description>
			<content:encoded><![CDATA[<p>Thomas Spiegl: Committer MyFaces.</p>
<p>Einstieg: <a href="http://facelets.dev.java.net">http://facelets.dev.java.net</a></p>
<p>Nachteile von JSP&#8230; JSF 1.1-Problem falsche plazierte Renderung, kein Template-Framework. MyFaces hat Tiles-ViewHandler.</p>
<p>Warum Facelets verwenden:</p>
<p>HTML-Content kann schlecht in Komponentenbaum eingefÃ¼gt werden.</p>
<p><b>1.es Beispiel</b></p>
<p>&lt;h:panelGrid columns=1&quot;&gt;</p>
<p>&lt;h1&gt;&lt;h:outputText value=&quot;text&quot; /&gt;</p>
<p>&lt;/h1&gt;&lt;/h:panelGrid&gt;</p>
<p>Rendert als:</p>
<p>&lt;table&gt;&lt;tr&gt;&lt;td&gt;text&lt;/td&gt;&lt;/tr&gt;</p>
<p><b>&lt;h1&gt;&lt;/h1&gt;</b></p>
<p>&lt;/table&gt;</p>
<p>(Ist aber bei 1.2 gelÃ¶st mit automatischem verbatim-Tag).</p>
<p><b>2.es Beispiel</b></p>
<p>&lt;h:outputLabel for=&quot;name&quot; /&gt;</p>
<p>&lt;h:inputText id=&quot;name&quot; /&gt;</p>
<p>JSP und JSF 1.1: Label wird erst beim 2.en Request auf die Seite gerendert.</p>
<p>Facelets und JSF 1.1: Label wird gerendert. Komponentenbaum wird vor Renderphase aufgebaut.</p>
<p>(Ist auch bei JSF 1.2) vorhanden.</p>
<p>DataTable mit DataScroller &#8211; funktioniert nur, wenn der DS unterhalb der Table liegt.</p>
<ul>
<li>Performance 10-15% besser als JSP.</li>
<li>besseres Error-Reporting.</li>
<li>&quot;leichte&quot; Komponenten</li>
<li>einfaches Templating, ohne XML;</li>
<li>besseres Error Reporting &#8211; in web.xml. ui:debug</li>
<li>Designerfreundlich.</li>
<li>Konzept w</li>
</ul>
<p><b>Einrichten</b></p>
<p>FaceletViewHandler einbinden in faces-config.xml</p>
<p>Tag Libraries in facelets.LIBRARIES (web.xml Context-Param)</p>
<p>facelets.DEVELOPMENT</p>
<p>facelets.BUFFER_SIZE</p>
<p>facelets.REFRESH_PERIOD; Standard = 2 (Sekunden), lÃ¤dt die XHTML-Dateien nach. -1 zum Ausschalten.</p>
<p>facelets.VIEW_MAPPINGS</p>
<p>facelets.SKIP_COMMENTS false ist default. Sonst werden Kommentare Ã¼bermittelt.</p>
<p>facelets.BUILD_BEFORE_RESTORE default: false. Facelet baut Komponentenbaum ganz ab Beginn auf.</p>
<p><b>Erforderliche jars</b>:</p>
<ul>
<li>el-ri.jar</li>
<li>el-api.jar</li>
<li>jsf-facelets.jar</li>
</ul>
<p>JSF EL auch zum Schreiben von Properties. EL-libs fÃ¼r 1.5 kompiliert, aber im Netz auch noch fÃ¼r 1.4.</p>
<p>Maven-Konfig: Dependencies. http://maven-repository.dev.java.net/nonav/repository</p>
<p>Legacy-Attribut setzen fÃ¼r mvn2</p>
<p>Logging-Eigenschaften separat.</p>
<p>Beispielseite: Normales XHTML, Namespaces eingebunden.</p>
<p><b>Templating</b></p>
<p>xmlns:ui=&quot;http://~&quot;</p>
<p><b>Verwendung</b></p>
<p>mit ui:composition und ui:define. Alles auÃŸerhalb wird nicht geÃ¤ndert</p>
<p><b>Beispiel</b>: XHML-Datei erstelllt. Facelet-Namespace geholt und ui:definitionen =&gt; Template</p>
<p>Neue Datei mit Verweisauf Template. &lt;ui:composition&gt;&lt;ui:define name=&quot;content&quot; &gt;Das ist Inhalt =&gt; Ã¼berscjreibt default-Wert.</p>
<p>ui:decorate : Inhalt fÃ¼gt sich ein, alles Umgebende wird mitgerender</p>
<p>jsfc &#8211; Zur Kompilezeit Element in Komponente umwandeln.</p>
<p>&lt;input type=&quot;text&quot; jsfc=&quot;h:inputText&quot; etc.</p>
<p><b>JSTL-Support</b>: Nur eingeschrÃ¤nktes Set. Probleme beim Rendern: encodeChildren=&quot;true&quot;</p>
<p>ui:repeat statt c:forEach (buggy); besser rendered=&quot;true&quot; oder t:dataList</p>
<p><b>Custom TagLibs</b></p>
<p>Komponenten rein aus XHTML &#8211; TagHandler, Converter, Validator,</p>
<p>2 Alternative: 1 XML-Tag pro Komponente</p>
<p>1 XML-Tag, das eine Java-Klasse spezifiziert, welche die Konfiguration ausfÃ¼hrt. </p>
<p>&lt;facelet-taglib&gt;</p>
<p>&lt;namespace &#8230;&gt;</p>
<p>&lt;tag&gt;</p>
<p>&lt;tag-name&gt; etc.</p>
<p>Oder an Klasse binden (aber ungewÃ¶hnlich)</p>
<p>Einbindung der TagLib. Context-Param in web.xml facelets.LIBRARIES</p>
<p>oder Meta-Inf-Einbindung Ã¼ber WEB-INF/lib (automatisch)</p>
<p><b>Dynamische Komponenten</b></p>
<p />
<p />
<p>in Facelets library</p>
<p>Beispiel f. <b>Eingabekomponente</b>.</p>
<p>ui:component alle Anderen sind Kind-Elemente.</p>
<p>Ist echte Komponente im Baum.</p>
<p>Label mit Eingabekomponenten-Validierung. &lt;f:validateLength&gt;, indem in Template &lt;ui:insert /&gt; eingefÃ¼gt wird. Input-Text bekomment Validator gesetzt</p>
<p><b>Dynamische MenÃ¼s</b>-Beispiel.</p>
<p>Beispiel: Table-/Scroller-Kombination. </p>
<p>Method-Binding</p>
<p>funktioniert nicht: action=&quot;#{myBean.myAction}&quot;</p>
<p>sondern backing=&quot;{#myBean}&quot; action=&quot;myAction&quot;</p>
<p>und command action=&quot;backing[myBean]&quot; (###?, prÃ¼fen###)</p>
<p>Welche &lt;ui:&#8230;/&gt;-Tags</p>
<p>ui:fragment: rendert auch auÃŸenstehenden Text.</p>
<p>ui:composite</p>
</p>
<p>ui:decorate</p>
<p>ui:component</p>
<p>EL-Funktionen</p>
<p>JSP-Komponenten mÃ¼ssen in Taglib definiert werden. Component-Type + -Renderer festlegen.</p>
<p>Taglibs z.B.zum Einbinden in Tomahawk, auf Wiki-Seite von Faces.</p>
<p>Tag-Handler &#8211; Beispiel fÃ¼r Method-Binding. Tag-Handler nur einmal. dataTable-Tag-Handler: var-SpezialitÃ¤t. In Tomahawk kann das var-Attribut Ã¼ber Binding angespr werden</p>
<p>MetaRulest -Aliase, Attribute ignorieren, Meta-Rules f. Method-Binding.</p>
<p>Inlined EL-Expression: <b>unterstÃ¼tzen keine Konvertierung und kein Encoding</b> (also fÃ¼r Prototyping)</p>
<p>Debugging-Ausgabe: Mit Component-Tree und Scoped Vars, sehr nÃ¼tzlich.</p>
<p>In JSF 2.0 sollte eine Ã¤hnliche Technologie im Standard vorhanden sein (2008).</p>
<p><b>KGs Fazit:</b></p>
<p>Facelets sind JSP eindeutig vorzuziehen. Erhebliche Erleichterungen beim Erstellen von Taglibs. Intuitiveres Programmieren. </p>
</p></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.gresch.de/2007/04/26/jax-2007-facelets-und-jsf-thomas-spiegl-irian-at/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JAX 2007: Grails &#8211; Rapid Web Application Development (Sven Haiges, Actionality)</title>
		<link>http://blog.gresch.de/2007/04/26/jax-2007-grails-rapid-web-application-development-sven-haiges-actionality/</link>
		<comments>http://blog.gresch.de/2007/04/26/jax-2007-grails-rapid-web-application-development-sven-haiges-actionality/#comments</comments>
		<pubDate>Thu, 26 Apr 2007 10:05:31 +0000</pubDate>
		<dc:creator>KG</dc:creator>
				<category><![CDATA[Konferenzen]]></category>
		<category><![CDATA[develop]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[frameworks]]></category>
		<category><![CDATA[groovy]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[JAX]]></category>
		<category><![CDATA[maven]]></category>
		<category><![CDATA[rails]]></category>

		<guid isPermaLink="false">http://web636.webbox122.server-home.org/wpkg/?p=180</guid>
		<description><![CDATA[Intro Ãœber S.H.: von Struts Ã¼ber JSF, Spring MVC zu Grails. Erstellt Grails Podcast. Motivation Framework wie Rails &#8211; Convention over Configuration, DRY Spring MVC im Hintergrund Grails vs. Rails Benchmark &#8211; Skaliert weitaus besser als Rails. 1.0 Release im Sommer, 0.5 im Mai. grails clean grails update zum Update, soll schmerzlos sein. Benutzte Frameworks [...]]]></description>
			<content:encoded><![CDATA[<p><b>Intro</b></p>
<p>Ãœber S.H.: von Struts Ã¼ber JSF, Spring MVC zu Grails. Erstellt Grails Podcast.</p>
<p><b>Motivation</b></p>
<p>Framework wie Rails &#8211; Convention over Configuration, DRY</p>
<p>Spring MVC im Hintergrund</p>
<p>Grails vs. Rails Benchmark &#8211; Skaliert weitaus besser als Rails. 1.0 Release im Sommer, 0.5 im Mai.</p>
<p><i>grails clean</i></p>
<p><i>grails update</i> </p>
<p>zum Update, soll schmerzlos sein. </p>
<p><b>Benutzte Frameworks</b></p>
<p>Spring: Spring DI + Spring MVC</p>
<p>Hibernate</p>
<p>SiteMesh &#8211; Layouting</p>
<p><b>Java EE &#8211; Integration</b></p>
<p>Standalone oder Hib-Mappings f Legacy-Schemata; EJB3-Integration; vorhandene Spring-Beans kÃ¶nnen verwendet werden.</p>
<p>Quickstart siehe am besten <a href="http://grails.org/Quick+Start">hier</a>.</p>
<p><i>ApplicationBootStrap</i> zum Persistieren.</p>
<p>TL-Erzeugung. Zur Laufzeit deploybar, ebenso mit Controller + Service. </p>
<p>Server-Start <i>runApp.groovy</i>. snipplr.com</p>
<p><b>MVC in Grails</b></p>
<p>Model: Domain-Klassen etc. </p>
<p>class Podcast {</p>
<p>String title</p>
<p>String feedUrl</p>
<p>}</p>
<p>View: Groovy SP oder JSP; dynamic TagLibs</p>
<p>Controller: Grails Controller + Grails Service</p>
<p>Object-Relational Mapping GORM. Equals()/hashCode() werden automatisch + dynamisch erstellt. </p>
<p> grails create-domain-class</p>
<p><b>Mapping 1:1</b></p>
<p>class Podcast {<br /><i>Author author</i><br />String title<br />}</p>
<p><b>Mapping 1:n</b></p>
<p>class Podcast {<br /><i>def hasMany = [ episodes : Episode ]</i><br />String title<br />}</p>
<p />
<p><b>Mapping m:n</b></p>
<p>class Podcast {<br /><i>def hasMany = [ episodes : Episode ]</i><br />String title<br />}</p>
<p>class Author<br />{<br /><i>def hasMany = [ podcasts : Podcasts ]</i><br />}</p>
<p>GORM: Dynamic Finders</p>
<p>Podcast.findByTitle(), QBE + HQL unterstÃ¼tzt.</p>
<p>Constraints</p>
</p>
<p>class Podcast {<br />String title<br />String feedUrl<br />static constraints = {<br />title(size:1..50)<br />feedUrl(unique:true)<br />}<br />}</p>
<p><b>GORM DB Konfiguration</b></p>
<p>development/production/test</p>
<p>Classe Development[...]DataSource Ã¤ndern. Standard: Development.</p>
<p><b>View-Technologien</b></p>
<p>Die meisten verwenden GSP wg. der Dynamic Tag Libs. </p>
<p />
<p><b>Grails Controller</b></p>
<p>Generierbar (mit CRUD), wird dynamisch geladen.  Immer alle CRUD-Operationen werden erstellt, DELETE kann z.B. nicht ausgeschlossen werden. Controller und Views mÃ¼ssen entsprechend manuell angepasst werden.</p>
<p>Parameter, Session, Flash-Objekte.</p>
<p>render()-Methode sehr mÃ¤chtig &#8211; AJAX</p>
<p>HTTP-MEthod-Restrictions.</p>
<p>Dynamisches Scaffolding</p>
<p>im Bsp.: <b>def scaffold= Podcast</b></p>
<p><b>Services</b></p>
<p>Kapselung von Business-Logik.</p>
<p>Buchempfehlung <i>Getting Started with Grails</i> (InnoQ)</p>
<p />
]]></content:encoded>
			<wfw:commentRss>http://blog.gresch.de/2007/04/26/jax-2007-grails-rapid-web-application-development-sven-haiges-actionality/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: 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>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>

