Archive

Archive for the ‘Oracle SOA Suite’ Category

Unable to change WS Policy Store to “App Server Connection” in JDeveloper

January 5, 2014 Leave a comment

Today when trying different settings with Basic Authentication and SOA Suite, I wanted to from the embedded OWSM Policy Repository of JDeveloper to the one stored on the application server. In JDeveloper you can do that through preferences (Tools | Preferences). See this blog for more details.

Click on the App Server Connection option and choose an existing connection through the Connections drop-down or add a new one by clicking New.

NewImage

 

Unfortunately the change was not saved after clicking OK and when returning to the screen the option was still set to File Store.

A restart of JDeveloper just before changing the option solved the issue!

I’m speaking at DOAG IMC Summit, 6th June 2013 in Mainz, Germany

April 10, 2013 Leave a comment

In June I will be speaking for the German Oracle User Group (DOAG) at the Infrastructure and Middleware Community Summit in Mainz. This is all about Oracle Infrastructure and Middleware topics and has great speaker lineup for the german-speaking Oracle community.  The summit consists of the three tracks “Infrastructure”, “Middleware” and “on top of Middleware”.

My speech will be in the “on top of Middleware” track and it will be about “Where and when to use the Oracle Service Bus (OSB)”. Here is the abstract to my talk in german:

Der Oracle Service Bus (OSB) ist Bestandteil der SOA Suite 11g und steht im Zentrum moderner Prozess-. und Integrationslösungen. Die leichtgewichtige, zustandslose und hoch-performante Architketur des OSB macht ihn zu einem hervorragenden Werkzeug für die Transformation und das Weiterleiten (routing) von Nachrichten. Diese Präsentation erklärt wo und wann der Einsatz des Oracle Service Bus Sinn macht, zeigt dabei aber auch auf, wo die Limitationen des OSB sind. Wo sinnvoll wird auf die weiteren Komponenten der Oracle SOA Suite bzw. der Oracle Fusion Middleware hingewiesen. Anhand von bekannten Design Patterns wird gezeigt, wie diese mit dem Oracle Service Bus effizient umgesetzt werden können. Themen des Vortrages sind: Load-Balancing, Service-Throttling, Transaktionen, Adapter und Transformation über XQuery. 

Looking forward to meeting you there! 

My presentations at Oracle Open World 2012

October 7, 2012 Leave a comment

Oracle Open world 2012 is already past and I’m back in Europe. Here is just a quick wrap up of my involvements at OOW 2012. 

Oracle Fusion Middleware Live Application Development (UGF10464)

For the fourth time, the Live FMW Application Development show has been held. This time at Oracle Open World 2012,  during the ADF EMG community event on Sunday organised by Chris Muir. I joined the team for the first time, as due to my injury in last december, I was not able to be part at UKOUG 2011. For three hours, we demonstrated the audience (around 100 participants) how an application can be created across the tiers – UI (ADF), Process (BPM), Service Integration (SOA Suite) and the Database. Because we had only one beamer available, we first presented for each tier how the development works and then in the second phase, we presented how some changes/addons can be applied to the 1st iteration. I was part of the Service Integration team, together with Ronald.

The slides of the show are available on slideshare. Only a few, the real value was of course in the live demo!

A photo of me and Ronald during Lucas introduction: 

IMG 2648

It was fun to be part of the team, hope we can repeat it soon somewhere else! Thanks to Lucas, Chris and Duncan for organising the show!

There were also some discussion about further using the material, such as some videos on youtube, writing an article series….

Effective Fault handling in SOA Suite 11g (CON4832)

In this co-presentation with Ronald van Luttikhuizen we presented how the built-in functionality of Oracle SOA Suite and Oracle Service Bus can help to implement fault handling and fault prevention. We used an example scenario, which is complex enough to show some real live problems in a service-oriented solution with a mix of services, technologies and platforms. 

Use case with possible fault szenarios

The session was pretty well attended, and with an extended Q&A sessions at the end. We got quite a lot of interesting questions and I even had to leave earlier, as I had my next presentation just after this one.  

The slides are available on slideshare. We are currently writing a series of articles which will dive deeper into the subjects of error handling and error prevention and show how the SOA Suite 11g platform can help. 

Five Cool use cases for the Spring component of Oracle SOA Suite (CON6210)

My last presentation at Open World 2012 was about the Spring component of the Oracle SOA Suite.

The Spring component makes it possible to embed Java code as a Service Component Architecture (SCA) first-class citizen through the Spring component implementation type. Thereby the coarse-grained components of Oracle SOA Suite (such as BPEL, Mediator) can be extended by much-finer-grained Spring beans wrapped inside the Spring component. The goal of the session was to show how and why you want to use the Spring component and to hopefully inspire attendees to use it for their own projects.

There is of course a question what “cool” means. Cool and practice-related doesn’t always match and of course I wanted to also show some use cases which are actually useful at daily work. 

It took me quite some time to put the use cases together and to make them working. Especially because I have not previously worked with some libraries/frameworks i have used. At the end I presented the following use cases:

  • Advanced Configuration through JMX
  • Dynamic Routing in SOA Suite (i.e. publish/subscribe)
  • Integration of MongoDB NoSQL database
  • Integration of Twitter to send update messages
  • Integration of Twitter to receive mentioned messages

As you can see on slide 40, I had some other ideas, but just not enough time to do them as well. Maybe I will do it for a session on another conference. 

The slides are available on slideshare. I have also planed to write some further blog articles, one for each use case I have presented and to show step by step how the use case can be implemented.

 

It was a lot of work to prepare the session, but enjoyed it! 

The making of the Oracle Service Bus 11g Development Cookbook

February 13, 2012 10 comments

4446OS_Oracle Service Bus 11g Developement Cookbook_FrontcoverAlmost a year ago I started to think about writing a cookbook for the Oracle Service Bus (OSB). I first discussed it with Mischa Kölliker, a colleague at Trivadis and he was happy to join the team. Next I have used the Oracle SOA and E2.0 Partner Community Forum in March 2011 to talk to Edwin Biemond and Eric Elzinga, two well-known OSB experts and Oracle ACE colleagues. Gladly they were as enthusiastic as me about putting together a book with lot’s of recipes of how to use the Oracle Service Bus in practice. They also introduced me to Jan van Zoggel, who joined the team as well. So the setup of the team of authors was complete: The Netherland – Switzerland 3:2 (could have been the final result of a football game).

I have then started to talk to Packt Publishing, the publisher of the book, about my idea and the team I have put together. At the beginning of May 2011 the outline for the book was setup and at the end of May 2011 we have signed the contract with the publisher.

This was the start of 6 very busy months for me, writing and internally reviewing the 80+ recipes inside the 12 chapters of the book!

At the beginning our aim was to include recipes for all roles involved in the development of an OSB solution. But in August 2011, after writing the first few chapters, we could see that it would not be possible to fit all of that into the 500+ pages we agreed with Packt, which I think is a reasonable size for such a cookbook. That’s why we decided to change the focus to an OSB Development Cookbook, “only” including recipes targeting the development on the Oracle Service Bus. That’s why topics such as Monitoring, Management, Deployment are not covered in that book.

We finished the draft version of the book at the end of November.

From middle of December, I have worked on the feedback we got from the reviewers and finish everything by the end of the year. Thanks to Matthias, Jelle, Matt and Peter for your valuable input and comments, we really appreciate your help!

Unfortunately I broke my leg at the beginning of December playing ice hockey. But that was positive for the book, as I had a lot of time to really focus on the last part of the project and to make sure to reach the deadline we got from the publisher.

In January 2012 the final changes to the book have been made and then the production started with the result now being publicly available!

The book now contains a bit more than 80 practical recipes to develop solutions on the Oracle Service Bus 11g. The are organized into the following 12 chapters (digit behind the title is the number of recipes contained in the chapter):

  1. Creating a basic OSB service (13)
  2. Working efficiently with OSB artifacts in Eclipse OEPE (7)
  3. Messaging with JMS transport (9)
  4. Using EJB and JEJB transport (5)
  5. Using HTTP transport (5)
  6. Using File and Mail transports (5)
  7. Using JCA adapter to communicate to the database (6)
  8. Using SOA Direct transport to communicate with SOA Suite (4)
  9. Communication, Flow Control and Message Processing (10)
  10. Reliable communication with OSB (5)
  11. Handling Message-Level Security requirements (9)
  12. Handling Transport-Level Security requirements (4)

Throughout the book, we have consistently used diagrams, such as the one below, to clearly show the setup of a given recipe. The following image is showing a proxy service using the AQ JCA adapter to consume from a queue (EVENT_QUEUE) inside an Oracle database.

4446_07_28

 

I got the printed version of the book a few days ago and I really like the result!

You can find the first two reviews of the book here:

Thanks a lot to the team at Packt Publishing for all their hard work and support. It has been a long journey, but I’m very happy with what we have achieved!

You can get it as an EBook and/or printed book directly from Packt Publishing or Amazon. Hope you like it! Enjoy your reading and cooking!

Please give us feedback of what you like, what you might not like, what you miss …

Was writing the Oracle Service Bus Development Cookbook….

December 29, 2011 3 comments

The long silence on my blog in the past 10 months has a one reason: I was really busy writing the upcoming Oracle Service Bus Development Cookbook, published by Packt Publishing.

I’m co-writing this book together with the following friends from the European SOA community:

The book contains more than 80 practical recipes to develop service- and message-oriented solutions on the Oracle Service Bus 11g.

This cookbook is full of immediately usable recipes showing how to efficiently develop on the Oracle Service Bus. In addition to its cookbook style, which ensures the solutions are presented in a clear step-by-step manner, the explanations go into great detail, which makes it good learning material for everyone who has experience with the OSB and wants to improve. Most of the recipes are designed in such a way that each recipe is presented as a separate, standalone entity and reading of prior recipes is not required. The finished solution of each recipe is also made available electronically.

The 80+ recipes are organized into the following chapters (the digit behind the title showing the number of recipes in that chapter):

  1. Creating a basic OSB service (13)
  2. Working efficiently with OSB artifacts in Eclipse OEPE (7)
  3. Messaging with JMS transport (9)
  4. Using EJB and JEJB transport (5)
  5. Using HTTP transport (5)
  6. Using File and Mail transports (5)
  7. Using JCA adapter to communicate to the database (6)
  8. Using SOA Direct transport to communicate with SOA Suite (4)
  9. Communication, Flow Control and Message Processing (10)
  10. Reliable communication with OSB (5)
  11. Handling Message-Level Security requirements (9)
  12. Handling Transport-Level Security requirements (4)

Today I have finished the review phase of all the chapters, so that production of the book can start beginning of 2012. I expect that the print book will be available in February 2012.

But the book is already available as a RAW book. A RAW (Read as we Write) book is an eBook available for immediate download and containing all the material written for the book so far. You can get it from here.

Looking forward for the print book, we hope you will like it!

WebLogic Server, JDev, SOA, BPM, OSB and CEP 11.1.1.4 (PS3) available!

January 15, 2011 1 comment

Today 11R1 Patchset 3 of WebLogic Server, JDeveloper and ADF, Oracle SOA Suite, Oracle Service Bus (OSB) and Complex Event Processing (CEP) has been released!

The following links provide information about new features and bug fixes for the different products/components:

Here is my list of top new features:

  1. With Patchset 3 Oracle supports the IBM WebSphere platform!
    • Both Oracle ADF and Oracle SOA Suite can run on the IBM application server!
    • Will be interesting to see the impact of that!
  2. BPEL 2.0 is now supported in JDeveloper
    • The BPEL editor in JDeveloper now generates BPEL 2.0 code and introduces several new activities.
  3. BPEL got a new Assign activity dialog
    • New Assign Activity supports the same drag & drop paradigm used for the XSLT mapper
    • this greatly streamlines the task of assigning multiple variables
  4. Single JVM developer install
    • Oracle SOA Suite can now be targeted to the WebLogic admin server
    • there is no requirement to also have a managed server
    • Minimizes the memory footprint for development environments!
    • Possible before by manually intervening the setup of the domain, but now supported through a template.
  5. You can start downloading the software from the Oracle SOA Suite Download tab:

http://www.oracle.com/technetwork/middleware/soasuite/downloads/index.html

Expand “Prerequisites & Recommended Install Process” and you will see the links for the download of the single products.

Be prepared to download several GB of software, so you better be connected to a fast network!

Cannot access EM console after installing SOA Suite 11g PS2

January 4, 2011 2 comments

After a new install of Oracle SOA Suite 11g PS2, the server starts up without any errors in logs. However after start up, I was unable to access the enterprise manager console at http://localhost:7001/em due to 404. Interestingly, I was able to access the WebLogic administration console without any issue.

I have installed SOA Suite 11g before on my local machine and have never had any issue like this before. So what could be the problem?

The answer is pretty easy and can also be found here: http://forums.oracle.com/forums/thread.jspa?threadID=984020. I just thought about documenting on my blog as well….

For the EM to be present in the domain, you have to create your domain with Enterprise Manager template selected. I have forgotten that in my installation. To check if you have EM available:

  1. Login to your WLS Admin Console
  2. navigate to Deployments.
  3. Check for an application named ‘em’. If it is not there, then this is the issue!

If you don’t have EM available, then you can easily extend your domain by following these steps:

  1. Stop your servers in the domain
  2. Invoke the configuration wizard ($ORACLE_HOME/common/bin/config.cmd or config.sh)
  3. Choose Extend Domain option. Select your domain
  4. Select Enterprise Manager template

     image

  5. Complete the wizard
  6. Start your server

Now you will be able to access EM, using a URL like http://localhost:7001/em.

Oracle Service Bus 11g and DB Adapter – Part II: The video

August 14, 2010 5 comments

The following video demonstrates how the use case described in my previous blog article has been developed.

You can again download the original video if you like to follow it in better quality!

The completed solution can be downloaded from here.

Oracle Service Bus 11g and DB Adapter – Part II: Using an Inbound Database Adapter

August 14, 2010 13 comments

Update 15.8.2010: Just uploaded the video for this blog article.

In Part 1 of this blog article series I presented how to use the Database Adapter with Oracle SOA Suite 11g in an outbound scenario. I showed a way to keep the JDeveloper project required to define the Database Adapter wrapped inside the Eclipse OSB project. That will become handy when extending the use case as presented in Part 2 now.

Extended Use Case

In this article I will extend the use case from Part 1 by an Inbound Database Adapter, which should poll the database for changes.  The extended scenario is shown in the image below using the notation from the Integration Blueprint book. The elements shown in blue are the new ones added to the use case from part 1.

 000_use-case

The Database Adapter will be configured to listen on the PERSON_CHG_T helper table for new records. This table is filled by a trigger on the PERSON_T table and will hold one row for every change to the PERSON_T table.
For each new row in PERSON_CHG_T I want an new OSB service to be called. This new service will use the data from the inbound request and enrich it by re-using the PersonService proxy service we have built in Part 1.

Prerequisites

The prerequisites for the 2nd part are obviously the same as in Part 1. The following software needs to be installed and available:

  • JDeveloper 11g with SOA extension
  • Eclipse 3.5.2 with Oracle Enterprise Pack for Eclipse (OEPE) 11.1.1.5.0
  • Oracle Service Bus 11.1.1.3
  • Oracle Database (XE is good enough)

Additionally you need the completed OSB project from Part 1. The solution can be downloaded from here.

Project Setup

The project setup has been done in Part 1. We will reuse the same Eclipse OSB project with the nested JDeveloper SOA Project and just continue where we have left in Part 1.

Create the Inbound Database Adapter

First let’s create a new Database Adapter.

For that we don’t need a new JDeveloper project, we can reuse the same project we created in Part 1, wrapped inside the adapter folder. I think it’s a good practice to keep all the adapters necessary for one OSB project in only one JDeveloper project.

Let’s go to JDeveloper an open the composite.xml to show the SCA composite view.

  1. Drag a new Database Adapter into the SCA composite. Because it’s an Inbound Adapter, we will use the left hand swimmlane named “Exposed Services” for that. This is not strictly necessary when using the OSB but I think it’s a good mnemonic trick to do so (organizing inbound adapters on the left and outbound adapters on the right, as discussed in part 1).
    010_drag-db-adapter
  2. Give the adapter service a good and meaningful name:
    015_adapter-wizard-2of4
  3. For the connection we reuse the settings already their from part 1, so we can move forward to the the Operation Type selection. This time we want to use the Database Adapter to “Poll for New or Changed Records in a Table”.
    020_adapter-wizard-4of5
  4. We want to poll the PERSON_CHG_T table, so let’s select it. 025_adapter-wizard-5of12
  5. We can see that the table only holds an ID and a timestamp. So that’s all we get in the inbound message, whenever a row is inserted into PERSON_CHG_T. This is the reason why we later want to enrich the message with more information in a second step.
     030_adapter-wizard-7of12
  6. Next we need to define the strategy to use for signaling that a row has been read and successfully processed by the adapter. Because PERSON_CHG_T is a helper table no one else is using, it’s fine to just delete the row.
     035_adapter-wizard-8of12
  7. Next the Polling Options can be specified. Among others you can specify the polling frequency, which is set to 5 seconds by default, meaning that the Adapter will do the SQL operation shown on the right every 5 seconds. For our sample that’s fine, but in real world you should of course set it to a value matching your requirements.
    045_adapter-wizard-9of12
  8. Last but not least the Database Adapter allows for setting a selection criteria. We don’t use it this time, as we want to read all the rows which are added to the PERSON_CHG_T. 050_adapter-wizard-10of12

This finishes the creation of the Inbound Database Adapter and our work in JDeveloper. We can see the Adapter on the right hand swimmlane.

 055_composite-with-new-adapter

The adapter is now prepared to poll the PERSON_CHG_T table for new records every 5 seconds. Each row being read will be send to the service linked to the adapter. So let’s switch to the OSB project in Eclipse and create a new service to handle these messages.

Creating the OSB Service and linking it to the Inbound Database Adapter

When working with Inbound Adapters, an OSB proxy service needs to be used. The adapter will invoke the proxy service whenever a new message “is created” by the adapter.

  1. In order to be able to create/generate the proxy service, we need the new adapter artifacts in Eclipse. Just do a refresh on the adapter folder and they will show up. 060_osb-project-refresh
  2. No we can choose Generate Service on the JCA configuration file (PollingPersonService_db.jca) to create the necessary OSB service.
    065_generate-proxy-service-for-jca
  3. Based on the JCA settings, OSB knows that it is an Inbound Adapter and will generate a JCA Proxy Service automatically. All we need to specify is the right folder: 070_name-proxy-service
  4. The proxy settings, created for you, show that a WSDL is used which has been generated as well:
    075_proxy-general-tab
  5. The transport setting show the usage of the JCA Transport:
    080_proxy-transport-tab
  6. All we need to do is specify what should happen with the message, by defining a meaningful Message Flow. For a start add a Pipeline Pair Node with a nested Stage Node and a Log action to show the message in the OSB log on the console. Make sure to specify a Severity level in the Log action which is shown in the log. If you are unsure what to choose, then “Error” will be fine for that sample and shown by default.
    085_adding-log-to-proxy
  7. Now let’s deploy the OSB project and test if the Inbound Adapter works. For that let’s open SQL PLus, connect to SOA_SAMPLE and do an UPDATE on the PERSON_T table. By that the trigger on that table will fire and signal the change by adding a row to the PERSON_CHG_T table. Make sure to commit the change! 090_testing-with-sql-plus-chg
  8. After a maximum of 5 seconds (remember the polling frequency specified in the Database Adapter wizard) the log should show up on the OSB console window. 095_testing-with-sql-plus-chg-2

 

We can see that the polling Database Adapter worked. A message has been sent to the OSB proxy service holding the ID of the changed PERSON_T row and a timestamp!

In a real world scenario you would now want to do something more meaningful with this information than just logging it to the console, i.e. you want to inform another system about the change. In order to do that, you might need to send more information than just the ID of the person. The system to inform maybe require the person information, similar to the information returned by the PersonService we developed in Part 1. So let’s reuse that proxy service to enrich our message, implementing the Content Enricher design pattern.

Adding the Content Enricher

To enrich our message, we want to call the PersonService proxy service from the Message Flow of the PollingPersonServiceDB proxy service.

  1. Let’s add a Service Callout action and rename the stage to EnrichmentStage. It’s always a good idea to meaningfully name the different nodes used to structure the message flow. This helps you to better understand and document your message flow at development time but also helps in case of errors at runtime, to easier identify the place where the error occurred.
     100_adding-service-callout
  2. Configure the Service Callout action to call the PersonService proxy and to invoke the findPerson operation. For the request and response message we define two variables and specify to use a Soap Body. The Service Callout action allows to use separate variables for the request and response message. By that the content of the $body variable from the request to the proxy service stays untouched during the service callout. This is important if you want to merge the response from the service callout with the original request. This is not necessary in our simple example, all we will use is the response directly from the service callout. But usually you will need to merge the two when implementing the Content Enricher pattern in OSB.
     105_configure-service-callout
  3. Next we implement the Assign action to set the requestBody variable. 
     112_add-assign-for-request-2
  4. Because we specified “Configure Soap Body” in the Service Callout properties, we need to setup the <findPersonRequest> message wrapped in a <soap-env:Body> element. The value of the <personId> element can be retrieved from the $body variable by dragging it into the Expression view and defining the XPath expression shown in the image below
    115_configure-assign-for-request

     
    117_configure-assign-for-request-2

  5. Last but not least you need to add v1 as a custom namespace:
    120_add-namespace
  6. In the Response Action of the Service Callout we will also use an Assign action, this time to copy the value of the $responseBody variable to the $body variable.
     130_configure-assign-for-response
  7. Let’s change the Annotation of the Log action from before to state the fact that we now log the content of the $body variable after the service callout has been made.
    135_change-log-action
  8. Let’s test it in the same way as before. Just re-execute the UPDATE on PERSON_T and this time a longer log message with a complete Person instance should be shown.
    140_testing-with-sql-plus-2

 

The Content Enrichment worked an the complete and up-to-date person information could now be sent to any system interested.

Conclusion

This finishes the 2nd part of this blog article series.

We have added an Inbound Adapter to the use case to get informed whenever the information changes in the PERSON_T table. By re-using the PersonService from a Service Callout in the Message Flow we were able to enrich the incoming message to a more meaningful “change message”, which could now be used to inform potential external systems of changes happening on the PERSON_T table.

We have used the OSB to implement parts of a typical integration scenario. Similar to one of the scenarios documented in our Integration Blueprint book!

The implementation of a dynamic publish-subscribe mechanism on the OSB, in order to inform the systems interested could be a topic of a next blog article.

The source code for the solution can be downloaded from here. I will again provide a video showing how this extension of the use case has been developed.

Oracle Service Bus 11g and DB Adapter: a more integrated approach! – the video tutorial

August 8, 2010 7 comments

The following video demonstrates how the use case described in my previous blog article has been developed.

Sorry for the quality of the video. The original is of much better quality but VideoPress seem to have “optimized” it. You can download the original video if you like to follow it in better quality!

Please let me know if you find this kind of video tutorial helpful.

Follow

Get every new post delivered to your Inbox.

Join 33 other followers