<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	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/"
		>
<channel>
	<title>Kommentare zu: D) Java-Anwendung nur einmal ausführen</title>
	<atom:link href="http://www.java-blog-buch.de/d-java-anwendung-nur-einmal-ausfuhren/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.java-blog-buch.de/d-java-anwendung-nur-einmal-ausfuhren/</link>
	<description>Ein Buch über Java Programmierung als Blog</description>
	<lastBuildDate>Tue, 31 Jan 2012 16:30:01 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>Von: Stefan Kiesel</title>
		<link>http://www.java-blog-buch.de/d-java-anwendung-nur-einmal-ausfuhren/comment-page-1/#comment-4627</link>
		<dc:creator>Stefan Kiesel</dc:creator>
		<pubDate>Fri, 24 Jun 2011 13:13:54 +0000</pubDate>
		<guid isPermaLink="false">http://www.java-blog-buch.de/?p=1812#comment-4627</guid>
		<description>Hallo Herr Jäkel,

ja, den gibt es. Ich zitiere die API-Doc für deleteOnExit:

&quot;Deletion will be attempted only for normal termination of the virtual machine, as defined by the Java Language Specification.&quot; und &quot;Note: this method should not be used for file-locking, as the resulting protocol cannot be made to work reliably&quot;

Ein Shutdown-Hook hingegen wird auch dann ausgeführt, wenn die VM auf abnormalem Wege terminiert.

Grüße
Stefan</description>
		<content:encoded><![CDATA[<p>Hallo Herr Jäkel,</p>
<p>ja, den gibt es. Ich zitiere die API-Doc für deleteOnExit:</p>
<p>&#8220;Deletion will be attempted only for normal termination of the virtual machine, as defined by the Java Language Specification.&#8221; und &#8220;Note: this method should not be used for file-locking, as the resulting protocol cannot be made to work reliably&#8221;</p>
<p>Ein Shutdown-Hook hingegen wird auch dann ausgeführt, wenn die VM auf abnormalem Wege terminiert.</p>
<p>Grüße<br />
Stefan</p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: Maik Jäkel</title>
		<link>http://www.java-blog-buch.de/d-java-anwendung-nur-einmal-ausfuhren/comment-page-1/#comment-4626</link>
		<dc:creator>Maik Jäkel</dc:creator>
		<pubDate>Fri, 24 Jun 2011 09:38:36 +0000</pubDate>
		<guid isPermaLink="false">http://www.java-blog-buch.de/?p=1812#comment-4626</guid>
		<description>Hallo Herr Kiesel,

gibt es einen speziellen Grund dafür, dass sie das FileLock per ShutDown-Hook-Thread löschen? Ich hätte spontan einfach die deleteOnExit()-Methode des Files verwendet. Gibt es hierbei einen Unterschied, den ich noch nicht kenne?


Viele Grüße
Maik Jäkel</description>
		<content:encoded><![CDATA[<p>Hallo Herr Kiesel,</p>
<p>gibt es einen speziellen Grund dafür, dass sie das FileLock per ShutDown-Hook-Thread löschen? Ich hätte spontan einfach die deleteOnExit()-Methode des Files verwendet. Gibt es hierbei einen Unterschied, den ich noch nicht kenne?</p>
<p>Viele Grüße<br />
Maik Jäkel</p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: Klaus Brokmann</title>
		<link>http://www.java-blog-buch.de/d-java-anwendung-nur-einmal-ausfuhren/comment-page-1/#comment-4583</link>
		<dc:creator>Klaus Brokmann</dc:creator>
		<pubDate>Wed, 16 Feb 2011 06:46:49 +0000</pubDate>
		<guid isPermaLink="false">http://www.java-blog-buch.de/?p=1812#comment-4583</guid>
		<description>Hallo Stefan,

ah, die Punkte 2 und 3 habe ich so noch nicht ernsthafter in Betracht bezogen ...
Ok, ich werde mal versuchen, die Anwendung dahingehend zu testen! Referenziert wird die Variable sicherlich nirgendwo mehr - das könnte in der Tat vlt. ein Knackpunkt sein ...

Ich melde mich, sobald ich weitere Ergebnisse habe!
Zuerst nochmals vielen Dank für die Unterstützung!
Freundliche Grüße
Klaus</description>
		<content:encoded><![CDATA[<p>Hallo Stefan,</p>
<p>ah, die Punkte 2 und 3 habe ich so noch nicht ernsthafter in Betracht bezogen &#8230;<br />
Ok, ich werde mal versuchen, die Anwendung dahingehend zu testen! Referenziert wird die Variable sicherlich nirgendwo mehr &#8211; das könnte in der Tat vlt. ein Knackpunkt sein &#8230;</p>
<p>Ich melde mich, sobald ich weitere Ergebnisse habe!<br />
Zuerst nochmals vielen Dank für die Unterstützung!<br />
Freundliche Grüße<br />
Klaus</p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: Stefan Kiesel</title>
		<link>http://www.java-blog-buch.de/d-java-anwendung-nur-einmal-ausfuhren/comment-page-1/#comment-4582</link>
		<dc:creator>Stefan Kiesel</dc:creator>
		<pubDate>Tue, 15 Feb 2011 19:52:07 +0000</pubDate>
		<guid isPermaLink="false">http://www.java-blog-buch.de/?p=1812#comment-4582</guid>
		<description>Natürlich wartet so die erste Anwendung ewig. Sie sollen das ja auch nicht in Ihre Anwendung einbauen, sondern nur so wie es ist (ohne auch nur eine Zeile Code zu verändern) ausführen und testen ;-) . Dieses kleine Programm soll Ihnen lediglich beweisen, dass der Fehler nicht an dem von Ihnen geposteten Codeschnipsel liegt. Und diesen Beweis bringt es, wenn Sie das Programm genau in dieser Form kompilieren, zweimal ausführen und beim zweiten Mal ausführen eine Exception geworfen wird.

Um auf mögliche Fehlerursachen Ihres eigentlichen Problems zurück zu kommen:

Genaues kann man natürlich nur sagen, wenn man einen aussagekräftigeren Teil Ihres Codes zu Gesicht bekommt, da der Fehler (wie gesagt) in Ihrem uns zur Verfügung gestellten Teil garantiert nicht liegt. Natürlich versteh ich auch, wenn Sie nicht einfach Code Ihrer Firma hier veröffentlichen können. Deshalb ein paar allgemeine Tipps:

1.) Könnte evtl. irgendwo eine unabgefangene Exception geworfen werden, die das schließen des Sockets bewirkt?
2.) Sie wissen wie der GarbageCollector in Java arbeitet? Wenn Ihr Objekt nirgends mehr referenziert wird und der GarbageCollector das feststellt, wird Ihr Objekt irgendwann aufgeräumt.
3.) Aus Ihrem letzten Kommentar schließe ich, dass Sie eine GUI verwenden. Eine Swing-GUI läuft in Java in einem separierten Thread. Nach Abarbeitung Ihrer Main-Methode wird der Thread, in welchem die Main-Methode gestartet wurde, beendet. Es läuft folglich nur noch der GUI-Thread. Könnte evtl. hier im Bezug auf die Erzeugung des ServerSockets das Problem liegen?

Nach Ihrer Aussage

// Zitat
new ServerSocket(nMutexServerport );
KEINE Exception bei mir auslöst !

Nur für den Fall
listenerSocket = new ServerSocket( nMutexServerport );
tritt (beim zweiten Aufruf) die Bind-Exception auf und das “listenerSocket”-Objekt ist dann null.
// Zitat Ende

sollten Sie insbesondere die Punkte 2 und 3 in Betracht ziehen.

Grüße
Stefan</description>
		<content:encoded><![CDATA[<p>Natürlich wartet so die erste Anwendung ewig. Sie sollen das ja auch nicht in Ihre Anwendung einbauen, sondern nur so wie es ist (ohne auch nur eine Zeile Code zu verändern) ausführen und testen <img src='http://www.java-blog-buch.de/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  . Dieses kleine Programm soll Ihnen lediglich beweisen, dass der Fehler nicht an dem von Ihnen geposteten Codeschnipsel liegt. Und diesen Beweis bringt es, wenn Sie das Programm genau in dieser Form kompilieren, zweimal ausführen und beim zweiten Mal ausführen eine Exception geworfen wird.</p>
<p>Um auf mögliche Fehlerursachen Ihres eigentlichen Problems zurück zu kommen:</p>
<p>Genaues kann man natürlich nur sagen, wenn man einen aussagekräftigeren Teil Ihres Codes zu Gesicht bekommt, da der Fehler (wie gesagt) in Ihrem uns zur Verfügung gestellten Teil garantiert nicht liegt. Natürlich versteh ich auch, wenn Sie nicht einfach Code Ihrer Firma hier veröffentlichen können. Deshalb ein paar allgemeine Tipps:</p>
<p>1.) Könnte evtl. irgendwo eine unabgefangene Exception geworfen werden, die das schließen des Sockets bewirkt?<br />
2.) Sie wissen wie der GarbageCollector in Java arbeitet? Wenn Ihr Objekt nirgends mehr referenziert wird und der GarbageCollector das feststellt, wird Ihr Objekt irgendwann aufgeräumt.<br />
3.) Aus Ihrem letzten Kommentar schließe ich, dass Sie eine GUI verwenden. Eine Swing-GUI läuft in Java in einem separierten Thread. Nach Abarbeitung Ihrer Main-Methode wird der Thread, in welchem die Main-Methode gestartet wurde, beendet. Es läuft folglich nur noch der GUI-Thread. Könnte evtl. hier im Bezug auf die Erzeugung des ServerSockets das Problem liegen?</p>
<p>Nach Ihrer Aussage</p>
<p>// Zitat<br />
new ServerSocket(nMutexServerport );<br />
KEINE Exception bei mir auslöst !</p>
<p>Nur für den Fall<br />
listenerSocket = new ServerSocket( nMutexServerport );<br />
tritt (beim zweiten Aufruf) die Bind-Exception auf und das “listenerSocket”-Objekt ist dann null.<br />
// Zitat Ende</p>
<p>sollten Sie insbesondere die Punkte 2 und 3 in Betracht ziehen.</p>
<p>Grüße<br />
Stefan</p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: Klaus Brokmann</title>
		<link>http://www.java-blog-buch.de/d-java-anwendung-nur-einmal-ausfuhren/comment-page-1/#comment-4581</link>
		<dc:creator>Klaus Brokmann</dc:creator>
		<pubDate>Tue, 15 Feb 2011 16:19:21 +0000</pubDate>
		<guid isPermaLink="false">http://www.java-blog-buch.de/?p=1812#comment-4581</guid>
		<description>Hallo Herr Kiesel,
damit wartet dann aber auch die erste Anwendung ewig - und ich komme dort nicht mal bis zum Anmeldedialog, geschweige denn, dass ich arbeiten kann !!
Ich möchte ja nur beim zweiten Aufruf die Exception bekommen, um den zweiten Aufruf zu canceln !
Freundliche Grüße
Klaus Brokmann</description>
		<content:encoded><![CDATA[<p>Hallo Herr Kiesel,<br />
damit wartet dann aber auch die erste Anwendung ewig &#8211; und ich komme dort nicht mal bis zum Anmeldedialog, geschweige denn, dass ich arbeiten kann !!<br />
Ich möchte ja nur beim zweiten Aufruf die Exception bekommen, um den zweiten Aufruf zu canceln !<br />
Freundliche Grüße<br />
Klaus Brokmann</p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: Stefan Kiesel</title>
		<link>http://www.java-blog-buch.de/d-java-anwendung-nur-einmal-ausfuhren/comment-page-1/#comment-4580</link>
		<dc:creator>Stefan Kiesel</dc:creator>
		<pubDate>Tue, 15 Feb 2011 16:16:13 +0000</pubDate>
		<guid isPermaLink="false">http://www.java-blog-buch.de/?p=1812#comment-4580</guid>
		<description>Hallo Herr Brokmann,

das accept() ist schon so beabsichtigt. So wartet Ihr Programm, bis sich jemand zu diesem ServerSocket verbindet. Da dies nicht geschehen wird, wartet das Programm ewig (bzw. bis Sie es abbrechen). Hierdurch wird wiederum gewährleistet, dass das erste Programm (die erste Ausführung) noch läuft und auch noch den ServerSocket gebunden hat, wenn Sie das Programm ein zweites Mal ausführen, so dass es zu einem Fehler kommt.

Bitte versuchen Sie es noch einmal auf die von mir beschriebene Art und Weise.

Grüße
Stefan Kiesel</description>
		<content:encoded><![CDATA[<p>Hallo Herr Brokmann,</p>
<p>das accept() ist schon so beabsichtigt. So wartet Ihr Programm, bis sich jemand zu diesem ServerSocket verbindet. Da dies nicht geschehen wird, wartet das Programm ewig (bzw. bis Sie es abbrechen). Hierdurch wird wiederum gewährleistet, dass das erste Programm (die erste Ausführung) noch läuft und auch noch den ServerSocket gebunden hat, wenn Sie das Programm ein zweites Mal ausführen, so dass es zu einem Fehler kommt.</p>
<p>Bitte versuchen Sie es noch einmal auf die von mir beschriebene Art und Weise.</p>
<p>Grüße<br />
Stefan Kiesel</p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: Klaus Brokmann</title>
		<link>http://www.java-blog-buch.de/d-java-anwendung-nur-einmal-ausfuhren/comment-page-1/#comment-4579</link>
		<dc:creator>Klaus Brokmann</dc:creator>
		<pubDate>Tue, 15 Feb 2011 07:24:26 +0000</pubDate>
		<guid isPermaLink="false">http://www.java-blog-buch.de/?p=1812#comment-4579</guid>
		<description>Guten Morgen,
ja, alle Aufrufe erreichen zwangsläufig die Stelle (ist zentral zu Beginn der main-Funktion); das habe ich auch im Debugger überprüft. 

Der Port ist ebenfalls zentral so deklariert:
// Mutexserverport zur Instanzenkontrolle
public static final int nMutexServerport = 62987;

Der Aufruf mit &quot;.accept()&quot; klappt hier nicht, da dieser genannte Port vermutlich nicht in der Firewall resp. im Proxy freigegeben ist (die Anwendung wartet dann &#039;ewig&#039; auf  . Ich möchte ja auch nicht damit arbeiten, sondern ihn nur zu Instanzenkontrolle nutzen

Mir fiel eben noch auf, dass mit dem von Ihnen oben beschriebene Aufruf 
   new ServerSocket(nMutexServerport );
KEINE Exception bei mir auslöst !

Nur für den Fall 
  listenerSocket = new ServerSocket( nMutexServerport );
tritt (beim zweiten Aufruf) die Bind-Exception auf und das &quot;listenerSocket&quot;-Objekt ist dann  null.

Ist schon alles sehr seltsam ... :-(

Freundliche Grüße
Klaus</description>
		<content:encoded><![CDATA[<p>Guten Morgen,<br />
ja, alle Aufrufe erreichen zwangsläufig die Stelle (ist zentral zu Beginn der main-Funktion); das habe ich auch im Debugger überprüft. </p>
<p>Der Port ist ebenfalls zentral so deklariert:<br />
// Mutexserverport zur Instanzenkontrolle<br />
public static final int nMutexServerport = 62987;</p>
<p>Der Aufruf mit &#8220;.accept()&#8221; klappt hier nicht, da dieser genannte Port vermutlich nicht in der Firewall resp. im Proxy freigegeben ist (die Anwendung wartet dann &#8216;ewig&#8217; auf  . Ich möchte ja auch nicht damit arbeiten, sondern ihn nur zu Instanzenkontrolle nutzen</p>
<p>Mir fiel eben noch auf, dass mit dem von Ihnen oben beschriebene Aufruf<br />
   new ServerSocket(nMutexServerport );<br />
KEINE Exception bei mir auslöst !</p>
<p>Nur für den Fall<br />
  listenerSocket = new ServerSocket( nMutexServerport );<br />
tritt (beim zweiten Aufruf) die Bind-Exception auf und das &#8220;listenerSocket&#8221;-Objekt ist dann  null.</p>
<p>Ist schon alles sehr seltsam &#8230; <img src='http://www.java-blog-buch.de/wp-includes/images/smilies/icon_sad.gif' alt=':-(' class='wp-smiley' /> </p>
<p>Freundliche Grüße<br />
Klaus</p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: Stefan Kiesel</title>
		<link>http://www.java-blog-buch.de/d-java-anwendung-nur-einmal-ausfuhren/comment-page-1/#comment-4578</link>
		<dc:creator>Stefan Kiesel</dc:creator>
		<pubDate>Mon, 14 Feb 2011 17:10:19 +0000</pubDate>
		<guid isPermaLink="false">http://www.java-blog-buch.de/?p=1812#comment-4578</guid>
		<description>Ihr Code ist soweit fehlerfrei. Sind Sie sicher, dass beide Applikationen zu der Zeile &quot;listenerSocket = new ServerSocket(nMutexServerport);&quot; gelangen und nicht vorher abgebrochen werden oder einen anderen Weg (if-Abfrage) wählen können? Können Sie sicherstellen, dass nMutexServerport für beide Anwendungen exakt identisch ist? Können Sie sicherstellen, dass beide Anwendungen noch laufen?

Ansonsten versuchen Sie es doch mal primitiv mit einer einfachen Main-Klasse, die Sie zweimal hintereinander ausführen:

&lt;pre&gt;&lt;code&gt;public class Main {

  public static void main(String[] args) throws Exception {
    new ServerSocket(5892).accept();
  }
}&lt;/code&gt;&lt;/pre&gt;

Wenn ich mich nicht vertippt habe (gerade alles aus dem Kopf und ohne Compiler und IDE) sollte dann beim zweiten Ausführen eine Fehlermeldung erscheinen. Passiert das bei Ihnen (wovon ich einmal stark ausgehe), dann ist der Fehler nicht in dem von Ihnen geposteten Codeausschnitt zu suchen.

Grüße
Stefan</description>
		<content:encoded><![CDATA[<p>Ihr Code ist soweit fehlerfrei. Sind Sie sicher, dass beide Applikationen zu der Zeile &#8220;listenerSocket = new ServerSocket(nMutexServerport);&#8221; gelangen und nicht vorher abgebrochen werden oder einen anderen Weg (if-Abfrage) wählen können? Können Sie sicherstellen, dass nMutexServerport für beide Anwendungen exakt identisch ist? Können Sie sicherstellen, dass beide Anwendungen noch laufen?</p>
<p>Ansonsten versuchen Sie es doch mal primitiv mit einer einfachen Main-Klasse, die Sie zweimal hintereinander ausführen:</p>
<pre><code>public class Main {

  public static void main(String[] args) throws Exception {
    new ServerSocket(5892).accept();
  }
}</code></pre>
<p>Wenn ich mich nicht vertippt habe (gerade alles aus dem Kopf und ohne Compiler und IDE) sollte dann beim zweiten Ausführen eine Fehlermeldung erscheinen. Passiert das bei Ihnen (wovon ich einmal stark ausgehe), dann ist der Fehler nicht in dem von Ihnen geposteten Codeausschnitt zu suchen.</p>
<p>Grüße<br />
Stefan</p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: Klaus Brokmann</title>
		<link>http://www.java-blog-buch.de/d-java-anwendung-nur-einmal-ausfuhren/comment-page-1/#comment-4577</link>
		<dc:creator>Klaus Brokmann</dc:creator>
		<pubDate>Mon, 14 Feb 2011 06:48:53 +0000</pubDate>
		<guid isPermaLink="false">http://www.java-blog-buch.de/?p=1812#comment-4577</guid>
		<description>Guten Morgen Herr Kiesel,
Danke für die schnelle Antwort!
Ich bemerke gerade, dass ich mich vlt. etwas unglücklich ausgedrückt habe ...
Auch ich möchte mittels des Code prüfen, ob bereits eine Instanz der betroffenen Applikation läuft. Dazu lege ich genau so wie oben beschrieben, zu Beginn eine neue Socketvariable an und fange dann ggf. die Exception ab, um dabei dann ggf. die Applikation zu beenden!
Dies klappt wie gesagt auf den meisten PCs sehr gut, nur auf einigen wird die Exception leider nicht geworfen, und dann wird die Anwendung ein zweites Mal gestartet!

Hier mal der relevante Code, den ich eigentlich für fehlerfrei halte :
&lt;pre&gt;&lt;code&gt;static ServerSocket listenerSocket = null;
// ...
try 
{
    listenerSocket = new ServerSocket( nMutexServerport );
}
catch( Exception ex ) 
{
    ex.printStackTrace( );
    JOptionPane.showMessageDialog( this,
                                    &quot;Es ist bereits ein Worker auf diesem System aktiv.\n&quot; +
                                    &quot;Sollte dies nicht der Fall sein, bitte den Rechner neu starten !&quot;,
                                    &quot;Fehler&quot;, JOptionPane.ERROR_MESSAGE, null );
    System.exit( -2 );
}&lt;/code&gt;&lt;/pre&gt;

Freundliche Grüße 
Klaus Brokmann</description>
		<content:encoded><![CDATA[<p>Guten Morgen Herr Kiesel,<br />
Danke für die schnelle Antwort!<br />
Ich bemerke gerade, dass ich mich vlt. etwas unglücklich ausgedrückt habe &#8230;<br />
Auch ich möchte mittels des Code prüfen, ob bereits eine Instanz der betroffenen Applikation läuft. Dazu lege ich genau so wie oben beschrieben, zu Beginn eine neue Socketvariable an und fange dann ggf. die Exception ab, um dabei dann ggf. die Applikation zu beenden!<br />
Dies klappt wie gesagt auf den meisten PCs sehr gut, nur auf einigen wird die Exception leider nicht geworfen, und dann wird die Anwendung ein zweites Mal gestartet!</p>
<p>Hier mal der relevante Code, den ich eigentlich für fehlerfrei halte :</p>
<pre><code>static ServerSocket listenerSocket = null;
// ...
try
{
    listenerSocket = new ServerSocket( nMutexServerport );
}
catch( Exception ex )
{
    ex.printStackTrace( );
    JOptionPane.showMessageDialog( this,
                                    "Es ist bereits ein Worker auf diesem System aktiv.\n" +
                                    "Sollte dies nicht der Fall sein, bitte den Rechner neu starten !",
                                    "Fehler", JOptionPane.ERROR_MESSAGE, null );
    System.exit( -2 );
}</code></pre>
<p>Freundliche Grüße<br />
Klaus Brokmann</p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: Stefan Kiesel</title>
		<link>http://www.java-blog-buch.de/d-java-anwendung-nur-einmal-ausfuhren/comment-page-1/#comment-4576</link>
		<dc:creator>Stefan Kiesel</dc:creator>
		<pubDate>Sat, 12 Feb 2011 13:59:15 +0000</pubDate>
		<guid isPermaLink="false">http://www.java-blog-buch.de/?p=1812#comment-4576</guid>
		<description>Hallo Herr Brokmann,

vermutlich läuft unter dem gewählten Port auf bestimmten Rechnern in der Firma bereits eine andere Anwendung. Entweder müssen Sie diese Anwendung(en) identifizieren und beenden, oder - was die vermutlich leichtere Lösung ist - einen anderen Port wählen.

Gruß
Stefan</description>
		<content:encoded><![CDATA[<p>Hallo Herr Brokmann,</p>
<p>vermutlich läuft unter dem gewählten Port auf bestimmten Rechnern in der Firma bereits eine andere Anwendung. Entweder müssen Sie diese Anwendung(en) identifizieren und beenden, oder &#8211; was die vermutlich leichtere Lösung ist &#8211; einen anderen Port wählen.</p>
<p>Gruß<br />
Stefan</p>
]]></content:encoded>
	</item>
</channel>
</rss>

