mercredi 13 avril 2011

Liferay (et tomcat) : créer service sous windows 64bits

La plupart des produits (open-source) basé sur un déploiement Tomcat fournissent par défaut un bundle basé sur Tomcat "32 bits".
Quand on veux ensuite configurer l'application comme service windows (via tomcat6.exe/tomcat6w.exe/service.bat/tcnative-1.dll), on a au mieux la version 32 bits de ces exécutables, au pire on ne les a pas.


Il faut savoir qu'il n'y a pas de différence majeure entre un tomcat 32b et un tomcat 64b. Seuls les exécutables précités sont différents. Le reste de la plateforme est identique.
Donc pour rendre 64bits un tomcat, il suffit de disposer de ces fichiers.


Comment les obtenir ?
1 - Tout d'abord récupérer une version 64 bits de Tomcat, sous forme de zip.
Par exemple, pour la 6.0.32 : http://archive.apache.org/dist/tomcat/tomcat-6/v6.0.32/bin/ puis le fichier apache-tomcat-6.0.32-windows-i64.zip

2 - Extraire de ce zip les 3 fichiers suivants, présents dans /bin :
  • service.bat
  • tomcat6.exe
  • tomcat6w.exe
  • tcnative-1.dll
3 - les copier dans le répertoire /bin du bundle cible.
et voilà !

4 - Ensuite, suivre la procédure documentée pour déclarer le tomcat en service.
Bien sûr, ne pas oublier d'avoir déployé un JDK/JRE 64 bits pour le référencé dans le service.

vendredi 8 avril 2011

Newsletter Plugin for Liferay


Our company (Asten) has developed a Newsletter plugin based upon 2 portlets :
1 : Newsletter, only visible for the webmaster.
This portlet is configured (preferences dialog) with :
- an rss feed, coming from an asset publisher.
- the id of a web content display portlet. It will gives the "editorial" of the newsletter.
- the url of the unsubscribe portlet, for the creation of the unsubscribe link.
- a key for crypting
- The name of the usergroup containing the subscriber list
The HTML of the newsletter is made by parsing the rss xml feed, and via content api we extract the abstract of the articles. On the beginning of the mail we add the content of the chooses Editorial article.
We then loop on the usergroup, and send an email at each, including a specific link for the unsubscription, with a crypted parameter containing the emailaddress of the subscriber.

The email sending run on separate thread.
We store the newsletter in the annonucment portlet, but it has limitation : 4000 characters.
Instead, we plan to store the newsletter as a document in the DocumentLibrary

2 : Subscribe/unsubscribe, visible for the guests.
This portlet is configured with :
- a key for un-crypting (the same as the one in the Newsletter portlet)
- The name of the usergroup containing the subscriber list (the same as the one in the Newsletter portlet)
When a user subscribe, he gives his emailaddress and we create an user account (without password) and attach him to the configured newsletter user group.
He unsubscribes from an "in mail" url, calling back this portlet, with his emailadresse as crypted parameter. The user is then deleted.

That works well and cand be extended.

I can't give you the code, but you have here the key principes.