Oracle SB12c QuickTip: Fix HTTP 403 on calling SOAP/REST Proxy Services

A few days ago, I faced a strange behaviour when I tried to test SOAP and REST services deployed to a fresh SOA Suite 12c (12.2.1.1) installation. Using SOAP UI for testing the services always gave me an response in a HTML format, which says ” Error 403 Forbidden”, like it is displayed in the screenshot below:

screen-shot-2017-01-29-at-15-04-03Going through all log files of the corresponding Managed Server, where Servicebus was installed to, I didn’t find any hint that even the request was delivered to the servers. The requests simply had no footprint in the access.log or the server’s diagnostics.log – which seemed to be very strange to me. Assuming that the behaviour might have been something to do with the security policies applied to the services, I disabled all security policies as a next step – without any success.

After testing the services successfully in another environment, it was quite clear to me that something was wrong with the domain setup and after some investigations, I found the root cause for the “Error 403 Forbidden” message: Using the deployments view in Weblogic Console, I noticed that “API Manager Starter Application” was targeted to the Servicebus Cluster. Like described in MOS Note 2087277.1, I un-targeted this application from the Cluster, restarted the corresponding Managed Servers and afterwards, I was able to test the services without receiving the mentioned exception. Like the MOS note described this behaviour might happen, if the wrong Template (Oracle API Manager Template) is chosen for Servicebus, when setting up a domain.

Since it took me some time to understand the behaviour and to fix it accordingly, I hope this short post will preserve you from running into the same issue.

OTN Appreciation Day : Integration Cloud Service (ICS) On-Premises Connectivity Agent

The notion for Cloud adoption is stepping forward and companies start thinking of how they can improve their businesses by moving applications, platforms or even their infrastructure to the Cloud. The goal: Create new, innovative business models to distinguish from competitors.

Oracle ICS is an Integration Platform as a Service (IPaaS), which supports enterprises to overcome integration challenges, while moving their business to the Cloud. You can learn more on the use cases for ICS in my latest OTN article.

One feature, which is from my point of view especially important and valuable, is the Oracle ICS On-Premises Connectivity Agent. This software component is essential to simplify Cloud adoption for enterprises since it con be used to easily integrate Cloud and On-Premise applications with each other.

agentbig

The agent’s software can directly be downloaded from Oracle ICS and has to be installed behind the firewall and needs to be registered with an ICS instance. The installation procedure is straight-forward and done within a few minutes. The agent manages the communication between ICS and the On-Premise applications. Since the agent initiates the communication with ICS using standard protocols and ports (HTTPS on port 443), there is no need to open specific ports in the firewall! This is really beneficial and makes the implementation of On-Premise to Cloud integrations even more efficient, because exhausting discussions regarding security exceptions with the security officers are a thing of the past.

This is why I really like this feature of Oracle ICS. For more information regarding installation and usage of the On-Premise Connectivity Agent, you can refer to the aforementioned OTN article. In addition, further information can also be found in blogs from Robert van Mölken and the Oracle A-Team.

OOW 16: My thoughts and experiences

Oracle Open World 2016 is over and it’s time to take at least two steps back. Why at least? You’ll know it, if you read through this article.

To briefly summarize it upfront: It was again a great event! There was an amazing and, at the same time, special spirit around, which attendees were able to feel and which was contagious – that’s my view, because before Open World I felt a little uncomfortable. I wasn’t sure about the general direction, where Oracle is heading regarding different Cloud topics; the overall strategy was not 100% clear to me. I had some open questions and uncertainties, which were answered respectively clarified during the conference. This makes me much more confident for the future and gives me in addition new ideas for my daily work, which of course will not become easier with the knowledge I gained at the conference. But this simultaneously makes my job attractive and exiting.

Infrastructure as a Service (IaaS) – The new focus

If you look at the figures in Oracle’s business summary for fiscal year 2016, it is really impressive what happened there. The revenue, just for the Cloud business, was at 1 Billion dollar!

Cloud Business Figures 2016

The good news, although this is not a secret, Oracle will keep going with investing in their Cloud business. As it can be seen from the picture above there is still room for improvement, since most of this revenue is coming from the SaaS and PaaS area.

“Now we are aggressively moving to infrastructure. We have a new generation that we are running around the world”, Oracle Executive Chairman and CTO Larry Ellison  

The new thing is that a large part of the investments will be especially done in the Infrastructure as a Service (IaaS) area, the Gen2 IaaS offerings, – I personally wasn’t aware of this. But doing so is just the logical next step, because a robust and reliable IaaS platform is key for growing the PaaS and also the SaaS business! This also converges with Larry Ellison’s statement, who said in one of his Keynotes: “IaaS represents a huge new opportunity for Oracle to layer on top of our rapidly growing SaaS and PaaS businesses”.

With this move, Oracle is approaching their main Cloud Competitors, like Amazon and Microsoft even more aggressive. So it will become hard times for them, since Oracle is even cheaper and faster than Amazon – the only thing you need to do is that you must be willing to pay 20% less, as Larry Ellison mentioned.

Oracle Gen2 IaaS vs. AWS

A further key differentiator for Oracle’s IaaS Cloud business are Bare Metal servers, which were announced during the conference. Bare Metal is a physical appliance optimized for high performance, without the need for virtualization. It is able to handle any workload, on any operating system and hypervisor – another piece of the Cloud puzzle. In addition Oracle is also working on the availability by providing cross-datacenter HA. All in all, these are  interesting steps in the right direction!

Further investments in PaaS offerings to delivery “One consistent Platform”

Also in the areas of PaaS Oracle listed a singificant growth. Starting with 12 Cloud Services in Q1 2016, Oracle finally ended up with over 50(!) Cloud Services by Q4 2016. This is a very impressive increase in only one year, but also a huge challenge for Oracle to make comprehensible offerings to customers, since some of the Cloud services have overlapping functionalities. One big advantage of the Oracle PaaS offering: it is one complete platform that covers different areas, like for example Integration or Big Data, and which can be managed and monitored consistently.

img_5368

To survive in this “jungle” of Cloud Services, customers need some guidance to choose the right combination of Cloud Services to address a specific business need. From a partner’s perspective, it is important to guide customers and to help them to find the right combination of Cloud Services – that’s blessing and curse. Oracle is already aware of that and will shortly introduce so called Suites, which will contain a useful combination of services, aiming to cover specific use cases.

In addition, there were some announcements regarding new PaaS services respectively the enhancement of existing ones. Highlights here were:

  • New: API Platform Cloud Service
    • Consistent Enterprise API Management platform
    • Supports API First Design
  • New: Analytics Cloud Service
    • Visualize any data on any device
    • No need for specific implementation skills
    • Great connectivity (40+ connectors)
  • New: Data Integration Cloud Service
    • Data Warehouse and analytics
    • Repliaction, ETL/ELT and Data quality
  • New: Dataflow Machine Learning Cloud Service
    • 0-Code GUI
    • Leverages from Open Standards, like Apache Spark and Kafka
  • New: Big Data Discovery Cloud Service
    • Visualize and discover hidden values in data
    • Transform huge amount of data to business insights
    • Process data using Apache Spark
  • New: Content and Experience Cloud Service
    • Digital asset management and mobile collaboration (Multi channel)
    • Consistent brand experience across channels
  • New: Virtual Assistance (Chatbot) Platform
    • Contextual conversations with intelligent virtual assistant
    • Integration with Facebook Messenger, Slack and others
  • New: Identity Cloud Service
    • Central Identity Management Platform
    • Can be used to align OnPrem and Cloud Identity Stores
  • New: Management Cloud Service
    • APM capabilities
    • Centralized Logging

Furthermore there were announcements regarding enhancements of the already existing Cloud Services, like Integration Cloud Service (ICS), which is further improvement by adding new connectors and also adding new capabilities for defining integrations. So the existing Cloud Services are becoming also more and more mature, which is good to see.

Oracle Cloud Platform – Migrate, Extend and Modernize

Oracle’s claim is to provide a complete  Cloud offering that supports the easy migration of existing applications to the Cloud, the development of Cloud Native apps in common technologies like Java or Node.js and the creation of new applications leveraging from the functionalities from the PaaS offerings.

Regarding the migration, Oracle’s  intention is to make it as easy as possible for customers to move their applications to the Cloud by just hitting a button, which furthers the Cloud adoption – Lift ‘n Shift is the magic word these days.To flesh this out, Oracle acquired Ravello Systems. With Ravello it is easily possible to move complete existing VMware images to the Public Cloud. This works seamless by just hitting a button, without any furthers efforts.

In addition, Oracle provides Container Cloud Services to build Cloud Native apps, like Application Container Cloud Service (ACCS), to allow customers to easy shift existing Java, Node.js or even PHP applications to the Cloud. With Developers Cloud Service (DevCS), Oracle also provides a Cloud development platform that covers basic DevOps capabilities, like Source Code management, Build automation, Issue Tracking, Wiki and more.

To infinity and far beyond…

To make a long story short. Oracle’s Cloud offering reaches the next level of maturity, even though there is still a way to go! The great advantage of Oracle with respect to the competitors is that they have an integrated approach built upon the three pillows: IaaS, PaaS and SaaS.

img_5388

It is interesting to see that Oracle is doing a huge shift of it’s core business; away from a leader for on-premise Platforms and Solutions and over to a pure Cloud company. This takes some time and also is challenging, from a organizational as well as from a technical perspective. The exciting thing is that we can learn a lot from this, because similar things has to be taken into account while defining a long-term Cloud strategy!

Even if Oracle seems to be late in the Cloud market and is now maybe not as mature as for example Amazon, they have a consistent and comprehensive vision. And although some people think that this is a disadvantage, from my point of view this might be a potential advantage form a long term perspective. Because as we’ve already seen in the past, learning from the pioneers in a specific area is not the worst thing.

 

 

Designing the digital enterprise: Cloud2On-Prem integrations using Oracle ICS

Integrating distributed systems with each other has been a challenge for many years. In the context of digital transformation, companies are using more and more Software as a Service (SaaS) applications to address standard processes, so that they can focus on improving and evolving the core business.

Since those use cases become more common, me and two of my colleagues – Alexander Däubler and Cornelia Spanner – wrote an OTN article that is based on a real world Proof-of-Concept (PoC) implementation. In this particular PoC, a on-premise SAP solution needs to be integrated with Salesforce.com (SFDC). As integration platform, we choose Oracle Integration Cloud Service (ICS) to implement the integration.

If you want to learn more on that, just checkout the article available on OTN.

Demystifying API Management: Concepts and Demarcations

Digital transformation is on it’s way and the industry is required to adopt the new concepts and techniques, like the Internet of things (IoT), Cloud and Enterprise Mobility. Due to the chances provided by that, new business models arise, which need to be evaluated by company’s to not lose valuable market shares and to stay in touch with the competitors. One topic, which is essential and thus is a key enabler in the context of a successful digital transformation strategy, is API management.

Why that?

To be able to keep up with competitors from a long-time perspective, companies need to focus on their core business. As a result of the progressive digitalization, the value of information will become more and more important for businesses; information will become the new currency! Since companies start focussing on their core business, external services are used in the context of information gather, which are e.g. needed to support business decisions. To guarantee a consistent and secure exchange of data over corporate boundaries, stable and robust APIs are needed. To manage those APIs is one key area of an API management approach.
At this point an experienced developer would say: “Stop! We are using and developing APIs for years now, why should there be any new challenges today?”. Good point! But when digging deeper and asking questions about what managing an API means, the answer is usually closely related to API lifecycle management. It’s an important topic that’s for sure, but API Management in today’s digital business is much more than that and this is what I want to outline within this blog post.

API Management

To make it clear from the beginning: API management is not just introducing a tool respectively a piece of software. It is also not just versioning and documentation of an API. API Management is a complex discipline, which needs a proper, long-term strategic planning. Oracle ACE Director Luis Weir gives a very good definition, on what API management really is about:
API Management is the discipline that governs the development cycle of APIs, defining the tools and processes needed to build, publish, and operate, also including management development communities around them. (https://goo.gl/uKiUoy)
 
According to this definition, API Management has different flavours, from which API Lifecycle management and API Security respectively API Gateway are only two. In today’s digital business, there is also a need for API Analysis, to allow complete usage tracking which is important regarding a later monetization for external as well as internal API consumers. In addition, as APIs are build, managed, discovered and consumed by different personae, a central platform is needed, which allows the management of the needs the different personae might have.

API Gateway

It is important to understand that API Management and API Gateway is not the same. In discussions I often have the feeling that this is not clear.
An API Gateway as such is a concept how APIs are exposed to the outside world. So usually an API Gateway is a software component that allows to implement security features, like basic authentication as well as authorisation, throttling and maybe protocol translation. So the API Gateway acts like a gatekeeper fora company’s information that are exposed by public APIs. Usually the API Gateway is something which is deployed in the DMZ.

API Gateway vs. ESB?

Most API management platforms, offered by platform vendors like Oracle, Computer Associate or Mule, include an API Gateway component. For some vendors the API Gateway can also be used to implement business logic like data transformations. Since this overlaps with functionalities that are usually delivered by an ESB, this may be confusing for users and leads to questions like: “Why do I need an ESB, if I have an API gateway that provides similar functionalities?” (or even vice-versa, in case there is already an ESB in place). Good question!
To answer such kind of questions, it helps to take a step back and think about concepts of an ESB.

Enterprise Service Bus (ESB)

The concept of an ESB means to establish a central hub within a company that is responsible for connecting different services respectively systems, all having different data formats and using different protocols with each other.
In this context, an ESB as a technical software component is responsible to validate, transform and route messages between the different systems. In addition, additional integration logic, like message enrichment or message splitting, might be implemented in the integration routes. Furthermore an ESB is optimised to handle a huge amount of transactions in parallel.
In a modern IT system landscape, an ESB should be used as the central integration backbone. So from a strategic perspective, an ESB is the heart of a company’s integration strategy, which is base for every digital transformation strategy.

Back to the original question…

After this short breakout, we try to answer the question, why an ESB is needed, if an API gateway that provides similar functionalities is already in place:

For sure there is maybe no technical reason to do so, but there are many good reasons from a conceptual perspective, to separate the two areas also from a tooling perspective:
  • API Gateway
    • Acts a central entry point to a company
    • Exposes public APIs
    • Should not implement any business logic
    • Responsible for API analytics, like usage tracking
  • ESB
    • Acts a central integration backbone
    • Used internally for integrating heterogenous systems and services
    • Should not expose functionality to the outside world
    • Provides new internal services and APIs
According to these explanations, the most valuable and future-oriented solution with respect to digital transformation is to combine API Gateway and ESB.

Oracle SB 12c QuickTip: Resolve NoClassDefFoundError during Maven deployment

While deploying some services to a local DEV environment ( which is the prebuilt OTN SOA 12.1.3 VM ) using Maven Servicebus plugin, the deployment was failing for some reason. But instead of giving me the information about what is wrong with my service implementation, I received a NoClassDefFoundError. In the root cause of the exception stacktrace, it complains that class com/bea/wli/sb/util/DiagnosticLocation could not be found.

[INFO] --- oracle-servicebus-plugin:12.1.3-0-0:deploy (default-deploy) @ LoggingService
[INFO] Service Bus Archive deployed using session Service_Bus_Maven-LoggingService-1472570870357.
weblogic.rjvm.PeerGoneException: ; nested exception is:
weblogic.utils.NestedException: java.lang.NoClassDefFoundError: com/bea/wli/sb/util/DiagnosticLocation
at weblogic.rjvm.RJVMImpl.gotExceptionReceiving(RJVMImpl.java:1002)
at weblogic.rjvm.ConnectionManager.gotExceptionReceiving(ConnectionManager.java:1099)
at weblogic.rjvm.MsgAbbrevJVMConnection.gotExceptionReceiving(MsgAbbrevJVMConnection.java:527)
at weblogic.rjvm.t3.MuxableSocketT3.hasException(MuxableSocketT3.java:494)
at weblogic.socket.SocketMuxer.deliverExceptionAndCleanup(SocketMuxer.java:837)
at weblogic.socket.SocketMuxer.deliverHasException(SocketMuxer.java:777)
at weblogic.socket.JavaSocketMuxer.processSockets(JavaSocketMuxer.java:368)
at weblogic.socket.SocketReaderRequest.run(SocketReaderRequest.java:30)
at weblogic.work.ExecuteRequestAdapter.execute(ExecuteRequestAdapter.java:21)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:147)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:119)
Caused by: weblogic.utils.NestedException: java.lang.NoClassDefFoundError: com/bea/wli/sb/util/DiagnosticLocation
at weblogic.rjvm.RJVMImpl.gotExceptionReceiving(RJVMImpl.java:999)
... 10 more
As the server log files also didn’t give me a hint about what is wrong with my service, I searched my middleware home for jar files that contains references for the class mentioned in the exception. As a result, I was able to identify two jar files that contains the class:
  • oracle.servicebus.pipeline.kernel
  • oracle.servicebus.resources.core

Both jar files are located in $MW_HOME/osb/lib/modules.

In a next step, I add the two jar files in my local Maven repository using the Maven install plugin (the example underneath only shows the command for one of the jars):

mvn install:install-file -Dfile=/opt/oracle/middleware/jdev_1213_soa/osb/lib/modules/oracle.servicebus.resources.core.jar -DgroupId=com.oracle.sb -DartifactId=oracle.servicebus.resources.core -Dversion=12.1.3.0 -Dpackaging=jar

After that, I changed the Servicebus plugin configuration in the POM file, by adding two dependencies to the newly installed jar files.

<plugin>
<groupId>com.oracle.servicebus.plugin</groupId>
<artifactId>oracle-servicebus-plugin</artifactId>
<version>12.1.3-0-0</version>
<configuration>
<customization>${project.basedir}/../../CustomizationFiles/customizationFile_${target-env}.xml</customization>
<excludes>
<exclude>*/target/**</exclude>
</excludes>
</configuration>
<extensions>true</extensions>
<dependencies>
  <dependency>
    <groupId>com.oracle.sb</groupId>
    <artifactId>oracle.servicebus.pipeline.kernel</artifactId>
    <version>12.1.3.0</version>
  </dependency>
  <dependency>
    <groupId>com.oracle.sb</groupId>
    <artifactId>oracle.servicebus.resources.core</artifactId>
    <version>12.1.3.0</version>
  </dependency>
 </dependencies>
</plugin>

Applying the changes to the plugin finally helps to overcome the NoClassDefFoundError issue. As a result, the plugin now shows the real problem with the service.

[INFO] --- oracle-servicebus-plugin:12.1.3-0-0:deploy (default-deploy) @ OrderTransactionTrigger ---
[INFO] Service Bus Archive deployed using session Service_Bus_Maven-OrderTransactionTrigger-1472571721113.
[ERROR] The session cannot be activated due to existence of conflicts.
resource: Pipeline LoggingService/operations/updateLog/pipeline/UpdateLogPipeline
error: [PipelinePairNode1, Request Pipeline, ProvideLoggingData, Java Callout action] Archive resource LoggingService/shared/java/PersistenceService-1.0.4 does not exist
error: Reference to a non-existing instance: Archive LoggingService/shared/java/PersistenceService-1.0.4
resource: Pipeline

[INFO] ------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------

As it can bee seen from the output, I was missing a jar file for a Java Callout activity. With that knowledge, I was able to fix the service within a few minutes. Afterwards, it deploys without any problems.

Upcoming talks at Oracle Open World 2016 and DOAG

Finally my first post in my brand new blog… 🙂 This time it is more about organisational than real tech stuff, but don’t be worried it will not stay like this.

I wanted to keep you updated about upcoming conferences I attend in the near future and about the corresponding talks I’m going to give there.

Oracle Open World 2016

The CfP was already over for quite some time and I was curious about the results, because my good friend Danilo Schmiedel and me submitted six(!) proposals. And finally it happened: We received one confirmation for this awesome event taking place in beautiful city of San Francisco: Oracle Open World 2016 taking place in September (18th–22th). We are going to talk about Test Driven Cloud Development based on Oracle Developers Cloud Service and Oracle SOA Cloud Service. You can learn more about the details here.

DOAG Conference 2016

Another great Oracle conference is the DOAG conference in Germany hosted by German Oracle User Group. This conference takes place in November  (15th-18th) in Nuremberg. On this beautiful conference me and my colleagues Danilo Schmiedel and Borys Neselovskyi will speak about different topics like API Management, Cloud development and operating SOA Suite in Amazon Cloud environments. The titles of the three talks are:

Find more details about the presentation by following the links.

So check your calendars and subscribe for the conferences to learn about the interesting stuff. I’m looking forward to meet you at the conferences!