SOA Expert Series: OSB Domain / SOA Suite Cloud Service a Technical Correction

SOA Expert Series: OSB Workmanagers and Thread Constraints

We had a webcast by the Oracle A-Team about OSB workmanager and thread constraints recently, with very good overall feedback!

 

What I liked most was that many questions were answered. You can get the full list here. Everything very valuable and I recommend to read it after looking at the slides.

OSB Domains and Clusters

Let me point out one unfortunate mistake to a rather interesting question: “How do you handle 1000 services in an OSB cluster?”. The answer was to create several OSB clusters in one domain.

With all the respect, yet I believe the answer is not correct. It is not allowed / not possible to have more than one OSB cluster in domain. This is confirmed by the Oracle documentation:

Actually the question IMHO implies much more, e.g. how to deal with a large number of services with different resource requirements, payload sizes, etc.

 

 

 

OSB / SOA Suite 12c Domain Types

OSB / SOA Suite 12c Domain Types

screen-shot-2016-11-30-at-16-22-10Let me explain you some news about the domain types in 12c, since some of my colleagues were fiddling around with this. Due to the new quickstart installer for SOA Suite and OSB 12c there are more domain types available now for SOA Suite and OSB12c that you need to understand. The following options describe those types with added comments of when the make sense.

 

 

Options:

  1. The integrated domain that gets generated by JDeveloper if you run a project. Sometimes it is called default domain. This domain is bound to JDeveloper. Whenever you quit JDev, the domain shuts down. The downside is that this domain always supports OSB and SOA Suite, so a bit of waste of resources if you are only after OSB . This is the easiest solution for your first steps because no manual domain creation is required and JDev does it all for you.
  2. A standalone domain. This is the new and interesting option, because a standalone domain uses the Java DB and does not require you to run the RCU utility. Still a standalone domain is running independent from JDeveloper 12c, so you could you use this type of domain for development with OSB web console.You create the domain by setting the QS_TEMPLATES environment variable and running qs_config.sh, then create an application server connection with JDev, use the standalone server option in the application server connection wizzard, and point it to the standalone domain.
    You will be able to use “Deploy” from JDeveloper, but unfortunately not “Run as”.
    There are more benefits to a standalone domain not mentioned in the official documentation: Whereas the integrated domain includes everything needed for SOA suite you can restrict a standalone domain to Service Bus only and therefore reduce the number of internal deployments from 304 to 278 which will save you startup time.
  3. A compact domain can be used with quickstart. Also compact domains are targeted for development. This domain will be compatible with add-ons such at MFT, OES, etc. Note that you have to specify a special parameter CONFIG_JVM_ARGS=-Dcom.oracle.cie.config.showProfile for this option to be visible in the configuration wizzard.
    Since you can use it with an compatible Oracle DB, the necessary schemas have to be created with the RCU utility. Note: A compact domain is a developer domain consisting of a single admin server and no managed servers.
    The opposite of a compact domain is called extended domain where resources are deployed on a cluster of managed servers. Use extended domain for environments such as test, integration, load test, prod. These environments are distributed and clustered typically due to HA requirements.

Conclusion

It is important to understand the various domain types and to choose the correct domain type for your requirements. You can strip down a standalone domain to be OSB only, then make sure to select Integrated Servers if you want to deploy directly from JDev to it.

Oracle Service Bus 12c (12.2.1) Native REST: Bug in HTTP GET in Pipeline?

While I was working on an Oracle tech presentation, I discovered the following issue with native REST and Oracle Service Bus 12c.

Version

SOA Quickstart / 12.2.1 OSB, running on RedHat derivative with Oracle JDK 8.

Description

OSB 12.2.1 Native REST pipelines don’t work with GET parameters.

Creating a native REST business services works fine, also adding a REST proxy service.
Once you insert a pipeline HTTP stops working correctly (since the URL parameters aren’t forwarded, a list will be returned by the backend service according to REST semantics), since URL parameters are not forwarded.

Steps to reproduce:

  • Use REST tech adapter to create a REST business service for an existing REST backend.
  • Define GET and POST methods. WADL will be created.
  • Test business service from WADL: both GET and POST will work.
  • Create proxy service from REST business service
  • Test proxy service, again GET and POST methods will work from OSB test client.
  • In JDev, drop a pipeline on the line connecting proxy and business service.
  • In JDev verify the pipeline configuration. it will display correct values.
  • Test the proxy service again, only POST will work. GET does not work anymore (now returns a whole list), since the URL parameters are not forwarded. Even an empty OSB pipeline will swallow the GET URL parameters.

Severity

IMHO this is a bug. I am currently in discussion with Oracle PM about it. Since I am working on another cloud gig, I cannot file a SR myself.

What is next?

I will let you know about updates / fixes or workarounds. Note, you could set the URL parameters as routing options to circumnavigate the issue for a particular use case.

Update 1 (Oct 2016)

I received no feedback from Oracle unfortunately. Anyway, if you experience the same issue let me know. It is important to share the knowledge here – I receive a lot of positive feedback from people with the same issues. Anyhow, also file a SR with MOS if you can. This is the official way to get it possibly fixed.

Update 2 (Jan-12, 2017)

There is a Patch 25184543 now with a backport to 12.2.1.2, see comments below. Gracias a Juan! Kudos for getting this through MOS and for sharing the knowledge.

Extend a CentOS Oracle VirtualBox Image with more Disk Space

virtualbox logoUPDATE: A lot has change over the years. I post a lot on medium now (bookmark it here, no excuse!). Also I have 80+ free webcasts on youtube (make sure to subscribe). Then all my slides went to speakerdeck. Yes. A lot is about THE cloud these days :-). For news: twitter.

This started as a simple note to myself. Hopefully good enough for me to reuse it one day. Over time it turned into a post that made a lot of people happy (see comments section) because it really sucks when you run out of disk space in a VirtualBox.

So the following instructions will probably only give you a rough idea if you found this page looking for help on Google.

Anyway, these steps worked fine for me. What a bliss not having the file systems 98% full when starting a project. Somehow, I always run out of disk space when I install SOA Suite. No matter how big I initially size it.

The challenge certainly is to get VBoxManage, fdisk and lvm right without completely messing up your system.

Warning!

fdisk and to a lesser extend lvm are razor sharp tools that can easily cause bleeding wounds. So make sure you have a backup (<- repeat this last sentence after me).

On Host side (e.g. Windows 7 here)

VBox instance has to be shut down for the following steps.

Extend the VBox image

Run the from the command line on the host system. Specify the new size in MB.

Example 1 with host system windows:

C:\Users\frank>"\Program Files\Oracle\VirtualBox\VBoxManage.exe" modifyhd --resize 29696 "\01_work\30 vms\virt
box\CentOS 6.4 64b STUDENT\CentOS 6.4 64b STUDENT.vdi"

Example 2 with host system MacOS:

# change to dir with vbox-manage
$ cd /Applications/VirtualBox.app/Contents/Resources/VirtualBoxVM.app/Contents/MacOS
$ VBoxManage modifyhd --resize 55000 /Users/frank/Virtual\ Boxes/ProjectA/project-disk1.vdi

On Guest side (e.g. CentOS 6.4 here)

Stay calm

Double check that you are on the guest side. Runing fdisk accidentially on the host side can destroy your whole computer, whereas running it on the guest side typically reduces the risk to destroy your virtual image only.

Note that this is not a kindergarten party, you have to run the commands with root privileges.

fdisk

Use fdisk -l to list devices, then e.g. fdisk /dev/sda to add another primary partition (command n), next free number (e.g. 3), of type 8e (Linux LVM) (t), print part table (p), write table (w). Reboot…

Add new partition as physical volume (PV)

[root@ccloud12 ~]# lvm

lvm> pvcreate /dev/sda3
 Physical volume "/dev/sda3" successfully created

Extend existing volume group (VG)

lvm> vgextend vg_ccloud12 /dev/sda3
 Volume group "vg_ccloud12" successfully extended

Find out partition name

lvm> lvdisplay
 --- Logical volume ---
 LV Path /dev/vg_ccloud12/lv_root

Extend logical volume

lvm> lvextend -L+8.48G /dev/vg_ccloud12/lv_root
 Rounding size to boundary between physical extents: 8.48 GiB
 Extending logical volume lv_root to 25.56 GiB
 Logical volume lv_root successfully resized

Resize the File System (Guest System)

resize2fs -F /dev/vg_ccloud12/lv_root

That’s it

Try df -h and enjoy your new diskpace.

Let me know if you had any success eg. using Oracle Enterprise Linux. Any super secret tips how to improve or shorten this are welcome!

Note: now I am using Mac OS as a host system, it works the same way.

Oracle SOA Suite for the Busy IT Professional

SOA Suite

Oracle SOA Suite is certainly the most comprehensive and also the most complex product of the classical WLS / OSB / SOA Suite stack. There are plenty of tools and other products tightly interwoven with SOA Suite:
It all starts with the installation where a supported database is required for the meta data repository. The necessary schema are created with the separate repository creation utility (RCU).  Testing processes is done from Oracle Enterprise Manager. Finally developing BPEL processes requires JDeveloper as an IDE.

That’s it to get started yet more complex projects often involve a Oracle Web Service Manager, and sometimes a repository and a registry.

Oracle SOA Suite Introduction

 

The recipe below is part III of a series of introduction recipes covering Oracle Fusion Middleware. It’s reduced to the max and as buzzword free as it gets. It certainly doesn’t replace an in-depth training though.

 

… better read this first

For a better understanding make sure to read part I and II first:

Part I: Basic SOA Principles (not really related to OFM) and Oracle Fusion Middleware (OFM) Introduction

Part II: Oracle Service Bus (OSB) for the Busy IT Professional – an Introduction

Part III: this document

 

Download the Oracle SOA Suite Introduction Recipe

You can download the SOA Suite recipe as a PDF file from here. Enjoy!

 

More?

This recipe is straight out of my book WebLogic Server 12c: Distinctive Recipes