Vennster participates in conferences on a regular basis. It is a great way to meet people and learn things. After hearing stories about a conference on a boat,
Ronald van Luttikhuizen and me decided to try the Oracle User Group Norway Conference for ourselves. The first day of the conference is in Oslo, in a hotel. We did not have time to attend sessions that day. The first day on the boat I spent in the “Middleware Room”. Ronald gave
his presentation about Service Design. It is based on a chapter of SOA Made Simple and he talked about service identification, service design guidelines
and service implementation. The room was full and the audience was engaged; there were a number of questions during the presentation and afterwards as well.
The next presentation was by Manas Deb and he talked about
Adaptive Case management. He explained the concepts, the difference between BPM
and Case Management and what makes case management adaptive. In short: in
adaptive case management you don’t know in advance in what order tasks are
executed (non-deterministic) and ad hoc tasks can be added by the case
worker or case manager. Then he explained how the latest patch set of Oracle supports this concept by introducing a new component type: “Case”.
Cato Aune and Jon Peter Hjulstad presented about their
experiences with Oracle WebLogic 12c.
They talked about the differences between Oracle iAS and WebLogic, about
licensing and their experience with migrating from Oracle iAS to WebLogic 12c
in two projects. Very applicable to a lot of customers and a story well told.
I had the honor to close the day with my session about
deployment best practices.
The second day on the boat I attended two sessions: A talk about JEE7 and a talk about B2B by Ronald. Arun Gupta talked about JEE7. It was a very interesting
presentation. The scope of JEE7 has two focus points: higher productivity and
HTML5 support. He showed code samples from NetBeans to illustrate the different
aspects. The WebSocket, JAX_RS 2.0 and JSON support were particularly relevant. Last but not least he talked about
support for batch in the specification (finally!) which is very similar to
Spring batch. The last session of the
conference was Ronald his story about using B2B for the Province of Overijssel,
a very clear story about the ebMS specification, the use case and the solution.
To summarize, there were not many presentations on
Middleware but the ones that were there, were of very high quality and being
on a boat surely spices up the whole experience!
Showing posts with label B2B. Show all posts
Showing posts with label B2B. Show all posts
Saturday, April 27, 2013
Friday, February 22, 2013
From the Trenches 2 | Patching OSB and SOA Suite to PS5
In my previous blog I talked about a recent upgrade from Oracle Fusion Middleware 11g PS2 to 11g PS5. This blog continues with two post-installation steps that were required to complete the upgrade.
The ebMS standard makes extensive use of SOAP headers to facilitate features such as guaranteed delivery and to avoid duplicate messages. The following snippet shows part of an ebMS message header.
One of the identifiers used in the ebMS message exchange is the manifest id. According to the ebMS specification maintained by OASIS this needs to be XML NCName type. This type has some restrictions; for example that its values cannot start with a number. In Oracle B2B 11g PS2 the manifest id value is prefixed with the text oracle. This prefix is removed in 11g PS5 resulting in the following error from the B2B trading partner at runtime:
09:06:00 Local Listener(8914) Result: "Error" "Fault sent:<SOAP:Fault><faultcode>SOAP:Client</faultcode><faultstring>org.xml.sax.SAXParseException: cvc-datatype-valid.1.2.1: '0A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A' is not a valid value for 'NCName'.</faultstring></SOAP:Fault>"
Luckily there is an easy-to-apply patch that solves this problem; see article 1497168.1 on Oracle Support. After applying the patch, the manifest id is prefixed with a text value again.
Depending on the developer that created the Web Service, deployment descriptors such as webservices.xml and weblogic-webservices.xml were added to the application. Descriptors are used for configuration, overriding default settings, and adding metadata. For Web Services this can be the endpoint, port configuration, linkage of the Web Service to EJB components, and so on. When deployed, the WSDL location of Web Services is listed in the WebLogic Console and the WSDL can be retrieved at runtime.
After the patch we noticed that these artifacts weren't identical to the original WSDLs and XSDs. More specifically, the namespaces of the XSD elements in the request and response message definitions were changed to the namespace of the service itself. At runtime however, the service accepted requests and responses as defined by the original contract. This makes it difficult to test these Web Services using clients that inspect the runtime WSDL; for example when creating a default project in soapUI.
This issue was resolved by removing the webservices.xml and weblogic-webservices.xml deployment descriptors from the Java archive and redeploying the Web Services to WebLogic Server. The WSDL that can be retrieved at runtime matches the original designed WSDL again.
Patching Oracle B2B for ebMS-based services
In this particular project we implemented ebMS-based services using Oracle B2B and Oracle Service Bus 11g. Besides "plain" SOAP Web Services, ebMS is part of the Dutch government standards to exchange messages and expose services between organizations in the public sector. You can read more about implementing ebMS-based services using Oracle B2B, Oracle Service Bus and Oracle SOA Suite in this presentation.The ebMS standard makes extensive use of SOAP headers to facilitate features such as guaranteed delivery and to avoid duplicate messages. The following snippet shows part of an ebMS message header.
One of the identifiers used in the ebMS message exchange is the manifest id. According to the ebMS specification maintained by OASIS this needs to be XML NCName type. This type has some restrictions; for example that its values cannot start with a number. In Oracle B2B 11g PS2 the manifest id value is prefixed with the text oracle. This prefix is removed in 11g PS5 resulting in the following error from the B2B trading partner at runtime:
09:06:00 Local Listener(8914) Result: "Error" "Fault sent:<SOAP:Fault><faultcode>SOAP:Client</faultcode><faultstring>org.xml.sax.SAXParseException: cvc-datatype-valid.1.2.1: '0A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A' is not a valid value for 'NCName'.</faultstring></SOAP:Fault>"
Luckily there is an easy-to-apply patch that solves this problem; see article 1497168.1 on Oracle Support. After applying the patch, the manifest id is prefixed with a text value again.
Changing namespaces in WSDLs and XSDs of JAX-WS Web Services
The environment that was patched contains several Java applications running on WebLogic Server. These applications expose Web Services using JAX-WS. A meet-in-the-middle approach was used to create them: the business logic implemented in Stateless Session Beans and JPA (EclipseLink) is integrated with the Java classes generated from the predesigned WSDLs and XSDs.Depending on the developer that created the Web Service, deployment descriptors such as webservices.xml and weblogic-webservices.xml were added to the application. Descriptors are used for configuration, overriding default settings, and adding metadata. For Web Services this can be the endpoint, port configuration, linkage of the Web Service to EJB components, and so on. When deployed, the WSDL location of Web Services is listed in the WebLogic Console and the WSDL can be retrieved at runtime.
After the patch we noticed that these artifacts weren't identical to the original WSDLs and XSDs. More specifically, the namespaces of the XSD elements in the request and response message definitions were changed to the namespace of the service itself. At runtime however, the service accepted requests and responses as defined by the original contract. This makes it difficult to test these Web Services using clients that inspect the runtime WSDL; for example when creating a default project in soapUI.
This issue was resolved by removing the webservices.xml and weblogic-webservices.xml deployment descriptors from the Java archive and redeploying the Web Services to WebLogic Server. The WSDL that can be retrieved at runtime matches the original designed WSDL again.
Labels:
11g,
B2B,
Java,
JAX-WS,
Oracle,
Oracle SOA Suite,
Web Service,
WebLogic,
WebLogic Server,
webservice
Location:
Nijmegen, The Netherlands
Friday, November 23, 2012
DOAG 2012
This week the German Oracle User Group, or DOAG as it is called in German, held their yearly conference. Like other years, the location was the conference center in Nuremberg, a beautiful city in the south.
Vennster was well represented in the SOA/BPM Space, we did the following sessions:
Vennster was well represented in the SOA/BPM Space, we did the following sessions:
- SOA Made Simple: service design (Ronald van Luttikhuizen)
- SOA Made Simple: creating a roadmap for your SOA (Lonneke Dikmans)
- Effective Fault Handling in Oracle SOA Suite 11g (Ronald van Luttikhuizen)
- Introduction in Eventing in SOA Suite 11g (Ronald van Luttikhuizen)
- Using the B2B Adapter in a Dutch government project (Ronald van Luttikhuizen)
- Securing heterogeneous systems using Oracle WebServices Manager (Ronald van Luttikhuizen and Jens Peters)
- Deployment in Oracle SOA Suite and Oracle BPM Suite (Lonneke Dikmans)
- Stop generating your User Interface! Start designing it (Lonneke Dikmans)
Of course there were also other presentations by other presenters ;) DOAG is a big conference, with over 400 presentations. Most of them cover cases, others explain the latest developments. There is a number of tracks that are of interest if you are working in the 'middleware space': BPM, Middleware & SOA, development, Java and Strategy and Business. The English spoken sessions are not as popular as the German language sessions, but both are well visited.
I visited three sessions, one case study titled "Dynamische Benutzer-Workflows mit SOA und BPM-Suite" by Arne BrĂ¼ning, one about the new developments in EclipseLink called "The Evolution of Java Persistence" by Doug Clarke and the last one was a session titled "NoSQL and SQL: Blending the Best of Both Worlds" by Andrew Morgan. All three happened to be presented by Oracle. They were very different in nature. The workflow session discussed a customer case. It was interesting from that point of view. I would have preferred more technical depth, but the presenter was well prepared and had an interesting story to tell. The session by Doug about Eclipse gave a nice overview of the latest developments and put them into perspective of the history of TopLink and EclipseLink. I think that this is a good strategy: it shows that EclipseLink is both proven and modern: it has been around for years and part of the original team is still working there PLUS they have solutions for new developments like JSON, REST services, NoSQL and multi-tenancy. The final presentation was an example how not to do that. The presenter put NoSQL in the title in an attempt to attract a crowd. But the session was really about MySQL clusters. A lot of people left the session while he was talking, because it was completely off topic. The presentation itself was not bad, but the title was misleading.
Unfortunately I did not have time to see more sessions, because of all the presentations we were doing ourselves. There certainly was a lot more I would have liked to listen to and I hope we will be back next year!
Labels:
B2B,
BPM,
Deployment,
DOAG2012,
events,
fault handling,
OWSM,
SOA,
UI,
UX
Subscribe to:
Posts (Atom)