<?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>Luventas Web Design Blog</title>
	<atom:link href="http://blog.luventas-webdesign.de/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://blog.luventas-webdesign.de</link>
	<description>A new blog for developers in PHP, Java and Perl</description>
	<lastBuildDate>Thu, 24 Nov 2011 13:56:08 +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>Informationen aus mehreren Reihen trotz &#8220;GROUP BY&#8221;</title>
		<link>http://blog.luventas-webdesign.de/?p=283</link>
		<comments>http://blog.luventas-webdesign.de/?p=283#comments</comments>
		<pubDate>Mon, 07 Nov 2011 21:40:13 +0000</pubDate>
		<dc:creator>luventas</dc:creator>
				<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://blog.luventas-webdesign.de/?p=283</guid>
		<description><![CDATA[Folgendes Szenario: Ich habe eine Datenbanktabelle, in der zu einem Benutzer in mehreren Reihen eine Information steht. Diese Informationen möchte ich in einer Reihe anzeigen, ohne mir alle Zeilen einzeln holen zu müssen. In SQL gibt es zwar die schöne &#8230; <a href="http://blog.luventas-webdesign.de/?p=283">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Folgendes Szenario:</p>
<p>Ich habe eine Datenbanktabelle, in der zu einem Benutzer in mehreren Reihen eine Information steht.</p>
<p><strong></strong><div id="wpshdo_1" class="wp-synhighlighter-outer"><div id="wpshdt_1" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_1"></a><a id="wpshat_1" class="wp-synhighlighter-title" href="#codesyntax_1"  onClick="javascript:wpsh_toggleBlock(1)" title="Click to show/hide code block">Source code</a></td><td align="right"><a href="#codesyntax_1" onClick="javascript:wpsh_code(1)" title="Show code only"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_1" onClick="javascript:wpsh_print(1)" title="Print code"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_1" class="wp-synhighlighter-inner" style="display: block;"><pre class="text" style="font-family:monospace;">user_id, date, information_about_user_on_date
1, 2011-11-01, information_1
1, 2011-11-02, information_2
1, 2011-11-03, information_3</pre></div></div></p>
<p>Diese Informationen möchte ich in einer Reihe anzeigen, ohne mir alle Zeilen einzeln holen zu müssen. In SQL gibt es zwar die schöne Funktion &#8220;GROUP BY&#8221;, hier würde ich aber nur noch eine der Informationen erhalten.<span id="more-283"></span></p>
<div id="wpshdo_2" class="wp-synhighlighter-outer"><div id="wpshdt_2" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_2"></a><a id="wpshat_2" class="wp-synhighlighter-title" href="#codesyntax_2"  onClick="javascript:wpsh_toggleBlock(2)" title="Click to show/hide code block">Source code</a></td><td align="right"><a href="#codesyntax_2" onClick="javascript:wpsh_code(2)" title="Show code only"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_2" onClick="javascript:wpsh_print(2)" title="Print code"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_2" class="wp-synhighlighter-inner" style="display: block;"><pre class="sql" style="font-family:monospace;"><span class="kw1">SELECT</span> <span class="sy0">*</span> <span class="kw1">FROM</span> user_information <span class="kw1">GROUP</span> <span class="kw1">BY</span> user_id;</pre></div></div>
<div id="wpshdo_3" class="wp-synhighlighter-outer"><div id="wpshdt_3" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_3"></a><a id="wpshat_3" class="wp-synhighlighter-title" href="#codesyntax_3"  onClick="javascript:wpsh_toggleBlock(3)" title="Click to show/hide code block">Source code</a></td><td align="right"><a href="#codesyntax_3" onClick="javascript:wpsh_code(3)" title="Show code only"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_3" onClick="javascript:wpsh_print(3)" title="Print code"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_3" class="wp-synhighlighter-inner" style="display: block;"><pre class="text" style="font-family:monospace;">Ergebnis: 1, 2011-11-01, information_1</pre></div></div><em></em></p>
<p>Hier würde ich also 3 Informationen verlieren. Aber MySQL hat die sehr nützliche Funktion &#8220;GROUP_CONCAT&#8221; erschaffen, die hier Abhilfe schaffen kann.</p>
<div id="wpshdo_4" class="wp-synhighlighter-outer"><div id="wpshdt_4" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_4"></a><a id="wpshat_4" class="wp-synhighlighter-title" href="#codesyntax_4"  onClick="javascript:wpsh_toggleBlock(4)" title="Click to show/hide code block">Source code</a></td><td align="right"><a href="#codesyntax_4" onClick="javascript:wpsh_code(4)" title="Show code only"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_4" onClick="javascript:wpsh_print(4)" title="Print code"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_4" class="wp-synhighlighter-inner" style="display: block;"><pre class="sql" style="font-family:monospace;"><span class="kw1">SELECT</span>
  user_id<span class="sy0">,</span>
  date<span class="sy0">,</span>
  GROUP_CONCAT<span class="br0">&#40;</span>information_about_user_on_date SEPARATOR <span class="st0">'|'</span><span class="br0">&#41;</span> <span class="kw1">AS</span> info
<span class="kw1">FROM</span> user_information;</pre></div></div>
<p>Das Ergebnis dieser Abfrage sieht nun wie folgt aus:</p>
<div id="wpshdo_5" class="wp-synhighlighter-outer"><div id="wpshdt_5" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_5"></a><a id="wpshat_5" class="wp-synhighlighter-title" href="#codesyntax_5"  onClick="javascript:wpsh_toggleBlock(5)" title="Click to show/hide code block">Source code</a></td><td align="right"><a href="#codesyntax_5" onClick="javascript:wpsh_code(5)" title="Show code only"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_5" onClick="javascript:wpsh_print(5)" title="Print code"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_5" class="wp-synhighlighter-inner" style="display: block;"><pre class="text" style="font-family:monospace;">user_id, date, info
1, 2011-11-01, information_1|information_2|information_3</pre></div></div>
<p>Nun habe ich alle Informationen, welche ich haben wollte in einer Zeile. Möchte ich zusätzlich alle Datumsangaben haben, kann ich hier genauso verfahren.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.luventas-webdesign.de/?feed=rss2&#038;p=283</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Information from several rows in spite of &#8220;GROUP BY&#8221;</title>
		<link>http://blog.luventas-webdesign.de/?p=288</link>
		<comments>http://blog.luventas-webdesign.de/?p=288#comments</comments>
		<pubDate>Mon, 07 Nov 2011 21:40:00 +0000</pubDate>
		<dc:creator>luventas</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://blog.luventas-webdesign.de/?p=288</guid>
		<description><![CDATA[Following scenario: I have a database table, where information about an user is stored in several rows. This information I want to show in one single line without getting this information row by row. SQL has the nice functionality &#8220;GROUP &#8230; <a href="http://blog.luventas-webdesign.de/?p=288">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Following scenario:</p>
<p>I have a database table, where information about an user is stored in several rows.</p>
<p><strong></strong><div id="wpshdo_6" class="wp-synhighlighter-outer"><div id="wpshdt_6" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_6"></a><a id="wpshat_6" class="wp-synhighlighter-title" href="#codesyntax_6"  onClick="javascript:wpsh_toggleBlock(6)" title="Click to show/hide code block">Source code</a></td><td align="right"><a href="#codesyntax_6" onClick="javascript:wpsh_code(6)" title="Show code only"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_6" onClick="javascript:wpsh_print(6)" title="Print code"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_6" class="wp-synhighlighter-inner" style="display: block;"><pre class="text" style="font-family:monospace;">user_id, date, information_about_user_on_date
1, 2011-11-01, information_1
1, 2011-11-02, information_2
1, 2011-11-03, information_3</pre></div></div></p>
<p>This information I want to show in one single line without getting this information row by row. SQL has the nice functionality &#8220;GROUP BY&#8221; but by using this normally I&#8217;m only getting one information.<span id="more-288"></span></p>
<div id="wpshdo_7" class="wp-synhighlighter-outer"><div id="wpshdt_7" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_7"></a><a id="wpshat_7" class="wp-synhighlighter-title" href="#codesyntax_7"  onClick="javascript:wpsh_toggleBlock(7)" title="Click to show/hide code block">Source code</a></td><td align="right"><a href="#codesyntax_7" onClick="javascript:wpsh_code(7)" title="Show code only"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_7" onClick="javascript:wpsh_print(7)" title="Print code"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_7" class="wp-synhighlighter-inner" style="display: block;"><pre class="sql" style="font-family:monospace;"><span class="kw1">SELECT</span> <span class="sy0">*</span> <span class="kw1">FROM</span> user_information <span class="kw1">GROUP</span> <span class="kw1">BY</span> user_id;</pre></div></div>
<p>&nbsp;</p>
<div id="wpshdo_8" class="wp-synhighlighter-outer"><div id="wpshdt_8" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_8"></a><a id="wpshat_8" class="wp-synhighlighter-title" href="#codesyntax_8"  onClick="javascript:wpsh_toggleBlock(8)" title="Click to show/hide code block">Source code</a></td><td align="right"><a href="#codesyntax_8" onClick="javascript:wpsh_code(8)" title="Show code only"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_8" onClick="javascript:wpsh_print(8)" title="Print code"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_8" class="wp-synhighlighter-inner" style="display: block;"><pre class="text" style="font-family:monospace;">Ergebnis: 1, 2011-11-01, information_1</pre></div></div><em></em></p>
<p>This means, I will loose 2 information. But now MySQL has the useful fonction &#8220;GROUP_CONCAT&#8221; created, which can really help in this case.</p>
<div id="wpshdo_9" class="wp-synhighlighter-outer"><div id="wpshdt_9" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_9"></a><a id="wpshat_9" class="wp-synhighlighter-title" href="#codesyntax_9"  onClick="javascript:wpsh_toggleBlock(9)" title="Click to show/hide code block">Source code</a></td><td align="right"><a href="#codesyntax_9" onClick="javascript:wpsh_code(9)" title="Show code only"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_9" onClick="javascript:wpsh_print(9)" title="Print code"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_9" class="wp-synhighlighter-inner" style="display: block;"><pre class="sql" style="font-family:monospace;"><span class="kw1">SELECT</span>
  user_id<span class="sy0">,</span>
  date<span class="sy0">,</span>
  GROUP_CONCAT<span class="br0">&#40;</span>information_about_user_on_date SEPARATOR <span class="st0">'|'</span><span class="br0">&#41;</span> <span class="kw1">AS</span> info
<span class="kw1">FROM</span> user_information;</pre></div></div>
<p>The result of this query looks like the following example:</p>
<div id="wpshdo_10" class="wp-synhighlighter-outer"><div id="wpshdt_10" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_10"></a><a id="wpshat_10" class="wp-synhighlighter-title" href="#codesyntax_10"  onClick="javascript:wpsh_toggleBlock(10)" title="Click to show/hide code block">Source code</a></td><td align="right"><a href="#codesyntax_10" onClick="javascript:wpsh_code(10)" title="Show code only"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_10" onClick="javascript:wpsh_print(10)" title="Print code"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_10" class="wp-synhighlighter-inner" style="display: block;"><pre class="text" style="font-family:monospace;">user_id, date, info
1, 2011-11-01, information_1|information_2|information_3</pre></div></div>
<p>Now I have all needed information in one single line. If I also want to have all dates from that example, I can do the same for that column.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.luventas-webdesign.de/?feed=rss2&#038;p=288</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Wie mache ich meine Webseiten schöner?</title>
		<link>http://blog.luventas-webdesign.de/?p=277</link>
		<comments>http://blog.luventas-webdesign.de/?p=277#comments</comments>
		<pubDate>Fri, 28 Oct 2011 07:27:54 +0000</pubDate>
		<dc:creator>luventas</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://blog.luventas-webdesign.de/?p=277</guid>
		<description><![CDATA[Jeder, der schon einemal eine Webseite erstellt hat, kennt folgendes Problem: Du entwickelts dein Webprojekt lokal auf deiner Maschine. Alles sieht gut aus, genau, wie du es dir vorgestellt hast. Dann lädst du diese Seite auf den Webserver und testest, &#8230; <a href="http://blog.luventas-webdesign.de/?p=277">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Jeder, der schon einemal eine Webseite erstellt hat, kennt folgendes Problem:</p>
<p>Du entwickelts dein Webprojekt lokal auf deiner Maschine. Alles sieht gut aus, genau, wie du es dir vorgestellt hast. Dann lädst du diese Seite auf den Webserver und testest, ob es immer noch so aussieht, wie es soll. Ja, alles ist wunderbar!</p>
<p>Dann ruft dich ein Freund an und fragt: Was hast du denn da gemacht? Sieht ja furchtbar aus! Die Texte sehen ganz furchtbar aus und die Abschnitte sprengen dein Seitendesign!</p>
<p>Wie kann das Sein?! Der Grund ist, dass auf deinem System die Schiftarten, die du verwendet hast, existieren uns somit von Browser geladen werden können. Auf anderen Systemen existieren diese vielleicht nicht. Nur Verdana, Arial und eine handvoll anderer Schriftarten sind Standard auf jedem System und somit verfügbar. Du möchtest aber spezielle Schiftarten verwenden, die besser in dein entwickeltes Design passen.<span id="more-277"></span></p>
<p>In der Vergangenheit hat man sich damit ausgeholfen, dass man bestimmte Zeilen, die auf jeden Fall in diesem Text angezeigt werden sollten, dann als Bild eingefügt hat. Dies ist aber ein Supergau für die Suchmaschinenoptimierung.</p>
<p>Jetzt hat Google eine neue API entwickelt. Die Benutzung dieser API ist kostenlos: <a title="fonts.googleapis.com" href="http://code.google.com/intl/de-DE/apis/webfonts/docs/getting_started.html" target="_blank">fonts.googleapis.com</a>. Mit dieser API ist es richtig einfach, so ziemlich jede Schriftart, die man sehen möchte, auch auf einer Webseite zu verwenden. Einzige Vorbedingung ist, dass Google diese Schriftart auch gespeichert hat. Man ist aber auch in der Lage, eigene Schriftarten in das Googlesystem hochzuladen und diese dann zu verwenden.</p>
<p>Zum Benutzen eie Schriftart in deiner Webseite benötigst du nur eine einzige Zeile die gleich dem Einfügen deiner Stylesheet-Datei ist:</p>
<div id="wpshdo_11" class="wp-synhighlighter-outer"><div id="wpshdt_11" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_11"></a><a id="wpshat_11" class="wp-synhighlighter-title" href="#codesyntax_11"  onClick="javascript:wpsh_toggleBlock(11)" title="Click to show/hide code block">Source code</a></td><td align="right"><a href="#codesyntax_11" onClick="javascript:wpsh_code(11)" title="Show code only"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_11" onClick="javascript:wpsh_print(11)" title="Print code"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_11" class="wp-synhighlighter-inner" style="display: block;"><pre class="html4strict" style="font-family:monospace;"><span class="sc2">&lt;<a href="http://december.com/html/4/element/link.html"><span class="kw2">link</span></a> <span class="kw3">href</span><span class="sy0">=</span><span class="st0">'http://fonts.googleapis.com/css?family=Lobster'</span></span>
<span class="sc2">    <span class="kw3">rel</span><span class="sy0">=</span><span class="st0">'stylesheet'</span> <span class="kw3">type</span><span class="sy0">=</span><span class="st0">'text/css'</span> <span class="sy0">/</span>&gt;</span></pre></div></div>
<p>Nun kannst du diese Schriftart benutzen. In meinem Beispiel habe ich die Schriftart &#8220;Lobster&#8221; verwendet. Wie jede Schriftart, kannst du sie in deinen Style-Angaben als &#8220;font-family&#8221; verwenden.</p>
<div id="wpshdo_12" class="wp-synhighlighter-outer"><div id="wpshdt_12" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_12"></a><a id="wpshat_12" class="wp-synhighlighter-title" href="#codesyntax_12"  onClick="javascript:wpsh_toggleBlock(12)" title="Click to show/hide code block">Source code</a></td><td align="right"><a href="#codesyntax_12" onClick="javascript:wpsh_code(12)" title="Show code only"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_12" onClick="javascript:wpsh_print(12)" title="Print code"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_12" class="wp-synhighlighter-inner" style="display: block;"><pre class="html4strict" style="font-family:monospace;"><span class="sc2">&lt;<a href="http://december.com/html/4/element/p.html"><span class="kw2">p</span></a> <span class="kw3">style</span><span class="sy0">=</span><span class="st0">&quot;font-family: Lobster; font-size: 24px;&quot;</span>&gt;</span>
  Dies ist ein Text for die Google Font 'Lobster'
<span class="sc2">&lt;<span class="sy0">/</span><a href="http://december.com/html/4/element/p.html"><span class="kw2">p</span></a>&gt;</span></pre></div></div>
<p>Wenn du das getan hast, kann der Text auf deiner Seite so aussehen:</p>
<p><a href="http://blog.luventas-webdesign.de/wp-content/uploads/2011/10/google_fonts.png"><img title="google_fonts" src="http://blog.luventas-webdesign.de/wp-content/uploads/2011/10/google_fonts.png" alt="" width="602" height="235" /></a></p>
<p>Meiner Meinung nach ist diese API ein echter Zugewinn für Webentwickler und ich will diese API in der Zukunft zu oft wie möglich bei der Entwicklung von Webanwendungen und/oder Webseiten verwenden.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.luventas-webdesign.de/?feed=rss2&#038;p=277</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to make your Website texts nicer</title>
		<link>http://blog.luventas-webdesign.de/?p=271</link>
		<comments>http://blog.luventas-webdesign.de/?p=271#comments</comments>
		<pubDate>Fri, 28 Oct 2011 07:27:24 +0000</pubDate>
		<dc:creator>luventas</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://blog.luventas-webdesign.de/?p=271</guid>
		<description><![CDATA[Everybody knows that problem: You develop your Website on your local system. Everything looks nice and good. Then you upload your code on your Webserver, test, if everything looks like it should and you are happy. Then a friend calls &#8230; <a href="http://blog.luventas-webdesign.de/?p=271">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Everybody knows that problem:</p>
<p>You develop your Website on your local system. Everything looks nice and good. Then you upload your code on your Webserver, test, if everything looks like it should and you are happy.</p>
<p>Then a friend calls you and you got to here: What have you done? It looks horrible! The Texts are looking bad and the Paragraphs are breaking the page design!</p>
<p>How can that be? The Reason is, that on your System the Fonts, you are using are existing and can be loaded by the browser. On other Systems maybe that fonts are not existing. Only Arial and Verdana and a hend full of other fonts are installed on every system. But you want to use special fonts for your website that are fitting better in your design.<br />
<span id="more-271"></span><br />
In the past sometimes you have to help yourself to insert this lines of Text as picture, but this was bad for SEO (Search engine optimization).</p>
<p>Now Google has developed a good API and its use is for free: <a title="fonts.googleapis.com" href="http://code.google.com/intl/de-DE/apis/webfonts/docs/getting_started.html" target="_blank">fonts.googleapis.com</a>. With this API it it easy to use nearly every font you want to have. Precondition is only, that google has stored the needed font, but it is also possible to upload your own fonts.</p>
<p>For inserting one Font in your Website you need only one single line like the insert of your stylesheet file:</p>
<div id="wpshdo_13" class="wp-synhighlighter-outer"><div id="wpshdt_13" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_13"></a><a id="wpshat_13" class="wp-synhighlighter-title" href="#codesyntax_13"  onClick="javascript:wpsh_toggleBlock(13)" title="Click to show/hide code block">Source code</a></td><td align="right"><a href="#codesyntax_13" onClick="javascript:wpsh_code(13)" title="Show code only"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_13" onClick="javascript:wpsh_print(13)" title="Print code"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_13" class="wp-synhighlighter-inner" style="display: block;"><pre class="html4strict" style="font-family:monospace;"><span class="sc2">&lt;<a href="http://december.com/html/4/element/link.html"><span class="kw2">link</span></a> <span class="kw3">href</span><span class="sy0">=</span><span class="st0">'http://fonts.googleapis.com/css?family=Lobster'</span></span>
<span class="sc2">    <span class="kw3">rel</span><span class="sy0">=</span><span class="st0">'stylesheet'</span> <span class="kw3">type</span><span class="sy0">=</span><span class="st0">'text/css'</span> <span class="sy0">/</span>&gt;</span></pre></div></div>
<p>Now you are able to use this font, in my example it is the font named &#8220;Lobster&#8221;, in your stylesheets as font-family.</p>
<div id="wpshdo_14" class="wp-synhighlighter-outer"><div id="wpshdt_14" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_14"></a><a id="wpshat_14" class="wp-synhighlighter-title" href="#codesyntax_14"  onClick="javascript:wpsh_toggleBlock(14)" title="Click to show/hide code block">Source code</a></td><td align="right"><a href="#codesyntax_14" onClick="javascript:wpsh_code(14)" title="Show code only"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_14" onClick="javascript:wpsh_print(14)" title="Print code"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_14" class="wp-synhighlighter-inner" style="display: block;"><pre class="html4strict" style="font-family:monospace;"><span class="sc2">&lt;<a href="http://december.com/html/4/element/p.html"><span class="kw2">p</span></a> <span class="kw3">style</span><span class="sy0">=</span><span class="st0">&quot;font-family: Lobster; font-size: 24px;&quot;</span>&gt;</span>
  Dies ist ein Text for die Google Font 'Lobster'
<span class="sc2">&lt;<span class="sy0">/</span><a href="http://december.com/html/4/element/p.html"><span class="kw2">p</span></a>&gt;</span></pre></div></div>
<p>And if you use it on your page, it can look like this:</p>
<p><a href="http://blog.luventas-webdesign.de/wp-content/uploads/2011/10/google_fonts.png"><img class="alignleft size-full wp-image-273" title="google_fonts" src="http://blog.luventas-webdesign.de/wp-content/uploads/2011/10/google_fonts.png" alt="" width="602" height="235" /></a></p>
<p>In my opinion, this API is a really good gain for website developers and I will use it as much as often in future, when I&#8217;m developing Webapplications and/or websites.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.luventas-webdesign.de/?feed=rss2&#038;p=271</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Textdateien mit Spring Batch erzeugen</title>
		<link>http://blog.luventas-webdesign.de/?p=248</link>
		<comments>http://blog.luventas-webdesign.de/?p=248#comments</comments>
		<pubDate>Tue, 06 Sep 2011 19:04:23 +0000</pubDate>
		<dc:creator>luventas</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Spring]]></category>

		<guid isPermaLink="false">http://blog.luventas-webdesign.de/?p=248</guid>
		<description><![CDATA[Wir wollen eine Datei über Spring batch erzeugen. Hierfür benötigen wir einen Marshaller mir &#8220;Reader&#8221; und &#8220;Writer&#8221;. Der Reader: Der RowMapper, welcher vom Reader verwendet wird: Das DomainObject, welches über den RowMapper vom Reader befüllt wird: Der Writer: Den HeaderCallback &#8230; <a href="http://blog.luventas-webdesign.de/?p=248">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Wir wollen eine Datei über Spring batch erzeugen. Hierfür benötigen wir einen Marshaller mir &#8220;Reader&#8221; und &#8220;Writer&#8221;.</p>
<p><strong>Der Reader:</strong></p>
<div id="wpshdo_15" class="wp-synhighlighter-outer"><div id="wpshdt_15" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_15"></a><a id="wpshat_15" class="wp-synhighlighter-title" href="#codesyntax_15"  onClick="javascript:wpsh_toggleBlock(15)" title="Click to show/hide code block">Source code</a></td><td align="right"><a href="#codesyntax_15" onClick="javascript:wpsh_code(15)" title="Show code only"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_15" onClick="javascript:wpsh_print(15)" title="Print code"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_15" class="wp-synhighlighter-inner" style="display: block;"><pre class="xml" style="font-family:monospace;"><span class="sc3"><span class="re1">&lt;bean</span> <span class="re0">id</span>=<span class="st0">&quot;fileReader&quot;</span><span class="re2">&gt;</span></span>
  <span class="sc3"><span class="re1">&lt;property</span> <span class="re0">name</span>=<span class="st0">&quot;dataSource&quot;</span> <span class="re0">ref</span>=<span class="st0">&quot;dataSource&quot;</span> <span class="re2">/&gt;</span></span>
  <span class="sc3"><span class="re1">&lt;property</span> <span class="re0">name</span>=<span class="st0">&quot;sql&quot;</span> <span class="re0">value</span>=<span class="st0">&quot;SELECT * FROM table&quot;</span> <span class="re2">/&gt;</span></span>
  <span class="sc3"><span class="re1">&lt;property</span> <span class="re0">name</span>=<span class="st0">&quot;rowMapper&quot;</span><span class="re2">&gt;</span></span>
    <span class="sc3"><span class="re1">&lt;bean</span> <span class="re0">class</span>=<span class="st0">&quot;de.package.rowmapper.FileRowMapper&quot;</span> <span class="re2">/&gt;</span></span>
  <span class="sc3"><span class="re1">&lt;/property<span class="re2">&gt;</span></span></span>
<span class="sc3"><span class="re1">&lt;/bean<span class="re2">&gt;</span></span></span></pre></div></div><br />
<span id="more-248"></span></p>
<p><strong>Der RowMapper, welcher vom Reader verwendet wird:</strong><br />
<div id="wpshdo_16" class="wp-synhighlighter-outer"><div id="wpshdt_16" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_16"></a><a id="wpshat_16" class="wp-synhighlighter-title" href="#codesyntax_16"  onClick="javascript:wpsh_toggleBlock(16)" title="Click to show/hide code block">Source code</a></td><td align="right"><a href="#codesyntax_16" onClick="javascript:wpsh_code(16)" title="Show code only"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_16" onClick="javascript:wpsh_print(16)" title="Print code"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_16" class="wp-synhighlighter-inner" style="display: block;"><pre class="java" style="font-family:monospace;"><span class="kw1">package</span> <span class="co2">de.package.rowmapper</span><span class="sy0">;</span>
&nbsp;
<span class="kw1">import</span> <span class="co2">java.sql.ResultSet</span><span class="sy0">;</span>
<span class="kw1">import</span> <span class="co2">java.sql.SQLException</span><span class="sy0">;</span>
<span class="kw1">import</span> <span class="co2">org.apache.commons.logging.Log</span><span class="sy0">;</span>
<span class="kw1">import</span> <span class="co2">org.apache.commons.logging.LogFactory</span><span class="sy0">;</span>
<span class="kw1">import</span> <span class="co2">org.springframework.jdbc.core.RowMapper</span><span class="sy0">;</span>
<span class="kw1">import</span> <span class="co2">de.package.domainObjects.SftpFileObject</span><span class="sy0">;</span>
&nbsp;
<span class="kw1">public</span> <span class="kw1">class</span> FileRowMapper <span class="kw1">implements</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Arowmapper+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">RowMapper</span></a> <span class="br0">&#123;</span>
&nbsp;
  <span class="kw1">public</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Aobject+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">Object</span></a> mapRow<span class="br0">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Aresultset+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">ResultSet</span></a> rs, <span class="kw4">int</span> rowNum<span class="br0">&#41;</span> <span class="kw1">throws</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Asqlexception+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">SQLException</span></a> <span class="br0">&#123;</span>
    FileLineObject fileLine <span class="sy0">=</span> <span class="kw1">new</span> FileLineObject<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
    <span class="kw1">try</span> <span class="br0">&#123;</span>
      fileLine.<span class="me1">setDbField1</span><span class="br0">&#40;</span>rs.<span class="me1">getString</span><span class="br0">&#40;</span><span class="st0">&quot;dbField1&quot;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
      fileLine.<span class="me1">setDbField2</span><span class="br0">&#40;</span>rs.<span class="me1">getString</span><span class="br0">&#40;</span><span class="st0">&quot;dbField2&quot;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
      fileLine.<span class="me1">setDbField3</span><span class="br0">&#40;</span>rs.<span class="me1">getString</span><span class="br0">&#40;</span><span class="st0">&quot;dbField3&quot;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
      fileLine.<span class="me1">setDbField4</span><span class="br0">&#40;</span>rs.<span class="me1">getString</span><span class="br0">&#40;</span><span class="st0">&quot;dbField4&quot;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
      fileLine.<span class="me1">setDbField5</span><span class="br0">&#40;</span>rs.<span class="me1">getString</span><span class="br0">&#40;</span><span class="st0">&quot;dbField5&quot;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
    <span class="br0">&#125;</span> <span class="kw1">catch</span> <span class="br0">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Asqlexception+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">SQLException</span></a> e<span class="br0">&#41;</span> <span class="br0">&#123;</span>
      <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Asystem+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">System</span></a>.<span class="me1">out</span>.<span class="me1">println</span><span class="br0">&#40;</span><span class="st0">&quot;Can't create data row for export File.&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span>
    <span class="br0">&#125;</span>
    <span class="kw1">return</span> fileLine<span class="sy0">;</span>
  <span class="br0">&#125;</span>
<span class="br0">&#125;</span></pre></div></div></p>
<p><strong>Das DomainObject, welches über den RowMapper vom Reader befüllt wird:</strong><br />
<div id="wpshdo_17" class="wp-synhighlighter-outer"><div id="wpshdt_17" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_17"></a><a id="wpshat_17" class="wp-synhighlighter-title" href="#codesyntax_17"  onClick="javascript:wpsh_toggleBlock(17)" title="Click to show/hide code block">Source code</a></td><td align="right"><a href="#codesyntax_17" onClick="javascript:wpsh_code(17)" title="Show code only"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_17" onClick="javascript:wpsh_print(17)" title="Print code"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_17" class="wp-synhighlighter-inner" style="display: block;"><pre class="java" style="font-family:monospace;"><span class="kw1">package</span> <span class="co2">de.package.domainObjects</span><span class="sy0">;</span>
&nbsp;
<span class="kw1">public</span> <span class="kw1">class</span> FileLineObject <span class="kw1">implements</span> java.<span class="me1">io</span>.<a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Aserializable+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">Serializable</span></a> <span class="br0">&#123;</span>
&nbsp;
  <span class="kw1">private</span> <span class="kw1">static</span> <span class="kw1">final</span> <span class="kw4">long</span> serialVersionUID <span class="sy0">=</span> 1L<span class="sy0">;</span>
&nbsp;
  <span class="kw1">public</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">String</span></a> dbField1<span class="sy0">;</span>
  <span class="kw1">public</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">String</span></a> dbField2<span class="sy0">;</span>
  <span class="kw1">public</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">String</span></a> dbField3<span class="sy0">;</span>
  <span class="kw1">public</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">String</span></a> dbField4<span class="sy0">;</span>
  <span class="kw1">public</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">String</span></a> dbField5<span class="sy0">;</span>
&nbsp;
  <span class="kw1">public</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">String</span></a> getDbField1<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
    <span class="kw1">return</span> dbField1<span class="sy0">;</span>
  <span class="br0">&#125;</span>
&nbsp;
  <span class="kw1">public</span> <span class="kw4">void</span> setDbField1<span class="br0">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">String</span></a> dbField1<span class="br0">&#41;</span> <span class="br0">&#123;</span>
    <span class="kw1">this</span>.<span class="me1">dbField1</span><span class="sy0">=</span> dbField1<span class="sy0">;</span>
  <span class="br0">&#125;</span>
&nbsp;
  <span class="kw1">public</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">String</span></a> getDbField2<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
    <span class="kw1">return</span> dbField2<span class="sy0">;</span>
  <span class="br0">&#125;</span>
&nbsp;
  <span class="kw1">public</span> <span class="kw4">void</span> setDbField2<span class="br0">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">String</span></a> dbField2<span class="br0">&#41;</span> <span class="br0">&#123;</span>
    <span class="kw1">this</span>.<span class="me1">dbField2</span><span class="sy0">=</span> dbField2<span class="sy0">;</span>
  <span class="br0">&#125;</span>
&nbsp;
  <span class="kw1">public</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">String</span></a> getDbField3<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
    <span class="kw1">return</span> dbField3<span class="sy0">;</span>
  <span class="br0">&#125;</span>
&nbsp;
  <span class="kw1">public</span> <span class="kw4">void</span> setDbField3<span class="br0">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">String</span></a> dbField3<span class="br0">&#41;</span> <span class="br0">&#123;</span>
    <span class="kw1">this</span>.<span class="me1">dbField3</span><span class="sy0">=</span> dbField3<span class="sy0">;</span>
  <span class="br0">&#125;</span>
&nbsp;
  <span class="kw1">public</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">String</span></a> getDbField4<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
    <span class="kw1">return</span> dbField4<span class="sy0">;</span>
  <span class="br0">&#125;</span>
&nbsp;
  <span class="kw1">public</span> <span class="kw4">void</span> setDbField4<span class="br0">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">String</span></a> dbField4<span class="br0">&#41;</span> <span class="br0">&#123;</span>
    <span class="kw1">this</span>.<span class="me1">dbField4</span><span class="sy0">=</span> dbField4<span class="sy0">;</span>
  <span class="br0">&#125;</span>
&nbsp;
  <span class="kw1">public</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">String</span></a> getDbField5<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
    <span class="kw1">return</span> dbField5<span class="sy0">;</span>
  <span class="br0">&#125;</span>
&nbsp;
  <span class="kw1">public</span> <span class="kw4">void</span> setDbField5<span class="br0">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">String</span></a> dbField5<span class="br0">&#41;</span> <span class="br0">&#123;</span>
    <span class="kw1">this</span>.<span class="me1">dbField5</span><span class="sy0">=</span> dbField5<span class="sy0">;</span>
  <span class="br0">&#125;</span>
<span class="br0">&#125;</span></pre></div></div><br />
<strong>Der Writer:</strong></p>
<div id="wpshdo_18" class="wp-synhighlighter-outer"><div id="wpshdt_18" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_18"></a><a id="wpshat_18" class="wp-synhighlighter-title" href="#codesyntax_18"  onClick="javascript:wpsh_toggleBlock(18)" title="Click to show/hide code block">Source code</a></td><td align="right"><a href="#codesyntax_18" onClick="javascript:wpsh_code(18)" title="Show code only"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_18" onClick="javascript:wpsh_print(18)" title="Print code"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_18" class="wp-synhighlighter-inner" style="display: block;"><pre class="xml" style="font-family:monospace;"><span class="sc3"><span class="re1">&lt;bean</span> <span class="re0">id</span>=<span class="st0">&quot;fileWriter&quot;</span> <span class="re0">scope</span>=<span class="st0">&quot;step&quot;</span><span class="re2">&gt;</span></span>
  <span class="sc3"><span class="re1">&lt;property</span> <span class="re0">name</span>=<span class="st0">&quot;resource&quot;</span> <span class="re0">value</span>=<span class="st0">&quot;file:path/to/file/filename.csv&quot;</span> <span class="re2">/&gt;</span></span>
  <span class="sc3"><span class="re1">&lt;property</span> <span class="re0">name</span>=<span class="st0">&quot;encoding&quot;</span> <span class="re0">value</span>=<span class="st0">&quot;ISO-8859-1&quot;</span> <span class="re2">/&gt;</span></span>
  <span class="sc3"><span class="re1">&lt;property</span> <span class="re0">name</span>=<span class="st0">&quot;headerCallback&quot;</span><span class="re2">&gt;</span></span>
    <span class="sc3"><span class="re1">&lt;bean</span> <span class="re0">class</span>=<span class="st0">&quot;de.package.helper.HeaderCallback&quot;</span> <span class="re2">/&gt;</span></span>
  <span class="sc3"><span class="re1">&lt;/property<span class="re2">&gt;</span></span></span>
  <span class="sc3"><span class="re1">&lt;property</span> <span class="re0">name</span>=<span class="st0">&quot;lineAggregator&quot;</span><span class="re2">&gt;</span></span>
    <span class="sc3"><span class="re1">&lt;bean</span> <span class="re0">class</span>=<span class="st0">&quot;org.springframework.batch.item.file.transform.DelimitedLineAggregator&quot;</span><span class="re2">&gt;</span></span>
      <span class="sc3"><span class="re1">&lt;property</span> <span class="re0">name</span>=<span class="st0">&quot;delimiter&quot;</span> <span class="re0">value</span>=<span class="st0">&quot;;&quot;</span> <span class="re2">/&gt;</span></span>
      <span class="sc3"><span class="re1">&lt;property</span> <span class="re0">name</span>=<span class="st0">&quot;fieldExtractor&quot;</span><span class="re2">&gt;</span></span>
        <span class="sc3"><span class="re1">&lt;bean</span> <span class="re0">class</span>=<span class="st0">&quot;org.springframework.batch.item.file.transform.DelimitedLineAggregator&quot;</span><span class="re2">&gt;</span></span>
          <span class="sc3"><span class="re1">&lt;property</span> <span class="re0">name</span>=<span class="st0">&quot;names&quot;</span> <span class="re0">value</span>=<span class="st0">&quot;dbField1, dbField2, dbField3, dbField4, dbField5&quot;</span> <span class="re2">/&gt;</span></span>
        <span class="sc3"><span class="re1">&lt;/bean<span class="re2">&gt;</span></span></span>
      <span class="sc3"><span class="re1">&lt;/property<span class="re2">&gt;</span></span></span>
    <span class="sc3"><span class="re1">&lt;/bean<span class="re2">&gt;</span></span></span>
  <span class="sc3"><span class="re1">&lt;/property<span class="re2">&gt;</span></span></span>
<span class="sc3"><span class="re1">&lt;/bean<span class="re2">&gt;</span></span></span></pre></div></div>
<p>Den HeaderCallback benötigen wir nur, wenn wir in der Datei eine Kopfzeile verwenden wollen, welche nicht vom Reader geliefert wird. Wenn wir diese Zeile haben wollen, müssen wir folgende kleine JavaKlasse verwenden, welche die Zeile in die Datei einfügt.<br />
Es gibt außerdem noch die Möglichkeit, einen FooterCallback zu verwenden, um Zeilen an das ende der Datei anzuhängen, wenn der RowMapper seine Arbeit getan hat. Im meinem Beispiel gehe ich aber nicht weiter darauf ein.</p>
<div id="wpshdo_19" class="wp-synhighlighter-outer"><div id="wpshdt_19" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_19"></a><a id="wpshat_19" class="wp-synhighlighter-title" href="#codesyntax_19"  onClick="javascript:wpsh_toggleBlock(19)" title="Click to show/hide code block">Source code</a></td><td align="right"><a href="#codesyntax_19" onClick="javascript:wpsh_code(19)" title="Show code only"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_19" onClick="javascript:wpsh_print(19)" title="Print code"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_19" class="wp-synhighlighter-inner" style="display: block;"><pre class="java" style="font-family:monospace;"><span class="kw1">package</span> <span class="co2">de.package.helper</span><span class="sy0">;</span>
&nbsp;
<span class="kw1">import</span> <span class="co2">java.io.IOException</span><span class="sy0">;</span>
<span class="kw1">import</span> <span class="co2">java.io.Writer</span><span class="sy0">;</span>
<span class="kw1">import</span> <span class="co2">org.springframework.batch.item.file.FlatFileHeaderCallback</span><span class="sy0">;</span>
&nbsp;
<span class="kw1">public</span> <span class="kw1">class</span> HeaderCallback <span class="kw1">implements</span> FlatFileHeaderCallback <span class="br0">&#123;</span>
&nbsp;
  @Override
  <span class="kw1">public</span> <span class="kw4">void</span> writeHeader<span class="br0">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Awriter+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">Writer</span></a> writer<span class="br0">&#41;</span> <span class="kw1">throws</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Aioexception+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">IOException</span></a> <span class="br0">&#123;</span>
    writer.<span class="me1">write</span><span class="br0">&#40;</span><span class="st0">&quot;FieldHeadline1;FieldHeadline2;FieldHeadline3;FieldHeadline4;FieldHeadline5&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span>
  <span class="br0">&#125;</span>
<span class="br0">&#125;</span></pre></div></div>
<p>Diese Beans zusammen können nun über einen BatchJob aufgerufen werden.<br />
<div id="wpshdo_20" class="wp-synhighlighter-outer"><div id="wpshdt_20" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_20"></a><a id="wpshat_20" class="wp-synhighlighter-title" href="#codesyntax_20"  onClick="javascript:wpsh_toggleBlock(20)" title="Click to show/hide code block">Source code</a></td><td align="right"><a href="#codesyntax_20" onClick="javascript:wpsh_code(20)" title="Show code only"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_20" onClick="javascript:wpsh_print(20)" title="Print code"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_20" class="wp-synhighlighter-inner" style="display: block;"><pre class="xml" style="font-family:monospace;">&nbsp;</pre></div></div></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.luventas-webdesign.de/?feed=rss2&#038;p=248</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Create text files with spring batch</title>
		<link>http://blog.luventas-webdesign.de/?p=243</link>
		<comments>http://blog.luventas-webdesign.de/?p=243#comments</comments>
		<pubDate>Tue, 06 Sep 2011 19:03:46 +0000</pubDate>
		<dc:creator>luventas</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Spring]]></category>

		<guid isPermaLink="false">http://blog.luventas-webdesign.de/?p=243</guid>
		<description><![CDATA[To create a file over spring batch, first you need a marshaller with a Reader and a Writer. The Reader: The RowMapper which is used by the Reader: The Domain Object which is used by the Reader: The Writer: The &#8230; <a href="http://blog.luventas-webdesign.de/?p=243">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>To create a file over spring batch, first you need a marshaller with a Reader and a Writer.</p>
<p><strong>The Reader:</strong></p>
<div id="wpshdo_21" class="wp-synhighlighter-outer"><div id="wpshdt_21" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_21"></a><a id="wpshat_21" class="wp-synhighlighter-title" href="#codesyntax_21"  onClick="javascript:wpsh_toggleBlock(21)" title="Click to show/hide code block">Source code</a></td><td align="right"><a href="#codesyntax_21" onClick="javascript:wpsh_code(21)" title="Show code only"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_21" onClick="javascript:wpsh_print(21)" title="Print code"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_21" class="wp-synhighlighter-inner" style="display: block;"><pre class="xml" style="font-family:monospace;"><span class="sc3"><span class="re1">&lt;bean</span> <span class="re0">id</span>=<span class="st0">&quot;fileReader&quot;</span><span class="re2">&gt;</span></span>
  <span class="sc3"><span class="re1">&lt;property</span> <span class="re0">name</span>=<span class="st0">&quot;dataSource&quot;</span> <span class="re0">ref</span>=<span class="st0">&quot;dataSource&quot;</span> <span class="re2">/&gt;</span></span>
  <span class="sc3"><span class="re1">&lt;property</span> <span class="re0">name</span>=<span class="st0">&quot;sql&quot;</span> <span class="re0">value</span>=<span class="st0">&quot;SELECT * FROM table&quot;</span> <span class="re2">/&gt;</span></span>
  <span class="sc3"><span class="re1">&lt;property</span> <span class="re0">name</span>=<span class="st0">&quot;rowMapper&quot;</span><span class="re2">&gt;</span></span>
    <span class="sc3"><span class="re1">&lt;bean</span> <span class="re0">class</span>=<span class="st0">&quot;de.package.rowmapper.FileRowMapper&quot;</span> <span class="re2">/&gt;</span></span>
  <span class="sc3"><span class="re1">&lt;/property<span class="re2">&gt;</span></span></span>
<span class="sc3"><span class="re1">&lt;/bean<span class="re2">&gt;</span></span></span></pre></div></div><br />
<span id="more-243"></span></p>
<p><strong>The RowMapper which is used by the Reader:</strong><br />
<div id="wpshdo_22" class="wp-synhighlighter-outer"><div id="wpshdt_22" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_22"></a><a id="wpshat_22" class="wp-synhighlighter-title" href="#codesyntax_22"  onClick="javascript:wpsh_toggleBlock(22)" title="Click to show/hide code block">Source code</a></td><td align="right"><a href="#codesyntax_22" onClick="javascript:wpsh_code(22)" title="Show code only"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_22" onClick="javascript:wpsh_print(22)" title="Print code"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_22" class="wp-synhighlighter-inner" style="display: block;"><pre class="java" style="font-family:monospace;"><span class="kw1">package</span> <span class="co2">de.package.rowmapper</span><span class="sy0">;</span>
&nbsp;
<span class="kw1">import</span> <span class="co2">java.sql.ResultSet</span><span class="sy0">;</span>
<span class="kw1">import</span> <span class="co2">java.sql.SQLException</span><span class="sy0">;</span>
<span class="kw1">import</span> <span class="co2">org.apache.commons.logging.Log</span><span class="sy0">;</span>
<span class="kw1">import</span> <span class="co2">org.apache.commons.logging.LogFactory</span><span class="sy0">;</span>
<span class="kw1">import</span> <span class="co2">org.springframework.jdbc.core.RowMapper</span><span class="sy0">;</span>
<span class="kw1">import</span> <span class="co2">de.package.domainObjects.SftpFileObject</span><span class="sy0">;</span>
&nbsp;
<span class="kw1">public</span> <span class="kw1">class</span> FileRowMapper <span class="kw1">implements</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Arowmapper+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">RowMapper</span></a> <span class="br0">&#123;</span>
&nbsp;
  <span class="kw1">public</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Aobject+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">Object</span></a> mapRow<span class="br0">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Aresultset+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">ResultSet</span></a> rs, <span class="kw4">int</span> rowNum<span class="br0">&#41;</span> <span class="kw1">throws</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Asqlexception+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">SQLException</span></a> <span class="br0">&#123;</span>
    FileLineObject fileLine <span class="sy0">=</span> <span class="kw1">new</span> FileLineObject<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
    <span class="kw1">try</span> <span class="br0">&#123;</span>
      fileLine.<span class="me1">setDbField1</span><span class="br0">&#40;</span>rs.<span class="me1">getString</span><span class="br0">&#40;</span><span class="st0">&quot;dbField1&quot;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
      fileLine.<span class="me1">setDbField2</span><span class="br0">&#40;</span>rs.<span class="me1">getString</span><span class="br0">&#40;</span><span class="st0">&quot;dbField2&quot;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
      fileLine.<span class="me1">setDbField3</span><span class="br0">&#40;</span>rs.<span class="me1">getString</span><span class="br0">&#40;</span><span class="st0">&quot;dbField3&quot;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
      fileLine.<span class="me1">setDbField4</span><span class="br0">&#40;</span>rs.<span class="me1">getString</span><span class="br0">&#40;</span><span class="st0">&quot;dbField4&quot;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
      fileLine.<span class="me1">setDbField5</span><span class="br0">&#40;</span>rs.<span class="me1">getString</span><span class="br0">&#40;</span><span class="st0">&quot;dbField5&quot;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
    <span class="br0">&#125;</span> <span class="kw1">catch</span> <span class="br0">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Asqlexception+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">SQLException</span></a> e<span class="br0">&#41;</span> <span class="br0">&#123;</span>
      <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Asystem+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">System</span></a>.<span class="me1">out</span>.<span class="me1">println</span><span class="br0">&#40;</span><span class="st0">&quot;Can't create data row for export File.&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span>
    <span class="br0">&#125;</span>
    <span class="kw1">return</span> fileLine<span class="sy0">;</span>
  <span class="br0">&#125;</span>
<span class="br0">&#125;</span></pre></div></div></p>
<p><strong>The Domain Object which is used by the Reader:</strong><br />
<div id="wpshdo_23" class="wp-synhighlighter-outer"><div id="wpshdt_23" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_23"></a><a id="wpshat_23" class="wp-synhighlighter-title" href="#codesyntax_23"  onClick="javascript:wpsh_toggleBlock(23)" title="Click to show/hide code block">Source code</a></td><td align="right"><a href="#codesyntax_23" onClick="javascript:wpsh_code(23)" title="Show code only"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_23" onClick="javascript:wpsh_print(23)" title="Print code"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_23" class="wp-synhighlighter-inner" style="display: block;"><pre class="java" style="font-family:monospace;"><span class="kw1">package</span> <span class="co2">de.package.domainObjects</span><span class="sy0">;</span>
&nbsp;
<span class="kw1">public</span> <span class="kw1">class</span> fileLineObject <span class="kw1">implements</span> java.<span class="me1">io</span>.<a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Aserializable+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">Serializable</span></a> <span class="br0">&#123;</span>
&nbsp;
  <span class="kw1">private</span> <span class="kw1">static</span> <span class="kw1">final</span> <span class="kw4">long</span> serialVersionUID <span class="sy0">=</span> 1L<span class="sy0">;</span>
&nbsp;
  <span class="kw1">public</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">String</span></a> dbField1<span class="sy0">;</span>
  <span class="kw1">public</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">String</span></a> dbField2<span class="sy0">;</span>
  <span class="kw1">public</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">String</span></a> dbField3<span class="sy0">;</span>
  <span class="kw1">public</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">String</span></a> dbField4<span class="sy0">;</span>
  <span class="kw1">public</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">String</span></a> dbField5<span class="sy0">;</span>
&nbsp;
  <span class="kw1">public</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">String</span></a> getDbField1<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
    <span class="kw1">return</span> dbField1<span class="sy0">;</span>
  <span class="br0">&#125;</span>
&nbsp;
  <span class="kw1">public</span> <span class="kw4">void</span> setDbField1<span class="br0">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">String</span></a> dbField1<span class="br0">&#41;</span> <span class="br0">&#123;</span>
    <span class="kw1">this</span>.<span class="me1">dbField1</span><span class="sy0">=</span> dbField1<span class="sy0">;</span>
  <span class="br0">&#125;</span>
&nbsp;
  <span class="kw1">public</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">String</span></a> getDbField2<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
    <span class="kw1">return</span> dbField2<span class="sy0">;</span>
  <span class="br0">&#125;</span>
&nbsp;
  <span class="kw1">public</span> <span class="kw4">void</span> setDbField2<span class="br0">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">String</span></a> dbField2<span class="br0">&#41;</span> <span class="br0">&#123;</span>
    <span class="kw1">this</span>.<span class="me1">dbField2</span><span class="sy0">=</span> dbField2<span class="sy0">;</span>
  <span class="br0">&#125;</span>
&nbsp;
  <span class="kw1">public</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">String</span></a> getDbField3<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
    <span class="kw1">return</span> dbField3<span class="sy0">;</span>
  <span class="br0">&#125;</span>
&nbsp;
  <span class="kw1">public</span> <span class="kw4">void</span> setDbField3<span class="br0">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">String</span></a> dbField3<span class="br0">&#41;</span> <span class="br0">&#123;</span>
    <span class="kw1">this</span>.<span class="me1">dbField3</span><span class="sy0">=</span> dbField3<span class="sy0">;</span>
  <span class="br0">&#125;</span>
&nbsp;
  <span class="kw1">public</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">String</span></a> getDbField4<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
    <span class="kw1">return</span> dbField4<span class="sy0">;</span>
  <span class="br0">&#125;</span>
&nbsp;
  <span class="kw1">public</span> <span class="kw4">void</span> setDbField4<span class="br0">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">String</span></a> dbField4<span class="br0">&#41;</span> <span class="br0">&#123;</span>
    <span class="kw1">this</span>.<span class="me1">dbField4</span><span class="sy0">=</span> dbField4<span class="sy0">;</span>
  <span class="br0">&#125;</span>
&nbsp;
  <span class="kw1">public</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">String</span></a> getDbField5<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
    <span class="kw1">return</span> dbField5<span class="sy0">;</span>
  <span class="br0">&#125;</span>
&nbsp;
  <span class="kw1">public</span> <span class="kw4">void</span> setDbField5<span class="br0">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">String</span></a> dbField5<span class="br0">&#41;</span> <span class="br0">&#123;</span>
    <span class="kw1">this</span>.<span class="me1">dbField5</span><span class="sy0">=</span> dbField5<span class="sy0">;</span>
  <span class="br0">&#125;</span>
<span class="br0">&#125;</span></pre></div></div></p>
<p><strong>The Writer:</strong></p>
<div id="wpshdo_24" class="wp-synhighlighter-outer"><div id="wpshdt_24" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_24"></a><a id="wpshat_24" class="wp-synhighlighter-title" href="#codesyntax_24"  onClick="javascript:wpsh_toggleBlock(24)" title="Click to show/hide code block">Source code</a></td><td align="right"><a href="#codesyntax_24" onClick="javascript:wpsh_code(24)" title="Show code only"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_24" onClick="javascript:wpsh_print(24)" title="Print code"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_24" class="wp-synhighlighter-inner" style="display: block;"><pre class="xml" style="font-family:monospace;"><span class="sc3"><span class="re1">&lt;bean</span> <span class="re0">id</span>=<span class="st0">&quot;fileWriter&quot;</span> <span class="re0">scope</span>=<span class="st0">&quot;step&quot;</span><span class="re2">&gt;</span></span>
  <span class="sc3"><span class="re1">&lt;property</span> <span class="re0">name</span>=<span class="st0">&quot;resource&quot;</span> <span class="re0">value</span>=<span class="st0">&quot;file:path/to/file/filename.csv&quot;</span> <span class="re2">/&gt;</span></span>
  <span class="sc3"><span class="re1">&lt;property</span> <span class="re0">name</span>=<span class="st0">&quot;encoding&quot;</span> <span class="re0">value</span>=<span class="st0">&quot;ISO-8859-1&quot;</span> <span class="re2">/&gt;</span></span>
  <span class="sc3"><span class="re1">&lt;property</span> <span class="re0">name</span>=<span class="st0">&quot;headerCallback&quot;</span><span class="re2">&gt;</span></span>
    <span class="sc3"><span class="re1">&lt;bean</span> <span class="re0">class</span>=<span class="st0">&quot;de.package.helper.HeaderCallback&quot;</span> <span class="re2">/&gt;</span></span>
  <span class="sc3"><span class="re1">&lt;/property<span class="re2">&gt;</span></span></span>
  <span class="sc3"><span class="re1">&lt;property</span> <span class="re0">name</span>=<span class="st0">&quot;lineAggregator&quot;</span><span class="re2">&gt;</span></span>
    <span class="sc3"><span class="re1">&lt;bean</span> <span class="re0">class</span>=<span class="st0">&quot;org.springframework.batch.item.file.transform.DelimitedLineAggregator&quot;</span><span class="re2">&gt;</span></span>
      <span class="sc3"><span class="re1">&lt;property</span> <span class="re0">name</span>=<span class="st0">&quot;delimiter&quot;</span> <span class="re0">value</span>=<span class="st0">&quot;;&quot;</span> <span class="re2">/&gt;</span></span>
      <span class="sc3"><span class="re1">&lt;property</span> <span class="re0">name</span>=<span class="st0">&quot;fieldExtractor&quot;</span><span class="re2">&gt;</span></span>
        <span class="sc3"><span class="re1">&lt;bean</span> <span class="re0">class</span>=<span class="st0">&quot;org.springframework.batch.item.file.transform.DelimitedLineAggregator&quot;</span><span class="re2">&gt;</span></span>
          <span class="sc3"><span class="re1">&lt;property</span> <span class="re0">name</span>=<span class="st0">&quot;names&quot;</span> <span class="re0">value</span>=<span class="st0">&quot;dbField1, dbField2, dbField3, dbField4, dbField5&quot;</span> <span class="re2">/&gt;</span></span>
        <span class="sc3"><span class="re1">&lt;/bean<span class="re2">&gt;</span></span></span>
      <span class="sc3"><span class="re1">&lt;/property<span class="re2">&gt;</span></span></span>
    <span class="sc3"><span class="re1">&lt;/bean<span class="re2">&gt;</span></span></span>
  <span class="sc3"><span class="re1">&lt;/property<span class="re2">&gt;</span></span></span>
<span class="sc3"><span class="re1">&lt;/bean<span class="re2">&gt;</span></span></span></pre></div></div>
<p>The HeaderCallback we only need, if we want to create a headline in the file, which is not coming from the reader. If we want to use the headline, we have to use the following small java class, which fills the line and write it to the file.<br />
There is also the possibility to use a FooterCallback to write line(s) at the end of the file after the RowMapper has done his work, but in my example I do not used it.</p>
<div id="wpshdo_25" class="wp-synhighlighter-outer"><div id="wpshdt_25" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_25"></a><a id="wpshat_25" class="wp-synhighlighter-title" href="#codesyntax_25"  onClick="javascript:wpsh_toggleBlock(25)" title="Click to show/hide code block">Source code</a></td><td align="right"><a href="#codesyntax_25" onClick="javascript:wpsh_code(25)" title="Show code only"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_25" onClick="javascript:wpsh_print(25)" title="Print code"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_25" class="wp-synhighlighter-inner" style="display: block;"><pre class="java" style="font-family:monospace;"><span class="kw1">package</span> <span class="co2">de.package.helper</span><span class="sy0">;</span>
&nbsp;
<span class="kw1">import</span> <span class="co2">java.io.IOException</span><span class="sy0">;</span>
<span class="kw1">import</span> <span class="co2">java.io.Writer</span><span class="sy0">;</span>
<span class="kw1">import</span> <span class="co2">org.springframework.batch.item.file.FlatFileHeaderCallback</span><span class="sy0">;</span>
&nbsp;
<span class="kw1">public</span> <span class="kw1">class</span> HeaderCallback <span class="kw1">implements</span> FlatFileHeaderCallback <span class="br0">&#123;</span>
&nbsp;
  @Override
  <span class="kw1">public</span> <span class="kw4">void</span> writeHeader<span class="br0">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Awriter+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">Writer</span></a> writer<span class="br0">&#41;</span> <span class="kw1">throws</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Aioexception+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">IOException</span></a> <span class="br0">&#123;</span>
    writer.<span class="me1">write</span><span class="br0">&#40;</span><span class="st0">&quot;FieldHeadline1;FieldHeadline2;FieldHeadline3;FieldHeadline4;FieldHeadline5&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span>
  <span class="br0">&#125;</span>
<span class="br0">&#125;</span></pre></div></div>
<p>These beans together can be now called by a BatchJob.<br />
<div id="wpshdo_26" class="wp-synhighlighter-outer"><div id="wpshdt_26" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_26"></a><a id="wpshat_26" class="wp-synhighlighter-title" href="#codesyntax_26"  onClick="javascript:wpsh_toggleBlock(26)" title="Click to show/hide code block">Source code</a></td><td align="right"><a href="#codesyntax_26" onClick="javascript:wpsh_code(26)" title="Show code only"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_26" onClick="javascript:wpsh_print(26)" title="Print code"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_26" class="wp-synhighlighter-inner" style="display: block;"><pre class="xml" style="font-family:monospace;">&nbsp;</pre></div></div></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.luventas-webdesign.de/?feed=rss2&#038;p=243</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Daten sicher versenden mit SFTP und Spring Batch</title>
		<link>http://blog.luventas-webdesign.de/?p=226</link>
		<comments>http://blog.luventas-webdesign.de/?p=226#comments</comments>
		<pubDate>Mon, 05 Sep 2011 20:17:53 +0000</pubDate>
		<dc:creator>luventas</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Spring]]></category>

		<guid isPermaLink="false">http://blog.luventas-webdesign.de/?p=226</guid>
		<description><![CDATA[Datenversand mit spring batch in auf viele Weisen möglich. Der bekannteste Weg ist der Versand von XML-Dateien aber das Springframework bietet auch eine Menge anderer Möglichkeiten an. Einer Dieser Wege ist der sichere Datenversand über SFTP. Für diesen Fall müssen &#8230; <a href="http://blog.luventas-webdesign.de/?p=226">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Datenversand mit spring batch in auf viele Weisen möglich. Der bekannteste Weg ist der Versand von XML-Dateien aber das Springframework bietet auch eine Menge anderer Möglichkeiten an. Einer Dieser Wege ist der sichere Datenversand über SFTP. Für diesen Fall müssen wir das Spring integration Framework verwenden.<span id="more-226"></span></p>
<p>Als erstes benötigen wir eine SftpSessionFactory für den Versand der Dateien an den SFTP-Server. Diese Factory beinhaltet die Zugangsdaten zum Server.</p>
<div id="wpshdo_27" class="wp-synhighlighter-outer"><div id="wpshdt_27" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_27"></a><a id="wpshat_27" class="wp-synhighlighter-title" href="#codesyntax_27"  onClick="javascript:wpsh_toggleBlock(27)" title="Click to show/hide code block">Source code</a></td><td align="right"><a href="#codesyntax_27" onClick="javascript:wpsh_code(27)" title="Show code only"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_27" onClick="javascript:wpsh_print(27)" title="Print code"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_27" class="wp-synhighlighter-inner" style="display: block;"><pre class="xml" style="font-family:monospace;"><span class="sc3"><span class="re1">&lt;bean</span> <span class="re0">id</span>=<span class="st0">&quot;sftpSessionFactory&quot;</span> <span class="re0">class</span>=<span class="st0">&quot;org.springframework.integration.sftp.session.DefaultSftpSessionFactory&quot;</span><span class="re2">&gt;</span></span>
  <span class="sc3"><span class="re1">&lt;property</span> <span class="re0">name</span>=<span class="st0">&quot;host&quot;</span> <span class="re0">value</span>=<span class="st0">&quot;host.of.receiver&quot;</span><span class="re2">/&gt;</span></span>
  <span class="sc3"><span class="re1">&lt;property</span> <span class="re0">name</span>=<span class="st0">&quot;user&quot;</span> <span class="re0">value</span>=<span class="st0">&quot;username&quot;</span><span class="re2">/&gt;</span></span>
  <span class="sc3"><span class="re1">&lt;property</span> <span class="re0">name</span>=<span class="st0">&quot;password&quot;</span> <span class="re0">value</span>=<span class="st0">&quot;secureSftpPassword&quot;</span><span class="re2">/&gt;</span></span>
  <span class="sc3"><span class="re1">&lt;property</span> <span class="re0">name</span>=<span class="st0">&quot;port&quot;</span> <span class="re0">value</span>=<span class="st0">&quot;22&quot;</span><span class="re2">/&gt;</span></span>
<span class="sc3"><span class="re1">&lt;/bean<span class="re2">&gt;</span></span></span></pre></div></div>
<p>Dann brauchen wir einen Channel, über den die Daten gesendet werden können.</p>
<div id="wpshdo_28" class="wp-synhighlighter-outer"><div id="wpshdt_28" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_28"></a><a id="wpshat_28" class="wp-synhighlighter-title" href="#codesyntax_28"  onClick="javascript:wpsh_toggleBlock(28)" title="Click to show/hide code block">Source code</a></td><td align="right"><a href="#codesyntax_28" onClick="javascript:wpsh_code(28)" title="Show code only"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_28" onClick="javascript:wpsh_print(28)" title="Print code"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_28" class="wp-synhighlighter-inner" style="display: block;"><pre class="xml" style="font-family:monospace;"><span class="sc3"><span class="re1">&lt;int:channel</span> <span class="re0">id</span>=<span class="st0">&quot;outputChannel&quot;</span> <span class="re2">/&gt;</span></span></pre></div></div>
<p>Als nächstes müssen wir den Channel mit der SftpSessionFactory verlinken. Hierfür verwenden wir einen sogenannten outbound-channel-adapter, welcher den Channel und die SftpSessionFactory beinhaltet und dem Framework mitteilt, mit welchem Namen die Datei auf dem zielserver gespeichert werden soll (remote-filename-generator).</p>
<div id="wpshdo_29" class="wp-synhighlighter-outer"><div id="wpshdt_29" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_29"></a><a id="wpshat_29" class="wp-synhighlighter-title" href="#codesyntax_29"  onClick="javascript:wpsh_toggleBlock(29)" title="Click to show/hide code block">Source code</a></td><td align="right"><a href="#codesyntax_29" onClick="javascript:wpsh_code(29)" title="Show code only"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_29" onClick="javascript:wpsh_print(29)" title="Print code"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_29" class="wp-synhighlighter-inner" style="display: block;"><pre class="xml" style="font-family:monospace;"><span class="sc3"><span class="re1">&lt;int-sftp:outbound-channel-adapter</span> <span class="re0">id</span>=<span class="st0">&quot;sftpOutboundAdapter&quot;</span></span>
<span class="sc3">  <span class="re0">session-factory</span>=<span class="st0">&quot;sftpSessionFactory&quot;</span></span>
<span class="sc3">  <span class="re0">channel</span>=<span class="st0">&quot;outputChannel&quot;</span></span>
<span class="sc3">  <span class="re0">charset</span>=<span class="st0">&quot;UTF-8&quot;</span></span>
<span class="sc3">  <span class="re0">remote-directory</span>=<span class="st0">&quot;/target&quot;</span></span>
<span class="sc3">  <span class="re0">remote-filename-generator</span>=<span class="st0">&quot;fileNameGenerator&quot;</span> <span class="re2">/&gt;</span></span></pre></div></div>
<p>Um es uns einfach zu machen, sagen wir einfach einmal, die Datei soll unter dem selben Namen wie auf dem sendenden Server gespeichert werden, denn dann können wir den DefaultFileNameGenerator vom Spring integration Framework verwenden.</p>
<div id="wpshdo_30" class="wp-synhighlighter-outer"><div id="wpshdt_30" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_30"></a><a id="wpshat_30" class="wp-synhighlighter-title" href="#codesyntax_30"  onClick="javascript:wpsh_toggleBlock(30)" title="Click to show/hide code block">Source code</a></td><td align="right"><a href="#codesyntax_30" onClick="javascript:wpsh_code(30)" title="Show code only"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_30" onClick="javascript:wpsh_print(30)" title="Print code"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_30" class="wp-synhighlighter-inner" style="display: block;"><pre class="xml" style="font-family:monospace;"><span class="sc3"><span class="re1">&lt;bean</span> <span class="re0">id</span>=<span class="st0">&quot;fileNameGenerator&quot;</span> <span class="re0">class</span>=<span class="st0">&quot;org.springframework.integration.file.DefaultFileNameGenerator&quot;</span> <span class="re2">/&gt;</span></span></pre></div></div>
<p>Jetzt möchten wir die Datei aber wirklich senden. Hierfür benötigen wir ein Tasklet für die Bussiness Logik und zu guter Letzt einen BatchJob.<br />
Für das Tasklet verwenden wir folgende Java Klasse und Bean, der wir den Dateinamen als Parameter mitgeben:</p>
<p><strong>The Tasklet:</strong><br />
<div id="wpshdo_31" class="wp-synhighlighter-outer"><div id="wpshdt_31" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_31"></a><a id="wpshat_31" class="wp-synhighlighter-title" href="#codesyntax_31"  onClick="javascript:wpsh_toggleBlock(31)" title="Click to show/hide code block">Source code</a></td><td align="right"><a href="#codesyntax_31" onClick="javascript:wpsh_code(31)" title="Show code only"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_31" onClick="javascript:wpsh_print(31)" title="Print code"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_31" class="wp-synhighlighter-inner" style="display: block;"><pre class="xml" style="font-family:monospace;"><span class="sc3"><span class="re1">&lt;bean</span> <span class="re0">id</span>=<span class="st0">&quot;sftpJobTasklet&quot;</span> <span class="re0">class</span>=<span class="st0">&quot;de.package.tasklets.SftpTasklet&quot;</span><span class="re2">&gt;</span></span>
  <span class="sc3"><span class="re1">&lt;property</span> <span class="re0">name</span>=<span class="st0">&quot;fileName&quot;</span> <span class="re0">value</span>=<span class="st0">&quot; path/to/file/filename.csv&quot;</span> <span class="re2">/&gt;</span></span>
  <span class="sc3"><span class="re1">&lt;property</span> <span class="re0">name</span>=<span class="st0">&quot;sftpChannel&quot;</span> <span class="re0">ref</span>=<span class="st0">&quot;outputChannel&quot;</span> <span class="re2">/&gt;</span></span>
<span class="sc3"><span class="re1">&lt;/bean<span class="re2">&gt;</span></span></span></pre></div></div></p>
<p><strong>The Javacode:</strong><br />
<div id="wpshdo_32" class="wp-synhighlighter-outer"><div id="wpshdt_32" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_32"></a><a id="wpshat_32" class="wp-synhighlighter-title" href="#codesyntax_32"  onClick="javascript:wpsh_toggleBlock(32)" title="Click to show/hide code block">Source code</a></td><td align="right"><a href="#codesyntax_32" onClick="javascript:wpsh_code(32)" title="Show code only"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_32" onClick="javascript:wpsh_print(32)" title="Print code"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_32" class="wp-synhighlighter-inner" style="display: block;"><pre class="java" style="font-family:monospace;"><span class="kw1">package</span> <span class="co2">de.package.tasklets</span><span class="sy0">;</span>
&nbsp;
<span class="kw1">import</span> <span class="co2">java.io.File</span><span class="sy0">;</span>
<span class="kw1">import</span> <span class="co2">org.springframework.batch.core.StepContribution</span><span class="sy0">;</span>
<span class="kw1">import</span> <span class="co2">org.springframework.batch.core.scope.context.ChunkContext</span><span class="sy0">;</span>
<span class="kw1">import</span> <span class="co2">org.springframework.batch.core.step.tasklet.Tasklet</span><span class="sy0">;</span>
<span class="kw1">import</span> <span class="co2">org.springframework.batch.repeat.RepeatStatus</span><span class="sy0">;</span>
<span class="kw1">import</span> <span class="co2">org.springframework.context.ApplicationContext</span><span class="sy0">;</span>
<span class="kw1">import</span> <span class="co2">org.springframework.context.support.ClassPathXmlApplicationContext</span><span class="sy0">;</span>
<span class="kw1">import</span> <span class="co2">org.springframework.integration.Message</span><span class="sy0">;</span>
<span class="kw1">import</span> <span class="co2">org.springframework.integration.MessageChannel</span><span class="sy0">;</span>
<span class="kw1">import</span> <span class="co2">org.springframework.integration.support.MessageBuilder</span><span class="sy0">;</span>
&nbsp;
<span class="kw1">public</span> <span class="kw1">class</span> SftpTasklet <span class="kw1">implements</span> Tasklet <span class="br0">&#123;</span>
&nbsp;
  <span class="kw1">private</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">String</span></a> fileName<span class="sy0">;</span>
  <span class="kw1">private</span> MessageChannel sftpChannel<span class="sy0">;</span>
&nbsp;
  @Override
  <span class="kw1">public</span> RepeatStatus execute<span class="br0">&#40;</span>StepContribution contribution, ChunkContext chunkContext<span class="br0">&#41;</span> <span class="kw1">throws</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Aexception+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">Exception</span></a> <span class="br0">&#123;</span>
&nbsp;
    <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Afile+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">File</span></a> file <span class="sy0">=</span> <span class="kw1">new</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Afile+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">File</span></a><span class="br0">&#40;</span>fileName<span class="br0">&#41;</span><span class="sy0">;</span>
    <span class="kw1">if</span> <span class="br0">&#40;</span>file.<span class="me1">exists</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
      Message message <span class="sy0">=</span> MessageBuilder.<span class="me1">withPayload</span><span class="br0">&#40;</span>file<span class="br0">&#41;</span>.<span class="me1">build</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
      <span class="kw1">try</span> <span class="br0">&#123;</span>
        sftpChannel.<span class="me1">send</span><span class="br0">&#40;</span>message<span class="br0">&#41;</span><span class="sy0">;</span>
      <span class="br0">&#125;</span> <span class="kw1">catch</span> <span class="br0">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Aexception+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">Exception</span></a> e<span class="br0">&#41;</span> <span class="br0">&#123;</span>
        <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Asystem+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">System</span></a>.<span class="me1">out</span>.<span class="me1">println</span><span class="br0">&#40;</span><span class="st0">&quot;Could not send file per SFTP: &quot;</span> <span class="sy0">+</span> e<span class="br0">&#41;</span><span class="sy0">;</span>
      <span class="br0">&#125;</span>
    <span class="br0">&#125;</span> <span class="kw1">else</span> <span class="br0">&#123;</span>
      <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Asystem+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">System</span></a>.<span class="me1">out</span>.<span class="me1">println</span><span class="br0">&#40;</span><span class="st0">&quot;File does not exist.&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span>
    <span class="br0">&#125;</span>
    <span class="kw1">return</span> RepeatStatus.<span class="me1">FINISHED</span><span class="sy0">;</span>
  <span class="br0">&#125;</span>
&nbsp;
  <span class="kw1">public</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">String</span></a> getFileName<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
    <span class="kw1">return</span> fileName<span class="sy0">;</span>
  <span class="br0">&#125;</span>
&nbsp;
  <span class="kw1">public</span> <span class="kw4">void</span> setFileName<span class="br0">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">String</span></a> fileName<span class="br0">&#41;</span> <span class="br0">&#123;</span>
    <span class="kw1">this</span>.<span class="me1">fileName</span> <span class="sy0">=</span> fileName<span class="sy0">;</span>
  <span class="br0">&#125;</span>
&nbsp;
  <span class="kw1">public</span> MessageChannel getSftpChannel<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
    <span class="kw1">return</span> <span class="kw1">this</span>.<span class="me1">sftpChannel</span><span class="sy0">;</span>
  <span class="br0">&#125;</span>
&nbsp;
  <span class="kw1">public</span> <span class="kw4">void</span> setSftpChannel<span class="br0">&#40;</span>MessageChannel sftpChannel<span class="br0">&#41;</span> <span class="br0">&#123;</span>
    <span class="kw1">this</span>.<span class="me1">sftpChannel</span> <span class="sy0">=</span> sftpChannel<span class="sy0">;</span>
  <span class="br0">&#125;</span>
<span class="br0">&#125;</span></pre></div></div></p>
<p>Und nun, zu guter Letzt, der XML-Code für den BatchJob:<br />
<div id="wpshdo_33" class="wp-synhighlighter-outer"><div id="wpshdt_33" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_33"></a><a id="wpshat_33" class="wp-synhighlighter-title" href="#codesyntax_33"  onClick="javascript:wpsh_toggleBlock(33)" title="Click to show/hide code block">Source code</a></td><td align="right"><a href="#codesyntax_33" onClick="javascript:wpsh_code(33)" title="Show code only"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_33" onClick="javascript:wpsh_print(33)" title="Print code"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_33" class="wp-synhighlighter-inner" style="display: block;"><pre class="xml" style="font-family:monospace;"><span class="sc3"><span class="re1">&lt;batch:job</span> <span class="re0">id</span>=<span class="st0">&quot;sftpJob&quot;</span> <span class="re0">restartable</span>=<span class="st0">&quot;false&quot;</span><span class="re2">&gt;</span></span>
  <span class="sc3"><span class="re1">&lt;batch:step</span> <span class="re0">id</span>=<span class="st0">&quot;sftpFileGenerateStep&quot;</span> <span class="re0">next</span>=<span class="st0">&quot;sftpFileSendStep&quot;</span><span class="re2">&gt;</span></span>
    <span class="sc3"><span class="re1">&lt;batch:tasklet<span class="re2">&gt;</span></span></span>
      <span class="sc3"><span class="re1">&lt;batch:chunk</span> <span class="re0">reader</span>=<span class="st0">&quot;sftpFileCreator&quot;</span> <span class="re0">writer</span>=<span class="st0">&quot;sftpFileWriter&quot;</span> <span class="re0">commit-interval</span>=<span class="st0">&quot;100&quot;</span> <span class="re2">/&gt;</span></span>
      <span class="sc3"><span class="re1">&lt;batch:listeners<span class="re2">&gt;</span></span></span>
        <span class="sc3"><span class="re1">&lt;batch:listener</span> <span class="re0">ref</span>=<span class="st0">&quot;fileNameListener&quot;</span> <span class="re2">/&gt;</span></span>
      <span class="sc3"><span class="re1">&lt;/batch:listeners<span class="re2">&gt;</span></span></span>
    <span class="sc3"><span class="re1">&lt;/batch:tasklet<span class="re2">&gt;</span></span></span>
  <span class="sc3"><span class="re1">&lt;/batch:step<span class="re2">&gt;</span></span></span>
  <span class="sc3"><span class="re1">&lt;batch:step</span> <span class="re0">id</span>=<span class="st0">&quot;sftpFileSendStep&quot;</span><span class="re2">&gt;</span></span>
    <span class="sc3"><span class="re1">&lt;batch:tasklet</span> <span class="re0">ref</span>=<span class="st0">&quot;sftpJobTasklet&quot;</span> <span class="re2">/&gt;</span></span>
  <span class="sc3"><span class="re1">&lt;/batch:step<span class="re2">&gt;</span></span></span>
<span class="sc3"><span class="re1">&lt;/batch:job<span class="re2">&gt;</span></span></span></pre></div></div></p>
<p>dieser BatchJob kann nun durch einen CronJob auf dem Server gestartet werden.</p>
<p>Zum Abschluß noch der Header der XML-Datei (applicationContext.xml), welche die beschriebenen Beans beinhaltet:</p>
<div id="wpshdo_34" class="wp-synhighlighter-outer"><div id="wpshdt_34" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_34"></a><a id="wpshat_34" class="wp-synhighlighter-title" href="#codesyntax_34"  onClick="javascript:wpsh_toggleBlock(34)" title="Click to show/hide code block">Source code</a></td><td align="right"><a href="#codesyntax_34" onClick="javascript:wpsh_code(34)" title="Show code only"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_34" onClick="javascript:wpsh_print(34)" title="Print code"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_34" class="wp-synhighlighter-inner" style="display: block;"><pre class="xml" style="font-family:monospace;"><span class="sc3"><span class="re1">&lt;?xml</span> <span class="re0">version</span>=<span class="st0">&quot;1.0&quot;</span> <span class="re0">encoding</span>=<span class="st0">&quot;UTF-8&quot;</span><span class="re2">?&gt;</span></span>
  <span class="sc3"><span class="re1">&lt;beans</span> <span class="re0">xmlns</span>=<span class="st0">&quot;http://www.springframework.org/schema/beans&quot;</span></span>
<span class="sc3">  <span class="re0">xmlns:batch</span>=<span class="st0">&quot;http://www.springframework.org/schema/batch&quot;</span></span>
<span class="sc3">  <span class="re0">xmlns:int</span>=<span class="st0">&quot;http://www.springframework.org/schema/integration&quot;</span></span>
<span class="sc3">  <span class="re0">xmlns:int-file</span>=<span class="st0">&quot;http://www.springframework.org/schema/integration/file&quot;</span></span>
<span class="sc3">  <span class="re0">xmlns:int-sftp</span>=<span class="st0">&quot;http://www.springframework.org/schema/integration/sftp&quot;</span></span>
<span class="sc3">  <span class="re0">xmlns:int-stream</span>=<span class="st0">&quot;http://www.springframework.org/schema/integration/stream&quot;</span></span>
<span class="sc3">  <span class="re0">xsi:schemaLocation</span>=<span class="st0">&quot;http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd</span>
<span class="sc3">  http://www.springframework.org/schema/batch http://www.springframework.org/schema/batch/spring-batch-2.1.xsd</span>
<span class="sc3">  http://www.springframework.org/schema/integration http://www.springframework.org/schema/integration/spring-integration.xsd</span>
<span class="sc3">  http://www.springframework.org/schema/integration/file http://www.springframework.org/schema/integration/file/spring-integration-file-2.0.xsd</span>
<span class="sc3">  http://www.springframework.org/schema/integration/sftp http://www.springframework.org/schema/integration/sftp/spring-integration-sftp-2.0.xsd</span>
<span class="sc3">  http://www.springframework.org/schema/integration/stream http://www.springframework.org/schema/integration/stream/spring-integration-stream-2.0.xsd&quot;</span><span class="re2">&gt;</span></span></pre></div></div>
]]></content:encoded>
			<wfw:commentRss>http://blog.luventas-webdesign.de/?feed=rss2&#038;p=226</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Secure data sending with sftp and spring batch</title>
		<link>http://blog.luventas-webdesign.de/?p=202</link>
		<comments>http://blog.luventas-webdesign.de/?p=202#comments</comments>
		<pubDate>Mon, 05 Sep 2011 20:17:41 +0000</pubDate>
		<dc:creator>luventas</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Spring]]></category>

		<guid isPermaLink="false">http://blog.luventas-webdesign.de/?p=202</guid>
		<description><![CDATA[It is possible to send data with spring batch in several ways. The most used case is sending XML files, but the spring framework offers you a lot of other ways too. One of these ways is to send your &#8230; <a href="http://blog.luventas-webdesign.de/?p=202">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>It is possible to send data with spring batch in several ways. The most used case is sending XML files, but the spring framework offers you a lot of other ways too. One of these ways is to send your data files secure by using SFTP. For this use case you can use the spring integration framework.<span id="more-202"></span></p>
<p>Firstly we need a SftpSesstionFactory for sending the files to a sftp server. This factory includes the properties for access to the server.</p>
<div id="wpshdo_35" class="wp-synhighlighter-outer"><div id="wpshdt_35" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_35"></a><a id="wpshat_35" class="wp-synhighlighter-title" href="#codesyntax_35"  onClick="javascript:wpsh_toggleBlock(35)" title="Click to show/hide code block">Source code</a></td><td align="right"><a href="#codesyntax_35" onClick="javascript:wpsh_code(35)" title="Show code only"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_35" onClick="javascript:wpsh_print(35)" title="Print code"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_35" class="wp-synhighlighter-inner" style="display: block;"><pre class="xml" style="font-family:monospace;"><span class="sc3"><span class="re1">&lt;bean</span> <span class="re0">id</span>=<span class="st0">&quot;sftpSessionFactory&quot;</span> <span class="re0">class</span>=<span class="st0">&quot;org.springframework.integration.sftp.session.DefaultSftpSessionFactory&quot;</span><span class="re2">&gt;</span></span>
  <span class="sc3"><span class="re1">&lt;property</span> <span class="re0">name</span>=<span class="st0">&quot;host&quot;</span> <span class="re0">value</span>=<span class="st0">&quot;host.of.receiver&quot;</span><span class="re2">/&gt;</span></span>
  <span class="sc3"><span class="re1">&lt;property</span> <span class="re0">name</span>=<span class="st0">&quot;user&quot;</span> <span class="re0">value</span>=<span class="st0">&quot;username&quot;</span><span class="re2">/&gt;</span></span>
  <span class="sc3"><span class="re1">&lt;property</span> <span class="re0">name</span>=<span class="st0">&quot;password&quot;</span> <span class="re0">value</span>=<span class="st0">&quot;secureSftpPassword&quot;</span><span class="re2">/&gt;</span></span>
  <span class="sc3"><span class="re1">&lt;property</span> <span class="re0">name</span>=<span class="st0">&quot;port&quot;</span> <span class="re0">value</span>=<span class="st0">&quot;22&quot;</span><span class="re2">/&gt;</span></span>
<span class="sc3"><span class="re1">&lt;/bean<span class="re2">&gt;</span></span></span></pre></div></div><em><em></em></em></p>
<p>Afterwards we need a channel. This channel is used to send the data.</p>
<p><em><div id="wpshdo_36" class="wp-synhighlighter-outer"><div id="wpshdt_36" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_36"></a><a id="wpshat_36" class="wp-synhighlighter-title" href="#codesyntax_36"  onClick="javascript:wpsh_toggleBlock(36)" title="Click to show/hide code block">Source code</a></td><td align="right"><a href="#codesyntax_36" onClick="javascript:wpsh_code(36)" title="Show code only"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_36" onClick="javascript:wpsh_print(36)" title="Print code"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_36" class="wp-synhighlighter-inner" style="display: block;"><pre class="xml" style="font-family:monospace;"><span class="sc3"><span class="re1">&lt;int:channel</span> <span class="re0">id</span>=<span class="st0">&quot;outputChannel&quot;</span> <span class="re2">/&gt;</span></span></pre></div></div></em></em></p>
<p>Now we have to link the channel to the SftpSessionFactory. For this we use an outbound-channel-adapter, which includes the channel, the sessionFactory and tells the framework how the file should be named on the target server (remote-filename-generator).</p>
<p><em></em><div id="wpshdo_37" class="wp-synhighlighter-outer"><div id="wpshdt_37" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_37"></a><a id="wpshat_37" class="wp-synhighlighter-title" href="#codesyntax_37"  onClick="javascript:wpsh_toggleBlock(37)" title="Click to show/hide code block">Source code</a></td><td align="right"><a href="#codesyntax_37" onClick="javascript:wpsh_code(37)" title="Show code only"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_37" onClick="javascript:wpsh_print(37)" title="Print code"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_37" class="wp-synhighlighter-inner" style="display: block;"><pre class="xml" style="font-family:monospace;"><span class="sc3"><span class="re1">&lt;int-sftp:outbound-channel-adapter</span> <span class="re0">id</span>=<span class="st0">&quot;sftpOutboundAdapter&quot;</span></span>
<span class="sc3">  <span class="re0">session-factory</span>=<span class="st0">&quot;sftpSessionFactory&quot;</span></span>
<span class="sc3">  <span class="re0">channel</span>=<span class="st0">&quot;outputChannel&quot;</span></span>
<span class="sc3">  <span class="re0">charset</span>=<span class="st0">&quot;UTF-8&quot;</span></span>
<span class="sc3">  <span class="re0">remote-directory</span>=<span class="st0">&quot;/target&quot;</span></span>
<span class="sc3">  <span class="re0">remote-filename-generator</span>=<span class="st0">&quot;fileNameGenerator&quot;</span> <span class="re2">/&gt;</span></span></pre></div></div><em><em></em></em></p>
<p>To make it easy for us, the target server should store the file with the same name like the sending file was named. For this we can use the DefaultFileNameGenerator of spring integration.</p>
<p><em><div id="wpshdo_38" class="wp-synhighlighter-outer"><div id="wpshdt_38" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_38"></a><a id="wpshat_38" class="wp-synhighlighter-title" href="#codesyntax_38"  onClick="javascript:wpsh_toggleBlock(38)" title="Click to show/hide code block">Source code</a></td><td align="right"><a href="#codesyntax_38" onClick="javascript:wpsh_code(38)" title="Show code only"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_38" onClick="javascript:wpsh_print(38)" title="Print code"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_38" class="wp-synhighlighter-inner" style="display: block;"><pre class="xml" style="font-family:monospace;"><span class="sc3"><span class="re1">&lt;bean</span> <span class="re0">id</span>=<span class="st0">&quot;fileNameGenerator&quot;</span> <span class="re0">class</span>=<span class="st0">&quot;org.springframework.integration.file.DefaultFileNameGenerator&quot;</span> <span class="re2">/&gt;</span></span></pre></div></div></em></em></p>
<p>Now we really want to send the file. For this we need a tasklet with the bussiness logic and at least the batch job.<br />
For the tasklet we need a small java class with the filename as parameter.</p>
<p><strong>The Tasklet:</strong><br />
<div id="wpshdo_39" class="wp-synhighlighter-outer"><div id="wpshdt_39" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_39"></a><a id="wpshat_39" class="wp-synhighlighter-title" href="#codesyntax_39"  onClick="javascript:wpsh_toggleBlock(39)" title="Click to show/hide code block">Source code</a></td><td align="right"><a href="#codesyntax_39" onClick="javascript:wpsh_code(39)" title="Show code only"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_39" onClick="javascript:wpsh_print(39)" title="Print code"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_39" class="wp-synhighlighter-inner" style="display: block;"><pre class="xml" style="font-family:monospace;"><span class="sc3"><span class="re1">&lt;bean</span> <span class="re0">id</span>=<span class="st0">&quot;sftpJobTasklet&quot;</span> <span class="re0">class</span>=<span class="st0">&quot;de.package.tasklets.SftpTasklet&quot;</span><span class="re2">&gt;</span></span>
  <span class="sc3"><span class="re1">&lt;property</span> <span class="re0">name</span>=<span class="st0">&quot;fileName&quot;</span> <span class="re0">value</span>=<span class="st0">&quot; path/to/file/filename.csv&quot;</span> <span class="re2">/&gt;</span></span>
  <span class="sc3"><span class="re1">&lt;property</span> <span class="re0">name</span>=<span class="st0">&quot;sftpChannel&quot;</span> <span class="re0">ref</span>=<span class="st0">&quot;outputChannel&quot;</span> <span class="re2">/&gt;</span></span>
<span class="sc3"><span class="re1">&lt;/bean<span class="re2">&gt;</span></span></span></pre></div></div><em><em></em></em></p>
<p><strong>The Javacode:</strong><br />
<div id="wpshdo_40" class="wp-synhighlighter-outer"><div id="wpshdt_40" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_40"></a><a id="wpshat_40" class="wp-synhighlighter-title" href="#codesyntax_40"  onClick="javascript:wpsh_toggleBlock(40)" title="Click to show/hide code block">Source code</a></td><td align="right"><a href="#codesyntax_40" onClick="javascript:wpsh_code(40)" title="Show code only"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_40" onClick="javascript:wpsh_print(40)" title="Print code"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_40" class="wp-synhighlighter-inner" style="display: block;"><pre class="java" style="font-family:monospace;"><span class="kw1">package</span> <span class="co2">de.package.tasklets</span><span class="sy0">;</span>
&nbsp;
<span class="kw1">import</span> <span class="co2">java.io.File</span><span class="sy0">;</span>
<span class="kw1">import</span> <span class="co2">org.springframework.batch.core.StepContribution</span><span class="sy0">;</span>
<span class="kw1">import</span> <span class="co2">org.springframework.batch.core.scope.context.ChunkContext</span><span class="sy0">;</span>
<span class="kw1">import</span> <span class="co2">org.springframework.batch.core.step.tasklet.Tasklet</span><span class="sy0">;</span>
<span class="kw1">import</span> <span class="co2">org.springframework.batch.repeat.RepeatStatus</span><span class="sy0">;</span>
<span class="kw1">import</span> <span class="co2">org.springframework.context.ApplicationContext</span><span class="sy0">;</span>
<span class="kw1">import</span> <span class="co2">org.springframework.context.support.ClassPathXmlApplicationContext</span><span class="sy0">;</span>
<span class="kw1">import</span> <span class="co2">org.springframework.integration.Message</span><span class="sy0">;</span>
<span class="kw1">import</span> <span class="co2">org.springframework.integration.MessageChannel</span><span class="sy0">;</span>
<span class="kw1">import</span> <span class="co2">org.springframework.integration.support.MessageBuilder</span><span class="sy0">;</span>
&nbsp;
<span class="kw1">public</span> <span class="kw1">class</span> SftpTasklet <span class="kw1">implements</span> Tasklet <span class="br0">&#123;</span>
&nbsp;
  <span class="kw1">private</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">String</span></a> fileName<span class="sy0">;</span>
  <span class="kw1">private</span> MessageChannel sftpChannel<span class="sy0">;</span>
&nbsp;
  @Override
  <span class="kw1">public</span> RepeatStatus execute<span class="br0">&#40;</span>StepContribution contribution, ChunkContext chunkContext<span class="br0">&#41;</span> <span class="kw1">throws</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Aexception+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">Exception</span></a> <span class="br0">&#123;</span>
&nbsp;
    <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Afile+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">File</span></a> file <span class="sy0">=</span> <span class="kw1">new</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Afile+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">File</span></a><span class="br0">&#40;</span>fileName<span class="br0">&#41;</span><span class="sy0">;</span>
    <span class="kw1">if</span> <span class="br0">&#40;</span>file.<span class="me1">exists</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
      Message message <span class="sy0">=</span> MessageBuilder.<span class="me1">withPayload</span><span class="br0">&#40;</span>file<span class="br0">&#41;</span>.<span class="me1">build</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
      <span class="kw1">try</span> <span class="br0">&#123;</span>
        sftpChannel.<span class="me1">send</span><span class="br0">&#40;</span>message<span class="br0">&#41;</span><span class="sy0">;</span>
      <span class="br0">&#125;</span> <span class="kw1">catch</span> <span class="br0">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Aexception+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">Exception</span></a> e<span class="br0">&#41;</span> <span class="br0">&#123;</span>
        <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Asystem+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">System</span></a>.<span class="me1">out</span>.<span class="me1">println</span><span class="br0">&#40;</span><span class="st0">&quot;Could not send file per SFTP: &quot;</span> <span class="sy0">+</span> e<span class="br0">&#41;</span><span class="sy0">;</span>
      <span class="br0">&#125;</span>
    <span class="br0">&#125;</span> <span class="kw1">else</span> <span class="br0">&#123;</span>
      <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Asystem+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">System</span></a>.<span class="me1">out</span>.<span class="me1">println</span><span class="br0">&#40;</span><span class="st0">&quot;File does not exist.&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span>
    <span class="br0">&#125;</span>
    <span class="kw1">return</span> RepeatStatus.<span class="me1">FINISHED</span><span class="sy0">;</span>
  <span class="br0">&#125;</span>
&nbsp;
  <span class="kw1">public</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">String</span></a> getFileName<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
    <span class="kw1">return</span> fileName<span class="sy0">;</span>
  <span class="br0">&#125;</span>
&nbsp;
  <span class="kw1">public</span> <span class="kw4">void</span> setFileName<span class="br0">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">String</span></a> fileName<span class="br0">&#41;</span> <span class="br0">&#123;</span>
    <span class="kw1">this</span>.<span class="me1">fileName</span> <span class="sy0">=</span> fileName<span class="sy0">;</span>
  <span class="br0">&#125;</span>
&nbsp;
  <span class="kw1">public</span> MessageChannel getSftpChannel<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
    <span class="kw1">return</span> <span class="kw1">this</span>.<span class="me1">sftpChannel</span><span class="sy0">;</span>
  <span class="br0">&#125;</span>
&nbsp;
  <span class="kw1">public</span> <span class="kw4">void</span> setSftpChannel<span class="br0">&#40;</span>MessageChannel sftpChannel<span class="br0">&#41;</span> <span class="br0">&#123;</span>
    <span class="kw1">this</span>.<span class="me1">sftpChannel</span> <span class="sy0">=</span> sftpChannel<span class="sy0">;</span>
  <span class="br0">&#125;</span>
<span class="br0">&#125;</span></pre></div></div></p>
<p>And now, at least, the xml code for the batch job:<br />
<div id="wpshdo_41" class="wp-synhighlighter-outer"><div id="wpshdt_41" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_41"></a><a id="wpshat_41" class="wp-synhighlighter-title" href="#codesyntax_41"  onClick="javascript:wpsh_toggleBlock(41)" title="Click to show/hide code block">Source code</a></td><td align="right"><a href="#codesyntax_41" onClick="javascript:wpsh_code(41)" title="Show code only"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_41" onClick="javascript:wpsh_print(41)" title="Print code"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_41" class="wp-synhighlighter-inner" style="display: block;"><pre class="xml" style="font-family:monospace;"><span class="sc3"><span class="re1">&lt;batch:job</span> <span class="re0">id</span>=<span class="st0">&quot;sftpJob&quot;</span> <span class="re0">restartable</span>=<span class="st0">&quot;false&quot;</span><span class="re2">&gt;</span></span>
  <span class="sc3"><span class="re1">&lt;batch:step</span> <span class="re0">id</span>=<span class="st0">&quot;sftpFileSendStep&quot;</span><span class="re2">&gt;</span></span>
    <span class="sc3"><span class="re1">&lt;batch:tasklet</span> <span class="re0">ref</span>=<span class="st0">&quot;sftpJobTasklet&quot;</span> <span class="re2">/&gt;</span></span>
  <span class="sc3"><span class="re1">&lt;/batch:step<span class="re2">&gt;</span></span></span>
<span class="sc3"><span class="re1">&lt;/batch:job<span class="re2">&gt;</span></span></span></pre></div></div></p>
<p>This batch job can be started by a cron job on the server.</p>
<p>At last part I will shortly post the header of the xml file called applicationContext.xml, which includes all the described beans:</p>
<div id="wpshdo_42" class="wp-synhighlighter-outer"><div id="wpshdt_42" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_42"></a><a id="wpshat_42" class="wp-synhighlighter-title" href="#codesyntax_42"  onClick="javascript:wpsh_toggleBlock(42)" title="Click to show/hide code block">Source code</a></td><td align="right"><a href="#codesyntax_42" onClick="javascript:wpsh_code(42)" title="Show code only"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_42" onClick="javascript:wpsh_print(42)" title="Print code"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_42" class="wp-synhighlighter-inner" style="display: block;"><pre class="xml" style="font-family:monospace;"><span class="sc3"><span class="re1">&lt;?xml</span> <span class="re0">version</span>=<span class="st0">&quot;1.0&quot;</span> <span class="re0">encoding</span>=<span class="st0">&quot;UTF-8&quot;</span><span class="re2">?&gt;</span></span>
  <span class="sc3"><span class="re1">&lt;beans</span> <span class="re0">xmlns</span>=<span class="st0">&quot;http://www.springframework.org/schema/beans&quot;</span></span>
<span class="sc3">  <span class="re0">xmlns:batch</span>=<span class="st0">&quot;http://www.springframework.org/schema/batch&quot;</span></span>
<span class="sc3">  <span class="re0">xmlns:int</span>=<span class="st0">&quot;http://www.springframework.org/schema/integration&quot;</span></span>
<span class="sc3">  <span class="re0">xmlns:int-file</span>=<span class="st0">&quot;http://www.springframework.org/schema/integration/file&quot;</span></span>
<span class="sc3">  <span class="re0">xmlns:int-sftp</span>=<span class="st0">&quot;http://www.springframework.org/schema/integration/sftp&quot;</span></span>
<span class="sc3">  <span class="re0">xmlns:int-stream</span>=<span class="st0">&quot;http://www.springframework.org/schema/integration/stream&quot;</span></span>
<span class="sc3">  <span class="re0">xsi:schemaLocation</span>=<span class="st0">&quot;http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd</span>
<span class="sc3">  http://www.springframework.org/schema/batch http://www.springframework.org/schema/batch/spring-batch-2.1.xsd</span>
<span class="sc3">  http://www.springframework.org/schema/integration http://www.springframework.org/schema/integration/spring-integration.xsd</span>
<span class="sc3">  http://www.springframework.org/schema/integration/file http://www.springframework.org/schema/integration/file/spring-integration-file-2.0.xsd</span>
<span class="sc3">  http://www.springframework.org/schema/integration/sftp http://www.springframework.org/schema/integration/sftp/spring-integration-sftp-2.0.xsd</span>
<span class="sc3">  http://www.springframework.org/schema/integration/stream http://www.springframework.org/schema/integration/stream/spring-integration-stream-2.0.xsd&quot;</span><span class="re2">&gt;</span></span></pre></div></div>
]]></content:encoded>
			<wfw:commentRss>http://blog.luventas-webdesign.de/?feed=rss2&#038;p=202</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Why is my WordPress blog so slow?</title>
		<link>http://blog.luventas-webdesign.de/?p=186</link>
		<comments>http://blog.luventas-webdesign.de/?p=186#comments</comments>
		<pubDate>Sun, 07 Aug 2011 21:58:30 +0000</pubDate>
		<dc:creator>luventas</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://blog.luventas-webdesign.de/?p=186</guid>
		<description><![CDATA[Since my last update of my WordPress blog it was horrible slow. My mobile phone was not able to load the blog anymore, my computer needs something arround one or one and a half minutes to load the next page, &#8230; <a href="http://blog.luventas-webdesign.de/?p=186">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Since my last update of my WordPress blog it was horrible slow. My mobile phone was not able to load the blog anymore, my computer needs something arround one or one and a half minutes to load the next page, on the blog and in the admin dashboard too. I asked myself why.<span id="more-186"></span></p>
<p>I googled a lot to solve this problem. Nowere I found a tip that helps. So I took the logfile of myserver and tried to find the problem there. But there was no error shown in logfile. The only hint I got from this logfile was the solution. There were a lot of entries, that my blog loads the WordPress Hit Counter. So I deactivated this plugin and, suprise suprise, my blog was as fast as before again.</p>
<p>Maybe It is also a solution for you, if you do not know, why your blog is so slow?</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.luventas-webdesign.de/?feed=rss2&#038;p=186</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Send Email by Spring batch with variable attachments</title>
		<link>http://blog.luventas-webdesign.de/?p=179</link>
		<comments>http://blog.luventas-webdesign.de/?p=179#comments</comments>
		<pubDate>Sun, 07 Aug 2011 20:11:15 +0000</pubDate>
		<dc:creator>luventas</dc:creator>
				<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://blog.luventas-webdesign.de/?p=179</guid>
		<description><![CDATA[It is very simple to send an Email with attachments by Spring batch framework. Firstly you need 3 beans for handling the email: - The first bean initializes JavaMail and sets all needed properties - The second bean initializes the &#8230; <a href="http://blog.luventas-webdesign.de/?p=179">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>It is very simple to send an Email with attachments by Spring batch framework.</p>
<p>Firstly you need 3 beans for handling the email:<br />
- The first bean initializes JavaMail and sets all needed properties</p>
<div id="wpshdo_43" class="wp-synhighlighter-outer"><div id="wpshdt_43" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_43"></a><a id="wpshat_43" class="wp-synhighlighter-title" href="#codesyntax_43"  onClick="javascript:wpsh_toggleBlock(43)" title="Click to show/hide code block">Source code</a></td><td align="right"><a href="#codesyntax_43" onClick="javascript:wpsh_code(43)" title="Show code only"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_43" onClick="javascript:wpsh_print(43)" title="Print code"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_43" class="wp-synhighlighter-inner" style="display: block;"><div class="xml" style="font-family:monospace;"><span class="sc3"><span class="re1">&lt;bean</span> <span class="re0">id</span>=<span class="st0">&quot;mailSender&quot;</span> <span class="re0">class</span>=<span class="st0">&quot;org.springframework.mail.javamail.JavaMailSenderImpl&quot;</span><span class="re2">&gt;</span></span><br />
&nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;property</span> <span class="re0">name</span>=<span class="st0">&quot;host&quot;</span> <span class="re0">value</span>=<span class="st0">&quot;smtp.yourEmailDomain.de&quot;</span><span class="re2">/&gt;</span></span><br />
&nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;property</span> <span class="re0">name</span>=<span class="st0">&quot;port&quot;</span> <span class="re0">value</span>=<span class="st0">&quot;25&quot;</span><span class="re2">/&gt;</span></span><br />
&nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;property</span> <span class="re0">name</span>=<span class="st0">&quot;username&quot;</span> <span class="re0">value</span>=<span class="st0">&quot;yourUserName&quot;</span><span class="re2">/&gt;</span></span><br />
&nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;property</span> <span class="re0">name</span>=<span class="st0">&quot;password&quot;</span> <span class="re0">value</span>=<span class="st0">&quot;yourPassword&quot;</span><span class="re2">/&gt;</span></span><br />
&nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;property</span> <span class="re0">name</span>=<span class="st0">&quot;javaMailProperties&quot;</span><span class="re2">&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;props<span class="re2">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;prop</span> <span class="re0">key</span>=<span class="st0">&quot;mail.smtp.auth&quot;</span><span class="re2">&gt;</span></span>true<span class="sc3"><span class="re1">&lt;/prop<span class="re2">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;/props<span class="re2">&gt;</span></span></span><br />
&nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;/property<span class="re2">&gt;</span></span></span><br />
<span class="sc3"><span class="re1">&lt;/bean<span class="re2">&gt;</span></span></span></div></div></div><span id="more-179"></span></p>
<p>- The second bean initializes the Tasklet, which calls the Service for sending the mail. It creates the references to the both other beans.</p>
<div id="wpshdo_44" class="wp-synhighlighter-outer"><div id="wpshdt_44" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_44"></a><a id="wpshat_44" class="wp-synhighlighter-title" href="#codesyntax_44"  onClick="javascript:wpsh_toggleBlock(44)" title="Click to show/hide code block">Source code</a></td><td align="right"><a href="#codesyntax_44" onClick="javascript:wpsh_code(44)" title="Show code only"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_44" onClick="javascript:wpsh_print(44)" title="Print code"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_44" class="wp-synhighlighter-inner" style="display: block;"><div class="xml" style="font-family:monospace;"><span class="sc3"><span class="re1">&lt;bean</span> <span class="re0">id</span>=<span class="st0">&quot;sendMailManager&quot;</span><span class="re2">&gt;</span></span><br />
&nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;property</span> <span class="re0">name</span>=<span class="st0">&quot;mailSender&quot;</span> <span class="re0">ref</span>=<span class="st0">&quot;mailSender&quot;</span><span class="re2">/&gt;</span></span><br />
&nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;property</span> <span class="re0">name</span>=<span class="st0">&quot;sendMailService&quot;</span> <span class="re0">ref</span>=<span class="st0">&quot;sendMailService&quot;</span><span class="re2">/&gt;</span></span><br />
&nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;property</span> <span class="re0">name</span>=<span class="st0">&quot;senderAddress&quot;</span> <span class="re0">value</span>=<span class="st0">&quot;sender@emailaddress.de&quot;</span><span class="re2">/&gt;</span></span><br />
&nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;property</span> <span class="re0">name</span>=<span class="st0">&quot;recipient&quot;</span> <span class="re0">value</span>=<span class="st0">&quot;recipient@emailaddress.de&quot;</span><span class="re2">/&gt;</span></span><br />
&nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;property</span> <span class="re0">name</span>=<span class="st0">&quot;attachmentFilePath&quot;</span> <span class="re0">value</span>=<span class="st0">&quot;/path/to/attachment/file/&quot;</span><span class="re2">/&gt;</span></span><br />
<span class="sc3"><span class="re1">&lt;/bean<span class="re2">&gt;</span></span></span></div></div></div>
<p>&nbsp;</p>
<p>- The last bean is the Service for sending the email.</p>
<div id="wpshdo_45" class="wp-synhighlighter-outer"><div id="wpshdt_45" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_45"></a><a id="wpshat_45" class="wp-synhighlighter-title" href="#codesyntax_45"  onClick="javascript:wpsh_toggleBlock(45)" title="Click to show/hide code block">Source code</a></td><td align="right"><a href="#codesyntax_45" onClick="javascript:wpsh_code(45)" title="Show code only"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_45" onClick="javascript:wpsh_print(45)" title="Print code"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_45" class="wp-synhighlighter-inner" style="display: block;"><div class="xml" style="font-family:monospace;"><span class="sc3"><span class="re1">&lt;bean</span> <span class="re0">id</span>=<span class="st0">&quot;sendMailService&quot;</span> <span class="re0">class</span>=<span class="st0">&quot;de.batch.mail.SendMailService&quot;</span> <span class="re2">/&gt;</span></span></div></div></div>
<p>&nbsp;</p>
<p>Now these beans can be called by a batchJob.</p>
<div id="wpshdo_46" class="wp-synhighlighter-outer"><div id="wpshdt_46" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_46"></a><a id="wpshat_46" class="wp-synhighlighter-title" href="#codesyntax_46"  onClick="javascript:wpsh_toggleBlock(46)" title="Click to show/hide code block">Source code</a></td><td align="right"><a href="#codesyntax_46" onClick="javascript:wpsh_code(46)" title="Show code only"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_46" onClick="javascript:wpsh_print(46)" title="Print code"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_46" class="wp-synhighlighter-inner" style="display: block;"><div class="xml" style="font-family:monospace;"><span class="sc3"><span class="re1">&lt;batch:job</span> <span class="re0">id</span>=<span class="st0">&quot;sendEmailJob&quot;</span> <span class="re0">restartable</span>=<span class="st0">&quot;false&quot;</span> <span class="re0">job-repository</span>=<span class="st0">&quot;jobRepository&quot;</span><span class="re2">&gt;</span></span><br />
&nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;batch:step</span> <span class="re0">id</span>=<span class="st0">&quot;sendEMail&quot;</span><span class="re2">&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;batch:tasklet</span> <span class="re0">ref</span>=<span class="st0">&quot;sendMailManager&quot;</span> <span class="re2">/&gt;</span></span><br />
&nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;/batch:step<span class="re2">&gt;</span></span></span><br />
<span class="sc3"><span class="re1">&lt;/batch:job<span class="re2">&gt;</span></span></span></div></div></div>
<p>&nbsp;</p>
<p>This is all you need on the XML side in the applicationContext.xml.</p>
<p>Now you have to create the needed Java class files wich are cleed by the beans in XML.</p>
<p>The Bean “sendMailService” is a reference to the de.batch.mail.SendMailService class. In the batch job it is called by the Tasklet named “sendMailManager”.</p>
<p>&nbsp;</p>
<div id="wpshdo_47" class="wp-synhighlighter-outer"><div id="wpshdt_47" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_47"></a><a id="wpshat_47" class="wp-synhighlighter-title" href="#codesyntax_47"  onClick="javascript:wpsh_toggleBlock(47)" title="Click to show/hide code block">Source code</a></td><td align="right"><a href="#codesyntax_47" onClick="javascript:wpsh_code(47)" title="Show code only"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_47" onClick="javascript:wpsh_print(47)" title="Print code"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_47" class="wp-synhighlighter-inner" style="display: block;"><div class="java" style="font-family:monospace;"><span class="kw1">package</span> <span class="co2">de.batch.mail</span><span class="sy0">;</span><br />
<br />
<span class="kw1">import</span> <span class="co2">java.io.File</span><span class="sy0">;</span><br />
<span class="kw1">import</span> <span class="co2">javax.ejb.Stateless</span><span class="sy0">;</span><br />
<span class="kw1">import</span> <span class="co2">javax.mail.Message</span><span class="sy0">;</span><br />
<span class="kw1">import</span> <span class="co2">javax.mail.internet.InternetAddress</span><span class="sy0">;</span><br />
<span class="kw1">import</span> <span class="co2">javax.mail.internet.MimeMessage</span><span class="sy0">;</span><br />
<br />
<span class="kw1">import</span> <span class="co2">org.apache.commons.logging.Log</span><span class="sy0">;</span><br />
<span class="kw1">import</span> <span class="co2">org.apache.commons.logging.LogFactory</span><span class="sy0">;</span><br />
<span class="kw1">import</span> <span class="co2">org.jboss.seam.annotations.Name</span><span class="sy0">;</span><br />
<span class="kw1">import</span> <span class="co2">org.springframework.core.io.FileSystemResource</span><span class="sy0">;</span><br />
<span class="kw1">import</span> <span class="co2">org.springframework.mail.MailException</span><span class="sy0">;</span><br />
<span class="kw1">import</span> <span class="co2">org.springframework.mail.javamail.JavaMailSender</span><span class="sy0">;</span><br />
<span class="kw1">import</span> <span class="co2">org.springframework.mail.javamail.MimeMessageHelper</span><span class="sy0">;</span><br />
<span class="kw1">import</span> <span class="co2">org.springframework.mail.javamail.MimeMessagePreparator</span><span class="sy0">;</span><br />
<br />
<span class="co3">/**<br />
* @author carsten.froehlich<br />
*/</span><br />
<br />
@Stateless<br />
@<a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Aname+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">Name</span></a><span class="br0">&#40;</span><span class="st0">&quot;SendMail&quot;</span><span class="br0">&#41;</span><br />
<span class="kw1">public</span> <span class="kw1">class</span> SendMailService <span class="br0">&#123;</span><br />
<br />
&nbsp; &nbsp; <span class="kw1">private</span> <span class="kw1">static</span> <span class="kw1">final</span> Log log <span class="sy0">=</span> LogFactory.<span class="me1">getLog</span><span class="br0">&#40;</span>SendMailService.<span class="kw1">class</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">private</span> JavaMailSender mailSender<span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">private</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">String</span></a> senderAddress<span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">private</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">String</span></a> recipient<span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">private</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">String</span></a> attachmentFilePath<span class="sy0">;</span><br />
<br />
&nbsp; &nbsp; <span class="co1">// set the fields</span><br />
&nbsp; &nbsp; <span class="kw1">public</span> <span class="kw4">void</span> setFields<span class="br0">&#40;</span>JavaMailSender mailSender, <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">String</span></a> senderAddress, <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">String</span></a> recipient, <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">String</span></a> attachmentFilePath<span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">this</span>.<span class="me1">mailSender</span> <span class="sy0">=</span> mailSender<span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">this</span>.<span class="me1">senderAddress</span> <span class="sy0">=</span> senderAddress<span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">this</span>.<span class="me1">recipient</span> <span class="sy0">=</span> recipient<span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">this</span>.<span class="me1">attachmentFilePath</span> <span class="sy0">=</span> attachmentFilePath<span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="br0">&#125;</span><br />
<br />
&nbsp; &nbsp; <span class="kw1">public</span> <span class="kw4">void</span> sendMail<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; log.<span class="me1">debug</span><span class="br0">&#40;</span><span class="st0">&quot;send Email started&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// read directory</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Afile+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">File</span></a> directory <span class="sy0">=</span> <span class="kw1">new</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Afile+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">File</span></a><span class="br0">&#40;</span>attachmentFilePath<span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// get file from directory</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">final</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Afile+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">File</span></a> file <span class="sy0">=</span> directory.<span class="me1">listFiles</span><span class="br0">&#40;</span>FILE_FILTER<span class="br0">&#41;</span><span class="br0">&#91;</span>0<span class="br0">&#93;</span><span class="sy0">;</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; MimeMessagePreparator preparator <span class="sy0">=</span> <span class="kw1">new</span> MimeMessagePreparator<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">public</span> <span class="kw4">void</span> prepare<span class="br0">&#40;</span>MimeMessage mimeMessage<span class="br0">&#41;</span> <span class="kw1">throws</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Aexception+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">Exception</span></a> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; mimeMessage.<span class="me1">setRecipient</span><span class="br0">&#40;</span>Message.<span class="me1">RecipientType</span>.<span class="me1">TO</span>, <span class="kw1">new</span> InternetAddress<span class="br0">&#40;</span>recipient<span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; mimeMessage.<span class="me1">setFrom</span><span class="br0">&#40;</span><span class="kw1">new</span> InternetAddress<span class="br0">&#40;</span>senderAddress<span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; mimeMessage.<span class="me1">setSubject</span><span class="br0">&#40;</span><span class="st0">&quot;Neuer Report&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// MimeMessagesHelper is needed for the attachment. The Boolean value in</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// constructor is for multipart/data = true</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; MimeMessageHelper helper <span class="sy0">=</span> <span class="kw1">new</span> MimeMessageHelper<span class="br0">&#40;</span>mimeMessage, <span class="kw2">true</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; helper.<span class="me1">addAttachment</span><span class="br0">&#40;</span>file.<span class="me1">getName</span><span class="br0">&#40;</span><span class="br0">&#41;</span>, <span class="kw1">new</span> FileSystemResource<span class="br0">&#40;</span>file<span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; helper.<span class="me1">setText</span><span class="br0">&#40;</span><span class="st0">&quot;Text in Email Body&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">try</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">this</span>.<span class="me1">mailSender</span>.<span class="me1">send</span><span class="br0">&#40;</span>preparator<span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; log.<span class="me1">debug</span><span class="br0">&#40;</span><span class="st0">&quot;send Email completed&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span> <span class="kw1">catch</span> <span class="br0">&#40;</span>MailException ex<span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; log.<span class="me1">debug</span><span class="br0">&#40;</span><span class="st0">&quot;send Email failed&quot;</span>, ex<span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; <span class="br0">&#125;</span><br />
<br />
&nbsp; &nbsp; <span class="kw1">public</span> <span class="kw1">static</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Afilefilter+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">FileFilter</span></a> FILE_FILTER <span class="sy0">=</span> <span class="kw1">new</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Afilefilter+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">FileFilter</span></a><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
        <span class="kw1">public</span> <span class="kw4">boolean</span> accept<span class="br0">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Afile+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">File</span></a> file<span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
            <span class="kw1">return</span> <span class="sy0">!</span>file.<span class="me1">isDirectory</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
        <span class="br0">&#125;</span><br />
    <span class="br0">&#125;</span><span class="sy0">;</span><br />
 <span class="br0">&#125;</span></div></div></div>
<p>&nbsp;</p>
<p>This is the tasklet, which calls the Service:</p>
<p>&nbsp;</p>
<div id="wpshdo_48" class="wp-synhighlighter-outer"><div id="wpshdt_48" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_48"></a><a id="wpshat_48" class="wp-synhighlighter-title" href="#codesyntax_48"  onClick="javascript:wpsh_toggleBlock(48)" title="Click to show/hide code block">Source code</a></td><td align="right"><a href="#codesyntax_48" onClick="javascript:wpsh_code(48)" title="Show code only"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_48" onClick="javascript:wpsh_print(48)" title="Print code"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://blog.luventas-webdesign.de/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_48" class="wp-synhighlighter-inner" style="display: block;"><div class="java" style="font-family:monospace;"><span class="kw1">package</span> <span class="co2">de.batch.tasklets</span><span class="sy0">;</span><br />
<br />
<span class="kw1">import</span> <span class="co2">org.apache.commons.logging.Log</span><span class="sy0">;</span><br />
<span class="kw1">import</span> <span class="co2">org.apache.commons.logging.LogFactory</span><span class="sy0">;</span><br />
<span class="kw1">import</span> <span class="co2">org.springframework.batch.core.StepContribution</span><span class="sy0">;</span><br />
<span class="kw1">import</span> <span class="co2">org.springframework.batch.core.scope.context.ChunkContext</span><span class="sy0">;</span><br />
<span class="kw1">import</span> <span class="co2">org.springframework.batch.core.step.tasklet.Tasklet</span><span class="sy0">;</span><br />
<span class="kw1">import</span> <span class="co2">org.springframework.batch.repeat.RepeatStatus</span><span class="sy0">;</span><br />
<span class="kw1">import</span> <span class="co2">org.springframework.mail.javamail.JavaMailSender</span><span class="sy0">;</span><br />
<br />
<span class="kw1">import</span> <span class="co2">de.mail.SendMailService</span><span class="sy0">;</span><br />
<br />
<span class="co3">/**<br />
* @author carsten.froehlich<br />
*/</span><br />
<br />
<span class="kw1">public</span> <span class="kw1">class</span> SendMailTasklet <span class="kw1">implements</span> Tasklet <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">private</span> <span class="kw1">static</span> <span class="kw1">final</span> Log log <span class="sy0">=</span> LogFactory.<span class="me1">getLog</span><span class="br0">&#40;</span>SendMailTasklet.<span class="kw1">class</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">private</span> SendMailService sendMailService<span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">private</span> JavaMailSender mailSender<span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">private</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">String</span></a> senderAddress<span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">private</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">String</span></a> recipient<span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="kw1">private</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">String</span></a> attachmentFilePath<span class="sy0">;</span><br />
<br />
&nbsp; &nbsp; <span class="kw1">public</span> <span class="kw4">void</span> setMailSender<span class="br0">&#40;</span>JavaMailSender mailSender<span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp;<span class="kw1">this</span>.<span class="me1">mailSender</span> <span class="sy0">=</span> mailSender<span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; <span class="kw1">public</span> <span class="kw4">void</span> setSenderAddress<span class="br0">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">String</span></a> senderAddress<span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">this</span>.<span class="me1">senderAddress</span> <span class="sy0">=</span> senderAddress<span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="br0">&#125;</span><br />
<br />
&nbsp; &nbsp; <span class="kw1">public</span> <span class="kw4">void</span> setRecipient<span class="br0">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">String</span></a> recipient<span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">this</span>.<span class="me1">recipient</span> <span class="sy0">=</span> recipient<span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="br0">&#125;</span><br />
<br />
&nbsp; &nbsp; <span class="kw1">public</span> <span class="kw4">void</span> setAttachmentFilePath<span class="br0">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">String</span></a> attachmentFilePath<span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">this</span>.<span class="me1">attachmentFilePath</span> <span class="sy0">=</span> attachmentFilePath<span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="br0">&#125;</span><br />
<br />
&nbsp; &nbsp; <span class="kw1">public</span> <span class="kw4">void</span> setSendMailService<span class="br0">&#40;</span>SendMailService sendMailService<span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">this</span>.<span class="me1">sendMailService</span> <span class="sy0">=</span> sendMailService<span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="br0">&#125;</span><br />
<br />
&nbsp; &nbsp; @Override<br />
&nbsp; &nbsp; <span class="kw1">public</span> RepeatStatus execute<span class="br0">&#40;</span>StepContribution contribution, ChunkContext chunkContext<span class="br0">&#41;</span> <span class="kw1">throws</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Aexception+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">Exception</span></a> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; log.<span class="me1">debug</span><span class="br0">&#40;</span><span class="st0">&quot;execute(StepContribution contribution, ChunkContext chunkContext) begin&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; sendMailService.<span class="me1">setFields</span><span class="br0">&#40;</span>mailSender, senderAddress, recipient, attachmentFilePath<span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; sendMailService.<span class="me1">sendMail</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; log.<span class="me1">debug</span><span class="br0">&#40;</span><span class="st0">&quot;execute(StepContribution contribution, ChunkContext chunkContext) end&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> RepeatStatus.<span class="me1">FINISHED</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <span class="br0">&#125;</span><br />
<span class="br0">&#125;</span></div></div></div>
<p>&nbsp;</p>
<p>This is somehow all you need for sending emails by spring batch with attachment.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.luventas-webdesign.de/?feed=rss2&#038;p=179</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

