Invocation d'un bc-sql depuis un Jsr181

classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|

Invocation d'un bc-sql depuis un Jsr181

blinier
This post has NOT been accepted by the mailing list yet.
Bonjour,

J'ai exposé une base de données Postgre dans un service Petals, je voudrai maintenant consommer ce service depuis un autre service de type Jsr181, mais un petit point me parait obscur.

Le seul moyen que j'ai trouvé et d'exposer mon bc-sql au travers d'un bc-soap.

Voici la chaine technique qui fonctionne actuellement :

Client SOAP référencé dans mon Jsr181 ==> BC-SOAP ==> BC-SQL ==> PostGres

Voici la question qui me tracasse :

- Doit on obligatoirement passer par un second Binding Component une fois le BC-SQL en place ? Ou pouvons nous directement invoquer le service petals exposé par ce BC-SQL ? (en JBI ou à l'aide d'une API éventuelle ?)

J'imaginais plutôt au début me retrouver avec une chaine qui fonctionne ainsi :

Jsr181 ==> BC-SQL ==> PostGres


Merci pour les réponses que vous pourrez m'apporter.
Reply | Threaded
Open this post in threaded view
|

Re: Invocation d'un bc-sql depuis un Jsr181

Vincent Zurczak
Bonjour,

Non, on n'a pas à passer par un BC SOAP...
Là, en gros, vous exposez votre "service SQL" en service web et vous invoquez un service web. L'idéal est bien entendu d'invoquer directement ce service SQL, car le JSR-181 est également dans le bus.

Je ne sais pas avec quelle version de Petals vous travaillez, mais dans Petals Studio 1.3.x, l'assistant de création d'une SU JSR-181 créé un exemple de JSR-181 qui invoque un autre service Petals. A vous de vous en inspirer. :)
« Petals M.D. »
Reply | Threaded
Open this post in threaded view
|

Re: Invocation d'un bc-sql depuis un Jsr181

blinier
This post has NOT been accepted by the mailing list yet.
Merci pour votre réponse,

Il me semble plus propre en effet de passer par le JBIContext.

Je vais essayer de m'inspirer de cette fonction exemple propagateMessage(), j'utilise les dernière versions du studio et de l'esb.

C'est un peu plus clair maintenant ;)
Reply | Threaded
Open this post in threaded view
|

Re: Invocation d'un bc-sql depuis un Jsr181

blinier
This post has NOT been accepted by the mailing list yet.
Bonsoir,

Nous arrivons à invoquer un service JBI depuis notre Jsr181, celui-ci se déclenche bien puisqu'il affiche un log console, mais nous ne parvenons pas à lire la valeur de retour qui est une String "Hello World !".

Auriez vous s'il vous plait un exemple de code invoquant un service avec le pattern InOut ? Nous ne trouvons pas de documentations à ce sujet.

Voici ci-dessous mon code fait à partir du squelette de la fonction exemple, qui était en InOnly. Que faire une fois que le résultat de sendSync() vaux true  ?

(J'ai commencé à préparer un xml en vue de consommer par la suite un bc-sql, je me suis également basé sur l'exemple qui consomme un bc-mail, mais ne suis vraiment pas sur d'avoir mis en place le bon format.)

// Get the JBI context
    	JBIContext jbiContext = JBIContextManager.getJBIContext();
    	
    	// Create the sql content
    	String sqlContent = "select version();";
    	
    	// Create a XML document
    	final String SQL_NS = "http://petals.ow2.org/components/sql/version-1";
    	
    	Document sqlDocument = DocumentBuilders.newDocument();
    	final Element sqlElement = sqlDocument.createElementNS( SQL_NS, "ver:sql" );
    	sqlElement.setTextContent( sqlContent );
    	sqlDocument.appendChild( sqlElement );

    	try {

    		//Test d'appel vers un Jsr181
			final Exchange mailExchange = jbiContext.getMessageSender().createExchange( MEPConstants.IN_OUT_PATTERN );
			mailExchange.setInterfaceName( new QName( "http://test.fr", "HelloWorld" ));
			mailExchange.setService( new QName( "http://test.fr", "HelloWorld" ));
			mailExchange.setOperation(new QName("http://test.fr", "helloWorld"));
			mailExchange.setInMessageContent(sqlDocument);

			jbiContext.getMessageSender().sendSync(mailExchange);
			
		}


Merci pour votre support.
Reply | Threaded
Open this post in threaded view
|

Re: Invocation d'un bc-sql depuis un Jsr181

Vincent Zurczak
Bonjour,

Il faut récupérer le "out message" sur l'échange et le parser.
« Petals M.D. »