mercredi 28 avril 2010

SOA Suite PS2 - disponible

Vous en rêviez Oracle vient de le faire:

Soa Suite PS2 vient de sortir avec notamment des ajouts importants:
- BPMN 2.0 (execution de vos processus)
- BPEL 2.0
- des adapters en plus
- utilisation du cache Coherence dans OSB ....

c'est disponible sur le site: edelivery

Tout savoir sur Oracle Soa Suite

Un mini site dédié à Soa Suite présente simplement ce composant de Fusion Middleware.

C'est en anglais ;)

pour y accèder rendez-vous : ICI

jeudi 22 avril 2010

SOA Suite PS2 - SCA - Ejb Adapter



Dans la version PS2 (bientôt disponible - encore quelques jours) Oracle Suite permet d'appeler un EJB nativement ou depuis une interface SDO (Service Data Object) de votre EJB.

Avant tout, il faut disposer d'un EJB (session ou entity) sur votre serveur j2ee local ou distant.
Récupérer le fichier jar utilisé pour le déploiement.

Créer un project SOA comportant par exemple un processus BPEL.


Copier le jar de votre EJB dans le répertoire de votre projet, exemple:
D:\dev_hugu\11\Application2EJBPS2\Project3\SCA-INF\lib

faites un ajout dans votre projet Jdev au niveau des librairies pour utiliser le jar de l'EJB:


Ajouter au composite un service dit 'ejb adapter' et compléteé-le ainsi:


















Compléter ensuite le processus BPEL (ajouter l'invoke vers votre service EJB, puis initialiser les varibales input & output) et déployer pour avoir dans Enterprise Manager (http://monserveur:port/em)





PS: pour utiliser un EJB distant ou sur un autre serveur que Weblogic, il suffit de rajouter les propriétées suivantes dans votre composite.xml sur la définition du lien avec l'ejb :

Voici les propriétés de la documentation:

disponible sur ce lien: ICI
il faudra ajouter également une map au niveau sécurité, le détail est ici

J'ai testé personnellement les 2 type de propriétés (ci-dessus & ci-dessous):



Lors de l' éxecution on a alors dans Enterprise Manager:

PS: Pour que tout foncitonne bien entre vos domaines, il est important de configurer la cross certification des domaines weblogic en mode 'compatibility'

mardi 13 avril 2010

Soa 11G PS1 - activer le composant Spring






Afin d'activer le composant Spring dans soa suite 11g PS1, vous devez activer le mode preview.


Aller dans le répertoire $jdev_home/integration/seed/soa/configuration et ouvrez le fichier soa-config.xml






Rechercher ${SPRING_COMPONENT_NAME_L} et retirer les commentaires xml autour.


Sauvegardez le fichier et redémarrer jdev.


mercredi 7 avril 2010

Management Pack pour Weblogic


Afin de monitorer, valider des configurations, comparer vos domaines, mettre à jour à chaud vos domaines, introspecter vos applications J2EE, analyser les comportements J2EE ...
Oracle propose des packs d'administration spécifiques pour Weblogic dans Enterprise Manager.


Détails sur ce lien : ICI


Démo live en viewlet : ICI


DataSheet: ICI

mercredi 31 mars 2010

Appeler un composite SCA en java

Voici un mémo expliquant comment appeler un composite SCA de Soa Suite 11G PS1 depuis une classe java.

Avant tout il faut créer un projet SOA comprenant un composant Bpel (par exemple) qui fait un "hello world" en synchrone ou en asynchrone ...

Ensuite dans le composite il suffit de rajouter une interface "Direct Binding Service"




Nous avons donc ci-dessus un composite offrant une interface Web Service et une interface type RMI.


Oracle SOA suite propose nativement l'ensemble des API java afin de déclencher un composite SCA en RMI.


Pour cela il suffit de créer une connexion RMI via l'api "Locator" décrite dans ce code ci-dessous:


public class ClassTestRmi {
public ClassTestRmi() {
super();

Hashtable jndiProps = new Hashtable();
jndiProps.put(Context.PROVIDER_URL, "t3://10.0.0.1:7001/soa-infra");
jndiProps.put(Context.INITIAL_CONTEXT_FACTORY,"weblogic.jndi.WLInitialContextFactory");
jndiProps.put(Context.SECURITY_PRINCIPAL, "weblogic");
jndiProps.put(Context.SECURITY_CREDENTIALS, "welcome1");
jndiProps.put("dedicated.connection", "true");

Locator locator = null;
try {
// connect to the soa server
locator=LocatorFactory.createLocator(jndiProps);
System.out.println("Got locator : "+ locator.toString());
// find composite default domain, Helloworld Composite, version 1.0
CompositeDN compositedn = new CompositeDN("default", "Project1RMI", "1.0");

// call the direct binding of the Helloworld composite - spécifier le nom de l'interface de direct binding
DirectConnection conn = locator.createDirectConnection(compositedn,"Service1RMI");


String
inputPayload =
"
\n" +
VOTRE XML d'appel du composite (sans les balise SOAP)
"
\n";

DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = docBuilderFactory.newDocumentBuilder();
Document doc = builder.parse(new InputSource(new StringReader(inputPayload)));
Element root = doc.getDocumentElement();

//

//
//


Map partData = new HashMap();
// have to use payload see BPELProcess1RequestMessage
partData.put("payload", root);

Payload payload = PayloadFactory.createXMLPayload(partData);

//Messages are created using the MessageFactory
Message request = XMLMessageFactory.getInstance().createMessage();
request.setPayload(payload);

//

//

//
//
//

//

// this is a request-reply service so we need to use conn.request else use conn.post
// need to provide operation name so we need to use process
Message response = conn.request("process", request);

TransformerFactory tFactory = TransformerFactory.newInstance();
Transformer transformer = tFactory.newTransformer();
transformer.setOutputProperty("indent", "yes");
StringWriter sw = new StringWriter();
StreamResult result = new StreamResult(sw);

//

//
//

// need to use payload again
DOMSource source = new DOMSource((Node)response.getPayload().getData().get("payload"));

transformer.transform(source, result);
System.out.println("Result\n"+sw.toString());

} catch (Exception e) {
e.printStackTrace();
}

}




Je vous propose en attachement dans ce zip mon projet SOA composite, avec le projet Jdev d'appel en java : ICI



ps: Il est important d'importer les jar nécessaires aux api java. Voici la liste: