RSS

Author Archives: jvzoggel

About jvzoggel

Middleware Consultant / the Netherlands / 's-Hertogenbosch / RUBIX.nl

Patching the Oracle Service Bus 12.1.3 unknown protocol deployment error

If 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.

foutmelding

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

Symptons:
When attempting to run both OSB and BPM in the same domain in 12.1.3 the following error occurs during creation of a WSDL file:
The WSDL is not semantically valid: Failed to read wsdl file from url due to java.net.MalformedURLException: Unknown protocol: servicebus.

Solutions:
Apply Patch 18640346 and recreate the domain
OR
add com.bea.wli.sb.resources.url protocol to -Djava.protocol.handler.pkgs in setStartupEnv.sh

So either download the patch or to fix this on your local integrated domain by editing the setStartupEnv.sh or setStartupEnv.cmd file.
I made the choice to edit the startup files and you just find & replace the multiple entries like stated below:

Windows OLD value setStartupEnv.cmd:

set JAVA_OPTIONS=%JAVA_OPTIONS% -Djava.protocol.handler.pkgs="oracle.mds.net.protocol|oracle.fabric.common.classloaderurl.handler|oracle.fabric.common.uddiurl.handler|oracle.bpm.io.fs.protocol"

Windows NEW value setStartupEnv.cmd:

set JAVA_OPTIONS=%JAVA_OPTIONS% -Djava.protocol.handler.pkgs="oracle.mds.net.protocol|oracle.fabric.common.classloaderurl.handler|oracle.fabric.common.uddiurl.handler|oracle.bpm.io.fs.protocol|com.bea.wli.sb.resources.url"

Linux OLD value setStartupEnv.sh:

JAVA_OPTIONS=”${JAVA_OPTIONS}  -Djava.protocol.handler.pkgs=oracle.mds.net.protocol|oracle.fabric.common.classloaderurl.handler|oracle.fabric.common.uddiurl.handler|oracle.bpm.io.fs.protocol”

Linux NEW value setStartupEnv.sh

JAVA_OPTIONS=”${JAVA_OPTIONS}  -Djava.protocol.handler.pkgs=oracle.mds.net.protocol|oracle.fabric.common.classloaderurl.handler|oracle.fabric.common.uddiurl.handler|oracle.bpm.io.fs.protocol|com.bea.wli.sb.resources.url”

References:

 
1 Comment

Posted by on 07-10-2014 in Oracle, OSB

 

Tags: , ,

First look how to migrate Oracle BPM 10g R3 projects to Oracle BPM 12c

A very interesting feature in the recently released Oracle BPM 12c Suite (12.1.3) is the fact it now supports migration from older BEA Aqualogic BPM (6.0) & Oracle BPM 10g R3 projects. Oracle BPM 12c (and 11g) brought significant enhancements to the original Fuego/BEA product. However Oracle BPM 11g, unlike 12c, had no migration support for customers,

Shipped with Oracle BPM 12c there is a migration utility whicj enables you to migrate a BPM project that you created using Oracle BPM 10gr3 to a 12c BPM project which you can modify then with Oracle JDeveloper 12c. The migration utility creates an exported BPM project and a migration report. The migration report contains detailed information for the elements in the original 10g BPM project. If problems occur the migration utility will log these details in the report. You can find the migration utility (which is actually an ANT build.xml) in the JDEV HOME folder under /soa/plugins/jdeveloper/bpm. To run BPM 10-12 Migration tool, Apache Ant must be installed. The ANT target you will need to run will be migrate10-12.

 


cd C:\ORACLE\middleware_12.1.3\soa\plugins\jdeveloper\bpm
C:\ORACLE\tools\apache-ant-1.8.4\bin\ant migrate10-12 -DprojectLocation=C:\oracle\projects\rubix_ALBPM_pilot_15032010 -Ddestination=c:\oracle\projects\bpm12Export
Unable to locate tools.jar. Expected to find it in C:\Oracle\Java\jre7\lib\tools.jar
Buildfile: C:\ORACLE\middleware_12.1.3\soa\plugins\jdeveloper\bpm\build.xml

check:

migrate10-12:
 [migrate] --- Migration complete ---
 [migrate] --- See log file: 'c:\oracle\projects\bpm12Export\rubix_ALBPM_pilot_15032010.xml' on your browser.

BUILD SUCCESSFUL
Total time: 2 minutes 59 seconds

C:\ORACLE\middleware_12.1.3\soa\plugins\jdeveloper\bpm>

The export folder containts the following files:

  • report (.xml) with stylesheet (reports.xsl)
  • project statistics (.csv)
  • most important, the Oracle BPM 12 export (.exp)
  • SOA folder which contains all the BPM artifacts

export_result

The project statistics shows a simple overview of the groups, elements and quantity of the migration process, where the migration report gives a very detailed overview of all the artifacts during the migration. During this migration I already saw some warnings and objects which could not be migrated. So I naturally was very curious (and I had to admit, a bit sceptic) what the result would be.

So next step, In Oracle JDeveloper 12c we can import the project through File -> Import

export_importBPM

Select the .exp file and press import and the result is a Oracle BPM 12c project with all files: composites.xml, organizations.xml, businessIndicators.bi, etc.

export_composites

export_process

 

I’m actually quite  impressed  by the result. I have to admit that before starting I was a bit sceptic, especially because the old POC project I used contained more then a simple process and is not in a mile in line with the final production release used by the client. However the result seems is a very complete BPM 12c project with all tasks, Business Objects, Schemas and off course processes. Yes, the migration is not 100% successful and a BPM developer still needs to verify the code and make some fixes to the project. However the migration utility surely gives organizations a quick start to migrate their Oracle BPM 10g R3 environment and start making use of all the new 12c features.

References:

 
2 Comments

Posted by on 11-08-2014 in BPM, Oracle

 

Tags: , ,

Solving a TIBCO buildear bug for the use in Continuous Integration

Within Rubix we have a buildserver for the Oracle/Java developers. The server is configured in Amazon EC2 and runs on Ubuntu configured with Tomcat, Jenkins and Nexus. For standardisation and us moving to the Amazon EC2 cloud we wanted to move the Tibco builds to  the same server.

So after installing the necessary Tibco BusinessWorks 5 software on the server, moving all the source over to Linux we tried running our first Tibco build using Jenkins and the exec-maven-plugin to execute buildear.sh. Sadly it resulted in this error message:


Starting up...
java.lang.InternalError: Can't connect to X11 window server using '10.0.0.51:0.0' as the value of the DISPLAY variable.
at sun.awt.X11GraphicsEnvironment.initDisplay(Native Method)
at sun.awt.X11GraphicsEnvironment.access$200(Unknown Source)

There seems to be a (known) bug in the Tibco BusinessWorks buildear which “sometimes” requires a graphical interface when ran from the shell. In our situation this only seemed to occur when projects had XSDs imports in a used libraries.

The solution is to configure Jenkins to use XVFB plugin and emulates a “dumb” framebuffer using virtual memory.

Screen shot 2012-01-29 at 23.18.00

Thanks to collegues Roel, Maarten, Rubén and Anthony for resolving this issue.

 

References:

https://wiki.jenkins-ci.org/display/JENKINS/Xvfb+Plugin

 

 
Leave a comment

Posted by on 05-07-2014 in Tibco

 

Tags: , ,

Using the clone ability to duplicate a Service Bus 12c project

It’s quite common in a service oriented landscape that a newer version of a service is required.
For instance due to new functionality for 1 service consumer which brakes the contract for the other consumers.

JDeveloper 12c has a cool feature helping us to clone a Service Bus project.
Right-click on the project and select Service Bus -> Clone

01

Determine the name of your clone target, for instance a version 1.1 of your current project:

02

The Service Bus project is cloned (copied) including all artifacts.
If we use a HTTP on our proxy we can expect a warning like in the pictures below which warns about 2 identical URIs.

03

04

We can quickly fix this by changing the endpoint URI on the new Service Bus project proxy making it unique.

05

 

And off we go! A lof faster then the old copy/paste of files or export/import work-around.

 
2 Comments

Posted by on 27-06-2014 in Oracle, OSB

 

Tags: , ,

How to run and debug Oracle Service Bus 12c services on the Integrated Weblogic Server

After developing a Service Bus project in JDeveloper 12c we can deploy it on the internal Weblogic server.
In this blogpost we use the HelloWorld service build earlier as example.

01

 

If this is the first time you execute the integrated Weblogic server you will get a pop-up to configure the domain.

02

Starting the Integrated Weblogic server for the 1st time takes a looooooooot of time, but eventually it is RUNNING and a panel with the look-and-feel of the classic Oracle Service Bus 11g is there.

03

We can set the SOAP message payload here to debug/test our service.
Since our HelloWorld example ignores any request message, so we can keep the request as-is and by pressing Execute we make the service call to our pipeline.

03_02

By checking the Invocation Trace we can debug our service call and check if our service is functioning as expected.

Since we are know running a Oracle Weblogic domain with the SOA/OSB extensions deployed, we can take a quick look at the console.
The most interesting ones are located here (change the port if the default port 7101 was not used creating the domain):

Looking at the Enterprise Manager we see there is a dedicated service-bus and soa-infra part still seperating both components logically.

04_EM

 

The biggest change however is the sbconsole which was there since the days of BEA Aqualogic Service Bus.
Changes are not always bad, however it will probably take me a while to get used to it. :)
But mostly determine where certain part of the administration & configuration of services can take place, either in EM or SBCONSOLE.

04_SBCONSOLE

 
Leave a comment

Posted by on 27-06-2014 in Oracle, OSB

 

Tags: , ,

Building a simple Oracle Service Bus 12c HelloWorld service

As a first service we can build a simple service which returns a SOAP message with a HelloWorld text.
Drag the HTTP transport from the Technology palette to the SBProject Proxy Services lane (the left one).

01

The Create Proxy wizard will start and guide you to the settings.
First we choose a name for our service, comfirm the HTTP transport (the pulldown actually shows no choice) and leave Generate Pipeline enabled.

02

 

As service type we select the most easy option Any Soap, which allows us to use SOAP messages but spares us the part to configure a WSDL/XSD for now.
The pulldown shows us that both SOAP 1.1 and 1.2 are supported, but for this example we can use either.

03

 

The last step in the wizard is configuring the endpoint URI for your service. The endpoint determines the address our service consumers will have to use.
In our example: http://<servername>:<serverport>/SBProject/helloWorld

04

 

The wizard automatically generated the Pipeline so our project looks like this.
Since our HelloWorld service won’t access any back-ends we will not use the External Services lane of our project.

05
When we click on the pipeline we will see a familiar layout we know from Oracle Service Bus 11g proxy’s.

First we drag the Pipeline pair from the components to our pipeline

06_selectPipeline

 

Our pipeline know shows a request and response pipeline where we can place our transformation logic.

07

 

Since we don’t access a back-end, we will just transform the SOAP message in the response pipeline.
Drag a Replace action from the components palette to the StageResponse.

Configure the Replace action to change the body (location), on root leven using the dot (.).
For Value we will use XML-content <message>HelloWorld</message> to make sure the SOAP message still contains a valid XML structure.
We select the Replace node contents, which is a best practice for SOAP messages.
This option will only replace the content of the SOAP body and prevent any namespace issues, avoid creating a non-valid SOAP body structure, etc.

 

08

 

The result is a simple SOAP/HTTP service which we can now deploy and test.

 

09

 
1 Comment

Posted by on 27-06-2014 in Oracle, OSB

 

Tags: , ,

Creating a new Oracle Service Bus 12c project

After Oracle SOA Suite 12.1.3 for developers is installed we can now create our first Service Bus project. Select New Application.

01

From the Service Bus Tier we can select the Service Bus Application with Service Bus Project.
It seems the OSB 12c project naming was aligned with other JDeveloper projects, and so dropping the old OSB Configuration terminology and use Service Bus Application instead.

02

The 1st step in the Service Bus Application wizard is to determine our application name, working folder and an application package prefix

03

Since the Servicew Bus Application needs a Service Project we can now determine our project nme and the working folder for our project:

05

Our first (empty) project is a fact.

06_result_files

When we look at the result we see that the main part is the SBProject. The layout looks familiary close to the SCA composites we know from the SOA Suite.
However the OSB Proxy Services terminology is still used instead of Exposed Services and Pipelines/Split Joins instead of the SCA Components term

06_result_sbproject

When we look at the Components panel to the right we see that 12c uses pipelines and split-joins to model the service bus project logic.
Besides that a lot of transports and adapters are available to connect to a large scale of backends and technologies.
OId obvious integration friends like HTTP, FTP, File, JMS are there, but also options like REST, UMS, Oracle Coherence and Oracle BAM.

06_result_components

Probably for backwards compatibility Oracle decided to support both the old OSB 11g Business Services transports and better integrate the SOA Suite JCA transports in the designer.
Which again allows us to use 2 default options for the File, JMS and FTP transport.

Looking at the way Oracle decided to arrange the components as they did between Technology and Advanced, it looks like the “default” or “best-practice” transport is located under Technology.
For instance:

  • The Technology panel File and FTP transport pop-up the JCA Adapter wizard, and the HTTP and JMS transport pop-up the Business Service wizard.
  • The Advanced panel File and FTP transport pop-up the Business Service wizard, and the JMS transport pop-up the JCA Adapter wizard

Another killer feature is the default integrated Maven support for your projects.
After viewing a demo of a competitors new integration product release recently, which simply stated “there is still no Maven support”, this seems clearly an advantage for Oracle and will help developers and IT organizations to embrace CI more efficiently.

06_result_pom

 
2 Comments

Posted by on 27-06-2014 in Oracle, OSB

 

Tags: , ,

 
Follow

Get every new post delivered to your Inbox.

Join 355 other followers