Deploying Oracle Service Bus (OSB) Projects with Configuration Files in FlexDeploy by Greg Draheim

image

OSB Configuration files allow the developer to manage environment specific values during deployment.  FlexDeploy supports the use of these configuration files and extends them to using tokens in the configuration file that will get replaced with configured properties from FlexDeploy.   This way we do not need to generate a customization file for every environment where we are going to deploy the project.  We can have one configuration file that will work across environments.

My example is built using JDeveloper and SOA 12.2.1.  I have an OSB project named ValidatePayment that is acting as a proxy service for a SOA service:

The ValidateBS when I run locally, refers to localhost:

When I deploy this to our shared development environment, I want to replace http://localhost.flexagon:7001/ with http://soalt05.flexagon:7001/.  When I deploy to production, I want the URL to be http://soa.flexagon.com/.  To accomplish this I add a property to my OSB Deploy workflow in FlexDeploy.  First, I will show the full workflow for the OSB deploy.  Since FlexDeploy has smart plugins, the deploy workflow is a simple 1 step process to import the OSB project: Read the complete article here.

SOA & BPM Partner Community

For regular information on Oracle SOA Suite become a member in the SOA & BPM Partner Community for registration please visit www.oracle.com/goto/emea/soa (OPN account required) If you need support with your account please contact the Oracle Partner Business Center.

Blog Twitter LinkedIn image[7][2][2][2] Facebook clip_image002[8][4][2][2][2] Wiki

SOA Messaging Reliability through JMS and Oracle Service Bus by Sebastian Lik-Keung Ma

clip_image002

 

This article describes the design of a reliable messaging solution for SOA integration projects. It uses concepts like canonical schemas, durable POJO (Plain Old Java Object) messages, publish-subscribe and error handling within the Oracle SOA, Oracle Service Bus and WebLogic JMS infrastructure.

The JMS Message

For consistency, the type of message we are publishing will be based on a canonical schema. Typically, you would have a JDeveloper project that stores the canonical schemas used by all your custom applications. These schemas could be version-controlled, e.g. by Subversion, as well as deployed to MDS as a SOA bundle. Sample JDeveloper project containing canonical schemas shown below.

In this article, we will use the employeeWorkSchedule schema as our message type.

Publishing JMS message from ADF Java application

We publish our message to JMS from ADF applications. To simplify the process of using Java to construct message objects based on our XSD canonical schema, we use the JAXB (Java Architecture for XML Binding) tool from JDeveloper.

As shown in Figure 2a below, select the XSD file, right-click and select “Generate JAXB 2.0 Content Model”. Read the complete article here.

SOA & BPM Partner Community

For regular information on Oracle SOA Suite become a member in the SOA & BPM Partner Community for registration please visit www.oracle.com/goto/emea/soa (OPN account required) If you need support with your account please contact the Oracle Partner Business Center.

Blog Twitter LinkedIn image[7][2][2][2] Facebook clip_image002[8][4][2][2][2] Wiki

WS-Addressing callback interception using Service Bus by Jeroen Ninck

 clip_image002

Maarten Smeets posted a nice article describing asynchronous interaction in BPEL and BPM using WS-Addressing and correlation sets. I wanted to use Service Bus 12c to force the callback to go through a Service Bus proxy instead of going directly to the consumer. This can be useful when the target service should not have the ability to call services outsite of its trusted domain or network.

All sources can be found in my GitHub repository.

WS-Addressing

WS-Addressing provides a way for message routing and correlation using SOAP headers. It is an official specification. Service Bus, SOA Suite, JAX-WS and quite a lot of other frameworks and tools support it one way or the other. There are two versions of WS-Addressing: 200508 and 200408.

In an synchronous interaction the following headers are important:

  • Request:
    • ReplyTo
    • MessageId
  • Callback:
    • RelatesTo

In the request the ReplyTo specifies the address where the reply must be send to (or http://www.w3.org/2005/08/addressing/anonymous if no reply address is specified). The MessageId headers contains a unique id which can be used to to correlate the request to a future callback. In the callback the RelatesTo header contains the original MessageId. There are others headers for example Action which are important, but for creating an asynchronous interaction ReplyTo, MessageId and RelatesTo are all that are required.

SOA Suite 11g and 12c support WS-Addressing (don’t mention SOA Suite 10g…) and provide out of the box correlation support. Using BPEL no code is required to use WS-Addressing for correlation (both as consumer and as producer).

Test scenario

A SOA composite will implement an asynchronous webservice (a fire & forget request followed by a future fire & forget callback). It will be exposed using a Service Bus project which will ‘hide’ the implementation for the outside world. For example the SOA composite might be running in a local domain, while the Service Bus project migt be running in a SOA CS cloud instance. This will allow to SOA composite to only receive traffic from ‘trusted’ networks and the Service Bus will handle all security.

This will be the test setup, where SoapUI will play the external consumer: Read the complete article here.

SOA & BPM Partner Community

For regular information on Oracle SOA Suite become a member in the SOA & BPM Partner Community for registration please visit www.oracle.com/goto/emea/soa (OPN account required) If you need support with your account please contact the Oracle Partner Business Center.

Blog Twitter LinkedIn image[7][2][2][2] Facebook clip_image002[8][4][2][2][2] Wiki

How to fix Maven build problems in Oracle Service Bus 12c by Dalibor Blazevic

clip_image002

Introduction

To many old fashion JDeveloper developers using Maven is a new and obscure thing as JDeveloper has his own build system and does not require ANT or Maven as a build or deployment tool. However if it goes to continuous integration with many small integration automatic builds done daily than using ANT or Maven is inevitable, of which Maven is newer and more popular. Unfortunately for SOA/OSB 12c developers, other popular IDEs, like NetBeans, Eclipse or IntelliJ have much better Maven support than JDeveloper. Still relaying on his old build and deploy system, and using somewhat hybrid approach on integrating Maven, JDeveloper has a lot of issues when it comes to creating new Maven based projects and build them. Moreover Maven problem does not ends with JDeveloper when it comes to proper working of Maven with OSB architecture but it spans whole Middleware architecture.

Typical continuous integration lifecycle is composed of several phases like: 1. Merging source code files from different source control branches (typically one or more branch for each developer) into one integration branch, 2. Deploying merged and consolidated integration branch back to the source control system, 3. Executing Hudson/Jenkins build job that has been triggered by post to version control system in integration branch 4. Jenkins plugin executes Maven command line to do: compiling, testing, packaging, and deploying of different projects belonging to the same application.

Therefore we can see that for continuous integration lifecycle to work properly it is not enough to be sure that Maven works from JDeveloper but also from the command line to be able to port our build environment to dedicated integration machine.

In this article I will try to explain Maven setup and necessary workarounds in order to enable proper functionality of Maven in both JDeveloper and command line environment within our SOA/OSB 12c Middleware installation.

Fixing JDeveloper Maven integration problems

When wi install our OSB 12c development environment JDeveloper is included in installation. When we open JDeveloper upon installation and we create our first OSB Application/Project we will see that maven build file (pom.xml) is already included in project. We can get wrong impression that Maven support is here and is working correctly. Read the complete article here.

SOA & BPM Partner Community

For regular information on Oracle SOA Suite become a member in the SOA & BPM Partner Community for registration please visit www.oracle.com/goto/emea/soa (OPN account required) If you need support with your account please contact the Oracle Partner Business Center.

Blog Twitter LinkedIn image[7][2][2][2] Facebook clip_image002[8][4][2][2][2] Wiki

Custom xpath functions in service bus by Milco Numan

clip_image002

How can you create  custom XPath functions in Oracle Service Bus 12c? And how can you use these in both  XSLT and XQuery? Let’s find it out. I like to show you how they’re different in behaviour.

The context of my post comes from one of my projects, where we were migrating quite some (stateless) services from the SOA (BPEL) platform to Service Bus. Since our clients were already ‘virtualized’ to our clients (i.e. clients invoked them through the Service Bus), we could easily change the implementation platform without changing the service contracts.

For the transformation, we were reusing the existing XSL transformations, so a couple of the custom XPath functions had to be made available in Service Bus. Additionally, we were also introducing the DVM (Domain Value Maps) as a replacement for a custom coded lookup-implementation, created when DVMs did not yet exist. For this purpose, we had to create a custom XPath wrapper function, in order to implement some custom logging that the customer did not want to lose.

Test XPath function

As a simple scenario, I am using base-64 encoding and decoding to be implemented as custom XPath functions (code is shared through GitHub). In order to test the custom XPath function, I have created some very simple proxies and pipelines that do not route to any other service but instead just call upon a transformation in order to test my custom functions:

Child elements

In the reply element I have three different child elements, the first contains the untransformed contents of the input string and the second contains the base64 encoded contents. The last element contains the value after invoking the decode operation on the encoded string, to verify that the inverse operation restores the original value. Read the complete article here.

SOA & BPM Partner Community

For regular information on Oracle SOA Suite become a member in the SOA & BPM Partner Community for registration please visit www.oracle.com/goto/emea/soa (OPN account required) If you need support with your account please contact the Oracle Partner Business Center.

Blog Twitter LinkedIn image[7][2][2][2] Facebook clip_image002[8][4][2][2][2] Wiki

OSB Patching by Jon Petter

 

We have some customers which only use OSB – and not SOA Suite. When you want to patch – should you look only at WLS and OSB-patches? The answer is no.

One such reason is documented on MOS: Should the SOA Bundle Patches for 11g and 12c be applied to OSB (Doc ID 2102449.1). It states: In 12c, since OSB services can use JCA technology adapters, there is value in applying the SOA Bundle Patches where fixes to these adapters are included.

The other reason is because JDeveloper has common features in the two products. For example SOA patch 22226040: java.lang.NullPointer for XQuery File ver 1.0 in JDEV 12.2.1 OSB Proj – is one you would like to use for OSB on 12.2.1. The problem is shown in our blog post: OSB Patch. If the patch does not work – remember to do the cleanup-steps mentioned at the end of the blog.

My advise is to create a predefined Patch Search in MOD so you can monitor existing patches. Here are some of my searches.

clip_image002

One good thing you can see is the last time you searched. For example for OSB – then WLS, SOA and OSB are relevant. My advise is to order patches so you see the latest updates first, and that you at least should add the recommended patches. Read the complete article here.

SOA & BPM Partner Community

For regular information on Oracle SOA Suite become a member in the SOA & BPM Partner Community for registration please visit www.oracle.com/goto/emea/soa (OPN account required) If you need support with your account please contact the Oracle Partner Business Center.

Blog Twitter LinkedIn image[7][2][2][2] Facebook clip_image002[8][4][2][2][2] Wiki

Who needs a service bus anyway? By Milco Numan

clip_image002

 

Some time ago I was having a discussion about the setup of a SOA project on which a former colleague was about to work on. The purpose of this project was to implement a synchronous service API for a third party systems to integrate with. This API needed to conform to a B2B standard (written some ten years ago) and in their particular case, it would need to provide data from their legacy ERP system.

The API description consists of several different ‘business operations’ where their request messages come in over HTTP in a variety of predefined formats, e.g. as an HTTP GET operation where the parameters are encoded in the URL string or sending an HTTP POST operation where the request message is contained in the body: in both cases, the response is handed back as an XML message. In order not to exclude third party systems, both flavours of operations would need to be implemented.

One of the other requirements for the API was that it needed to implement an operation to list all operations that it currently supports, together with the endpoints on which these operations need to be invoked.

Restrictions

One of the current implementation of the third party systems they were looking to integrate with was quite quirky in that it required all operations to have the exact same endpoint. So, it was a tough choice to either exclude this system from the possible clients and create a ‘proper’ implementation where all operations have their own endpoints, or to provide an implementation where there’s only one endpoint that basically functions as a dispatcher for the different operations.

Summarizing:

  • XML POST interface, request = XML, response = XML for all operations
  • HTTP GET interface, request = None, response = XML for all operations
  • Provide a single endpoint accepting all these requests at the same address

Service Bus to the rescue

As we were discussing the project and its requirements, it turned out that their internal IT department had already started development using Oracle SOA Suite, as their skills in BPEL were ‘the hammer that made this problem look like a nail’. However, my feeling was that this project would actually be much better off by the introduction of Oracle Service Bus to transform different message formats into a generic XML representation (and depending on the complexity: implement the message flows entirely in Service Bus or offload the more complicated ones to SOA Suite).

Scenario

As I am somewhat branded by my background in chemistry, I will show my proposed implementation using some ‘chemical’ webservices from WebServiceX as an example. For the backend implementation, invariably the SOAP implementation of the service will be used. For my convenience, I am reusing the XML structures that are provided by the WebserviceX implementations, saving myself the hassle of transforming the messages structurally or with respect to their namespaces.

In the following scenario, I am exposing two operations (GetAtomicNumber and GetAtomicWeight) in two different message formats:

HTTP GET: http://server:host/HttpGetAtomicNumber?RequestName=GetAtomicNumber&elementName=boron

XML POST: http://server:host/GetAtomicNumber

Furthermore, all operations will also be available at a consolidated endpoint for both request message formats, at http://server:host/OneProxyForAll

Schematic implementation

The following diagram shows a schematic representation of the desired setup; on the left hand side, you can see the exposed proxies (HTTP GET, XML POST and Generic Gateway), connected through some Service Bus flow logic with a Service Bus Business Service, exposing the actual implementation logic:

Environment

The sample project was built using Oracle’s 12.1.3 Virtual Image, downloadable from Oracle Technology Network. Read the complete article here.

SOA & BPM Partner Community

For regular information on Oracle SOA Suite become a member in the SOA & BPM Partner Community for registration please visit www.oracle.com/goto/emea/soa (OPN account required) If you need support with your account please contact the Oracle Partner Business Center.

Blog Twitter LinkedIn image[7][2][2][2] Facebook clip_image002[8][4][2][2][2] Wiki

Poll a Microsoft Exchange mailbox from OSB using DavMail by Laurens van der Starre

 

clip_image002The Oracle Service Bus has built in features to poll an IMAP of POP3 mail account. There are loads of excellent blog posts that exactly describe how to do it. However, when the mail server happens to be a Microsoft Exchange server, things become shady. Exchange’s IMAP implementation tends to be not really that compatible, and the server log will fill up with stacktraces such as:

Of course we can connect using the Exchange Web Services (EWS) using the OSB, but that is loads of work. Luckily there is DavMail. DavMail is an gateway that sits in between Exchange and your third party mail clients. Using DavMail, you can connect using simple POP3 or IMAP protocols to DavMail which in turn connects to Exchange using the EWS. DavMail is build in java, and runs happily on WebLogic Server.

So, download DavMail’s WAR distribution for SourceForge. Unpack the WAR-file and edit the properties file in WEB-INF/classes.

Set is to run in Server mode, and let it know where the EWS is: Read the complete article here.

SOA & BPM Partner Community

For regular information on Oracle SOA Suite become a member in the SOA & BPM Partner Community for registration please visit www.oracle.com/goto/emea/soa (OPN account required) If you need support with your account please contact the Oracle Partner Business Center.

Blog Twitter LinkedIn image[7][2][2][2] Facebook clip_image002[8][4][2][2][2] Wiki

Oracle Service Bus Internals: Delivered by A-team from SOA Blackbelt Training–Webcast December 15th 2016

Resultado de imagem


Presented by Oracle A-team, Integration Cloud team and Middleworks
Thurs, December 15, 2016
9:00 am  |  Pacific Standard Time (San Francisco, GMT-08:00)  |  1 hr

REGISTER NOW

This session will be delivered by Mike Muller of the Oracle A-team, with many years of deep expertise in the Oracle Service Bus. The content comes from the “SOA Blackbelt Training” which was previously used within Oracle to provide deep internal and architectural understanding of components within the SOA Suite, and applies to OSB versions 11g and 12c as well as both cloud and on-premise installations.
Attendees will receive a highly advanced and deeply technical presentation on some of the nitty-gritty internal details of the Oracle Service Bus and is intended for developers and architects who already have a good understanding of OSB. Trust us, if you are looking for an intro or overview of OSB, this session will not be a good use of your time. But if you want to go from being an experienced OSB developer to the next level, we think this content will be perfect and is only available here. The session is presented by Mike Muller from the  Oracle A-team, with many years of deep expertise with OSB, troubleshooting, putting out customer’s fires and answering technical and architectural questions. Key topics on the agenda include:

  • the service bus threading model
  • weblogic thread management
  • work managers
  • throttling
  • transactions

Planned participants in this session include:

  • Mike Muller from the Oracle A-team, with some of the deepest working knowledge of Oracle Service Bus in the world, delivering OSB internals information from the Oracle internal "SOA Blackbelt Training"
  • David Shaffer of Middleworks, moderating and providing additional resources
  • Kathryn Lustenberger of the Oracle Cloud Integration prod mgmt team
  • We hope to also have OSB engineering representation on the line to help with Q&A

This session will be especially fast, focused and highly technical, when compared against others in this series. All who register will receive invitations to future related events and the ability to access a recording of the webinar and the slides. To access this information for previous webinars, and see the schedule for future webinars, go to http://www.middleworks.com/soa-expert/

REGISTER NOW

SOA & BPM Partner Community

For regular information on Oracle SOA Suite become a member in the SOA & BPM Partner Community for registration please visit www.oracle.com/goto/emea/soa (OPN account required) If you need support with your account please contact the Oracle Partner Business Center.

Blog Twitter LinkedIn image[7][2][2][2] Facebook clip_image002[8][4][2][2][2] Wiki

Doing performance measurements of an OSB Proxy Service by programmatically extracting performance metrics via the ServiceDomainMBean and presenting them as an image via a PowerPoint VBA module by Marc Lameriks

clip_image002

 

This article explains how the process of doing performance measurements of an OSB Proxy Service and presenting them in a “performance analysis document” was partly automated. After running a SoapUI based Test Step (sending a request to the service), extracting the service performance metrics was done by using the ServiceDomainMBean in the public API of the Oracle Service Bus. These service performance metrics can be seen in the Oracle Service Bus Console via the Service Monitoring Details. Furthermore this article explains how these service performance metrics are used by a PowerPoint VBA module and slide with placeholders, to generate an image, using injected service performance metric values. This image is used to present the measurements in a “performance analysis document”.

Performance issues

In a web application we had performance issues in a page where data was being shown that was loaded using a web service (deployed on Oracle Service Bus 11gR1). In the web page, an application user can fill in some search criteria and when a search button is pressed, data is being retrieved (from a database) , via the MyProxyService, and shown on the page in table format.

Performance analysis document

Based on knowledge about the data, the business owner of the application, put together a number of test cases that should be used to do performance measurements, in order to determine if the performance requirements are met. All in all there were 9 different test cases. For some of these test cases, data was being retrieved for example concerning a period of 2 weeks and for others a period of 2 months.

Because it was not certain what caused the lack of performance, besides the front-end, also the back-end OSB Proxy Service was to be investigated and performance measurement results were to be documented (in the “performance analysis document ”). It was known from the start that once the problem was pinpointed and a solution was chosen and put in place, again performance measurements should be carried out and the results were again to be documented. Read the complete article here.

SOA & BPM Partner Community

For regular information on Oracle SOA Suite become a member in the SOA & BPM Partner Community for registration please visit www.oracle.com/goto/emea/soa (OPN account required) If you need support with your account please contact the Oracle Partner Business Center.

Blog Twitter LinkedIn image[7][2][2][2] Facebook clip_image002[8][4][2][2][2] Wiki