Sunday Mar 22, 2015

XSLT and DVMs – Design Time Execution in Oracle Service Bus 12c by Jennie DeRosa

clip_image002Within Oracle Service Bus 11g, there is not an easy way to reference Domain Value Maps (DVM), like there is in Oracle SOA Suite 11g Composites. Typically, a kluge solution is implemented as a workaround in a Service Bus 11g project. With Oracle Service Bus 12c, this has changed, DVMs are now accessible in XQuery and XSL maps.

While this is good news, the even better news is that XSL maps which contain references to DVMs can now be successfully executed at design time, allowing for testing within JDeveloper. Testing of XSL maps at design time is always a good practice, it allows for catching bugs early in the development process.

Within this article, I will provide an overview of the configurations required to enable testing an XSL map at design time, which references a DVM within an Oracle Service Bus 12c project.

Overview of creation of a DVM along with publishing to the MDS repository can be found here: http://technology.amis.nl/2014/06/27/soa-suite-12c-using-domain-value-map-dvm-in-service-bus-projects/

One prerequisite step necessary when referencing a DVM outside of the current Service Bus project is to import the resource from the Meta Data Storage (MDS).  OSB 12c cannot contain references to resources, like a DVM, within the MDS repository. Rather, the resource needs to be imported into the Service Bus project, as shown below.

Select the DVM within the MDS repository and select ‘Import Resource’: 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

Friday Mar 20, 2015

Caching in OSB 12c without Out-Of-Process Coherence Servers by Ricardo Ferreira

clip_image002Introduction

One of the most popular use cases for Oracle Service Bus (OSB) is the mediation of synchronous service interactions. In this scenario, a client invokes the service through a proxy instead of the actual service endpoint, guaranteeing that the consumer is decoupled from the producer. This type of architecture allows producers to be changed without impacting the consumers, allowing greater agility for projects with volatile requirements.

Synchronous services that return results that do not change often are good candidates to have their results cached by OSB, through a feature called Result Caching. This improves performance by reducing network overhead to access the back-end service. Result caching can help to improve scalability by reducing the load on the back-end servers that host the service. Figure 1 illustrates a client invoking a synchronous service with Result Caching enabled.

Although using the Result Caching feature may seem to always be a good idea, it is important to evaluate its side effects. When this feature is activated, all results are cached in the JVM heap. That means that heap can rapidly become full after a number of service invocations occur. This could lead to serious garbage collection (GC) issues once the JVM starts to reclaim the used space when it hits the high water-mark of 80% of the heap size. Eventually, full GC pauses will start to occur and jeopardize OSB performance.

To avoid using too much heap space with Result Caching, out-of-process Coherence servers can be set up to run in their own JVMs to hold the cached results. They are termed “out-of-process” because they execute in a JVM different from the OSB JVM. The technique here is to allocate data off the OSB JVM letting the Coherence servers use their own heap space without affecting the heap space OSB uses to process messages. This technique is also called off-heap caching. Figure 2 shows an OSB domain using out-of-process Coherence servers to hold the cached results. 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

Thursday Mar 19, 2015

Service Bus 12c – Exposing a Pipeline as a REST Service by Jennie DeRosa

clip_image002Within Oracle Service Bus 12c, there are several ways to implement a pipeline as a REST service.

One approach is to REST enable an existing SOAP service. In this scenario, a pipeline is supported by both SOAP and REST based interactions. A video that provides a good overview of the required steps to implement this can be found here.

Another way is to derive it from a pipeline WSDL (REST bindings in OSB 12c are based on a WSDL document). The steps below detail the configurations required to accomplish this.

The first step is to create a pipeline that is a WSDL-based service. If the WSDL does not exist, it can be generated from a schema. To do this, select the ‘Create a WSDL’ icon in the Pipeline Service creation wizard to open the Create WSDL dialog.  Before selecting ‘Finish’, be sure the ‘Expose as a Proxy Service’ is not checked, since we will be generating a REST based proxy in a later step. 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

Thursday Feb 26, 2015

Getting to Know the Oracle Developer Cloud Service by W Brian Leonard

clip_image002Oracle Developer Cloud Service is included as a free entitlement with Oracle Java Cloud Service and Oracle Messaging Cloud Service. The Developer Cloud Service includes all the tools you need to support the team development lifecycle. There are popular open source tools such as Git, Maven and Hudson. There's also task management, code reviews and a wiki.

The easiest way to experience the Oracle Developer Cloud Service is through a trial of the Oracle Java Cloud Service - SaaS Extension (click the "Try It" button).

In this article I will introduce the Developer Cloud Service by using Maven to create a new web application, Git to manage the application source and Hudson to build and deploy my application to the Java Cloud Service.

Prerequisites

If you plan to follow along, this tutorial also assumes you already have Maven and Git installed. I will be using the Git Console from my desktop to interface with the Developer Cloud Service. The tutorial also assumes, of course, that you have access to the Developer Cloud Service!

Create a New Project

As a first step, log into the Developer Cloud Service and create a new project. Read the complete article here. & Watch the online training Developer Cloud Service: Git Integration with Oracle JDeveloper

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

Friday Feb 20, 2015

OSB12c: Errorhandling in REST by Martien van den Akker

clip_image002Yesterday, I had an OSB consulting day at a customer. We looked into a REST service that was to be extended with update functionality. Since calling an update service of an EIS (Enterprise Information System) can go wrong with all sorts of errors, it is important to be able to return a fault-message with the errors, jason format.
Now in OSB12c it's very apparent how you define possible fault-messages and even how the should be formatted in JSON:

In this sample case we created a more or less simple xsd for faults (dutch: fouten). To test with different fault messages we simply duplicated the 'fouten' element in the xsd to 'fouten2'. You can assign different HTTP-status codes to the different fault.
So this is configuration is pretty simple and straight forward. But it is not quite clear in the documents how you would return a specific fault within your error-handlers in the pipeline.
Internally OSB works not only 'XML'-based but actually SOAP-based. So the trick in the end is to replace the body with a soap-fault message and the selection of the REST/JSON errormessage is done based on the structure of the document in the details-section of the SOAP-Fault. In the screen above, you would define for each fault message an xsd-element and apparently it validates the soap-fault-details content against each XSD defined, and the xsd against which the detail-content is valid points to the returned fault, with the corresponding HTTP Status.

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

Thursday Feb 19, 2015

Patching the Service Bus 12.1.3 unknown protocol deployment error by rubix

clip_image002If you (already) created your first Oracle Service Bus 12c application/project with SOAP webservices and tried to deploy it to your IntegratedWeblogic server you might be familiar with this error.

Lucky for us Oracle quickly released a solution on their support website and also various blogs picked it up and posted a solution. The earliest reference I found was posted by Link. The solution to your problem was either:

  • Add felix.service.urlhandlers=false to the Init properties of OSGi frameworks bac-svnserver-osgi-framework factory implementation class
  • Remove the default server as a target for the framework

This worked like a charm and I was able to play around with my 12c Service Bus. However since it was stated that the solution could result into problems with BPM on your domain I reminded myself that I wanted to dive deeper into this when I had the time.

Google helped me out, and I discovered this information on the Apache Felix framework website.

Felix installs the URL Handlers service by default. If you do not want this service you can disable it, by setting the felix.service.urlhandlers property to false in the config.properties file. It is not recommended to disable this, but the main reason for doing so it because the URL Handlers implementation invokes methods to set the singleton factories for URL stream and content handler factories. Assuming that you want to use URL Handlers service, you must configure it if you aren’t running on the standard Sun JRE.

The URL Handlers service extends the standard Java URL stream and content handler mechanism to work in an OSGi environment. The way that built-in URL protocol and content handlers are discovered is by probing packages for the appropriate classes to handle the protocol/content. ……….. The value of these properties is a list of “|” delimited package names to be searched for protocol and content handlers, respectively. See the Java documentation for stream and content handlers for more information.

So disabling the URL handler service is not recommended and you should be able to extend the list of package names used for handling content and protocols. So after poking around the world wide web I finally discovered that Oracle already released a document on this with Doc ID 1903573.1. 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

Service Bus 12c – Series of Articles by Siva

Published following series of articles related Service Bus 12c. Hopefully it helps the people who want to get hands dirty.

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

Using OSB 12.1.3 Resequencer by Derek Kam

clip_image002Resequencer feature has been added to Oracle Service Bus 12c (12.1.3), it utilises the same resequencer engine as Oracle Mediator.  The objective of this feature is to provide you with the ability to resequence the incoming messages that arrive in random order and send them to the target services in an orderly manner.  In this blog, I will give you a bit more information about this new feature in OSB and how to debug if you encounter an issue.

As mentioned in the official doc, the resequencer doest not support any XML and any SOAP service type, you need to define a WSDL in order to use the resequencer feature in OSB, and this WSDL must be only one-way, and must not contain any response elements.

The OSB Resequencer Strategies work in the same manner as Oracle Mediator;  it supports Standard, FIFO and Best Effort.  The differences between the resequencer implementation in Oracle Mediator and OSB are the ways in which both dispatch the message.  In OSB, pipeline acts as a Resequencer component. User cannot configure resequencer at any other OSB component.  After resequencing, the ordered messages will be processed further in the pipeline.  As soon as the message is pushed to the resequencer, caller will get a successful response. Though resequencer is part of the pipeline configuration, it will be invoked just before the pipeline is invoked.

Just like the Oracle Mediator,  OSB Resequencer also relies on the database for processing messages.  The database tables are automatically created when you run the repository creation utility (RCU) while creating the OSB domain.  The JNDI name used by the OSB resequencer is jdbc/SOADataSource.  The tables used by the resequencer are shown below:

You can use the Enterprise Manager to configure the throughput for resequenced messages.  Following are the properties specific to OSB resequencer:

  • Resequencer Maximum Groups Locked : Maximum number of groups locked by Resequencer in each attempt it makes to obtain locks on the groups. Locks are obtained on the groups so that only one managed server node processes the group at a time.
  • Resequencer Locker Thread Sleep : The number of seconds the Resequencer would pause between each iteration to obtain locks on the groups.
  • Purge Completed Messages : Delete message after successful execution. The default value will be set as true.

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

Wednesday Feb 18, 2015

Service Bus: Obtaining a list of exposed SOAP HTTP endpoints by Maarten Smeets

The Oracle Service Bus is often used for service virtualization. Endpoints are exposed on the Service Bus which proxy other services. Using such an abstraction layer can provide benefits such as (among many other things) monitoring/logging, dealing with different versions of services, throttling/error handling and result caching. In this blog I will provide a small (Java) script, which works for SOA Suite 11g and 12c, which determines exposed endpoints on the Service Bus.

How to determine endpoints?

clip_image001In order to determine endpoints on the Service Bus, The Service Bus MBeans can be accessed. These MBeans can obtained from within a local context inside the Service Bus or remotely via JMX (when configured, see http://stackoverflow.com/questions/1013916/how-to-enable-jmx-on-weblogic-10-x). In this example I’ll use a remote connection to a Weblogic Server instance which runs on the same machine (JDeveloper IntegratedWeblogicServer). To browse MBeans, you can use jvisualvm (http://docs.oracle.com/javase/7/docs/technotes/guides/visualvm/) which is distributed as part of the Oracle JDK. JVisualVM has a plugin to browse MBeans.

When connected, the Service Bus MBeans are located under com.oracle.osb. The proxy services which define the exposed endpoints, can be recognized by the Proxy$ prefix. In order to determine the actual endpoint, you can look at the ResourceConfigurationMBean of the proxy service. Under configuration, transport-configuration you can find a property called url. The script also filters HTTP SOAP services since the url field is also used for other transports. A replace of // with / is done on the combination server:host/url since the url can start with a /. This causes no difference in functioning but provides better readable output. If you want WSDL’s, you can add ‘?wsdl’ to the obtained endpoint. 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

Thursday Feb 12, 2015

Creating a Mobile-Optimized REST API Using Oracle Service Bus by Steven Davelaar

clip_image002

Fusion Middleware A-Team architect Steven Davelaar kicks off a new series that shows you how to use Oracle Service Bus (OSB) 12c to transform SOAP-based enterprise system interfaces into a mobile-optimized REST-JSON API.  Read part 1 and Read part 2

Introduction

To build functional and performant mobile apps, the back-end data services need to be optimized for mobile consumption. RESTful web services using JSON as payload format are widely considered as the best architectural choice for integration between mobile apps and back-end systems. At the same time, most existing enterprise back-end systems provide a SOAP-based web service application programming interface (API) or proprietary file-based interfaces. In this article series we will discuss how Oracle Service Bus (OSB) 12c can be used to transform these enterprise system interfaces into a mobile-optimized REST-JSON API. This architecture layer is sometimes referred to as Mobile Oriented Architecture (MOA) or Mobile Service Oriented Architecture (MOSOA). A-Team has been working on a number of projects with OSB 12c to build this architecture layer. We will explain step-by-step how to build this layer, and we will  share tips, lessons learned and best practices we discovered along the way. In this first part we will discuss how to design the REST API.

Main Article

Design Considerations

Let’s start with the first challenge: how do you design an API that is truly optimized for mobile apps? A common pitfall is to start with the back-end web services, and take that back-end payload as a starting point. While that may limit the complexity of transformations you have to do in OSB 12c (you could even use the automated “Publish-As-REST” function on a SOAP business service) it leads to an API which is everything but optimized for mobile. This brings us to our first recommendation:

The REST API design should be driven by the mobile developer.

He (or she) is the only one who can combine all the requirements, information and knowledge required for a good design:

  • he designs and builds the various screens, knows the supported form factors and knows exactly which data should be retrieved for which screen.
  • he knows the requirements for working in offline mode, and knows how this can be supported and implemented using his mobile development tool set.
  • he is responsible for data caching strategies to optimize performance in both online and offline scenarios
  • he decides which read and write actions can be performed in a background thread not impacting the user-perceived performance.

To illustrate how the above aspects impact the design of the API, we will introduce the sample “human resources” app that we will use throughout this article series. Lets start with the three screen mockups our API should support: 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

About





Search

Archives
« April 2015
SunMonTueWedThuFriSat
   
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
  
       
Today