<?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>Olaf&#039;s blog &#187; spring</title>
	<atom:link href="http://olafsblog.sysbsb.de/category/spring/feed/" rel="self" type="application/rss+xml" />
	<link>http://olafsblog.sysbsb.de</link>
	<description>Olaf&#039;s blog on software development and life</description>
	<lastBuildDate>Sat, 14 Aug 2010 20:39:43 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Modular development with OSGI about to be very, very popular &#8211; finally.</title>
		<link>http://olafsblog.sysbsb.de/modular-development-with-osgi-about-to-be-very-very-popular-finally/</link>
		<comments>http://olafsblog.sysbsb.de/modular-development-with-osgi-about-to-be-very-very-popular-finally/#comments</comments>
		<pubDate>Mon, 02 Mar 2009 11:40:32 +0000</pubDate>
		<dc:creator>olaf</dc:creator>
				<category><![CDATA[J2EE]]></category>
		<category><![CDATA[JPA]]></category>
		<category><![CDATA[OSGI]]></category>
		<category><![CDATA[System architecture]]></category>
		<category><![CDATA[eclipselink]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[spring]]></category>

		<guid isPermaLink="false">http://olafsblog.sysbsb.de/?p=72</guid>
		<description><![CDATA[It&#8217;s quite exciting to see the tremendous progress in development tools, patterns, frameworks and libraries since the release of JAVA 1.0 in 1996.
Within just thirteen years, development improved from the first applets, from the dark ages of the first EJB standardization attempts and a lack of suitable development processes into an age where aspect oriented [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s quite exciting to see the tremendous progress in development tools, patterns, frameworks and libraries since the release of JAVA 1.0 in 1996.<br />
Within just thirteen years, development improved from the first applets, from the dark ages of the first EJB standardization attempts and a lack of suitable development processes into an age where aspect oriented programming, dependency injection and a freely available range of lightweight yet extremely powerful frameworks, libraries and API&#8217;s finally permitted the humble programmer to do what he always wanted to do &#8211; analyze problems, and elegantly write them down without spending all of his precious time on the syntax.</p>
<p>I would even go as far as saying that there was no object orientation before programming crosscutting concerns and using dependency injection became established mechanisms.<br />
Think about it: The original goal of OO is not to use inheritance, encapsulation, identity and polymorphism, but to express the <em>real world of things</em> &#8211; our reality &#8211; using an <em>abstract world of things</em>, while preserving most of the properties and relationships we observe in reality. </p>
<p>Before AOP, before being able to separate the description of things from creating, configurating and connecting concrete instances through dependency injection frameworks, this goal was hard to achieve.</p>
<h3>Modules larger than classes with OSGI</h3>
<p>Now however, we are about to reach a new stage in development of object orientation in JAVA: Developing modules that are <em>larger than classes</em>, modules which can, once properly identified, be developed independently using all the wonderful technology described beforehand. The technology used to achieve this has a name: <a href="http://en.wikipedia.org/wiki/OSGi">OSGI</a>. This technology has quite a long history of development, but a certain lack of elegance and light-weightiness barred this component model from becoming a real hit in the worldwide development community. This is about to change.<br />
<span id="more-72"></span></p>
<h3>Impact of OSGI on the development process</h3>
<p>Let me stress out here how important it is to be able to develop, manage and deploy such modules. The larger your system, the more developers your project involves, the longer you maintain it &#8211; you will always face the same problem: Developers concurrently working with party of the system that are directly or transitively connected will run into conflicts. You will have different parts of your system requiring different versions of the same library on the same class path. Changing one part of the system will always affect other parts of the system, most of the times in an unplanned fashion. </p>
<p>Test driven developments helps a lot along the way, but you still have a responsibility problem if there&#8217;s one team changing something and this causes a problem in a different part of the system, and dependency issues can be a real mess.</p>
<p>This is where OSGI can play out it&#8217;s strengths. Not only does it offer you complete, classloader-based module isolation. I believe the greatest benefit lies in the development process: Concurrent development is a lot easier with OSGI bundles than with a huge pile of tightly interconnected classes. You can have a lot of changes in the bundle, while exposing a relatively stable interface through which other components access your bundle&#8217;s services. Separation into OSGI bundles can bring the power of the SOA-Idea into &#8220;stand-alone&#8221; applications, without the massive overhead of connecting systems or components through, for example web services.</p>
<p>Of course, this concept has quite an impact on your way of thinking, since you will start to add a new level of decomposition: Which classes form tightly coupled components that could be isolated from other components and used as a service through a well-defined, slim and easy-to-use interface? </p>
<h3>OSGI about to &#8220;break through&#8221;</h3>
<p>Now, why am i so convinced that OSGI is about to finally become as common as using AOP or dependency injection? Because all the popular technologies are just about to embrace OSGI:</p>
<ul>
<li>
    <a href="http://www.jroller.com/habuma/entry/modular_java">Craig walls (Spring framework) has just finished his book an modular JAVA with the spring framework, featuring OSGI and Spring</a>, a very powerful combination.
 </li>
<li>
    <a href="http://it-republik.de/jaxenter/jax/sessions/jax/speaker/#3271">Doug Clarke</a> and <a href="http://it-republik.de/jaxenter/jax/sessions/jax/speaker/#2213">Shaun Smith</a> will hold a presentation on persistence and OSGI with eclipselink (the reference implementation of the JAVA persistence API (JPA))</a>, thus suitable persistence mechanisms for this level of modularization are likely to be close at hand.
 </li>
</ul>
<p>And if you <a href="http://it-republik.de/jaxenter/jax/sessions/?tid=1053">look at the schedule for the JAX, Europe&#8217;s most important software &#038; development conference, there have never been more OSGI topics featured</a> &#8211; at least I would doubt that.</p>
<p>In other words: OSGI will soon be so smoothly integrated with you favorite frameworks, IDE&#8217;s and API&#8217;s that using it will be a breeze &#8211; and a must, if you want to take the quality of your development process and software to the next level.</p>
]]></content:encoded>
			<wfw:commentRss>http://olafsblog.sysbsb.de/modular-development-with-osgi-about-to-be-very-very-popular-finally/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Maven, Surefire, remote debugging and the -javaagent switch</title>
		<link>http://olafsblog.sysbsb.de/maven-surefire-remote-debugging-and-the-javaagent-switch/</link>
		<comments>http://olafsblog.sysbsb.de/maven-surefire-remote-debugging-and-the-javaagent-switch/#comments</comments>
		<pubDate>Mon, 02 Feb 2009 12:31:17 +0000</pubDate>
		<dc:creator>olaf</dc:creator>
				<category><![CDATA[J2EE]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[maven 2]]></category>
		<category><![CDATA[spring]]></category>

		<guid isPermaLink="false">http://olafsblog.sysbsb.de/?p=70</guid>
		<description><![CDATA[When using maven surefire in conjunction with remote debugging (mvnDebug, for instance)
it seems necessary to disable forking of the test executions into separate processes, as the remote debugging works process wise. This is usually done by setting the the fork mode to never, e.g. by specifying -DforkMode=never on the command line.
This is, however, a misunderstanding. [...]]]></description>
			<content:encoded><![CDATA[<p>When using <a href="http://maven.apache.org/plugins/maven-surefire-plugin/">maven surefire</a> in conjunction with remote debugging (<code>mvnDebug</code>, for instance)<br />
it seems necessary to disable forking of the test executions into separate processes, as the remote debugging works process wise. This is usually done by setting the the fork mode to never, e.g. by specifying <code>-DforkMode=never</code> on the command line.</p>
<p>This is, however, a misunderstanding. mvnDebug is there to <em>enable debugging of the maven process</em> and not of the surefire execution &#8211; and disabling forking may have various side effects. One of those is the use of Java agents. When using agents, e.g. for <a href="http://static.springframework.org/spring/docs/2.5.x/reference/aop.html#aop-aj-ltw">loadtime-weaving in the Spring Framework</a>, one often specifies a <code>-javaagent:</code> as a JVM argument for surefire:<br />
<span id="more-70"></span></p>
<pre class="brush: xml;">
&lt;!-- See http://maven.apache.org/plugins/maven-surefire-plugin/ --&gt;
	&lt;plugin&gt;
	&lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;
	&lt;artifactId&gt;maven-surefire-plugin&lt;/artifactId&gt;
	&lt;configuration&gt;
		&lt;!--
			The following must be within one line of code, line breaks will
			cause surefire execution to fail.
		--&gt;
		&lt;argLine&gt;-javaagent:/path/to/myagent.jar&lt;/argLine&gt;
	&lt;/configuration&gt;
</pre>
<p>Java agents however <em>must be provided as an argument to the JVM when it starts</em> &#8211; which is exactly what happens when surefire &#8220;forks&#8221;.<br />
Thus: No forking, no agents, since the tests will be executed in the current jvm used to execute maven itself &#8211; and that one was not started with a -javaagent argument. In order to execute  surefire tests and use agents, the forkMode must at least be &#8220;once&#8221; (<code>-DforkMode=once</code>).</p>
<p>Thus, leave the forking as it is, and <a href="http://maven.apache.org/plugins/maven-surefire-plugin/examples/debugging.html">enable remote debugging as described in the surefire plug-in documentation</a>, i.e. without using mvnDebug:</p>
<p><code><br />
mvn test -Dmaven.surefire.debug<br />
</code></p>
<p>Which will open a remote debugging port at localhost:5005 for the test execution &#8211; and use the agents.</p>
]]></content:encoded>
			<wfw:commentRss>http://olafsblog.sysbsb.de/maven-surefire-remote-debugging-and-the-javaagent-switch/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Howto use acegi-security and the @Secured annotation for method interception</title>
		<link>http://olafsblog.sysbsb.de/howto-use-acegi-security-and-the-secured-annotation-for-method-interception/</link>
		<comments>http://olafsblog.sysbsb.de/howto-use-acegi-security-and-the-secured-annotation-for-method-interception/#comments</comments>
		<pubDate>Fri, 04 Jul 2008 10:19:51 +0000</pubDate>
		<dc:creator>olaf</dc:creator>
				<category><![CDATA[J2EE]]></category>
		<category><![CDATA[System architecture]]></category>
		<category><![CDATA[acegi]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[spring]]></category>

		<guid isPermaLink="false">http://olafsblog.sysbsb.de/?p=52</guid>
		<description><![CDATA[Acegi-security (now spring-security) provides a @Secured (org.acegisecurity.annotation.Secured) annotation.
Classes using this annotation can be processed by a suitable BeanPostProcessor, which will proxy the class so that calls to @Secured methods are intercepted and the required authentication is validated against the acegi security context. Note that the following is a configuration for acegi-security, things might be different [...]]]></description>
			<content:encoded><![CDATA[<p>Acegi-security (now spring-security) provides a @Secured (<code>org.acegisecurity.annotation.Secured</code>) annotation.<br />
Classes using this annotation can be processed by a suitable BeanPostProcessor, which will proxy the class so that calls to @Secured methods are intercepted and the required authentication is validated against the acegi security context. Note that the following is a configuration for acegi-security, things might be different with spring-security.</p>
<p><em>2008-07-12: Comment:<a href="http://www.jroller.com/habuma/entry/method_level_security_in_spring"> It is indeed a lot simpler using spring-security, as Craig Walls demonstrates in this posting in his blog &#8220;Spring-Loaded&#8221;</a></em>).</p>
<p>In order to activate the post processing for the @Secured annotations, a spring configuration such as the following is required:<br />
<span id="more-52"></span></p>
<pre class="brush: xml;">
    &lt;!-- Bean post-processor for activating any advisors --&gt;
    &lt;bean class=&quot;org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator&quot;/&gt;

    &lt;!-- The advisor that creates secured proxies for beans using security annotations such as @Secured --&gt;
    &lt;bean class=&quot;org.acegisecurity.intercept.method.aopalliance.MethodDefinitionSourceAdvisor&quot;&gt;
        &lt;constructor-arg&gt;
            &lt;ref bean=&quot;myMethodInterceptor&quot;/&gt;
        &lt;/constructor-arg&gt;
    &lt;/bean&gt;
</pre>
<p>Where <code>myMethodInterceptor</code> is a <a href="http://acegisecurity.org/acegi-security/apidocs/org/acegisecurity/intercept/method/aopalliance/MethodSecurityInterceptor.html">MethodSecurityInterceptor</a>, which may be configured like this:</p>
<pre class="brush: xml;">
    &lt;bean id=&quot;myMethodInterceptor&quot; class=&quot;org.acegisecurity.intercept.method.aopalliance.MethodSecurityInterceptor&quot;&gt;
        &lt;property name=&quot;validateConfigAttributes&quot; value=&quot;false&quot;/&gt;
        &lt;property name=&quot;authenticationManager&quot; ref=&quot;authenticationManager&quot;/&gt;
        &lt;property name=&quot;accessDecisionManager&quot; ref=&quot;accessDecisionManager&quot;/&gt;
        &lt;property name=&quot;objectDefinitionSource&quot; ref=&quot;objectDefinitionSource&quot;/&gt;
    &lt;/bean&gt;
</pre>
<p>With a suitable <a href="http://www.acegisecurity.org/acegi-security/apidocs/org/acegisecurity/AuthenticationManager.html">AuthenticationManager</a>,  <a href="http://www.acegisecurity.org/acegi-security/apidocs/org/acegisecurity/AccessDecisionManager.html">AccessDescisionManager</a> and and <code>objectDefinitionSource</code> of type <a href="http://www.acegisecurity.org/acegi-security/apidocs/org/acegisecurity/intercept/method/MethodDefinitionSource.html">MethodDefinitionSource</a>.</p>
<p>Often it is the case that annotated bean classes must be proxied directly, rather than proxying some implemented interface. </p>
<p>If you get an exception such as<br />
<code><br />
 Failed to convert property value of type [$Proxy70] to required type ...<br />
 no matching editors or conversion strategy found<br />
</code></p>
<p>Your solution might be to force the proxying of the target class itself using:</p>
<pre class="brush: xml;">
    &lt;!-- Bean post-processor for auto-activating all advisors --&gt;
    &lt;bean class=&quot;org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator&quot;&gt;
        &lt;property name=&quot;proxyTargetClass&quot; value=&quot;true&quot; /&gt;
    &lt;/bean&gt;
</pre>
]]></content:encoded>
			<wfw:commentRss>http://olafsblog.sysbsb.de/howto-use-acegi-security-and-the-secured-annotation-for-method-interception/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Why it&#8217;s better to integrate XML schema files into the classpath</title>
		<link>http://olafsblog.sysbsb.de/why-its-better-to-integrate-xml-schema-files-into-the-classpath/</link>
		<comments>http://olafsblog.sysbsb.de/why-its-better-to-integrate-xml-schema-files-into-the-classpath/#comments</comments>
		<pubDate>Sat, 10 May 2008 12:50:54 +0000</pubDate>
		<dc:creator>olaf</dc:creator>
				<category><![CDATA[J2EE]]></category>
		<category><![CDATA[System architecture]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[spring]]></category>

		<guid isPermaLink="false">http://olafsblog.sysbsb.de/?p=48</guid>
		<description><![CDATA[When using schema files in your XML configuration, it&#8217;s might happen that your XML parser will attempt to actually download the schema file using the configured schema URI.
This is the case when there is no mechanism for resolving the schema URI to a local schema file (as, for example the bean handler registration in spring) [...]]]></description>
			<content:encoded><![CDATA[<p>When using schema files in your XML configuration, it&#8217;s might happen that your XML parser will attempt to actually download the schema file using the configured schema URI.<br />
This is the case when there is no mechanism for resolving the schema URI to a local schema file (as, for example the <a href="http://static.springframework.org/spring/docs/2.5.x/reference/extensible-xml.html">bean handler registration in spring</a>) or when such a mechanism fails.<br />
<span id="more-48"></span><br />
Unfortunately, the XSD URI may either not be retrieved (since not all server configurations permit HTTP connections from an application) or the XSD URI may just be an alias intended to be resolved by a mechanism such as the previously mentioned spring handlers.<br />
In that case, it is very likely that the XML validation by the parser will fail without providing a hint to the missing XSD file that caused the failure, very likely with an error message like this:</p>
<p><code><br />
cvc-complex-type.2.4.c: The matching wildcard is strict, but no declaration can be found for element ...<br />
</code></p>
<p>Thus, it is recommended to provide the XSD&#8217;s through the applications class path and reference it accordingly in the XML file.<br />
I did this for an <a href="http://activemq.apache.org/">activemq</a> configuration as follows:</p>
<pre class="brush: xml;">
&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&lt;beans xmlns=&quot;http://www.springframework.org/schema/beans&quot;
       xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;
       xmlns:amq=&quot;http://activemq.org/config/1.0&quot;
       xmlns:jms=&quot;http://www.springframework.org/schema/jms&quot;
       xsi:schemaLocation=&quot;http://www.springframework.org/schema/beans

http://www.springframework.org/schema/beans/spring-beans-2.5.xsd

           http://activemq.org/config/1.0 activemq-core-5.0.0.xsd
           http://www.springframework.org/schema/jms http://www.springframework.org/schema/jms/spring-jms-2.5.xsd&quot;&gt;
 ...
</pre>
<p>In this example, the XML file <strong>activemq-core-5.0.0.xsd</strong> will be retreived from the classpath (residing in the default package). Putting the XSD into a subpackage on the classpath or using a <strong>classpath://</strong> URI has not worked for me in <a href="http://www.springframework.org/">spring 2.5.2</a> (and other systems). There appear to be a couple of parsers with only very basic classpath resource retreival capabilities.</p>
]]></content:encoded>
			<wfw:commentRss>http://olafsblog.sysbsb.de/why-its-better-to-integrate-xml-schema-files-into-the-classpath/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Internationalisierung mit Spring</title>
		<link>http://olafsblog.sysbsb.de/internationalisierung-mit-spring/</link>
		<comments>http://olafsblog.sysbsb.de/internationalisierung-mit-spring/#comments</comments>
		<pubDate>Fri, 28 Mar 2008 11:53:09 +0000</pubDate>
		<dc:creator>olaf</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[spring]]></category>

		<guid isPermaLink="false">http://olafsblog.sysbsb.de/?p=39</guid>
		<description><![CDATA[Das spring framework bietet eine Reihe mächtiger, aber einfach zu verwendenden Mechanismen für Internationalisierung.
In diesem Blog wird eine recht gute Einführung mit Codebeispielen gegeben.
]]></description>
			<content:encoded><![CDATA[<p>Das <a href="http://www.springframework.org">spring framework</a> bietet eine Reihe mächtiger, aber einfach zu verwendenden Mechanismen für Internationalisierung.<br />
<a href="http://rizafar.blogspot.com/2007/07/internationalization-spring-upon-it.html">In diesem Blog wird eine recht gute Einführung mit Codebeispielen gegeben</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://olafsblog.sysbsb.de/internationalisierung-mit-spring/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Why @Configurable and @Transactional don&#8217;t belong to into the same class</title>
		<link>http://olafsblog.sysbsb.de/why-configurable-and-transactional-dont-belong-to-into-the-same-class/</link>
		<comments>http://olafsblog.sysbsb.de/why-configurable-and-transactional-dont-belong-to-into-the-same-class/#comments</comments>
		<pubDate>Wed, 26 Mar 2008 18:57:10 +0000</pubDate>
		<dc:creator>olaf</dc:creator>
				<category><![CDATA[J2EE]]></category>
		<category><![CDATA[JPA]]></category>
		<category><![CDATA[System architecture]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[spring]]></category>

		<guid isPermaLink="false">http://olafsblog.sysbsb.de/?p=35</guid>
		<description><![CDATA[When using the Spring framework, one can still benefit from dependency injection etc. even if a bean is not obtained from a bean factory by using the @Configurable annotation, f.e.:


@Configurable(value = &#34;myBean&#34;)
public class MyBean {
   ...
}

Where myBean is the bean id in the spring context.
This approach can be somewhat problematic, though, when used [...]]]></description>
			<content:encoded><![CDATA[<p>When using the <a href="http://www.springframework.org">Spring framework</a>, one can still benefit from dependency injection etc. even if a bean is not obtained from a <a href="http://static.springframework.org/spring/docs/2.5.x/api/org/springframework/beans/factory/BeanFactory.html">bean factory</a> by using the <code>@Configurable</code> annotation, f.e.:<br />
<span id="more-35"></span></p>
<pre class="brush: java;">
@Configurable(value = &quot;myBean&quot;)
public class MyBean {
   ...
}
</pre>
<p>Where myBean is the bean id in the spring context.</p>
<p>This approach can be somewhat problematic, though, when used in conjunction with aspect-oriented features.<br />
Say, for example, you also want to use <a href="http://java.sun.com/developer/technicalArticles/J2EE/jpa/">JPA</a> and require a transactional behavior.</p>
<p>You would usually do the following:</p>
<pre class="brush: java;">
@Configurable(value = &quot;myBean&quot;)
public class MyBean {
   @Transactional
    public void foo() {
    ...
    }
}
</pre>
<p>This will not work, but lead to an exception like this:</p>
<p><code><br />
java.lang.IllegalStateException: Post-processor tried to replace bean instance of type [my.package.MyBean] with (proxy) object of type [my.package.MyBean$$EnhancerByCGLIB$$c029ddbf] - not supported for aspect-configured classes!<br />
</code></p>
<p>The reason is that @Configurable will ask spring to configure the current bean during constructor invokation. During configuration, a number of bean post processors will be invoked on the bean, and one of them, namely the <a href="http://www.jdocs.com/spring/2.5.2/org/springframework/aop/framework/autoproxy/InfrastructureAdvisorAutoProxyCreator.html">InfrastructureAdvisorAutoProxyCreator</a> will find the <code>@Transactional</code> annotation &#8211; which <em>advices</em> the post processor to proxy the bean in order to manage the required transaction&#8217;s context.</p>
<p>But you cannot override the expected outcome of a class instanciation with <code>new</code> with a proxy object &#8211; since it is not of the same type as the expected object!</p>
<p>Thus, <code>@Configurable</code> and <code>@Transactional</code> &#8211; together with any other advice that leads to a proxy object &#8211;  cannot coexist in your class.</p>
]]></content:encoded>
			<wfw:commentRss>http://olafsblog.sysbsb.de/why-configurable-and-transactional-dont-belong-to-into-the-same-class/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Spring tools für eclipse</title>
		<link>http://olafsblog.sysbsb.de/spring-tools-fur-eclipse/</link>
		<comments>http://olafsblog.sysbsb.de/spring-tools-fur-eclipse/#comments</comments>
		<pubDate>Tue, 25 Mar 2008 17:43:37 +0000</pubDate>
		<dc:creator>olaf</dc:creator>
				<category><![CDATA[J2EE]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[spring]]></category>

		<guid isPermaLink="false">http://olafsblog.sysbsb.de/?p=32</guid>
		<description><![CDATA[Wer mit dem spring framework entwickelt sollte das spring IDE Projekt nicht missen.
Die einfach zu installierenden Plugins erweitern unter anderem den XML-Editor um nützliche &#8220;content assists&#8221; für die spring Konfiguration.

Sehr nützlich!
]]></description>
			<content:encoded><![CDATA[<p>Wer mit dem <a href="http://springframework.org">spring framework</a> entwickelt sollte das <a href="http://springide.org/blog/">spring IDE Projekt</a> nicht missen.<br />
Die <a href="http://springide.org/project/wiki/SpringideInstall">einfach zu installierenden Plugins</a> erweitern unter anderem den XML-Editor um nützliche &#8220;content assists&#8221; für die spring Konfiguration.</p>
<p><img src="http://olafsblog.sysbsb.de/wp-content/uploads/2008/03/eclipse-springide-xml.jpg" alt="spring ide im XML Editor von Eclipse" /></p>
<p>Sehr nützlich!</p>
]]></content:encoded>
			<wfw:commentRss>http://olafsblog.sysbsb.de/spring-tools-fur-eclipse/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Spring-loaded</title>
		<link>http://olafsblog.sysbsb.de/spring-loaded/</link>
		<comments>http://olafsblog.sysbsb.de/spring-loaded/#comments</comments>
		<pubDate>Sat, 22 Mar 2008 22:42:29 +0000</pubDate>
		<dc:creator>olaf</dc:creator>
				<category><![CDATA[J2EE]]></category>
		<category><![CDATA[System architecture]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[spring]]></category>

		<guid isPermaLink="false">http://olafsblog.sysbsb.de/?p=29</guid>
		<description><![CDATA[Craig Walls, einer der Autoren des famosen &#8220;Spring in action&#8221; Buches, schreibt in seinem Weblog vieles extrem Lesenswertes rund um Spring. Dank der zahlreichen Codebeispiele eine gute Quelle für best practice Spring &#8211; und natürlich sehr aktuell!
]]></description>
			<content:encoded><![CDATA[<p>Craig Walls, einer der Autoren des famosen &#8220;<a href="http://www.manning.com/walls2/">Spring in action</a>&#8221; Buches, <a href="http://www.jroller.com/habuma/">schreibt in seinem Weblog vieles extrem Lesenswertes rund um Spring</a>. Dank der zahlreichen Codebeispiele eine gute Quelle für best practice Spring &#8211; und natürlich sehr aktuell!</p>
]]></content:encoded>
			<wfw:commentRss>http://olafsblog.sysbsb.de/spring-loaded/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Spring context, überall &#8211; auch mit openAMF</title>
		<link>http://olafsblog.sysbsb.de/spring-context-uberall-auch-mit-openamf/</link>
		<comments>http://olafsblog.sysbsb.de/spring-context-uberall-auch-mit-openamf/#comments</comments>
		<pubDate>Wed, 12 Mar 2008 12:45:22 +0000</pubDate>
		<dc:creator>olaf</dc:creator>
				<category><![CDATA[J2EE]]></category>
		<category><![CDATA[System architecture]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[spring]]></category>
		<category><![CDATA[tomcat]]></category>

		<guid isPermaLink="false">http://olafsblog.sysbsb.de/?p=27</guid>
		<description><![CDATA[Benutzt man zur Anbindung eines Flash-Frontends openAMF oder macht man irgend etwas Ähnliches, was am DispatcherServlet vorbei geht, muss man nicht auf die AOP basierten scopes verzichten. In diesem Fall stellt ein einfacher Filter in der web.xml die entsprechenden Scopes ur Verfügung: 

    &#60;filter&#62;
        &#60;filter-name&#62;springContextFilter&#60;/filter-name&#62;
 [...]]]></description>
			<content:encoded><![CDATA[<p>Benutzt man zur Anbindung eines Flash-Frontends <a href="http://www.openamf.com/cms/">openAMF</a> oder macht man irgend etwas Ähnliches, was am <a href="http://static.springframework.org/spring/docs/2.5.x/api/org/springframework/web/servlet/DispatcherServlet.html">DispatcherServlet</a> vorbei geht, muss man nicht auf die <a href="http://static.springframework.org/spring/docs/2.5.x/reference/aop-api.html">AOP basierten scopes</a> verzichten. In diesem Fall stellt ein einfacher Filter in der web.xml die entsprechenden Scopes ur Verfügung: </p>
<pre class="brush: xml;">
    &lt;filter&gt;
        &lt;filter-name&gt;springContextFilter&lt;/filter-name&gt;
        &lt;filter-class&gt;org.springframework.web.filter.RequestContextFilter&lt;/filter-class&gt;
    &lt;/filter&gt;

    &lt;filter-mapping&gt;
        &lt;filter-name&gt;springContextFilter&lt;/filter-name&gt;
        &lt;url-pattern&gt;/*&lt;/url-pattern&gt;
    &lt;/filter-mapping&gt;
</pre>
<p>Mehr dazu gibt&#8217;s natürlich in der <a href="http://static.springframework.org/spring/docs/2.0.x/api/org/springframework/web/filter/RequestContextFilter.html">spring-doku</a>!</p>
]]></content:encoded>
			<wfw:commentRss>http://olafsblog.sysbsb.de/spring-context-uberall-auch-mit-openamf/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Spring-Konfiguration mit XML-imports</title>
		<link>http://olafsblog.sysbsb.de/spring-konfiguration-mit-xml-imports/</link>
		<comments>http://olafsblog.sysbsb.de/spring-konfiguration-mit-xml-imports/#comments</comments>
		<pubDate>Tue, 05 Feb 2008 20:37:21 +0000</pubDate>
		<dc:creator>olaf</dc:creator>
				<category><![CDATA[J2EE]]></category>
		<category><![CDATA[System architecture]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[spring]]></category>

		<guid isPermaLink="false">http://olafsblog.sysbsb.de/?p=24</guid>
		<description><![CDATA[Statt den Spring-Context mit einer ganzen Menge von .xml-Ressourcen zu konfigurieren Kann man diese auch per import in eine Spring-Konfiguration includen.
eine Spring-context.xml kann zum Beispiel so aussehen:

&#60;?xml version=&#34;1.0&#34; encoding=&#34;UTF-8&#34;?&#62;
&#60;beans xmlns=&#34;http://www.springframework.org/schema/beans&#34; xmlns:xsi=&#34;http://www.w3.org/2001/XMLSchema-instance&#34;
    xsi:schemaLocation=&#34;http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd&#34;&#62;
       ...
       &#60;import resource=&#34;eineWeitereKonfiguration.xml&#34;/&#62;
     [...]]]></description>
			<content:encoded><![CDATA[<p>Statt den Spring-Context mit einer ganzen Menge von .xml-Ressourcen zu konfigurieren Kann man diese auch per <em>import</em> in eine Spring-Konfiguration includen.<br />
eine Spring-context.xml kann zum Beispiel so aussehen:</p>
<pre class="brush: xml;">
&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&lt;beans xmlns=&quot;http://www.springframework.org/schema/beans&quot; xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;
    xsi:schemaLocation=&quot;http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd&quot;&gt;
       ...
       &lt;import resource=&quot;eineWeitereKonfiguration.xml&quot;/&gt;
       ..
&lt;/beans&gt;
</pre>
<p><span id="more-24"></span><br />
wobei <em>eineWeitereKonfiguration</em> im gleichen Verzeichnis bzw. im gleichen Package erwartet wird.</p>
<p><em>import</em> kann jedoch noch mehr: Neben relativen Pfadangaben kann auch aus einer statischen Konfiguration ein <em>classpath</em> referenziert werden:</p>
<pre class="brush: xml;">
&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&lt;beans xmlns=&quot;http://www.springframework.org/schema/beans&quot; xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;
    xsi:schemaLocation=&quot;http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd&quot;&gt;
       ...
       &lt;import resource=&quot;classpath:my/package/eineWeitereKonfiguration.xml&quot;/&gt;
       ..
&lt;/beans&gt;
</pre>
<p>Auf diese Weise lässt sich eine Konfiguration mit wenig Aufwand erweitern und sauber in Komponenten trennen.</p>
]]></content:encoded>
			<wfw:commentRss>http://olafsblog.sysbsb.de/spring-konfiguration-mit-xml-imports/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
