czwartek, 4 września 2008

Mule ftp bez linijki kodu

Zadanie na dzisiaj to pobieranie pliku o konkretnym rozszerzeniu "pdf" (przypuśćmy, że to będzie dokument pdf gotowy do wydruku) z serwera ftp i przekopiowanie go do jakiegoś konkretnego katalogu na dysku lokalnym, skąd będzie go można wydrukować. Całość zostanie napisane bez napisania linii kodu w Javie, sama edycja pliku konfiguracyjnego. Więc zaczynamy, najpierw trzeba połączyć się z serwerem ftp:
<ftp:inbound-endpoint user="lipka" password="******"
host="localhost" port="21" path="/Users/lipka/in" pollingFrequency="10000">
<file:filename-wildcard-filter pattern="*.pdf" />
</ftp:inbound-endpoint>

tutaj chyba nie trzeba niczego tłumaczyć. A potem przesunąć to co przyniesie nam ftp do konkretnego katalogu:
<file:outbound-endpoint path="/Users/lipka/out"
outputPattern="${ORIGINALNAME}">
</file:outbound-endpoint>
skoro mamy już wszystko (${ORIGINALNAME} - oznacza że plik nie zmieni nazwy podczas przenoszenia):) to teraz całość wygląda tak:
<?xml version="1.0" encoding="UTF-8"?>
<mule xmlns="http://www.mulesource.org/schema/mule/core/2.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:stdio="http://www.mulesource.org/schema/mule/stdio/2.0"
xmlns:file="http://www.mulesource.org/schema/mule/file/2.0"
xmlns:xm="http://www.mulesource.org/schema/mule/xml/2.0"
xmlns:ftp="http://www.mulesource.org/schema/mule/ftp/2.0"
xsi:schemaLocation="http://www.mulesource.org/schema/mule/core/2.0
http://www.mulesource.org/schema/mule/core/2.0/mule.xsd
http://www.mulesource.org/schema/mule/stdio/2.0
http://www.mulesource.org/schema/mule/stdio/2.0/mule-stdio.xsd
http://www.mulesource.org/schema/mule/file/2.0
http://www.mulesource.org/schema/mule/file/2.0/mule-file.xsd
http://www.mulesource.org/schema/mule/xml/2.0
http://www.mulesource.org/schema/mule/xml/2.0/mule-xml.xsd
http://www.mulesource.org/schema/mule/ftp/2.0
http://www.mulesource.org/schema/mule/ftp/2.0/mule-ftp.xsd">

<description>FTP connector</description>
<model>
<service name="ftpService">
<inbound>
<ftp:inbound-endpoint user="lipka" password="****"
host="localhost" port="21" path="/Users/lipka/in" pollingFrequency="10000">
<file:filename-wildcard-filter pattern="*.pdf" />
</ftp:inbound-endpoint>
</inbound>

<outbound>
<outbound-pass-through-router>
<file:outbound-endpoint path="/Users/lipka/out"
outputPattern="${ORIGINALNAME}">
</file:outbound-endpoint>
</outbound-pass-through-router>
</outbound>
</service>
</model>
</mule>

Po uruchomieniu mule:
lukasz-lipkas-computer:~/Documents/workspace/FtpConnector lipka$ mule -config conf/mule-config.xml
wrzucamy do ustalonego folderu na ftp plik o rozszerzeniu .pdf i patrzymy co się dzieje:
INFO 2008-09-04 16:19:21,454 [connector.file.0.dispatcher.1] org.mule.transport.file.FileMessageDispatcher: Connected: FileMessageDispatcher{this=63b8c1, endpoint=file:///Users/lipka/out, disposed=false}
INFO 2008-09-04 16:19:21,456 [connector.file.0.dispatcher.1] org.mule.transport.file.FileConnector: Writing file to: /Users/lipka/out/invoice113397.pdf

Jak widać wszystko działa tak jak chcemy:) można też spróbować wrzucić pliki o innym rozszerzeniu do podanego folderu i zobaczyć co się stanie, w naszym przypadku nic się nie powinno dziać.


Brak komentarzy: