Archive for July, 2009
Oracle Fusion 11g links overview
A short overview of the resources i mostly use when developing fusion11g applications.
Since i’m always googling and googling to find the correct document, just a short list as reminder for myself.
Oracle JDeveloper 11g Tutorials
Oracle Fusion Middleware Documentation Library
Oracle Fusion Middleware Administrator’s Guide 11g Release 1 (11.1.1)
Oracle Fusion Middleware Installation Guide for Oracle SOA Suite 11g Release 1 (11.1.1)
Oracle Fusion Middleware Administrator’s Guide for Oracle SOA Suite 11g Release 1 (11.1.1)
Oracle Fusion Middleware Security Guide Release 1 (11.1.1)
Oracle Fusion Middleware Tutorial for Running and Building an Application with Oracle SOA Suite 11g Release 1 (11.1.1)
Oracle Fusion Middleware Developer’s Guide for Oracle SOA Suite 11g Release 1 (11.1.1)
Oracle Fusion Middleware Fusion Developer’s Guide for Oracle Application Development Framework 11g Release 1 (11.1.1)
Oracle Fusion Middleware 11gR1 Software Downloads
Oracle Fusion Order Demo Application
Deploying a JDeveloper SOA Application to Oracle WebLogic Server 11g
ORACLE SOA SUITE
Installation Guide
Quick Installation Guide
Upgrade Guide for Oracle SOA Suite, Oracle WebCenter, and Oracle ADF
Getting Started
Tutorial for Running and Building an Application
Developer’s Guide
Administrator’s Guide
ORACLE ADAPTERS
User’s Guide for Technology Adapters
User’s Guide for Oracle Applications
Oracle By Example (OBE)
Virtual Book : SOA Tasks
Oracle Sample Code
Check the blog of Marc for the overview of all the samplecode listed per product
FORUMS
SOA Suite
BPEL
Application Server (wls oc4j)
JDeveloper and ADF
I’ll update the list when i come by other usefull links
4 comments July 25, 2009
Oracle Service Bus, BEA-423405, java.lang.NullPointerException
When trying to browse the java libs from my osb project i get the next stacktrace in the console.
<BEA-423405> <An exception [null] was thrown while rendering the content at [/jsp/resources/archive/ArchiveBrowser.jsp].
java.lang.NullPointerException
at jsp_servlet._jsp._resources._archive.__archivebrowserdetails._jspService(__archivebrowserdetails.java:101)
at weblogic.servlet.jsp.JspBase.service(JspBase.java:35)
at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)
at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:292)
at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:27)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:43)
at org.apache.beehive.netui.pageflow.PageFlowPageFilter.continueChainNoWrapper(PageFlowPageFilter.java:456)
at org.apache.beehive.netui.pageflow.PageFlowPageFilter.runPage(PageFlowPageFilter.java:432)
at org.apache.beehive.netui.pageflow.PageFlowPageFilter.doFilter(PageFlowPageFilter.java:284)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:43)
at weblogic.servlet.internal.RequestDispatcherImpl.invokeServlet(RequestDispatcherImpl.java:503)
at weblogic.servlet.internal.RequestDispatcherImpl.include(RequestDispatcherImpl.java:432)
at weblogic.servlet.jsp.PageContextImpl.include(PageContextImpl.java:164)
at jsp_servlet._jsp._resources._archive.__archivebrowser._jspService(__archivebrowser.java:978)
at weblogic.servlet.jsp.JspBase.service(JspBase.java:35)
at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)
at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:292)
at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:27)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:43)
at org.apache.beehive.netui.pageflow.PageFlowPageFilter.continueChainNoWrapper(PageFlowPageFilter.java:456)
at org.apache.beehive.netui.pageflow.PageFlowPageFilter.runPage(PageFlowPageFilter.java:432)
at org.apache.beehive.netui.pageflow.PageFlowPageFilter.doFilter(PageFlowPageFilter.java:284)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:43)
at weblogic.servlet.internal.RequestDispatcherImpl.invokeServlet(RequestDispatcherImpl.java:503)
at weblogic.servlet.internal.RequestDispatcherImpl.include(RequestDispatcherImpl.java:432)
at org.apache.beehive.netui.pageflow.scoping.internal.ScopedRequestDispatcher.include(ScopedRequestDispatcher.java:119)
at com.bea.netuix.servlets.controls.content.JspContent.beginRender(JspContent.java:552)
at com.bea.netuix.servlets.controls.content.NetuiContent.beginRender(NetuiContent.java:365)
at com.bea.netuix.nf.ControlLifecycle$7.visit(ControlLifecycle.java:485)
at com.bea.netuix.nf.ControlTreeWalker.walkRecursiveRender(ControlTreeWalker.java:518)
at com.bea.netuix.nf.ControlTreeWalker.walkRecursiveRender(ControlTreeWalker.java:529)
at com.bea.netuix.nf.ControlTreeWalker.walkRecursiveRender(ControlTreeWalker.java:529)
at com.bea.netuix.nf.ControlTreeWalker.walkRecursiveRender(ControlTreeWalker.java:529)
at com.bea.netuix.nf.ControlTreeWalker.walk(ControlTreeWalker.java:220)
at com.bea.netuix.nf.Lifecycle.processLifecycles(Lifecycle.java:395)
at com.bea.netuix.nf.Lifecycle.processLifecycles(Lifecycle.java:361)
at com.bea.netuix.nf.Lifecycle.processLifecycles(Lifecycle.java:352)
at com.bea.netuix.nf.Lifecycle.run(Lifecycle.java:326)
at com.bea.netuix.nf.UIControl.render(UIControl.java:583)
at com.bea.netuix.servlets.controls.PresentationContext.render(PresentationContext.java:486)
at com.bea.netuix.servlets.util.RenderToolkit.renderChild(RenderToolkit.java:146)
at com.bea.netuix.servlets.jsp.taglib.RenderChild.doStartTag(RenderChild.java:62)
at jsp_servlet._framework._skeletons._wliconsole.__flowlayout._jspService(__flowlayout.java:273)
at weblogic.servlet.jsp.JspBase.service(JspBase.java:35)
at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)
at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:292)
at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:176)
at weblogic.servlet.internal.RequestDispatcherImpl.invokeServlet(RequestDispatcherImpl.java:505)
at weblogic.servlet.internal.RequestDispatcherImpl.include(RequestDispatcherImpl.java:432)
at com.bea.netuix.servlets.controls.application.laf.JspTools.renderJsp(JspTools.java:132)
at com.bea.netuix.servlets.controls.application.laf.JspControlRenderer.beginRender(JspControlRenderer.java:72)
at com.bea.netuix.servlets.controls.application.laf.PresentationControlRenderer.beginRender(PresentationControlRenderer.java:65)
at com.bea.netuix.nf.ControlLifecycle$7.visit(ControlLifecycle.java:481)
at com.bea.netuix.nf.ControlTreeWalker.walkRecursiveRender(ControlTreeWalker.java:518)
at com.bea.netuix.nf.ControlTreeWalker.walkRecursiveRender(ControlTreeWalker.java:529)
at com.bea.netuix.nf.ControlTreeWalker.walk(ControlTreeWalker.java:220)
...
Make sure the rights in unix on the osb domain directory are correctly set on group stage.
In my case only the user had the correct rights.
6 comments July 24, 2009
Oracle Service Bus, testing proxy services with Direct Calls
Today i stumbled on one of the features which is available on the testconsole page of a proxyservice.
I was testing some flows in the Oracle Service Bus which made use of a XAConnectionFactory.
The process made use of a proxyservice which gets a message out of a jmsqueue, routes it to an other businessservice, which eventually would put it back on some other queue.
When the process was getting triggered by some other eai component which puts a message in the queue the process would eventually fail.
But when i would try to replicate the problem and test the process from the beginning by using the testconsole on the proxyservice, the process would just complete without errors.
After a close look on the testconsole we see some extra options in the test configuration

Direct Call and Include Tracing.
Direct Call
When we dive into the guides we will find the next information.
“Testing proxy services with the direct call option enabled bypasses some important security steps (authentication/authorization), including access control. Oracle recommends that you not use the test service in production systems.
A direct call is used to test a proxy service that is collocated in the Oracle Service Bus domain. Using the direct call option, messages are sent directly to the proxy service, bypassing the transport layer. When you employ the direct call option, tracing is turned on by default, allowing you to diagnose and troubleshoot a message flow in the test console. By default, testing of proxy services is done using the direct call option.
When you use the direct call option to test a proxy service, the configuration data you input to the test console must be that which is expected by the proxy service from the client that invokes it. In other words, the test console plays the role of the client invoking the proxy service. Also, when you do direct call testing, you bypass the monitoring framework for the message. “
This illustrates a direct call. Note that the message bypasses the transport layer it is delivered directly to the proxy service (P1).
In my case i was testing a proxyservice which made use of jms transport and xaconnectionfactories.
The direct call would skip the transport layer and would not force the xa transaction.
This XA transaction was eventually the problem for my situation. One of the contributers on the xa transaction (custom oracle aq adapter) was for some reason messing up the transaction.
Since i don’t want to change anything on this adapter, i just skip the enforcing of the xa on this message flow.
So be sure when testing the flow and you really want to replicate the original situation (so use the original designed transport mechanismes), to put off the ‘Direct Call’ option.
Resources
http://download.oracle.com/docs/cd/E13159_01/osb/docs10gr3/transportsdk/developing.html (Co-Located Calls)
http://download.oracle.com/docs/cd/E13159_01/osb/docs10gr3/userguide/testing.html (Testing Proxy Services)
Thread: OSB 10gR3: Handling response received from a proxy service
Add comment July 20, 2009
Oracle Service Bus, MFL and empty element-tree in xquery
Sometimes it will happen after creating the mfl and trying to map the elements in xquery to the target, the element-tree of the mfl won’t be visible and only shows the head-element.
Open the mfl file in a text-editor and change the version-attribute of the MessageFormat-tag to ‘2.02′
<MessageFormat name='MyMFLFormat' version='2.01'>
to
<MessageFormat name='MyMFLFormat' version='2.02'>
Add comment July 18, 2009
Oracle Service Bus, xquery and optional parameters
We use custom soap headers to implement end-to-end tracking over all eai components.
Those headers will get updated during transport over all components and will also get logged to the db, together with some other metadata.
That info will be used to track and trace messages and problems.
A soap-envelope will look like this :
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Header>
<slg:CustomHeader xmlns:slg="http://www.it.eye.nl/services/CustomHeader">
<slg:CorrelationId>3253252er5235432</slg:CorrelationId>
<slg:MessageType>iDOC</slg:MessageType>
<slg:TimeStamp>2001-12-17T09:30:47Z</slg:TimeStamp>
<slg:Status>OK</slg:Status>
<slg:Direction/>
</slg:CustomHeader>
</soap:Header>
<soap:Body>
<!-- over here the body payload -->
</soap:Body>
</soap:Envelope>
Some fields in the payload can be nullable.
When we create an xquery to transform this header to our EventObject-variable we can either create the xquery with one parameter which holds the whole ‘CustomHeader’ payload, or just map the parameters we need.
- declare function xf:Header2EventObject($customHeader1 as element(ns1:CustomHeader))
- declare function xf:Header2EventObject($corId as xs:string, $MessageType as xs:string, $Status as xs:string)
- When we use the payload described in the example, the assign will work. Only problem is we need to assign the whole CustomHeader-element as parameter.
When we need to data out of the body-payload which could get huge, we would need to assign this whole payload just to get a few values out of it. - We only assign the values we need, but when the xquery results in an empty node the assign will fail.
<con:fault xmlns:con="http://www.bea.com/wli/sb/context"> <con:errorCode>BEA-382510</con:errorCode> <con:reason> OSB Assign action failed updating variable "eventObject": com.bea.wli.common.xquery.XQueryException: Error parsing XML: {err}FORG0005: expected exactly one item, got 0 items </con:reason> <con:location> <con:node>PipelinePairNode1</con:node> <con:pipeline>PipelinePairNode1_request</con:pipeline> <con:stage>stage1</con:stage> <con:path>request-pipeline</con:path> </con:location> </con:fault>
And the solution i was looking for (thanks to a colleague)
I need to be able to setup the parameters of the xquery as optional, like this i don’t need to evaluate every parameter in the xquery and can just pass the result of the xquery which is used for every parameter of the xquery.
http://www.w3.org/TR/xquery/
“attribute()? refers to an optional attribute node”
The xquery function will then look like
declare function xf:test1($corId as xs:string?,
$MessageType as xs:string?,
$Status as xs:string)
as element(ns0:EventObject) {
<ns0:EventObject>
<ns0:Logging>
<ns0:CorId>{ $corId }</ns0:CorId>
<ns0:MesType>{ $MessageType }</ns0:MesType>
<ns0:Status>{ $Status }</ns0:Status>
</ns0:Logging>
</ns0:EventObject>
};
See the definition of the $corId and $MessageType, now they can be null!
2 comments July 17, 2009
Oracle Fusion 11g, my first impressions
Last i finished the last day of the 3day Oracle Fusion 11g workshop.
And i must say…i’m pretty impressed by the new stack Oracle presented.
For development during the workshop i used my own vmware of fusion 11g on Centos.
And it’s a real killer when all components of the suite are up and running, my laptop had a tuff time.
During the workshop we used the famous ‘Order processing’ tutorial to get in touch with the components of the fusion 11g.
A short overview of what we have been discussing and developing
- SCA Components wiring bpel and human tasks together and exposing them as soap services
- Using the mediator for transformation between the SCA components
- Orchestrating a few bpels to execute human tasks and update payload
- Adding Business Rules
- Handling Business Events using EDN
- Creating BAM dashboards and using BAM adapter/sensors to push data
- Integration with Oracle B2B
- Virtualize services on Oracle Service Bus (OSB)
- Web services policy enforcement
- Managing the lifecycle of a SOA composite application
- Unit Testing
- New Fault Handling framework (mediator and bpel)
- Using Service Data Objects (SDO)
My first thoughts
SCA modelings looks good, composite application development in JDeveloper works like a charm.
Business rules development got new gui, way better then the old one.
BAM dashboards look really good, customers will love those.
EDN framework, event based architectures, nice!
ADF BPEL Worklist, finally an easy way to design your own worklist gui.
Mediator is the old OESB, now it’s used for the wire in the composite applications and subscription on events
New console looks good, all integrated and good support for End 2 End tracking
Fault Policy framework from 10.1.3.4 now works for both BPEL and Mediator
A few impressions
To find out about all the other new functionality, install it and go play with it!
3 comments July 15, 2009
Oracle Fusion Middleware 11g (ofm11g) on Centos 5
The new Oracle Fusion Middleware 11g just got released a few days back, so time to play with it!
Oracle did a great job on the installation guide and quickstart again, so installation wasn’t a real hard job.
A short overview of the steps we need to follow
- Install Oracle Database (i used OracleXE)
- Create Schemas for Oracle SOA Suite and Oracle BAM by using Repository Creation Utility (RCU)
- Install Oracle WebLogic Server and Create the Middleware Home
- Installing Oracle SOA Suite
- Configuring Oracle SOA Suite
- Post-Installation Tasks
- Installing Oracle SOA Suite Design-Time Components
On the download page i downloaded the next components
- Oracle WebLogic Server
- SOA Suite
- Repository Creation Utility
This part will show us the included components but also the list of required additional software and optional software
Quiet some software to install before we can get started.
I assume you already have the db running so lets get on to the next step.
Create Schemas for Oracle SOA Suite and Oracle BAM by using Repository Creation Utility (RCU)
Unzip ofm_rcu_linux_11.1.1.1.0_disk1_1of1.zip and run ./rcu
I needed to change the next parameters in the db
- alter system set PROCESSES=500 scope=SPFILE;
- alter system set open_cursors=500 scope=SPFILE;
And the next parameters in the linux kernel (/etc/security/limits.conf)
# tbv oracle soa suite 11g oracle hard nofile 4096 oracle soft nofile 4096
And a list of missing/wrong version of system packages
Root Checking operating system certification Expected result: One of enterprise-4,enterprise-5,redhat-4,redhat-5,SuSE-10 Actual Result: redhat-5 Check complete. The overall result of this check is: Passed Checking recommended operating system packages Checking for gcc-4.1.0-28.4; Not found. Failed <<<< Checking for gcc-c++-4.1.0-28.4; Not found. Failed <<<< Checking for setarch-1.6-1; found setarch-2.0-1.1-i386. Passed Checking for sysstat-5.0.5-1; Not found. Failed <<<< Checking for libstdc++-4.1.0-28.4; found libstdc++-4.1.2-44.el5-i386. Passed Checking for libstdc++-devel-4.1.0-28.4; Not found. Failed <<<< Checking for compat-libstdc++-296-2.96-132.7.2; Not found. Failed <<<< Checking for compat-db-4.1.25-9; Not found. Failed <<<< Checking for control-center-2.8.0-12; found control-center-1:2.16.0-16.el5-i386. Passed Checking for glibc-common-2.3.4-2.9; found glibc-common-2.5-34-i386. Passed Checking for binutils-2.16.91.0.5-23.4; found binutils-2.17.50.0.6-9.el5-i386. Passed Checking for make-3.80-202.2; found make-1:3.81-3.el5-i386. Passed Check complete. The overall result of this check is: Failed <<<< Checking kernel parameters Checking for VERSION=2.6.18; found VERSION=2.6.18-128.1.16.el5. Passed Checking for hardnofiles=4096; hardnofiles=1024. Failed <<<< Checking for softnofiles=4096; softnofiles=1024. Failed <<<< Check complete. The overall result of this check is: Failed <<<< Checking Recommended glibc version Expected result: ATLEAST=2.5-12 Actual Result: 2.5-34 Check complete. The overall result of this check is: Passed Checking physical memory Expected result: 1024MB Actual Result: 1196MB Check complete. The overall result of this check is: Passed
Install all the correct packages (yum available/yum install), and ignore the other warnings during install.


Setup your own db instance


I selected just all the components







Install Oracle WebLogic Server and Create the Middleware Home
chmod the bin file and run ./oepe11_wls1031_linux32.bin
I had some ‘wrong class version exceptions’, so installed java6 update14.
Installing Oracle SOA Suite
Unzip ofm_soa_generic_11.1.1.1.0_disk1_1of1.zip and run ./runInstaller in Disk1
Configuring Oracle SOA Suite
Now we need to configure the soa suite installation with the Oracle Fusion Middleware Configuration Wizard.
Go to
<ORACLE_HOME>/common/bin
and run ./config.sh



Since i used 1 db for all the components, select al the components and config the same db settings














Most of the steps are just next, next and a few more next.
Post-Installation Tasks
Start both the AdminServer and the ManagedServers.
AdminServer
<SOASUITE_HOME>/user_projects/domains/domain_name/startWebLogic.sh
ManagedServers
<SOASUITE_HOME>/user_projects/domains/domain_name/bin/startManagedWebLogic.sh soa_server1 (default name) <SOASUITE_HOME>/user_projects/domains/domain_name/bin/startManagedWebLogic.sh bam_server1 (default name)
On startup it will prompt you for the username/password we used on during installation
Installing Oracle SOA Suite Design-Time Components
For development we will download Oracle JDeveloper 11g R1 (Build 5407).
To be able to create soa projects in it we need to update it with the Oracle SOA Suite Extension.
Go to Help > Check for Updates. Select ‘Oracle Fusion Middleware Products’ in the ‘Search Update Centers’, next and select ‘Oracle SOA Suite Composite Editor 11.1.1.0′.
New consoles (look-and-feel)
weblogic server 10.3.1 console

enterprise manager

Installation is done!
Just a few urls to check if everything went ok
administration server
http://host:admin_server_port (default installation : http://localhost:7001)
wls console
http://host:admin_server_port/console (default installation : http://localhost:7001/console)
enterprise manager
http://host:admin_server_port/em (default installation : http://localhost:7001/em)
Links
Oracle Fusion Middleware Documentation Library
Oracle Fusion Middleware Products Update Center
Oracle11g on CentOS-5, package requirements
Oracle® Fusion Middleware Quick Installation Guide for Oracle SOA Suite11g Release 1 (11.1.1)
Ready to create some nice new fusion apps!
8 comments July 4, 2009
Oracle Fusion Middleware 11g got released!
Finally the new Oracle Fusion Middleware 11g got released!
The webcast can be seen over here.
Some of the available resources like tutorials on Oracle WebLogic Suite 11g, Oracle SOA Suite 11g, Oracle Identity Management 11g and Oracle WebCenter Suite 11g
And the download!
How do the Oracle ACES think about the suite ?
The new Oracle JDeveloper 11g R1 got released too, code name Bulldog.
The download and a lot of new features!
So, a lot of new stuff to play with!
1 comment July 1, 2009


















