Just a very short snippet to show how one may access schema elements from a WSDL definition by using WSDL4J.

javax.wsdl.xml.WSDLReader wsdlReader11 = javax.wsdl.factory.WSDLFactory.newInstance().newWSDLReader();
Definition def = wsdlReader11.readWSDL( wsdlUri );
for( Object o : def.getTypes().getExtensibilityElements()) {
	if( o instanceof javax.wsdl.extensions.schema.Schema ) {
		org.w3c.dom.Element elt = ((javax.wsdl.extensions.schema.Schema) o).getElement();
		// Navigate in the DOM model of the schema
		// You can use Schema#getImport() to work with imports
	}
}

Obviously, one better approach could be to get the schema object from WSDL4J and pass it to a XML schema parser then, instead of navigating in the DOM model.
Anyway, I tried this approach, but it is quite heavy then. I will most probably migrate to EasyWSDL as soon as the next release is online. In a first time, it will replace WSDL4J for WSDL 1.1. And later, it should also replace Apache Woden for WSDL 2.0. I think I will talk in details of that soon.


Petite recette pour générer un keystore java (JKS) contenant un certificat signé par une autorité de certification (CA ou « certificate authority), en utilisant openssl et keytool… Très utile, par exemple, pour activer SSL.

(note : j’ai mis « motDePasse » partout, comme mot de passe, y compris quand openssl ou keytool le demandent au prompt… le plus simple étant de remplacer çà par le votre, et d’utiliser aussi le même partout !)

Tout d’abord, si vous ne diposez pas déjà d’un certificat provenant d’une autorité de certification (CA – « certificate authority »,  comme par exemple Verisign, Gandi ou CertEurope), vous allez créer votre propre CA (et son certificat, qui sera utilisé pour signer le votre) :


openssl genrsa -out ca.key


openssl req -new -x509 -days 365 -key ca.key -out ca.crt

A partir de là, on considèrera que le certificat de la CA est « ca.crt » (qu’il provienne d’une véritable autorité de certification, ou que vous l’ayez créé vous-même, comme ci-dessus).

Vous allez maintenant créer votre clé privée (server.key), et un « certificate signing request » (CSR) utilisée pour demander à la CA de vous produire un certificat signé :


openssl genrsa -out server.key


openssl req -new -key server.key -out server.csr

Maintenant, muni du certificat de la CA et de votre CSR, vous allez générer votre certificat signé par la CA (server.crt) :


openssl x509 -req -days 365 -in server.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out server.crt

Bien… Vous disposez de tout ce qu’il faut pour activer SSL, par exemple : à savoir, un certificat signé (server.crt) et une clé privée (server.key).

Supposons maintenant que vous souhaitez importer ceci dans un « keystore » java au format JKS (utilisé, par exemple, pour activer SSL dans un serveur d’appli java, comme jetty) : il faudra y stocker le certificat + la clé privée.

C’est possible avec keytool depuis le JDK 1.6 (sic… avant, il fallait écrire du code pour importer la clé !), moyennant quelques « incantations » : à savoir, génération d’un keystore au format PKCS12 contenant la clé + le certificat, et import de ce keystore dans un nouveau keystore au format JKS.


openssl pkcs12 -export -in server.crt -inkey server.key -out keystore.p12 -name monAlias -CAfile ca.crt -caname root


keytool -importkeystore -deststorepass motDePasse -destkeypass motDePasse -destkeystore server.jks -srckeystore keystore.p12 -srcstoretype PKCS12 -srcstorepass motDePasse -alias monAlias

Et voilà : votre keystore s’appelle server.jks ! Ouf…

Note : en ce qui concerne Petals, cetet recette sera utile pour activer SSL dans des composants encore en gestation, à l’heure où cet article est publié : à savoir, la prochaine release du BC-SOAP, et le BC-PRESTO (déjà disponibles dans les sources de Petals).

P.S. L’absence de clé privée dans le keystore (si vous y importez uniquement le certificat, par exemple) peut être la cause d’erreurs assez peu explicites. Dans mon cas :
- côté client (FireFox), « Impossible de communiquer en mode sécurisé avec le pair : aucun algorithme de chiffrement en commun (Code d’erreur : ssl_error_no_cypher_overlap) ».
- côté serveur (Jetty), « javax.net.ssl.SSLHandshakeException: no cipher suites in common »

While I am blogging, let me seize the occasion to mention the talks some of my colleagues gave last week at the OW2 conference 2010.
This annual event was hold this year at La Cantine in Paris and lasted two days. The conference mainline theme was Open Source for Open Clouds.

I was not there, so I cannot give a lot of feedback.
However, the talks were filmed and the video are available here.

Among them, there is the one of Pierre-Yves Gibello, who presented the work made on PRESTO.
PRESTO is a communication protocol based on WS Reliable Messaging (WS-RM) and powered by French Government and Administration.
It is made up of a common library (a kit), that should be able to interoperate with several Software (and this is why Microsoft and Oracle also try to support it).
Petals Link is involved in both the development of the kit and in the development of a Petals connector for PRESTO.
You can watch this talk here.

The second talk for Petals Link was made by Christophe Hamerling about Petals and Cloud Computing.
The presentation is based upon the work that has been done in a European Research project called SOA 4 All. This project focus on both large-scaled service deployments (at the Internet scale) and on Web semantics. But it also defined the foundations of the usage of Petals in cloud solutions. These foundations also contribute to the OW2 Cloud Initiative (Christophe being among the technical leaders of this initiative).
You can watch his talk here. And take a look at his blog for more feedback about the conference.


I have just faced a problem with Eclipse menus.
Because I did not find a simple solution, I had to use mine and I decided to share it here.
It is not elegant, but it works.

The problem

I have created a multipage editor. And one of the pages is a simple composite that embeds a ZEST diagram.
And I want to have a contextual menu on this diagram.

So, I registered it on the composite using:

MenuManager menuMgr = new MenuManager() ;
final Menu menu = menuMgr.createContextMenu( this.graphViewer.getGraphControl());
this.graphViewer.getGraphControl().setMenu( menu );
this.eipDesigner.getSite().registerContextMenu( menuMgr, this.graphViewer );

It allows me to register menu items from commands in my plugin.xml (using the org.eclipse.ui.menus extension-point).
Unfortunately, my menu contains items that do not make sense for my editor (Run as, Debug as, Compare with…).
These items are contributed by other plug-ins that I cannot get rid off (they are required).

The solution

After looking at the code that populates the menu from plug-in contributions, I found a light way to filter the displayed items.

MenuManager menuMgr = new MenuManager() {
@Override
public IContributionItem[] getItems() {

  IContributionItem[] items = super.getItems();
  List<IContributionItem> filteredItems = new ArrayList<IContributionItem> ();
  for( IContributionItem item : items ) {
      if( item != null
           && item.getId() != null
           && item.getId().startsWith( "com.ebmwebsourcing." ))
         filteredItems.add( item );
  }

  items = new IContributionItem[ filteredItems.size()];
  return filteredItems.toArray( items );
  }
};

final Menu menu = menuMgr.createContextMenu( this.graphViewer.getGraphControl());
this.graphViewer.getGraphControl().setMenu( menu );
this.eipDesigner.getSite().registerContextMenu( menuMgr, this.graphViewer );

And it works.
I only have to make sure my contributions have a valid ID.


OW2Con 2010, la conférence annuelle du consortium OW2, se tenait la semaine dernière à Paris au co-working space ‘La Cantine‘. Pour la première année, cette manifestation n’était pas organisée pendant le salon Solution-Linux, mais ce n’est pas pour cela que le monde n’était pas au rendez-vous avec une grosse centaine de participants et un programme bien rempli. L’occasion d’écouter des présentations de qualité autour de l’open source, du cloud computing, des projets OW2 et de rencontrer les personnes que je côtoie depuis quelques années via les nouvelles technologies de communication…

Le ‘Cloud Summit’ de la première journée était je pense la partie la plus attendue et la plus suivi. Ce thème excite évidement beaucoup de monde en ce moment, et chez OW2, l’initiative Cloud est bien lancée avec de premiers résultats et prototype prévus pour l’an prochain.
Coté speakers, le niveau était là, ce qui m’a beaucoup amusé, c’est la présence de représentants des projets OpenNebula et OpenStack, deux solutions de virtualisation de ressources pour le Cloud qui se ressemblent fortement. Mis a part une solution EU et une autre US, les différences sont assez minimes (tout du moins dans ce qui a été présenté). Affaire a suivre sur le Net ou ici car j’aurais l’occasion de mettre en oeuvre très prochainement ces frameworks pour les travaux Cloud que je mène actuellement…

De la deuxième journée, je retiens principalement les présentations relatives aux projets OW2 : Jonas, XWiki, Talend, Bonita.
La démo combinée de Talend et de Bonita est simple mais efficace. Effectivement, on se doutait déjà que les deux produits marchait sans problèmes, là j’en suis sur, pas grand chose a dire de plus la dessus…
Je préfère approfondir un peu sur les présentations relatives à Jonas, le serveur J2EE principalement développé par Bull. Les slideshares cités dans un tweet de leur auteur (@florentbenoit):

Sur la partie ‘Reliable Asynchronous Web Services on JOnAS Java EE server’ fournissant un nouveau mode d’échange de message reliable et asynchrone à Apache CXF, mon constant est le suivant : L’approche est non lightweight et est plutôt orientée pour l’entreprise ie il faut des instances de Jonas pour faire tourner cette solution. Fini le bon vieux Endpoint e = Endpoint.publish(); . Mais disons ici que ce n’est pas le but. Le vrai but est démontré par une démo efficace; client et serveurs peuvent ‘tomber’, les messages seront de toute façon délivrés lorsque les parties intéressées seront de retour (A méditer pour Petals ESB…).
Sur la deuxième présentation ‘Secure your Java EE projects by using JOnAS audit tools’, je retiens la partie présentation des informations de monitoring qui permet de suivre le cheminement d’une invocation dans tout les modules entrant en jeu. La solution de présentation basée sur Flex est sexy, c’est vraiment mieux que de montrer des messages XML dans une pauvre table HTML… Cette partie aussi me semble très intéressante à extraire de Jonas et à rendre générique et disponible pour tous…

Tout cela (et tout ce que j’ai raté) confirme vraiment que les personnes impliquées dans OW2 fournissent vraiment un travail de qualité, que ce soit au niveau des projets, du management du consortium et sont vraiment motivés. Je pense vraiment que le travail autour des initiatives lancées cette année, que ce soit pour le Cloud ou le BI fourniront des solutions compétitives car les gens sont là, compétents et motivés!

Pour ceux qui ne suivent pas mes tweets, toutes les vidéos de ces deux journées sont disponibles en ligne.


Classé dans:Conference Tagged: Apache CXF, cloud, Cloud computing, conference, France, Java, JOnAS, La Cantine, Open source, opensource, ow2, OW2 Consortium, PEtALS, petalslink, Planet-Libre, Talend, XWiki

La semaine dernière je publiais les slides de mon talk sur la SOA et le Cloud à OW2Con 2010, cette semaine la vidéo est finalement en ligne…

Finalement, parler (en anglais) devant une centaine de personnes n’est pas si difficile et c’est même très motivant, il me tarde déjà la prochaine fois!


Classé dans:Conference Tagged: conference, Open source, opensource, ow2, ow2con, PEtALS, petalslink, presentation, SOA, talk

Petals ESB updates: SE-BPEL & Webconsole

In: Uncategorized

30 Nov 2010

These maintenance versions correct a few bugs, including a fix for notifications in SE-BPEL.

Downloads :

petals-se-bpel-1.0.6.zip 30-Nov-2010 09:00 11M
petals-webconsole-ui-2.0.5.war Mon Nov 22 10:37:16 CET 2010 5715360  

Compatible with Petals ESB 3.1.1+

Bug fixes:

Improvements:

  • [PETALSWEBC-7] - The package javax.activation is embedded twice
  • [PETALSWEBC-36] - Avoid to load all endpoints for each node

Permalink | Leave a comment  »

Parmi les évolutions en cours dans le studio, en voici une qui va résolument faire gagner du temps aux utilisateurs.
Il s’agît d’afficher les opérations disponibles pour consommer un service dans Petals.

Pour rappel, consommer un service revient à invoquer l’une de ses opérations.
Dans certains cas, il est possible de déduire l’opération à invoquer depuis la requête (par exemple avec le mécanisme des actions SOAP). Dans d’autres cas, on a besoin d’indiquer dans la configuration du consommateur quelle opération invoquer. Jusqu’à présent, il fallait remplir cette partie à la main dans le studio. Sachant qu’un nom d’opération est un nom qualifié (avec un espace de nom), cela restait une tâche très lourde.

Désormais, il ne reste plus que certains cas pour lesquels cela devra être rempli à la main.
Avec le recul, il est facile de dire que cela aurait dû être fait dés le début. Mais ça n’a pas été le cas.
Lors de la définition d’un consommateur, si l’on s’aide de la boite de sélection de service…

… et si ce service est décrit par un WSDL, alors à la fin, on retrouve une liste déroulante avec toutes les opérations de ce service.
Pas la peine de se préoccuper du Message Exchange Pattern (MEP), celui-ci est géré en arrière-plan.

Dans le cas où ce service n’a pas de WSDL, les champs doivent être remplis manuellement.

Deux précisions tout de même :

  • Selon le composant associé à un service, il est possible, même sans WSDL, d’avoir une liste déroulante des opérations disponibles.
    Ainsi, pour un service de validation XML (SE Validation) ou un service de transformation XSL (SE XSLT), il y aura une liste déroulante à la fin de l’assistant, même si ce service n’a pas de WSDL.
  • De plus, certains consommateurs posent une limite sur l’invocation de service. Par exemple, pour l’invocation d’un service suite à la réception d’un email (BC Mail), le message d’invocation sera forcément envoyé en InOnly (le service invoqué ne devra pas répondre). Autrement dit, notre consommateur ne pourra invoquer que des opérations en InOnly. Pour faciliter cela, l’assistant va filtrer les opérations à afficher en fonction du MEP d’envoi. Dans le cas du composant Mail, seules les opérations du WSDL associée au mode d’envoi InOnly seront affichées dans la liste déroulante.

Enfin, il y a un autre assistant qui a profité de ces améliorations, et c’est celui du composant EIP.
La boite de configuration d’un EIP s’appuie désormais sur des fonctions plus avancées, qui doivent permettre d’aller plus vite en réduisant les erreurs possibles.

Certes, cet assistant risque d’être moins utilisé avec l’éditeur graphique à venir pour les EIP.
Mais c’est une évolution d’appoint appréciable.


Aujourd’hui et demain se tient la conférence annuelle du consortium Open Source OW2 à Paris. Je prendrais un peu de temps pour raconter un peu tout ce qu’il s’est passé, mais en attendant voici quelques slides de ma présentation sur notre vision SOA dans le Cloud; “Cloud Aware Large Scale Distributed SOA” que j’avais introduit ici:

En attendant plus de détails, une phrase qui m’a bien plu ce matin, simple et efficace par Jean-Pierre Laisné, président de OW2 :

Pourquoi? Parce que le brouillard commence en bas, et en bas de la pile il y a l’infrastructure, facile mais à méditer…


Classé dans:Cloud, Conference Tagged: cloud, Cloud computing, Open source, ow2, OW2 Consortium, ow2con, paris, petalslink, Service-oriented architecture, SOA
Adium icon, also known as the Evil Menu Duck (EMD)

Image via Wikipedia

J’utilise déjà Adium pour Gtalk, jabber perso et pro et en temps que Twitter-addict je me suis dit qu’il était temps de voir comment est supporté ce service dans la nouvelle version de Adium sortie il y a quelques jours (le support dans la beta était un peu juste et ne m’avait pas spécialement satisfait…). Voici donc un premier retour d’expérience sur l’utilisation de Adium et de Twitter.

Les mentions

Mentionner

Le premier soucis de l’intégration de Twitter dans un logiciel initialement conçu pour la messagerie instantanée est le mappage entre le monde du microblogging et de l’IM. Les développeurs d’Adium ont décidé que chaque abonnement Twitter serait mappé sur un buddy IM. Ok bon, je suis actuellement 538 personnes (mais activement quelques dizaines, merci les listes!). Bref, cela me donne une fenêtre de liste de contacts assez énorme, qui de plus est affreusement longue à charger au démarrage (l’enrichissement se fait pas tranche d’une centaine de contacts, je pense que les limitations de l’API Twitter doit en prendre un coup). En plus je me retrouve avec a peu prêt autant de notifications Growl me donnant le statut actuel de mes contacts…
Du coup, pas d’autre choix que de désactiver l’option ‘Afficher qui je suis dans la liste de contact‘ dans les préférences du compte Twitter.

Oui mais… En désactivant cette option, il se trouve que la completion du nom lors d’un @mention ne marche pas pour tous les utilisateurs… Pour info, la completion est disponible en tapant ‘@xxx + Tab’ xxx étant le début du nom de la personne à mentionner.
Les développeurs ont apparemment choisit de ne pas charger la liste des personnes suivies si on ne veut pas les afficher. Dommage, l’affichage n’étant pas la seule utilisation que l’on puisse faire et il arrive souvent que l’on veuille mentionner quelqu’un dans un tweet… Après avoir discuté avec les développeurs sur le canal IRC d’adium (#adium sur freenode), la seule solution est de réactiver l’option que l’on vient de désactiver un peu plus haut et de choisir le masquage des contacts pour le compte depuis ‘Affichage>Masquer certains contacts>Masquer les contacts du compte‘.

Bref, on se retrouve avec quelque chose qui marche mais qui dans mon cas prends énormément de temps à démarrer…

Être mentionné

Dommage, il semble que la seule façon de voir que l’on est mentionné dans le tweet d’un contact est une minuscule marque dans la barre de défilement… Une notification Growl aurait bien fait l’affaire (ou même une fenêtre de dialogue spéciale).

Les DM

Puisque au point précédent j’ai du désactiver l’affichage de la liste des contacts (et que je ne peux plus ‘double-cliquer’ sur le contact), comment alors envoyer un message direct?
Seule solution, créer une nouvelle conversation (cmd-N). Ouf la completion marche bien si on a bien activé l’option qui va bien (cf point précédent)…

Par contre, cette fois ci un DM venant de quelqu’un affiche bien une nouvelle fenêtre de dialogue de type chat.

Les listes

Support absent… Dommage, je ne suis activement qu’une vingtaine de personnes que j’ai placé dans une liste privée (la timeline globale étant vraiment trop horrible à suivre). Il y a sûrement ici une astuce pour créer un groupe d’utilisateur mais je n’ai pas envie de dupliquer les choses. Je m’en passerais pour le moment.

Pour conclure cet article, il est clair que le ‘mapping’ entre deux mondes pas tout à fait identiques est assez complexe mais pour une première intégration c’est déjà vraiment pas mal (en plus je ne pense pas qu’il y ait une société derrière Adium comme on peut le voir pour pas mal de projets Open Source de nos jours ie quid du business model d’un logiciel de messagerie instantanée). Ce genre d’exercice peut évidement tirer aussi les fonctionnalités de base vers le haut, a voir dans les prochaines versions.

Les points cités précédemment sont certainement contournables, et discuter avec les développeurs via le canal IRC du projet est un bon moyen de trouver des solutions alternatives en attendant la version 1.5 (le tracker est déjà bien rempli)…


Filed under: Mac OS X, SOCIAL Tagged: Adium, Instant messaging, Internet Relay Chat, Open source, twitter

Welcome

Archives

Categories

Latest Tweets

Page 10 of 32« First...891011122030...Last »