PROJET AUTOBLOG


Planet-Libre

source: Planet-Libre

⇐ retour index

Littlewing : Envoyer des pieces jointes à un service web avec MTOM

vendredi 18 janvier 2013 à 18:34

Je vais essayer de décrire l'ajout d'une pièce jointe à un message SOAP via l'API JAX-WS.

SOAP 1.2 permet d'envoyer à l'instar des mails des documents en pièce jointe d'un flux SOAP.

Ils peuvent être binaires ou tout simplement texte (ex. flux XML). Les flux binaires sont par défaut mis dans le message SOAP et encodé en base64. Ce qui augmente la taille du message d'environ 30% par rapport au flux binaire original....

Exemple de flux binaire encodé en base64:

  
     
       JVBERi0xLjQNJeLjz9MNCjYgMCBvYmoNPDwgDS9MaW5lYXJpemVkIDEgDS9PIDkgDS9IIFsgMTQ2MSAyMjcgXSANL0wgMjk1ODMgDS9FIDI3NTU4IA0vTiAxIA0vVCAyOTM0NiANPj4gDWVuZG9iag0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4cmVmDTYgNDMgDTAwMDAwMDAwMTYgMDAwMDAgbg0KMDAwMDAwMTIyMCAwMDAwMCBuDQowMDAwMDAxMzA5IDAwMDAwIG4NCjAwMDAwMDE2ODggMDAwMDAgbg0KMDAwMDAwMTg5MyAwMDAwMCBuDQowMDAwMDAyMDg0IDAwMDAwIG4NCjAwMDAwMDI2MjcgMDAwMDAgbg0KMDAwMDAwMzM3OSAwMDAwMCBuDQowMDAwMDAzNzUzIDAwMDAwIG4NCjAwMDAwMDQwOTcgMDAwMDAgbg0KMDAwMDAwNDE2NSAwMDAwMCBuDQowMDAwMDA0MjA0IDAwMDAwIG4NCj
     
  

On peut donc ajouter une pièce jointe dans un flux grâce à la classe DataHandler. Celle-ci fournit les mécanismes de sérialisation et de gestion des types MIME.

L' API permet également d'utiliser d'autres classes plus spécifiques : (ex.: la classe Image pour pour les images png et jpg)

Exemple:

  1. @WebService
  2. @Stateless
  3. @SOAPBinding(style=SOAPBinding.Style.DOCUMENT,use=SOAPBinding.Use.LITERAL,parameterStyle=SOAPBinding.ParameterStyle.WRAPPED)
  4. public class PDFDownloaderBean implements PDFDownloaderBeanLocal {
  5.  
  6. private static final String PDF_FILE="GTD-EN.pdf";
  7. private DataHandler dataHandler;
  8.  
  9. @WebMethod
  10. public DataHandler sendPDF() {
  11.  
  12. try {
  13. FileDataSource dataSource = new FileDataSource(new File(PDF_FILE));
  14. dataHandler = new DataHandler(dataSource);
  15. System.err.println(">>>>>>>>>>FICHIER :" + dataSource.getName());
  16. } catch (Exception e) {
  17. e.printStackTrace();
  18. }
  19. return dataHandler;
  20. }
  21. }

Ici nous renvoyons dans un flux SOAP un fichier binaire.

Nous pouvons voir dans SOAPUI que les données binaires renvoyées sont encodées en base64 et mises directement dans le flux XML. Pour que ces dernières soient réellement en pièce jointe, on peut: gérer les pièces jointes manuellement en utilisant la classe SOAPMessageContext dans un handler

  1. @Override
  2. public boolean handleMessage(SOAPMessageContext context) {
  3. Boolean isOutBound = (Boolean) context.get(MessageContext.MESSAGE_OUTBOUND_PROPERTY);
  4. if (isOutBound) {
  5. try {
  6. AttachmentPart attachmentPart = context.getMessage().createAttachmentPart();
  7. FileDataSource dataSource = new FileDataSource(new File(PDF_FILE));
  8. attachmentPart.setDataHandler(new DataHandler(dataSource));
  9. attachmentPart.setContentId("pdf");
  10. context.getMessage().addAttachmentPart(attachmentPart);
  11.  
  12. } catch (Exception e) {
  13. e.printStackTrace();
  14. }
  15. }
  16. return true;
  17.  
  18. }

ou tout simplement utiliser MTOM. Ce mécanisme permet d'envoyer le flux binaire dans sa forme originale et nous éviter l'encodage en base64....

Pour activer MTOM sur notre service il faut simplement ajouter l'annotation @MTOM

  1. @MTOM
  2. @WebService
  3. @Stateless
  4. @SOAPBinding(style=SOAPBinding.Style.DOCUMENT,use=SOAPBinding.Use.LITERAL,parameterStyle=SOAPBinding.ParameterStyle.WRAPPED)
  5. public class PDFDownloaderBean implements PDFDownloaderBeanLocal

Et voila la requête générée :

  1. xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:prot="http://proto.touret.info/">
  2. />
  3. >
  4. />
  5. >
  6. >

et la réponse

  1. xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
  2. >
  3. xmlns:ns2="http://proto.touret.info/">
  4. >
  5. href="cid:f25753c5-c8eb-4ced-b6cd-7c89c687a7c0@example.jaxws.sun.com" xmlns="http://www.w3.org/2004/08/xop/include"/>
  6. >
  7. >
  8. >
  9. >

On peut voir que le message SOAP n'indique qu'une référence à la pièce jointe ( un peu comme les images inclus dans un mail HTML) et non le flux en base 64.

Le résultat vu par SOAPUI: ScreenShot001.png

Ressources

Un article intéressant sur le site d'IBM

Gravatar de Littlewing
Original post of Littlewing.Votez pour ce billet sur Planet Libre.

Nono : Mais où est shaarli ?

vendredi 18 janvier 2013 à 13:23

Ca va bientôt faire un mois que j'ai plus posté quoi que ce soit... C'est donc honteux, la queue entre les jambes, que je me décide ENFIN à montrer un signe de vie . Oui, je sais, je ne vous manque peut-être pas, mais avez-vous songé à la récifroque (coquille volontaire) :-) ?

Bref, concernant les Nono's Songs ou encore les Serv'o'm0le, je n'ai vraiment pas d'excuse. Manque de temps, manque de motivation, ça reviendra sans doute, et le moins tard possible. Oui, c'est la version pessimiste du "plus tôt possible" :-) !

Par contre du côté des Nono's Vrac, je continue à faire ma veille. Bon, sur mois un entier je dois avoir plus de 100 liens TRÈS sélectionné à poster, et plus j'en accumule, plus ça me fait peur de le rédiger... En clair, il est grand temps que je me mette un coup de pied au cul : IL FAUT que j'installe un shaarli...

C'est ce que j'ai commencé à faire en envoyant bêtement un mail à sebsauvage, lui posant quelques question sur mes envies de fonctionnement.

Pourquoi "bêtement" ? Tout simplement :

  1. parce qu'il n'est pas là pour faire le support de son appli, il est déjà assez overbooké (comme tout le monde ?!) en ce moment pour ça
  2. car je me prive de vous, utilisateurs de shaarli, qui pouvez peut-être répondre à mes questions, dont voici un résumé :

Je compte, dans un futur proche, passer à shaarli pour générer mes nono's vrac automatiquement depuis la BDD de shaarli.

Le souci, j'ai jamais bossé avec une BDD comme celle de shaarli...

Me sera-t-il possible, automatiquement, via une requête, une api, ou un bout de code, de :

Geek de France : Petit guide des consoles portables sous GNU/Linux

vendredi 18 janvier 2013 à 13:15

Tux_Born_to_Frag

Aujourd’hui, Geek de France souhaitait vous présenter différents projets de console de jeux vidéo ayant abouti ou abandonné ou en cours de développement ou ya (Vous comprendrez le jeu de mot dans le prochain article concernant les consoles de salon) et utilisant notre système d’exploitation GNU / Linux.

Notre première partie concerne les consoles portables.

La saga GP2X

Je ne peux vous parler de la GP2X sans vous parler avant de son ancêtre la GP32. La GP32 était une console portable coréenne, sortie en 2001 et produite par la société Game Park, bien que n’étant pas sous GNU / Linux, c’était une console ouverte qui permettait le bidouillage (« hackable » si vous me permettez cet anglicisme).

Gp32-flu

Suite à un désaccord interne sur la prochaine console une partie des employés quittèrent Game Park pour fonder GamePark Holdings qui produira la GP2X,  la première console portable sous GNU / Linux et donc l’héritière spirituelle de la GP32.

Quant à Game Park, sa future console portable XGP, ne vit jamais le jour et la société mis la clé sous la porte en 2006.

La GP2X sortie initialement en Corée, en 2005, au prix de 185$ connue quelques versions matérielles dont la dernière, la « F200″ sortie en 2007 remplaçait le joystick par une croix directionnelle et un écran tactile muni d’un stylet.

gp2x

Au niveau matériel, la console avait les caractéristiques suivantes :

En 2008, Game Park Holdings annonça avoir vendu au total 60 000 exemplaires autour du monde et qu »un successeur allait voir le jour la GP2X Wiz.

La GP2X Wiz, sortie en 2009 au prix de 179$, tourne comme ça grande soeur sous GNU / Linux, avec les specs suivantes :

La GP2X Canoo, succède à la Wiz en 2010 au prix de 150$, c’est grosso modo une Wiz avec certaines specs ré-haussées:

La communautaire

Le projet OpenPandora a commencé quand des membres de la communauté GP32X (forum qui rassemble les possesseurs des consoles portables coréennes, sous GNU / Linux, GP32 et GP2X) ont décidé de faire équipe afin de mettre au point la console portable libre ultime. Leur première idée était essentiellement une version GP32 sans ses lacunes (batteries, contrôles) puis ils se sont tournés vers le forum GP32X pour définir les spécifications de la Pandora sur la base des idées et des suggestions des membres de la communauté. Le développement c’est financé à travers les précommandes.

pandora

La console a eu droit à 3 versions Classic, Rebirth et 1Ghz dont les specs sont les suivantes:

Au final, on est plus en présence d’un UMPC (mini ordinateur portable) avec son clavier QWERTY que d’une simple console, mais son prix assez élevé de 279€ pour la Classic 439€ pour la Rebirth et 539€ pour la 1Ghz explique les 3500 exemplaires vendus. Enfin seulement n’est pas le mot judicieux car à y regarder de plus près on est pas dans une logique commerciale ici, on est devant une console de qualité produite communautairement et en Europe: au début les consoles n’étaient produites qu’une fois les précommandes enregistrées dépassaient un certain seuil.

La plus hackée

J’ai failli oublié la Dingoo, une autre console portable, chinoise, mais qui à l’origine n’est pas sous GNU/Linux. Sortie en 2009 et vendue à plus d’un million d’exemplaires, son succès s’explique sûrement par son bas prix de 82$. Mais c’est ça très prolifique communauté qui nous intéresse puisque cette console a bénéficié d’un port GNU / Linux connu sous le nom de Dingux, installable en dual boot sur la console, 5 mois après sa sortie.

dingoo

La plus récente

La GCW Zero est une héritière de la Pandora et de la Dingux : c’est une console faite par des joueurs pour des joueurs et qui est soutenu par la communauté autour de la Dingoo. Sortie en édition limité à 250 exemplaires en décembre 2012, les premiers tests de la console ont été très positifs.

gcwzero

Les caractéristiques de la consoles sont les suivantes:

Un kickstarter a été lancé, le 8 janvier dernier afin de récolter 130 000 $ avant le 28 janvier à 7h30 pour permettre le lancement de la production en masse de la console portable.

Pourquoi contribuer à cette opération, voici quatre bonne raisons de le faire:

  1. Son prix n’est pas prohibitif
  2. Son prix publique sera sûrement un peu plus élevé par la suite
  3. Vous soutiendrez un projet de console libre.
  4. Vous obtiendrez la reconnaissance de toute l’équipe derrière la GCW.

 

L’opération

GCW-Zero-Kickstarter

 

Suivant la hauteur du don plusieurs options vous sont proposés :

Prévoyez tout de même 20$ supplémentaire pour les frais d’envoi…

Gravatar de Geek de France
Original post of Geek de France.Votez pour ce billet sur Planet Libre.

Framablog : Geektionnerd : L'histoire d'Aaron Swartz

vendredi 18 janvier 2013 à 12:04

C’est un Geektionnerd très spécial que nous propose Gee cette semaine (cliquez sur l’image pour l’agrandir).

Vous pouvez également lire les traductions de quelques uns de ses articles que nous avons publié cette semaine, ainsi que ce Manifeste Hacker qui lui va si bien.


Geektionnerd - Simon Gee Giraudot - CC by-sa

Geektionnerd - Simon Gee Giraudot - CC by-sa


Crédit : Simon Gee Giraudot (Creative Commons By-Sa)

Gravatar de Framablog
Original post of Framablog.Votez pour ce billet sur Planet Libre.

Lolokai : Changer la langue d’un utilisateur dans Centreon

vendredi 18 janvier 2013 à 11:03

Ce post est un petit pense-bête pour toutes celles et ceux qui souhaiteraient changer la langue d’un utilisateur dans Centreon.

changer-langue-centreon-lolokai

Que faire si ma langue n’est pas affiché dans la liste déroulante ?

Vous pouvez télécharger les fichiers de traduction ici : http://translate.centreon.com/ ces fichiers sont au nombre de deux : help.mo et messages.mo. Créez le dossier correspond à votre langue dans /usr/share/centreon/www/locale/. Exemple avec la version italienne (je donne dans l’originalité :D ) :

# cd /usr/share/centreon/www/locale/
# mkdir it_IT
# mkdir it_IT/LC_MESSAGES

Copiez les fichiers de traduction téléchargé (ici : http://translate.centreon.com/it/centreon-2.3/LC_MESSAGES/) dans ce dossier. Un petit changement de droits pour que votre serveur apache puisse travailler avec ces fichiers :

# chown -R apache:apache /usr/share/centreon/www/locale/it_IT

Votre dossier de traduction devrait apparaître dans les paramètres de l’utilisateur.

Si l’utilisateur est connecté au moment de la modification notez que pour que les modifications soient pris en charge il doit se déconnecter et se reconnecter.

 Loic FONTAINE

Gravatar de Lolokai
Original post of Lolokai.Votez pour ce billet sur Planet Libre.