Communiquer powershell et webservice Soap. Démo avancée pratique

soap via powershell

 

L'objet est de consommer les webservices (soap ou autre) depuis powershell.

Cette première démo fait le focus sur un webservice soap simple afin de présenter facilement les notions liées.

Considérons ce webservice dont le wsdl est localisé à cette adresse: http://www.dneonline.com/calculator.asmx?wsdl

Il offre un simple calculateur. La seule méthode qui nous intéresse est la méthode Add.

Pour interroger ce webservice, nous utilisons Invoke-WebRequest de powershell.

 

cmdlet Invoke-WebRequest (iwr)

La commande get-help iwr affiche ceci:

NOM

Invoke-WebRequest

RÉSUMÉ

   Gets content from a web page on the Internet.

SYNTAXE

   Invoke-WebRequest [-Uri] <Uri> [-Body <Object>] [-Certificate <X509Certificate>] [-CertificateThumbprint <String>] [-ContentType <String>] [-Credential <PSCredential>]

   [-DisableKeepAlive] [-Headers <IDictionary>] [-InFile <String>] [-MaximumRedirection <Int32>] [-Method <WebRequestMethod> {Default | Get | Head | Post | Put | Delete |

   Trace | Options | Merge | Patch}] [-OutFile <String>] [-PassThru] [-Proxy <Uri>] [-ProxyCredential <PSCredential>] [-ProxyUseDefaultCredentials] [-SessionVariable

   <String>] [-TimeoutSec <Int32>] [-TransferEncoding <String> {chunked | compress | deflate | gzip | identity}] [-UseBasicParsing] [-UseDefaultCredentials] [-UserAgent

   <String>] [-WebSession <WebRequestSession>] [<CommonParameters>]

........

Whaoooo!!!!

 

Pour notre démo pratique, nous utilisons cette forme:

 

Spring-Boot: Comment consommer un web-service Soap? Écrire un client web service par la pratique en 15 minutes

 

Nous allons présenter un guide pratique pour écrire un client java qui consomme un web service soap.

L'idée ici est de reprendre le guide de spring.io qui hélas s'appuie sur une url wsdl ne fonctionnant plus et qui rend le guide difficile à suivre.

Je propose ici d'utiliser l'url wsdl suivante: http://www.dneonline.com/calculator.asmx?wsdl

J'indique aussi la bonne version du plugin pour corriger une erreur de ce type:

Execution default of goal org.jvnet.jaxb2.maven2:maven-jaxb2-plugin:0.12.3:generate failed: A required class..

Java 8 Collectors: Comment faire des « groupy by », agrégations ou Collect?

Ce billet présente les collectors liés à la (belle) nouvelle API Collections de Java 8.
Hélas, peu de rappel théorique sera fait ici.
Incontestablement, l'API Collection de java 8 apporte un design totalement remanié en abandonnant l'iterator au profit des streams (programmation fonctionnelle).
Nous donnons ici un certain nombre de cas pratiques avec détails permettant de saisir la notion collector.
Et nous enchaînons dans la seconde partie sur des exemples avancés.

Spring : la validation simplifiée avec Spring. Démos pratiques.

Ce post a pour objectif de vous faire découvrir les nouveautés de Spring bean validation capable dorénavant de supporter les  JSR 303 & 349. En exemple, nous verrons comment réaliser des tests unitaires et des tests d'intégration (où le validator est injecté par spring) et nous rédigerons des tests d'intégration dans lesquels nous abuserons des nouvelles annotations de spring-boot. A titre d'exemple, nous verrons également comment employer les annotations @RunWith(SpringRunner.class) et @SpringBootTest.

Java 8: Collections, Stream et opérations IO par l’exemple. Déboguer les streams

 

Ce billet aborde par la pratique le nouveau design pattern de gestion des collections en java 8 : Stream.

En java 8, le design iterator est abandonné au profit d'une meilleure conception basée sur le Stream.

Nous pouvons dire brièvement, qu'en java 8, la programmation impérative est remplacée par la programmation déclarative (penser au langage  SQL).

Les exemples démos choisis sont des opérations sur les répertoires et fichiers avec des assertions sur le nombre de lignes et sur les contenus de ces fichiers.

Nous donnons aussi une manière de déboguer les streams.

Voici les ingrédients utilisés dans ce blog: Java 8, Stream, l'api AsssertJ pour le test Junit.

Pratiquons le Design Pattern Delegate (ou Façade) : Démos avancées

 

Le design pattern delegate ( ou façade ) est un pattern très utilisé et facile à expliquer.

Deux démos, une simple et une seconde très avancée, vous permettent de pratiquer sereinement ce design sans difficulté.

Ainsi, les ingrédients de ce blog sont divisés en deux parties:

  • La première partie, contenant une démo simple, n'exige aucun prérequis (mis à part un peu de java 8).
  • La seconde partie, contenant une démo très avancée, nécessite de connaître un peu spring-batch et en particulier son FlatFileItemReader (retrouvez un article sur le sujet ici).

Spring-Batch (Part III) : Comment lire ou parser efficacement divers fichiers CSV avec RecordSeparatorPolicy?

 

L'objet de ce billet est de vous présenter les "best-practices" afin de lire les divers de formats de fichiers csv du simple à l'exotique.

Le reader de spring-batch doit être configuré (et uniquement si possible 🙂 ) pour gérer des formats particuliers de fichiers csv.

La démarche reste identique pour les autres formats de fichiers.

Comme il est difficile de traiter tous les cas pour un blog, la démo ci-après se focalise sur ce fichier csv:

Spring-Batch (Part II): Validation and Skip Policy. Ou comment gérer les données non valides dans un batch?

Après la première partie sur les tests unitaires du reader de Spring-Batch, nous passons à la validation des données input.
Ce second volet exige un minimum de connaissances sur spring & spring-batch.

Nous tentons de relever plusieurs défis majeurs correspondants aux attentes en production:

  • identifier avec précision le numéro de la ligne invalide (non traitée par le batch lancé la veille),
  • générer un rapport exploitable du déroulement du batch (exécutée la nuit),
  • porter en base les erreurs rencontrées en traçant correctement leurs causes exactes,

Nous nous posons la question de la validation des lignes lues par le Reader et aussi comment définir une politique d'éviction (skip) de ces lignes non valides.

En franglais, c'est la question validate & skip policy dans les batchs.

Ce sont deux notions bien distinctes mais fort bien liées.