czwartek, 25 września 2008
OSGi i SpringSource podcast
Dzisiaj trafiłem na rewelacyjny podcast Ben Hale wraz ze slajdami opowiada o OSGi. Opowiada on w bardzo prosty i przejrzysty sposób dlaczego warto używać OSGi wraz z jego historią. Miejmy nadzieje, że Jacek równie ciekawie przedstawi OSGi podczas JDD.
wtorek, 23 września 2008
Robienie prezentacji Beamer + Latex

Zadanie na dziś zrobić prezentacje szybko i oczywiście przy użyciu ulubionego edytora :) czyli Eclipse + TeXlipse wtyczka. Więc znalazłem jak zainstalować latex + beamer pod mac OS.
Ja zrobiłem to troszkę szybciej, po prostu w konsoli :
lipka$ sudo port install texlive
Potem szybko przestudiowałem dokumentację tex:) i jak używać wtyczki i mogę teraz robić prezentacje:) jeszcze rzuciłem okiem na bardzo fajny artykuł jak szybko stworzyć prezentacje używając Beamera.
piątek, 19 września 2008
OSGi i wielcy gracze
Przeglądając dzisiaj blogi natrafiłem na artykuł SpringSource Team Blog, w którym można było przeczytać, którzy wielcy gracze w dziale IT (SpringSource, IBM, Oracle, RedHat, Sun, SAP, ProSyst and Paremus) używają OSGi i jakie korzyści im to przyniosło. Więc nic więcej nie pozostało jak bliżej przyjrzeć się dokumentacji OSGi i jakiś mały projekt zrobić, żeby zobaczyć jak to działa w praktyce:).
środa, 17 września 2008
Mule z JMS
Zadanie na dzisiaj odebrać z ftp plik o rozszerzeniu xml i na podstawie tego pliku stworzyć odpowiedni obiekt, który będzie wysłany do odpowiednich kolejek w JMS (Apache activemq) (jak to zainstalować było opisane w Apache ActiveMQ instalacja ). Jak pobrać plik z ftp wiemy, należy tylko napisać komponent który po odberaniu pliku z serwisu ftp, będzie go w stanie sparsować. Sztuczka polega na tym, żeby nasz komponent implementował interfejs org.mule.api.lifecycle.Callable i po pobraniu pliku odpowiednio zaimplementować metodę onCall z interfejsu Callable. Więc tworzymy komponent RequestCreator który na podstawie pliku xml (a dokoładnie tagu ) będzie tworzył pdf ->PdfRerquest albo color -> ColorProofingRequest. Przykładowy plik xml:
Nasz klasa RequestCreator wygląda tak:
Więc mamy klasę która pobiera PayloadAsString czyli przerabia nasz plik xml w String potem jest parsowany i w zależności od nazwy tworzymy klasę PdfRequest albo ColorProofingRequest. Oby dwie klasy wyglądają identycznie, jedna dla przykładu:
Teraz pozostaje nam podłączyć JMS do mule, musimy dodać więc kolejną linie do naszego pliku konfiguracyjnego:
później trzeba zdefiniować transformacje, żeby stworzony przez nasz obiekt wsadzić do JMS:
<jms:object-to-jmsmessage-transformer name="ObjectToJMS" />
teraz pozostaje nam jeszcze w zależności od zwróconego przez RequestCreator klasy wrzucić dany obiekt do odpowiedniej kolejki, a w przypadku gdy żaden obiekt nie będzie pasował wrzucamy go do kolejki request.invalid, więc tak wygląda obsługa wrzucenie czegoś do kolejki:
a cały plik konfiguracyjny wygląda tak:
uruchamiamy mule:
lukasz-lipkas-computer:~/Documents/workspace/JMSRequest lipka$ mule -config conf/jmsticket-config.xml
wrzucamy jakieś pliki xml, prawidłowy lub nie:) i patrzymy jak zapełniają się nasze kolejki w Apache Active MQ
Mule:
Jak widać nasz request zostały umieszczone w kolejkach:) Więc w następnym wpisie trzeba będzie je pobrać i na przykład przekazać jako parametry do jakiegoś programu, chyba, że ktoś ma jakiś inny pomysł:)każdy pomysł mile widziany:)
- <span style="color: rgb(255, 0, 0);"><request></span> <span style="color: rgb(255, 0, 0);"><name>pdf</name></span> <span style="color: rgb(255, 0, 0);"><paramter>300dpi</paramter></span> <span style="color: rgb(255, 0, 0);"></request></span>
<request> <name>pdf</name> <paramter>300dpi</paramter> </request>
Nasz klasa RequestCreator wygląda tak:
- <span style="font-size:85%;">
- package com.itsilesia.jmsexample;
- import java.io.StringReader;
- import javax.xml.parsers.DocumentBuilder;
- import javax.xml.parsers.DocumentBuilderFactory;
- import org.mule.api.MuleEventContext;
- import org.mule.api.MuleMessage;
- import org.mule.api.lifecycle.Callable;
- import org.w3c.dom.Document;
- import org.w3c.dom.Element;
- import org.w3c.dom.Node;
- import org.w3c.dom.NodeList;
- import org.xml.sax.InputSource;
- /**
- * @author lipka
- *
- */
- public class RequestCreator implements Callable {
- public Object onCall(MuleEventContext context) throws Exception {
- MuleMessage message = context.getMessage();
- String xmlFile = message.getPayloadAsString();
- try {
- DocumentBuilder documnetBuilder = DocumentBuilderFactory
- .newInstance().newDocumentBuilder();
- Document document = documnetBuilder.parse(new InputSource(
- new StringReader(xmlFile)));
- document.getDocumentElement().normalize();
- NodeList list = document.getElementsByTagName("request");
- for (int i = 0; i < list.getLength(); i++) {
- Node request = list.item(i);
- if (request.getNodeType() == Node.ELEMENT_NODE) {
- Element requestElement = (Element) request;
- NodeList nameList = requestElement
- .getElementsByTagName("name");
- Element nameElement = (Element) nameList.item(0);
- NodeList textNameList = nameElement.getChildNodes();
- String name = ((Node) textNameList.item(0)).getNodeValue().trim();
- p(name);
- NodeList paramterList = requestElement
- .getElementsByTagName("paramter");
- Element paramterElement = (Element) paramterList.item(0);
- NodeList textParamterList = paramterElement.getChildNodes();
- String parameters = ((Node) textParamterList.item(0)).getNodeValue().trim();
- p(parameters);
- if(name.equals("pdf")){
- PdfRequest pdfRequest = new PdfRequest();
- pdfRequest.setParamters(parameters);
- return pdfRequest;
- }
- if(name.equals("color")){
- ColorProofingRequest colorProofingRequest = new ColorProofingRequest();
- colorProofingRequest.setParamters(parameters);
- return colorProofingRequest;
- }
- }
- }
- } catch (Exception e2) {
- p("exception");
- e2.printStackTrace();
- }
- return false;
- }
- void p(String string) {
- System.out.println(string);
- }
- }
- </span>
package com.itsilesia.jmsexample;
import java.io.StringReader;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.mule.api.MuleEventContext;
import org.mule.api.MuleMessage;
import org.mule.api.lifecycle.Callable;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;
/**
* @author lipka
*
*/
public class RequestCreator implements Callable {
public Object onCall(MuleEventContext context) throws Exception {
MuleMessage message = context.getMessage();
String xmlFile = message.getPayloadAsString();
try {
DocumentBuilder documnetBuilder = DocumentBuilderFactory
.newInstance().newDocumentBuilder();
Document document = documnetBuilder.parse(new InputSource(
new StringReader(xmlFile)));
document.getDocumentElement().normalize();
NodeList list = document.getElementsByTagName("request");
for (int i = 0; i < list.getLength(); i++) {
Node request = list.item(i);
if (request.getNodeType() == Node.ELEMENT_NODE) {
Element requestElement = (Element) request;
NodeList nameList = requestElement
.getElementsByTagName("name");
Element nameElement = (Element) nameList.item(0);
NodeList textNameList = nameElement.getChildNodes();
String name = ((Node) textNameList.item(0)).getNodeValue().trim();
p(name);
NodeList paramterList = requestElement
.getElementsByTagName("paramter");
Element paramterElement = (Element) paramterList.item(0);
NodeList textParamterList = paramterElement.getChildNodes();
String parameters = ((Node) textParamterList.item(0)).getNodeValue().trim();
p(parameters);
if(name.equals("pdf")){
PdfRequest pdfRequest = new PdfRequest();
pdfRequest.setParamters(parameters);
return pdfRequest;
}
if(name.equals("color")){
ColorProofingRequest colorProofingRequest = new ColorProofingRequest();
colorProofingRequest.setParamters(parameters);
return colorProofingRequest;
}
}
}
} catch (Exception e2) {
p("exception");
e2.printStackTrace();
}
return false;
}
void p(String string) {
System.out.println(string);
}
}
Więc mamy klasę która pobiera PayloadAsString czyli przerabia nasz plik xml w String potem jest parsowany i w zależności od nazwy tworzymy klasę PdfRequest albo ColorProofingRequest. Oby dwie klasy wyglądają identycznie, jedna dla przykładu:
- <span style="font-size:85%;">
- package com.itsilesia.jmsexample;
- import java.io.Serializable;
- /**
- * @author lipka
- *
- */
- public class PdfRequest implements Serializable{
- private String paramters;
- /**
- * @return the paramters
- */
- public String getParamters() {
- return paramters;
- }
- /**
- * @param paramters the paramters to set
- */
- public void setParamters(String paramters) {
- this.paramters = paramters;
- }
- }
- </span>
package com.itsilesia.jmsexample;
import java.io.Serializable;
/**
* @author lipka
*
*/
public class PdfRequest implements Serializable{
private String paramters;
/**
* @return the paramters
*/
public String getParamters() {
return paramters;
}
/**
* @param paramters the paramters to set
*/
public void setParamters(String paramters) {
this.paramters = paramters;
}
}
Teraz pozostaje nam podłączyć JMS do mule, musimy dodać więc kolejną linie do naszego pliku konfiguracyjnego:
- <span style="color: rgb(255, 0, 0);"><jms:activemq-connector name="jmsCon"</span> <span style="color: rgb(255, 0, 0);"> brokerURL="tcp://localhost:61616" /></span>
<jms:activemq-connector name="jmsCon" brokerURL="tcp://localhost:61616" />
później trzeba zdefiniować transformacje, żeby stworzony przez nasz obiekt wsadzić do JMS:
<jms:object-to-jmsmessage-transformer name="ObjectToJMS" />
teraz pozostaje nam jeszcze w zależności od zwróconego przez RequestCreator klasy wrzucić dany obiekt do odpowiedniej kolejki, a w przypadku gdy żaden obiekt nie będzie pasował wrzucamy go do kolejki request.invalid, więc tak wygląda obsługa wrzucenie czegoś do kolejki:
- <span style="color: rgb(255, 0, 0);"><forwarding-catch-all-strategy></span>
- <span style="color: rgb(255, 0, 0);"> <jms:outbound-endpoint queue="request.invalid" /></span>
- <span style="color: rgb(255, 0, 0);"> </forwarding-catch-all-strategy></span>
- <span style="color: rgb(255, 0, 0);"> <filtering-router></span>
- <span style="color: rgb(255, 0, 0);"> <jms:outbound-endpoint queue="request.pdf" transformer-refs="ObjectToJMS"/></span>
- <span style="color: rgb(255, 0, 0);"> <payload-type-filter expectedType="com.itsilesia.jmsexample.PdfRequest"/> </span>
- <span style="color: rgb(255, 0, 0);"> </filtering-router></span>
- <span style="color: rgb(255, 0, 0);"> <filtering-router></span>
- <span style="color: rgb(255, 0, 0);"> <jms:outbound-endpoint</span>
- <span style="color: rgb(255, 0, 0);"> queue="request.colorproofing" transformer-refs="ObjectToJMS" /></span>
- <span style="color: rgb(255, 0, 0);"> <payload-type-filter expectedType="com.itsilesia.jmsexample.ColorProofingRequest"/></span>
- <span style="color: rgb(255, 0, 0);"> </filtering-router></span>
<forwarding-catch-all-strategy>
<jms:outbound-endpoint queue="request.invalid" />
</forwarding-catch-all-strategy>
<filtering-router>
<jms:outbound-endpoint queue="request.pdf" transformer-refs="ObjectToJMS"/>
<payload-type-filter expectedType="com.itsilesia.jmsexample.PdfRequest"/>
</filtering-router>
<filtering-router>
<jms:outbound-endpoint
queue="request.colorproofing" transformer-refs="ObjectToJMS" />
<payload-type-filter expectedType="com.itsilesia.jmsexample.ColorProofingRequest"/>
</filtering-router>
a cały plik konfiguracyjny wygląda tak:
- <span style="color: rgb(255, 0, 0);"><?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"
- xmlns:jms="http://www.mulesource.org/schema/mule/jms/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
- http://www.mulesource.org/schema/mule/jms/2.0 http://www.mulesource.org/schema/mule/jms/2.0/mule-jms.xsd">
- <description>JMS connector</description>
- <jms:activemq-connector name="jmsCon"
- brokerURL="tcp://localhost:61616" />
- <jms:object-to-jmsmessage-transformer name="ObjectToJMS" />
- <model>
- <service name="jmsService">
- <inbound>
- <ftp:inbound-endpoint user="lipka" password="****"
- host="localhost" port="21" path="/Users/lipka/in"
- pollingFrequency="10000">
- <file:filename-wildcard-filter pattern="*.xml" />
- </ftp:inbound-endpoint>
- </inbound>
- <component class="com.itsilesia.jmsexample.RequestCreator" />
- <outbound>
- <forwarding-catch-all-strategy>
- <jms:outbound-endpoint queue="request.invalid" />
- </forwarding-catch-all-strategy>
- <filtering-router>
- <jms:outbound-endpoint queue="request.pdf" transformer-refs="ObjectToJMS"/>
- <payload-type-filter expectedType="com.itsilesia.jmsexample.PdfRequest"/>
- </filtering-router>
- <filtering-router>
- <jms:outbound-endpoint
- queue="request.colorproofing" transformer-refs="ObjectToJMS" />
- <payload-type-filter expectedType="com.itsilesia.jmsexample.ColorProofingRequest"/>
- </filtering-router>
- </outbound>
- </service>
- </model>
- </mule></span><span style="color: rgb(255, 0, 0);">
- <span style="color: rgb(0, 0, 0);"></span></span>
Uruchamiamy jconsole, żeby śledzić co się dzieje w Active MQ
<?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"
xmlns:jms="http://www.mulesource.org/schema/mule/jms/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
http://www.mulesource.org/schema/mule/jms/2.0 http://www.mulesource.org/schema/mule/jms/2.0/mule-jms.xsd">
<description>JMS connector</description>
<jms:activemq-connector name="jmsCon"
brokerURL="tcp://localhost:61616" />
<jms:object-to-jmsmessage-transformer name="ObjectToJMS" />
<model>
<service name="jmsService">
<inbound>
<ftp:inbound-endpoint user="lipka" password="****"
host="localhost" port="21" path="/Users/lipka/in"
pollingFrequency="10000">
<file:filename-wildcard-filter pattern="*.xml" />
</ftp:inbound-endpoint>
</inbound>
<component class="com.itsilesia.jmsexample.RequestCreator" />
<outbound>
<forwarding-catch-all-strategy>
<jms:outbound-endpoint queue="request.invalid" />
</forwarding-catch-all-strategy>
<filtering-router>
<jms:outbound-endpoint queue="request.pdf" transformer-refs="ObjectToJMS"/>
<payload-type-filter expectedType="com.itsilesia.jmsexample.PdfRequest"/>
</filtering-router>
<filtering-router>
<jms:outbound-endpoint
queue="request.colorproofing" transformer-refs="ObjectToJMS" />
<payload-type-filter expectedType="com.itsilesia.jmsexample.ColorProofingRequest"/>
</filtering-router>
</outbound>
</service>
</model>
</mule>

lukasz-lipkas-computer:~/Documents/workspace/JMSRequest lipka$ mule -config conf/jmsticket-config.xml


piątek, 12 września 2008
Mule 2.0.0 i 2.0.2 ftp problem
niestety podczas dłuższego działania poprzednie przykładu Mule ftp bez linijki kodu
okazało się, że lecą jakieś dziwne wyjątki i aplikacja odmawia posłuszeństwa, w nieskończoność rzucając wyjątki. Znalazłem w Mule - JIRA zgłoszenie problemu i okazało się, że nie działa to na Linux'ie, Windows'ie i ja dodałem zgłoszenie, że również nie działa pod Mac OS X. Dla zainteresowanych rozwiązaniem tego problemu, polecam śledzienie wątku http://mule.mulesource.org/jira/browse/MULE-3192
okazało się, że lecą jakieś dziwne wyjątki i aplikacja odmawia posłuszeństwa, w nieskończoność rzucając wyjątki. Znalazłem w Mule - JIRA zgłoszenie problemu i okazało się, że nie działa to na Linux'ie, Windows'ie i ja dodałem zgłoszenie, że również nie działa pod Mac OS X. Dla zainteresowanych rozwiązaniem tego problemu, polecam śledzienie wątku http://mule.mulesource.org/jira/browse/MULE-3192
środa, 10 września 2008
Wystartowała grupa Silesia JUG

9.09.2008 odbyło się w Katowicach spotkanie miłośników Javy i nie tylko z Jackiem Laskowski, podzielił on się z nami swoim doświadczeniem jeśli chodzi o jego działalność leadera w JUG Warszawa. No i tak się zaczęło, mamy już teraz grupę dyskusyjną Silesia JUG zarejestrowanych już 24 członków i dostałem parę e-maili od ludzi którzy nie śmiało, ale chętnie mówią o tym, że jak będzie inicjatywa to z chęcią wpadną. Więc moi drodzy proszę wszystkich ze Śląska i nie tylko o opinie na grupie dyskusyjnej z czego byście chcieli wykłady/warsztaty.
Dobra to na tyle, jeszcze tylko wspólne zdjęcie od prawej Damian Łukasik, Marcin Kołoczek, Michał Kroliczek, Łukasz Grzesik, Jacek i ja (mocna ekipa:))


i droga powrotna, zabawy z długim czasem naświetlania.

A teraz czas na powrót do Mule.
PS. Może ludzie z SILESIA JUG którzy jadą na JDD wspólnie się wybiorą do Krakowa?
poniedziałek, 8 września 2008
Dlaczego warto czytać blogi :)
Jakiś czas temu czytając wpis Grzegorza Dudy o tytule JDD za darmo . Odpowiedziałem na parę pytań na stronie konferencji Java Developer Day 2008 i dzisiaj dostałem bardzo miłego e-maila o tytule "Wygrana w konkursie Java Developers' Day 2008!". Więc 16 października będę miał okazję wysłuchać wielu ciekawych prezentacji:) Dzięki Grzesiek za wpis i za javapassion z Sang Shin w Krakowie.
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>
<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>
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ć.
<?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ć.
Subskrybuj:
Posty (Atom)