May 30, 2011

JDeveloper και SOA projects που χρησιμοποιούν το MDS

Μια από τις προσεγγίσεις που προτείνεται από την Oracle για την διασύνδεση ροών εργασίας του SOA ή του BPM Suite με υφιστάμενα web services, είναι αυτή του abstract WSDL με την χρήση MDS: αντί να κάνουμε αναφορά σε εξωτερικά web services με την απευθείας χρήση του τελικού WSDL (concrete WSDL) χρησιμοποιούμε ένα αντίγραφό του που μας αποκρύπτει τις πληροφορίες του server που εκτελεί το service. Το WSDL αυτού του τύπου αποθηκεύεται στο MDS και μέσω αυτής της πηγής γίνεται η διασύνδεσή του με τα composites μας. Την ώρα του deployment, απομένει να ορίσουμε την πραγματική τοποθεσία του web service μας. Κατά αυτόν τον τρόπο, μπορούμε να δουλέψουμε σχεδιαστικά χωρίς να διαμαρτύρεται ο JDeveloper για την σύνδεση στον πάροχο (producer) του web service ενώ στο runtime είναι δουλειά μας να ορίσουμε το τελικό περιβάλλον εκτέλεσης της εξωτερικής υπηρεσίας. Περισσότερες πληροφορίες για αυτήν την πρακτική στο: http://blogs.oracle.com/aia/entry/aia_11g_best_practices_for_dec

Όταν δουλεύουμε με το MDS, πρακτικά συντηρείται ένα αρχείο ορισμών, το adf-config.xml που δηλώνει το MDS repository (σύστημα αρχείων ή βάση δεδομένων) Όταν δουλεύουμε διάφορα projects στον JDeveloper 11.1.1.4 και κάποια από αυτά έχουν να κάνουν με το MDS είναι εξαιρετικά ενδιαφέρον, πως όταν ξεκινά ο JDeveloper 11.1.1.4 προσπαθεί να συνδεθεί, με βάση το adf-config.xml στο MDS repository. Και εδώ συμβαίνει το εξής παράδοξο: αν το ενεργό project μας κατά την εκκίνηση του JDeveloper χρησιμοποιεί το MDS, τότε δεν υπάρχει κανένα απολύτως πρόβλημα, διαφορετικά εμφανίζονται τυπικά λάθη σαν το ακόλουθο στο message log:

Unable to open an input stream for ORAMDS URL "/soa/shared/workflow/WorkflowTask.xsd". Unable to open an input stream for ORAMDS URL "/soa/shared/workflow/WorkflowCommon.xsd". Unable to open an input stream for ORAMDS URL "/soa/shared/workflow/TaskEvidenceService.xsd". Unable to open an input stream for ORAMDS URL "..".

Έπειτα, αν δοκιμάσουμε να ανοίξουμε μια ροή που χρησιμοποιεί MDS τότε αυτή παρουσιάζεται ως εσφαλμένη.

O μοναδικός τρόπος για να αποφύγουμε τέτοιου είδους λάθη είναι να ξεκινάμε το JDeveloper μας, έχοντας ως αρχικά ενεργό project, αυτό που χρησιμοποιεί το MDS.

No comments: