domenica 24 febbraio 2008

Come ricevere le email tramite MDB

In JBOSS.
Per ricever le email tramite un Message Driven Bean (sfruttando quindi le caratteristiche asincrone e la gestione ad eventi), regolandone i tempi di polling, la casella email da monitorare, server posta, etc:
1) scaricare jboss-seam (http://labs.jboss.com/jbossseam/download/)
2) estrarre dalla cartella mail, il file mail-ra.rar e sostituire quello presente in jbossXX/server/SERVER_NAME/deploy
3) creare una applicazione jar contente un mdb simile a questo:

import javax.ejb.ActivationConfigProperty;
import javax.ejb.MessageDriven;
import javax.mail.Message;

import org.jboss.annotation.ejb.ResourceAdapter;
import org.jboss.resource.adapter.mail.inflow.MailListener;
import org.jboss.logging.Logger;

/**
* A JavaMail based MDB for EJB3 use
*/
@MessageDriven(activationConfig={
@ActivationConfigProperty(propertyName="mailServer", propertyValue="mail.server.it"),
@ActivationConfigProperty(propertyName="mailFolder", propertyValue="INBOX"),
@ActivationConfigProperty(propertyName="storeProtocol", propertyValue="pop3"),
/* se volete verificare cosa succede dietro le quinte /*
@ActivationConfigProperty(propertyName="debug", propertyValue="true"),
/* ogni quanti microsecondi deve scattare il controllo della casella email - es. 30 sec /*
@ActivationConfigProperty(propertyName="pollingInterval", propertyValue="30000"),
@ActivationConfigProperty(propertyName="userName", propertyValue="fiorenzo.pizza@server.it"),
@ActivationConfigProperty(propertyName="password", propertyValue="miapwd")
})
@ResourceAdapter("mail-ra.rar")
public class EmailMDB implements MailListener
{
private static Logger log = Logger.getLogger(EmailMDB.class);

public void onMessage(Message msg) {
log.info("onMessage, msg="+msg);
parseMsg(msg);
........
}

private void parseMsg(Message msg) {

}
}
5) per compilarlo sarà necessario includere tra le librerie il file mail-ra.jar.
6) deployate il file...


Commenti: stavolta funziona...
Nella versione in Seam hanno migliorato il connettore, aggiungendo qualche funzionalità di controllo in più.

riferimento sacro:
http://wiki.jboss.org/wiki/Wiki.jsp?page=InboundJavaMail
http://docs.jboss.com/seam/latest/reference/en/html/mail.html

domenica 3 febbraio 2008

Gestione path file system - URL e URI Java

Passare sempre per la trasformazione URL-->URI, quando si gestiscono path su file system per evitare problemi di portabilità di codice Java tra Linux e Windows.
Infatti i percorsi che includono cartelle contenenti caratteri come lo spazio (per esempio "Documents and settings"), nella formattazione in URL vengono sostituiti con altri caratteri (per lo spazio con il '%20') e le risorse non vengono più riconosciute.

Trasformando sempre l'url nell'uri corrispondente (che non applica nessuna formattazione) si evitano questi imprevisti:

URL url =getClass().getClassLoader().getResource(...path su file system...);

.... = new File(url.toURI().getPath()));