August 8, 2008

Eclipse 3.2.2, Oracle Workshop for WebLogic 10.3, Adobe Flex Builder 3

Just wanted to post a note about using Eclipse 3.2.2 for a IDE platform with the Oracle Workshop for Weblogic 10.3 and Adobe Flex Builder 3 plug-ins installed.  Long story short, it seems to work just fine.

I have been doing a bit of WebLogic work lately to keep up with the Oracle SOA roadmap.  Part of that work includes some code development.  Long term this work will be done in JDeveloper, but for now must be done in workbench.  Workbench for WebLogic 10.3 runs on the Eclipse platform either as a simple install or via a plug-in to an existing Eclipse install.

I decided to use the Eclipse plug-in installation since it would allow me to also have my Adobe Flex Builder 3 run in the same eclipse instance.  This is a real nice capability for me.  I use the Flex Builder plug-in to build by RIA application and then elements of the workbench plug-in to write the data side of the application.  Lately on the data side I have been using WebLogic web services to provide data to Flex remote objects via BlazeDS.  I am trying to decide if I want to use remote objects for all of Flex data sources or just for the "data pusha?? parts.  Currently I am not sure if that is easier than using direct web service calls where the biggest pain is getting the namespaces handled correctly.

From the workbench plug-in perspective the install was only slightly painful.  I used the network installer with a freshly installed Eclipse 3.2.2 IDE for Java EE Developers.  When I tried the install I ran into a bunch of pre-requisites that I did not see in the installation documentation.  All of those pre-requisites stem from requiring the WTP 2.0.3 feature to be installed in Eclipse.  Fortunately the web page for the WTP 2.0.3 release has details and links for everything you need.

August 5, 2008

August 2008 – Home Server Configuration

I used to spend lots of time looking over the specs published at http://www.sharkeyextreme.com for gaming PCs to dream about my desired workstation.  Over time I got busy and that effort fell by the wayside.  Now it seems that I am dreaming about a new server.  It seems I am always exceeding the capabilities of my laptop and need some extra horsepower.  Fortunately I can build a pretty powerful box for a relatively modest sum of money.  (Well, modest to what I see vendors selling servers for!)  I thought I would share with others what I would do today if I were building a server.

My server needs are pretty intense as I want to be able to host a complete enterprise POC environment.  That means I need to run a database, several application servers, security and identity management, web servers, and of course a source code control system.  I will also occasionally need to run applications like Siebel CRM to test out integration.  Running all this is really not practical on a single piece of hardware.  Buying multiple boxes is an option but it takes more space and can be a bit of a pain.  So I am going to take advantage of virtual machine technology.  I want to use Oracle VM but I cana??t ignore how many people run VMWare.  Since this is *my* box, my choice of VM technology is still undecided.

Fortunately the components to build a dual quad core system are fairly available to purchase.  In fact, I was able to get all of the components for this build from http://www.newegg.com.  They are a great company to buy from although you can shop around for better prices on some components.  Their great customer service though is hard to replace.

Below you will find a list of the components I would use to build a server today.  Comments and suggestions are welcome and part of why I posted this in the first place!

Qty. Image Product Description Unit Price Savings Total Price
2 Intel Xeon E5410 Harpertown 2.33GHz LGA 771 80W Quad-Core Processor Model BX80574E5410A
Intel Xeon E5410 Harpertown 2.33GHz LGA 771 80W Quad-Core Processor Model BX80574E5410A - Retail
Model #:BX80574E5410A
Item #:N82E16819117149
Return Policy:Processors (CPUs) Return Policy
In Stock
$269.99 -$1.00 Save $537.98
1 Thermaltake Armor Series VA8000BWS Black Aluminum / Steel ATX Full Tower Computer Case
Thermaltake Armor Series VA8000BWS Black Aluminum / Steel ATX Full Tower Computer Case - Retail
Model #:VA8000BWS
Item #:N82E16811133154
Return Policy:Standard Return Policy
In Stock
$149.99 -$5.00 Instant $144.99
1 PC Power & Cooling T12W 1200W ATX12V / EPS12V Power Supply
PC Power & Cooling T12W 1200W ATX12V / EPS12V Power Supply - Retail
Model #:T12W
Item #:N82E16817703012
Return Policy:Standard Return Policy
In Stock
$599.99 -$50.00 Instant $549.99
4 Crucial 8GB (2 x 4GB) 240-Pin DDR2 FB-DIMM DDR2 667 (PC2 5300) ECC Fully Buffered Dual Channel Kit Server Memory Model CT2KIT51272AF667
Crucial 8GB (2 x 4GB) 240-Pin DDR2 FB-DIMM DDR2 667 (PC2 5300) ECC Fully Buffered Dual Channel Kit Server Memory Model CT2KIT51272AF667 - Retail
Model #:CT2KIT51272AF667
Item #:N82E16820148128
Return Policy:Standard Return Policy
In Stock
$480.00   $1,920.00
6 Seagate Barracuda 7200.11 ST3500320AS 500GB 7200 RPM SATA 3.0Gb/s Hard Drive
Seagate Barracuda 7200.11 ST3500320AS 500GB 7200 RPM SATA 3.0Gb/s Hard Drive - OEM
Model #:ST3500320AS
Item #:N82E16822148288
Return Policy:Limited 30-Day Return Policy
In Stock
$79.99   $479.94
1 EVGA 256-P2-N761-AR GeForce 8600 GTS 256MB 128-bit GDDR3 PCI Express x16 HDCP Ready SLI Supported Video Card
EVGA 256-P2-N761-AR GeForce 8600 GTS 256MB 128-bit GDDR3 PCI Express x16 HDCP Ready SLI Supported Video Card - Retail
Model #:256-P2-N761-AR
Item #:N82E16814130084
Return Policy:Limited Non-Refundable 30-Day Return Policy
In Stock
Mail-in Rebate
$99.99   $99.99
1 LITE-ON 20X DVDA?R DVD Burner Black SATA Model iHAS120-04
LITE-ON 20X DVDA?R DVD Burner Black SATA Model iHAS120-04 - OEM
Model #:iHAS120-04
Item #:N82E16827106263
Return Policy:Standard Return Policy
In Stock
$23.99   $23.99
1 TYAN S5396A2NRF Dual LGA 771 Intel 5400 SSI / Extended ATX Server Motherboard
TYAN S5396A2NRF Dual LGA 771 Intel 5400 SSI / Extended ATX Server Motherboard - Retail
Model #:S5396A2NRF
Item #:N82E16813151100
Return Policy:Manufacturer Warranty
In Stock
$389.99   $389.99
Subtotal: $4,148.87

August 4, 2008

TrackBacks are disabled

Well it seems the children of the web/spam are exercising their toys against the Oracle blog site.  There were some pretty sick trackback links people were trying to post and I cana??t keep up with deleting them one by one.  I really had no choice but to just disable trackbacks for a while.  Maybe at some point in the future I can re-enable the feature.  Hopefully the current batch of children have a short attention span.

Be a good netizen!

July 10, 2008

Using AIA with an 11g Database – beware uppercase password

Wella?| 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 a??soademoconnectionpoola?? JDBC resource that gets created when the demo is installed.  By default the password is uppercase a??ORACLEa?? which you should change via the  AIA_HOME/samples/AIADemo/scripts/AIADemoInstall.properties file.  Locate the setting for a??soa.demo.passworda?? 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.