July 10, 2008

Using AIA with an 11g Database – beware uppercase password

Well… actually this is a post that can apply to any use of Oracle Application Server (10.1.3.x) in conjunction with an Oracle 11g database.  Starting with the 11g database, user passwords are case sensitive.  Thus you can use uppercase, lowercase, or any combination thereof in your password.  Unfortunately this can cause a problem when using OAS JDBC data sources and connection pools.  For reasons unknown to me, OAS will always forward a lowercase representation of your password to the database for authentication.  So unless you set the password for a user to all lowercase you will always get an authentication error.  So make sure the passwords that get used for database authentication are lowercase!

I mentioned AIA in this post since installation of the AIADemo (in foundation pack 2.1) by default will assign an uppercase password to the SOADEMO user.  That user is associated with a variety of objects and used for authentication in the “soademoconnectionpool” JDBC resource that gets created when the demo is installed.  By default the password is uppercase “ORACLE” which you should change via the  AIA_HOME/samples/AIADemo/scripts/AIADemoInstall.properties file.  Locate the setting for “soa.demo.password” parameter and alter the associated value to be lowercase.  This will allow the AIADemo to install without throwing a database error.  Unfortunately you will run into other AIADemo installation problems unless you are installing against an AIA foundation pack instance that was upgraded.  (and even then there are post install issues)  However, that is an in-depth subject that is likely to appear in a future blog entry.  I will say that the further issues are not related to using an 11g database.

March 5, 2008

Oracle DB 11g on same box as 10g with Siebel

If you are familiar with the Siebel System Requirements and
Supported Platforms document you know that Oracle Database 11g is not
supported.  That is fine, since 10g can
be used instead.  On my laptop I have Siebel
8 installed with Oracle 10g for the database.

Recently I have been fooling around with Oracle APEX to
create some simple user interfaces to front some custom schemas.  It makes it real easy to build some simple
applications to maintain data and then get fancy printouts using BI
Publisher.  Part of my learning has led
me to understand that Oracle DB 11g has a built in HTTP server that I can use
to access APEX.  This is great since it
means one less software install (Oracle HTTP Server) to get APEX working.  I also discovered that APEX can work with the
Express Edition which is free to develop, deploy, and distribute.  Perfect! 
I want to distribute some of my utility applications for others to use.

Now the problem I thought might come up was having two
different versions of the Oracle DB running on the same laptop.  As documented there is no problem provided
you take a little care with how your environment is setup.  In my case, the first decision was to decide
which database version I wanted to have running as my default. Making that
decision allows me to set up my environment variables correctly.  For me, 10g is the  default to allow Siebel 8.0.x, SOA Suite and
AIA Foundation Pack 2.1 to be installed and run without any special steps.  The critical environment variables I have set
are ORACLE_HOME, ORACLE_SID, TNS_ADMIN, and adding %ORACLE_HOME%bin to the
start of my path.  I want to call special
attention to TNS_ADMIN since without it the DataDirect ODBC drivers for Siebel
did not work!  You end up getting a TNS
names error despite the ODBC utilities working. 
However, once those variables are setup, I can run the 10g database directly
from the Windows services dialog.  This also
allows my existing Siebel 8, SOA Suite, AIA, and other applications to run without
issue.

When I want to work with 11g I need to take a few special
steps.  First, I make sure all 10g
database services are shutdown.  This
includes and instances, listeners, db consoles, etc... Once that is done I am ready to start my
required 11g services.  To start I open a
command window and change to my 11g base directory.  There I have a batch file that sets up my
environment variables just for 11g as follows:


set ORACLE_BASE=D:oracle
set
ORACLE_HOME=D:oracleproduct11.1.0db_1
set TNS_ADMIN=%ORACLE_HOME%networkadmin
set
PATH=%ORACLE_HOME%bin;%PATH%
set
ORACLE_SID=RSN11G

Once this is done I am ready to start my required
services.  However, I can't do this from
the windows services dialog since I need to use the local environment variables
I just set.  Fortunately all I need to do
is issue the command: net start <service name>

To start my database instance I type:
  • net start OracleServiceRSN11G
To start my listener I type:
  • net start OracleOraDb11g_home1TNSListener11GLISTENER

To start my DB console I type:

  • net start OracleDBConsoleRSN11G

So far this has worked fine for me allowing me to switch
between database environments as required. 
I have to admit that so far I have no need to run each database
environment concurrently.  It should work
but I can't say for sure.  Besides, after
starting up Siebel 8, SOA Suite, BI Publisher, and Siebel Tools or JDeveloper I
am out of RAM!

March 4, 2008

Compelling argument for SOAP over JMS

I have to say that when it comes to integration using SOAP my default position is that using JMS is overkill.  I take that default position for a number of reasons:

  • The Siebel limitations associated with generating/reading WSDL when a JMS binding is used.
  • I don't like breaking open standard rules like using SOAP with a binding not in the standard.  (Yes, I do realize there is extensive non-standard support for using SOAP with a JMS binding. )
  • Usually there is a misconception that JMS as a transport allows more web service volume than HTTP.  (It is the same Siebel internal dispatching method!)
  • other items I wish I could think of at time of writing...

Recently I started working with a customer (using Siebel 8) who felt that JMS was just the answer to their need for guaranteed message delivery.  (That premise can be challenged but is a whole other topic.)  With that belief, there came the need to find a way to implement the strategy within Siebel.  Since we would use SOAP for messages, the simplest choice was just to use SOAP over JMS which Siebel supports.  Naturally, there was a challenge to this implementation in the form of the JMS adapter for both inbound and outbound messages.  This makes sense since you can then bypass the inbound web service dispatcher giving you finer grain control.  However, this brought up the following issues:

  • When using the JMS adapter directly, you lose the ability to publish or consume a WSDL defining your web service operations along with supporting message and fault structures.
  • Inbound SOAP formatted messages need to be parsed.  When you pick up a message from the JMS queue for processing, you need to parse the SOAP message.  While this is possible in eScript, (done it) it is not trivial or likely to be robust. 
  • Like it or not, the inbound web service dispatcher validates message format for inbound web services.  This eliminates the need to write custom code to validate the format of inbound messages.
  • Outbound SOAP messages need to be constructed.  Once you convert an integration object into XML you still need to wrap it within a properly formatted SOAP message.  You can do this a variety of ways (XSLT, eScript) but it is work that needs to be done.
  • Since we are using SOAP over JMS we can't use the popular document literal format.  Why?  Simply because there is no SOAPAction HTTP header field that can be set.  Thus you must use the less popular RPC literal format.  This has a significant impact on the WSDL you must generate by hand. (see earlier point)

As you can determine from the list above, there are some real challenges associated with SOAP over JMS if you use the JMS adapter directly.  However, the more daunting issues "go away" when you take advantage of the Siebel SOAP over JMS feature

  • Inbound SOAP messages are parsed and format validated without custom code
  • Outbound SOAP messages are properly formatted within a SOAP envelope.
  • WSDL can be generated and consumed if you take the manual step to convert between HTTP and JMS transport via the web service administration views.

We still have to deal with the SOAP RPC literal issue but that seems trivial to the other problems addressed.  Thus to be objective, even though I still don't like or recommend using SOAP over JMS, I admit that it can provide some advantages. 

However, I retain the position that the entire need to use JMS directly with Siebel can be eliminated by placing Fusion Middleware (FMW) in front of Siebel.  Doing so allows the FMW part of the solution to take responsibility to interact with JMS as required.  Required interactions between FMW and Siebel still take place using SOAP over HTTP with the FMW code responsible for handling error recovery/retry.  But that is the topic for a whole other post and article.

January 4, 2008

Paravirtualized VM running on my IBM T43 laptop

I am glad to report that I now have the Oracle VM software running a virtual Oracle Linux R4 update 5 guest running within a domain.  It would be nice to say that I pulled this off via some smarts unique to me but that would be a lie.  The folks at Oracle have released several paravirtualized guests which I downloaded from this site.  Since my IBM T43 laptop is pre-dual-core technology I can't use hardware virtualization.  Bummer since I didn't have enough time to figure out how to create a paravirtualized guest image on my own.  Now I can just download it and avoid that work which is nice.  Virtualization is really convenient for me since I want to be able to switch between environments for:

  • Siebel CRM instance using Oracle 10g DB
  • Oracle SOA Suite with BI Publisher, AIA, and Oracle 10g DB
  • Oracle 11G DB and Oracle Fusion Middleware 11g Technology Previews
I may also look at keeping a super slim domain running concurrently to serve up a web content, host a subversion server, and perhaps a wiki.  Not sure about the multiple domains running at the same time though.

November 21, 2007

Getting Oracle VM to work on my old T43. A work in progress...

With the release of Oracle VM I just could not resist the temptation to install it on my old T43 laptop.  That model is a bit old using a Pentium chip which has caused a bit of a challenge.  The Oracle VM Server installed without any trouble booting from the ISO image I burned to disk.  It reformatted the machine prior to rebooting with no issue.  The Oracle VM Manager could not install on the laptop due to a missing RPM which seems to be expected based on the support forum.  No big deal I installed that on a VMWare image of Oracle Linux R4 Update 5.    Why?  Well I had to since the Oracle VM Manager only runs on Linux.

Anyway... once I started fooling around a bit I was ready to create my first virtual machine.  I figured this would be easier to use the 1 CPU hardware virtuallized guest template made available by Oracle.  Long story short, I can't use the hardware virtualization template since my CPU is so old!  That leaves me with trying to get a paravirtualized guest working which is not as easy as it sounds.  I am still intimidated by trying to convert a hardware virtualized template to a paravirtualized one.  That leaves me doing a manual install on the server or working with the VM manager.  Unfortunately I am not having luck creating a single DVD ISO of the R4 update 5 from the 4 CD ISO images you get from eDelivery whic is required.  It figures that Roxio Easy Media Creator suite is letting me down once again.  Not sure how I will work past this but that is what makes this tech dabbling fun.  I am looking forward to being able to switch between virtual images once this is done.  There are many times I want/need to have different configurations running depending on my current work.

Update 1/4/2008 - Turns out I didn't need to create my own image thanks to Oracle posting some paravirtualized images.  See the seperate news item on that.

September 5, 2007

Installing 10gR2 10.2.0.1.0 Enterprise Edition patched up to 10.2.0.3 on Oracle Enterprise Linux R5

When I finally got fed up with one of my Windows XP boxes struggling through a thrashed registry and overly fragmented disk I decided to install a new OS on the box.  Naturally I decided to use the latest Oracle Enterprise Linux release (r5).  Once the base OS was installed and configured I moved on to installing a database.  I used Oracle 10gR2 10.2.0.1.0 Enterprise Edition patched up to 10.2.0.3 for the database.  For installation the "Requirements For Installing Oracle 10gR2 on OEL 5 (x86)" article from the MetaLink site is very useful.   I found it much more specific for my installation needs.  Specifically, it summarized the libraries I need to install using RPM despite installing using the software development profile.  I used the Enterprise Edition since I wanted access to some features I will use for other projects not found in the standard edition.  For both the base and the installation I had to work around the installer not accepting OEL 5.  Since I copied the install media to a hard disk I found it convenient to alter the install/oraparam.ini so that OEL 5 was an acceptable version.

August 22, 2007

Oracle Business Rules - Siebel Tip #1

"Oracle Business Rules makes processes and applications more flexible by enabling business analysts and non-developers to
easily define and modify business logic without programming."  That is a nice blurb on what it does straight from the web site.  When working with Siebel you use Oracle Business Rules (OBR) for your integration work.  While you could use it with your Siebel configuration, you are better off using the Haley rules engine which allows you to easily manipulate objects from the Siebel CRM repository.  The ease of repository object manipulation is the driving factor in that decision.

However, for integrations using Fusion Middlware (FMW), you should use the OBR engine.  OBR is easily called from the FMW suite and it is easy to set up facts from XML schemas.  Regrettably, when Siebel generates WSDL for web services it will typically embed several schemas within the types section.  This causes a challenge when using OBR since you define XML facts from XML schema documents.  While you can extract schemas from the Siebel WSDL and put them in separate XSD documents, you need to perform this task manually along with reconciling the cross schema dependencies via include statements.  Considering how tedious and maintenance intensive that becomes, I offer this tip:

  • When creating OBR XML facts from Siebel web service message, formulate your own XML schema to contain the data you want to dervice facts from.  Then, at runtime, transform the Siebel web service result message into an instance of your XSD.
Using this tip you are free to work with native Siebel WSDL operation message structures with any extensive schema extraction and editing.  Instead, your coding and maintenance is limited to defining an XSD schema tailored to your OBR XML fact needs along with an XSL transform document.  Since you are likely to use a BPEL process for your integration, with Siebel, exercising an XSL transform, and then calling OBR is a fairly trivial set of steps.

May 31, 2007

Just Wow! Microsoft Surface...

It has been a long time since I have had a true technology "wow" moment.  I always work with whatever is new and emerging but lets face facts that some things are just cooler than others.  The wow factor I am talking about is Microsoft Surface.  Now before anyone gets going about how Microsoft did not invent this... I say so what!?  I just hope Microsoft can generate a real market for this kind of computing outside of the lab and secret government programs.  This is the kind of computing we all deserve short of VR and someday a holodeck.  When you see the videos from the links below you wonder why we get so excited with about our current user interfaces.

Microsoft Surface: http://www.popularmechanics.com/technology/industry/4217348.html

Jeff Han at TEDTalks: http://video.google.com/videoplay?docid=884017118027634444&hl=en-CA

And finally a link to what may become an often visted site:  www.ted.com

May 14, 2007

Web 2.0 - The Wiki...

There is an old saying that actions speak louder than words which I agree with more and more as I grow older.  In the spirit of that I have opened up my personal Wiki at http://naszcyniec.selfip.net:8888/yawiki for all to access.  There isn't much there right now but that will change with time as I use it more and more.  I was going to hold off on opening it up until I had more time to brand it and configure some content.  However, I started sliding into the hole of delay for this, that, and many other reasons.  So I threw up my hands and told myself just to open it up and let everyone watch it evolve.

The wiki software is Yawiki which I selected since it the same as used by Oracle WebCenter.  PLUS it has a doc literal based web service interface instead of the silly SOAP-RPC interface that others use.  I like that and also figure it can't hurt to use the same wiki software my employer packages up.  However... I am not running the Yawiki software from the WebCenter companion CD.  (which has finally been released)  I ran into some installation issues that I still need to work out in regards to that so I went with the open source version for now.  Time will tell if I spend more time with WebCenter or get distracted by some of the Rich Internet Application (RIA) software offerings out there.

May 4, 2007

My 2.0 presence begins

Well after much debate and delay I started down the path of preparing for my version 2.0 presence on the web.  Lots of things have been going on over the past year and most of it has not made it to my blog.  Part of that is an issue I had tailoring this blog to the content I want to post.  Basically, I was fighting it to be something it is not supposed to be.  All that changes moving forward.  This blog will remain my current main public presence on the web and the means for me to distribute notices about what is going on and new reference content I create.  Some of the notices and reference will only be for internal consumption at Oracle and hosted on corporate resources accessible via the intranet.  However, I still want to post plenty of material available for public consumption.  That material will be posted on a personal server running Oracle Enterprise Linux I have had up and running for a while.  I just need to lock it down a little more on security and then will make it available on-line.  One of the big public features I am looking forward to is a wiki to post thoughts on for discussion and gather other peoples ideas.  I really like Wiki pages for this sort of thing and find them much more useful then a threaded forum.  Finally, with a server under my control accessible over the internet I can finally start serving large multimedia files.  This proved to be difficult if not impossible in the past due to storage requirements.  My broadband provider may slap me down if this is a success but I will deal with this "good problem" when and if it comes up.  I may just after all just have a self inflated opinion that people want to hear what I have to say ;-))