Thursday, May 16, 2013

BINDING.JCA-11624 in WebLogic Server 11g adapters

Problem:

We have an OSB project that polls from an Oracle database table via the JCA DB Adapter. If you enable the project, we receive the following error in the osb_server1.log file:

####<May 16, 2013 6:17:37 AM EDT> <Info> <JCA_FRAMEWORK_AND_ADAPTER> <uslx377> <osb_server2> <[ACTIVE] ExecuteThread: '29' for queue: 'weblogic.kernel.Default (self-tuning)'> <weblogic> <> <> <1368699457572> <BEA-000000> <<oracle.tip.adapter.db.DBResourceAdapter endpointActivation> Activating: oracle.tip.adapter.db.DBActivationSpec@210c76da
>
####<May 16, 2013 6:17:37 AM EDT> <Info> <JCA_FRAMEWORK_AND_ADAPTER> <uslx377> <osb_server2> <[ACTIVE] ExecuteThread: '29' for queue: 'weblogic.kernel.Default (self-tuning)'> <weblogic> <> <> <1368699457572> <BEA-000000> <<oracle.tip.adapter.db.DBResourceAdapter endpointActivation> Creating endpoint with XAResource
>
####<May 16, 2013 6:17:37 AM EDT> <Info> <JCA_FRAMEWORK_AND_ADAPTER> <uslx377> <osb_server2> <[ACTIVE] ExecuteThread: '29' for queue: 'weblogic.kernel.Default (self-tuning)'> <weblogic> <> <> <1368699457574> <BEA-000000> <<oracle.tip.adapter.db.DBEndpoint start> Kicked off 1 threads.
>
####<May 16, 2013 6:17:37 AM EDT> <Info> <JCA_FRAMEWORK_AND_ADAPTER> <uslx377> <osb_server2> <[ACTIVE] ExecuteThread: '32' for queue: 'weblogic.kernel.Default (self-tuning)'> <weblogic> <> <> <1368699457574> <BEA-000000> <<oracle.tip.adapter.db.InboundWork handleException> BINDING.JCA-11624
DBActivationSpec Polling Exception.
Query name: [PollEBSSelect], Descriptor name: [PollEBS.XxInvOnhandp3Batches]. Polling the database for events failed on this iteration.
Caused by javax.resource.spi.IllegalStateException: [Connector:199176]Unable to execute allocateConnection(...) on ConnectionManager. A stale Connection Factory or Connection Handle may be used. The connection pool associated with it has already been destroyed. Try to re-lookup Connection Factory eis/DB/EBS from JNDI and get a new Connection Handle..
  This exception is considered not retriable, likely due to a modelling mistake.  This polling process will shut down, unless the fault is related to processing a particular row, in which case polling will continue but the row will be rejected (faulted).
>

Solution:

I can't explain what the root cause of this, but it's a problem that happens in many adapters - DB Adapter, FTP Adapter, File Adapter, and so forth.

1. Log in to WebLogic Server Administration Console.

2. Navigate to Deployments > DbAdapter > Configuration > Outbound Connection Pools.

3. Expand javax.resource.cci.ConnectionFactory.

4. Lock & Edit your session, and delete the offending connection factory; e.g. eis/DB/EBS

5. Activate your changes, and update your deployment plan.

6. Recreate the connection factory.

7. If this does not work, then recreate the connection factory with a different name.


Application versions:
  • Oracle WebLogic Server 11g (10.3.5+)

Tuesday, April 30, 2013

Leaders Need To Lead By Example

This image depicts what I often preach... Leaders need to lead. As obvious as this sounds, many I.T. managers fail in this.

* Cannot attribute since original source of image unknown.


In a past job of mine several years ago, one of the product development teams had some crazy deadlines. Developers were expected to work long hours and weekends. One day, I witnessed the Director of Software Development kindly/humbly/sadly asking his staff if they could work that weekend to close out some critical defects. Despite the fact that it sucked for everyone, as it was their fourth weekend in a row working, the group was responsible enough and aware of the deadlines and pressures, and hence agreed (albeit semi-reluctantly).

What of the Director?

He hadn't planned on showing up to the office that weekend. After all, what value could he have added? Nothing.

That's when I talked to him behind closed doors. I asked him, "How would you feel if you were slaving away at the office while your boss was at home enjoying a good meal and watching some TV?" He got the point. I told him he simply needed to be there. Stay out of their way. Order food for them. Say hello. But just be there in the office. If they lost another weekend, the boss lost one too.

I'm sure there are many stories all of you can share, but here's to hoping that our future leaders don't forget how it's like being one of the grunts on the ground.



Monday, April 29, 2013

oracle.jrf.UnknownPlatformException: JRF is unable to determine the current application server platform.

Problem:

When deploying a composite in Oracle SOA Suite 11g, this is one of the more annoying errors you can receive in the /tmp/out.err file:

Here is the output and the error received:
Apr 29, 2013 2:45:51 PM oracle.adf.share.ADFContext getCurrent
WARNING: Automatically initializing a DefaultContext for getCurrent.
Caller should ensure that a DefaultContext is proper for this use.
Memory leaks and/or unexpected behaviour may occur if the automatic initialization is performed improperly.
This message may be avoided by performing initADFContext before using getCurrent().
To see the stack trace for thread that is initializing this, set the logging level of oracle.adf.share.ADFContext to FINEST
Apr 29, 2013 2:46:01 PM com.collaxa.cube.CubeLogger info
INFO: validating "HelloWorld.bpel" ...
oracle.jrf.UnknownPlatformException: JRF is unable to determine the current application server platform.
        at oracle.jrf.ServerPlatformSupportFactory.getInstance(ServerPlatformSupportFactory.java:79)
        at oracle.integration.platform.blocks.WLSPlatformConfigurationProvider.<clinit>(WLSPlatformConfigurationProvider.java:44)
        at oracle.integration.platform.blocks.FabricConfigManager.<clinit>(FabricConfigManager.java:154)
        at oracle.integration.platform.blocks.xpath.FabricXPathFunctionResolver.loadXpathFunctions(FabricXPathFunctionResolver.java:282)
        at oracle.integration.platform.blocks.xpath.FabricXPathFunctionResolver.loadXPathConfigFile(FabricXPathFunctionResolver.java:156)

.
.

Analysis:

In this particular case, we can see that during compilation, we received the following error. If you notice, the actual error was an "Invalid UTF8 encoding."
[deployComposite] setting user/password..., user=weblogic
[deployComposite] Processing sar=/home/oracle/deploy/svn/HelloWorld/deploy/sca_HelloWorld_rev1.0.jar
[deployComposite] Adding sar file - /home/oracle/deploy/svn/HelloWorld/deploy/sca_HelloWorld_rev1.0.jar
[deployComposite] INFO: Creating HTTP connection to host:soatest.ipnweb.com, port:8142
[deployComposite] INFO: Received HTTP response from the server, response code=500
[deployComposite] ---->response code=500, error:There was an error deploying the composite on soa_server1: oracle.mds.transfer.TransferException:
[deployComposite] MDS-00001: exception in Metadata Services layer
[deployComposite] MDS-00522: failure to save document /deployed-composites/default/HelloWorld_rev1.0/xsl/mytransform.xsl to the metadata repository
[deployComposite] Invalid UTF8 encoding.

Solution:

Seems that the developer saved the file in some weird encoding that the MDS was not happy with. Our MDS was using the character set AL32UTF8. The idea was to recreate the file using a valid encoding.

1. In the SOA project, open the offending file "mytransform.xsl".

2. Copy the contents of this file.

3. Delete the file, and create a new one in something like "vi".

4. Paste the contents into this new file, save it, and try again.



Application versions:
  • Oracle SOA Suite 11g (11.1.1.5+)

Friday, April 5, 2013

IPN Web @ Collaborate 13

Going to Collaborate 13 in Denver? Come see us!

If you work with Oracle SOA Suite, we're confident you'll find our presentations beneficial. And please stop by and introduce yourself. We'd love to hear from you about the product... or even just to say hello!

Ahmed Aboulnaga

Wednesday, April 10
12:15pm - 12:45pm

Mile High Ballroom 3C

Double the Performance of Oracle SOA Suite 11g? Absolutely!

One change will result in an immediate 32% performance improvement of your Oracle SOA Suite 11g infrastructure. Another will result in a further 24% performance improvement. In this presentation, we share specific recommendations on what to do to maximize your performance, covering areas surrounding JVM, JTA, data sources, auditing, routing rules, composite applications, HTTP references, consoles, operating system, and much more. This is the most comprehensive collection of performance tuning recommendations for Oracle SOA Suite 11g, implemented at too many customers to count.
Harold Dost

Wednesday, April 10
4:15pm - 5:15pm

Mile High Ballroom 3C
Oracle SOA Suite 11g Troubleshooting Methodology

Most troubleshooting guides simply list out solutions to common errors. This presentation introduces a troubleshooting methodology surrounding performance, composite instances, deployment, and logging. The goal is to better equip you with the ability to solve most problems as they pertain to the SOA infrastructure and its executed transactions. Learn where to look and what to look for. This is a presentation every Oracle SOA Suite 11g developer and administrator should attend.


I'm also part of the IOUG 20th Anniversary Expert Lunch Panel. If you haven't already done so, consider registering for the 20th Anniversary Upgrade Package, which is not too expensive. An event like this doesn't happen very often, so check out the link for more information.


See you all there!

Sunday, March 31, 2013

Application Loader: Certificate issue

Problem

While running the Application loader we received the following error:

Application failed codesign verification.  The signature was invalid, contains disallowed entitlements, or it was not signed with an iPhone Distribution Certificate.

Solution
While we were signing the Application with its own Distribution certificate, we were not signing with the developer's distribution certificate. Among other things to add to your iPhone Deployment checklist, remember to always use the App's as well as the Developer's Distribution Certificate. If you are unsure of which profile's that are on your machine they are available for download in the Apple Developer's site in the Provisioning Portal.
For the Developer's Certificate:
For the Application Provision Profile:




Tuesday, March 12, 2013

JCA File Adapter Gotchas

Problem 1
Using the polling feature of the file adapter the file was only getting picked up once. If the composite is shutdown and re-activated it the file was processed. The same was true when the composite was redeployed. A quick comparison with an working composite that was polling for a file revealed the  problem existed in the file path.

Solution 1
The path in the troubled composite looked similar to /the/path/to/the/folder/ , however in the healthy composite it looked like /the/path/to/the/folder . The problem in this case was the trailing slash. After removing the slash and redeploying the polling file adapter behaved as expected.

Problem 2
In the same process the output is written to a file, however the date fields seemed to be represented incorrectly. Instead of getting 20130306 as expected; I was instead getting 20130366. The issue in this case was rather obvious.

Solution 2
The pattern that was being used was %yyyyMMDD%_glelements_incr.xml the problem as observed existed in the day fields for days the characters should actually be lowercase; as a result the pattern should look like this: %yyyyMMdd%_glelements_incr.xml


Versions
Oracle SOA Suite 11.1.1.5


Wednesday, February 27, 2013

SCAC-50012: AIA Service


Problem  
While performing an enhancement on an AIA Integration an error pops up during the compilation process.  There's a bunch of information out there like this blog post, that give a general idea of where to look. One of the specific cases is when AIA Service constructor has been used to create a BPEL process. The template for the ABCS constructor uses calls to the AIA logger. The problem is that there are missing AIA libraries that the service needs to compile correctly.
Error:
<Fault>
  <severity>error</severity>
  <loc>/ns:composite</loc>
  <line/>
  <col/>
  <file/>
  <msg>
    <![CDATA[SCAC-50012]]>
  </msg>
</Fault>

Solution
Install the AIA service constructor using the instructions found in the link below. Once it has been installed JDeveloper may require a restart, and then compilation will succeed.

Resources
http://docs.oracle.com/cd/E23549_01/doc.1111/e17364/bldgintflows.htm#CHDFFDEI

Deploying the aia.jar to OSB 11g

This blog post describes how to import your custom XPath functions to OSB 11g. What if you wanted to use the AIA 11g XPath functions in OSB 11g?


1. Get the aia.jar file. It is typically located here:
/u01/app/oracle/middleware/aia5/lib/aia.jar
2. Copy it to here:
/u01/app/oracle/middleware/Oracle_OSB1/config/xpath-functions/
3. Restart the OSB managed servers after saving the changes



Application versions:
  • Oracle Service Bus (OSB) 11g (11.1.1.4+)

Deploying a custom XPath function to OSB 11g

My book describes how to deploy custom XPath to Oracle SOA Suite 11g. This blog post describes how to do the same thing in OSB 11g.

1. Copy your JAR file (e.g., customXPathFunctions.jar) to:
$MW_HOME/Oracle_OSB1/config/xpath-functions/
2. Edit $MW_HOME/Oracle_OSB1/config/xpath-functions/osb-built-in.xml and add the properties of your particular XPath function (this is an example):
<xpf:function>
  <xpf:name>currentDateTime</xpf:name> 
  <xpf:comment>%FUNC_CURRENTDATETIME_COMMENT%</xpf:comment>
  <xpf:namespaceURI>http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.Xpath20</xpf:namespaceURI> 
  <xpf:className>oracle.tip.pc.services.functions.Xpath20</xpf:className>
  <xpf:method>java.lang.String currentDateTime()</xpf:method> 
  <xpf:isDeterministic>false</xpf:isDeterministic> 
  <xpf:scope>Pipeline</xpf:scope> 
  <xpf:scope>SplitJoin</xpf:scope>
</xpf:function>
3. Edit $MW_HOME/Oracle_OSB1/config/xpath-functions/osb-built-in.properties and add the following (this is an example):
%FUNC_CURRENTDATETIME_COMMENT%=Returns current date time stamp. E.g. xp20:currentDateTime()
4. Restart the OSB managed servers after saving the changes



Application versions:
  • Oracle Service Bus (OSB) 11g (11.1.1.4+)

"Data transfer error in MDS.: (Wrapped) UTF binary length"

Problem:

I was using Ant to import a large number of files to the MDS.

Here is the output and the error received:
importMDSArtifact:   [delete] Deleting directory /u01/deploy/tmp/AIAMetaData    [mkdir] Created dir: /u01/deploy/tmp/AIAMetaData      [zip] Building zip: /u01/deploy/tmp/AIAMetaData/AIAMetaData_mds.jar      [zip] Building zip: /u01/deploy/tmp/AIAMetaData/AIAMetaData_mds.zip     [echo] SAR File: /u01/deploy/tmp/AIAMetaData/AIAMetaData_mds.zip     [echo] oracle.home = /u01/app/oracle/middleware/Oracle_SOA1
deploy:    [input] skipping input as property serverURL has already been set.    [input] skipping input as property sarLocation has already been set.[deployComposite] setting user/password..., user=weblogic[deployComposite] Processing sar=/u01/deploy/tmp/AIAMetaData/AIAMetaData_mds.zip[deployComposite] created temp dir =/tmp/deploy_client_1361656759642[deployComposite] Adding shared data file - /tmp/deploy_client_1361656759642/AIAMetaData_mds.jar[deployComposite] INFO: Creating HTTP connection to host:soadev, port:8001[deployComposite] INFO: Received HTTP response from the server, response code=500[deployComposite] ---->response code=500, error:There was an error deploying the composite on soa_server1: Data transfer error in MDS.: (Wrapped) UTF binary length=510738, max=65535.[deployComposite]     [echo]

Solution:

This is the second time in the last 12 months that I encountered this error. I can't remember how I resolved it the first time. However, the solutions this time was:

1. Bounce all SOA managed servers and try again (e.g., soa_server1, soa_server2, etc.)



Application versions:
  • Oracle SOA Suite 11g (11.1.1.5+)

Create a DB Adapter JNDI in WebLogic Server 11g

This blog post describes how to create a JNDI to a database in Oracle WebLogic 11g so that it can be referenced in your code.

For example, you may want to use the JNDI called eis/DB/DataWarehouse in your SOA code. This is done at design time in JDeveloper as shown in the following screenshot:



To create a JNDI to a database resource, two steps must be done on the WebLogic Server:
  • Create a data source and connection pool
  • Configure the Database Adapter


Create a Data Source

1. Log in to the WebLogic Server Administration Console

2. Click on Data Sources

3. Click on New > Generic Data Source

4. Enter a name for this data source (any name) and JNDI (this JNDI is typically used by Java code)


5. Click on Next

6. Choose your Database Drive (ask your DBA for assistance)

7. In the "Connection Properties" page, enter your database connection configuration

8. Keep navigating through the screens

9. In the "Select Targets", select which managed server you want this data source to be available to

10. Save and Active your changes


Configure the Database Adapter

1. On the WebLogic Administration Console, click on Deployments

2. Scroll down and click on DbAdapter > Configuration > Outbound Connection Pools

3. Click on New

4. Select the checkbox beside javax.resource.cci.ConnectionFactory and click Next

5. Provide a JNDI name (this JNDI is typically used by SOA/OSB code)


6. Click on Finish

7. Expand javax.resource.cci.ConnectionFactory

8. Locate and click on your JNDI that was just created (e.g., eis/DB/DataWarehouse)

9. On the "Outbound Connection Properties" page, enter the data source JNDI in the dataSourceName field, then click Save

* Note that if you configured your data source to use an XA driver, enter the JNDI name beside the xADataSourceName column instead.
10. You will now see this message:


11. On the navigation bar on the left, click on Deployments again

12. Scroll down and check the checkbox beside DbAdapter

13. Scroll back up and click on Update

14. Click Finish

15. Activate your changes


Summary

Here are a few takeaways to keep in mind:
  • The JNDI you define when creating the data source is typically used by Java applications
  • The JNDI you define when creating the DbAdapter is typically used by SOA/OSB applications
  • When creating a data source, choose "Generic Data Source" even if your database is an Oracle RAC or Microsoft SQL Server database (the "Multi Data Source" is used best for failover purposes)
  • When choosing the database driver for your data source, you must decide whether you want XA or non-XA drivers. This has design and coding implications
  • When configuring the DbAdapter, enter the JNDI of your data source in either the xADataSourceName or dataSourceName fields depending on how you created it
  • Don't forget to update the configuration plan when done!


Application versions:
  • Oracle WebLogic Server 11g (10.3+)

Sunday, February 24, 2013

Importing artifacts to the MDS with ant

This blog post is a snippet of my recently published book, Oracle SOA Suite 11g Administrator's Handbook, currently available on Packt Publishing and Amazon. The Kindle and eBook versions are low cost, so it may be something you may want to consider purchasing if you find this blog post useful. There are administration topics that benefit the junior, mid-level, and senior administrators. Myself and my co-author have really dumped everything we know into this, so we hope it will benefit you.
________________________________________________________________________________

Since MDS artifacts and contents are exported as a JAR file, it makes sense for it to be imported in the same manner.

For example, you may have the following files that you just updated on your local file system and wish to import them to the MDS. This may include fault policies, DVMs, and schemas located in the following local directory structure:
/tmp/svn/SOAMetaData/faultPolicies/fault-bindings.xml 
/tmp/svn/SOAMetaData/faultPolicies/fault-policies.xml
/tmp/svn/SOAMetaData/dvm/CurrencyCode.dvm 
/tmp/svn/SOAMetaData/xsd/ErrorHandling/errorEvent.xsd
Firstly, you should zip up the contents of the ~/SOAMetaData subfolder generating a single SOAMetaData.jar file:
cd /tmp/svn 
zip -r SOAMetaData.jar SOAMetaData
The JAR file is now ready to be imported to the MDS to maintain the same directory structure inside the MDS:
ant -f ant-sca-deploy.xml deploy -Dwl_home=/u01/app/middleware/wlserver_10.3 -Doracle.home=$ORACLE_HOME -DserverURL=$SOAURL/soa-infra/deployer -Duser=$USERNAME -Dpassword=$PASSWORD -Doverwrite=true -DforceDefault=true -DsarLocation=SOAMetaData.jar
Don't forget to set your environment! Details in the book!


Application versions:
  • Oracle SOA Suite 11g (11.1.1.3+)

References:

Saturday, February 23, 2013

Handy File and FTP Properties

As of late I have encountered many processes that need to poll for a file. As a result I spent some time delving more into the properties available on the File/FTP adapter. What I have found isn't miraculous by any means, but there are definite uses that can arise from some of the properties. Below I have outlined a few properties that I found useful and what I used them for.

LogicalArchiveDirectory/PhysicalArchiveDirectory
One of the integration that was being developed required a scheduled process to drop a file into a directory. The integration being developed would then pick up this file and process the contents. However once the process was complete there was no file left over. For peace of mind the file is preserved, so that even if the logs and database are purged a record is still kept until the file is no longer deemed necessary.

LogicalErrorArchiveDirectory/PhysicalErrorArchiveDirectory
This option was used for much the same reason as the previous one, but in the case that an error occurred while reading the file in. If the file produced had some sort of issue then it needs to be known to fix it.

MaxRaiseSize
The property limits how many processes can run at the same time while polling the target directory. This affords the protection from using all available threads should the process responsible for placing the file go rogue. I am not a promoter of defensive programming, but in certain cases it may be deemed a necessity.

MinimumAge
This property requires that a file be of at least a certain age. This is useful to prevent a partially created file from being consumed; being particularly useful when a larger file is being written to the file system.

For these and many more properties check out the links below.


References
http://docs.oracle.com/cd/E21764_01/integration.1111/e10231/adptr_propertys.htm#CHDEDJEA
http://docs.oracle.com/cd/E23549_01/doc.1111/e15731/adapter_tech.htm#CEGDGIDF

Thursday, February 14, 2013

ORA-12899: Column too large or ESB_ACTIVITY table

Problem:

In Oracle SOA Suite 10g, the ESBDT logs located under $ORACLE_HOME/soa_as_1/j2ee/oc4j_esbdt/log/oc4j_esbdt_esbdt_group_1_1/oc4j/log.xml threw the following error:
Caused by: java.sql.SQLException: ORA-12899: value too large for column "ORAESB"."ESB_ACTIVITY"."BPEL2ESBCONVID" (actual: 101,maximum: 100)
It turns out that the ESB_ACTIVITY.BPEL2ESBCONVID column is defined as VARCHAR2(100) and was set using the upgrade script $ORACLE_HOME/soa_as_1/integration/esb/sql/oracle/upgrade_10135_10135mlr_oracle.sql.

Here is an example of data populated in the conversation ID (BPEL2ESBCONVID) column:
bpel://localhost/oaebs/FinanceDepartmentUSA_UpdateGLBalanceInterface~1.0/430060171-BpInv3-BpTry2.9-1
As you can see, this column is 101 characters in length, hence violating the table definition.


Solution:

1. Log in to the database as the ORAESB user.

2. Execute the following command to increase the column length:
ALTER TABLE esb_activity MODIFY (bpel2esbconvid varchar2(200));

Application versions:
  • Oracle SOA Suite 10g

References:
  • Oracle Note ID 1343103.1

Thursday, January 24, 2013

Be careful when setting logger levels in Oracle SOA Suite 11g

There are two catches I want to share with you about setting logger levels in Oracle SOA Suite 11g.

1. Logger levels are tied to individual managed servers

Did you know that when you change the logger level in the EM Console that it is not a global configuration?

Basically, when you right-click on soa-infra and click on Log Configuration, you are either setting it on soa_server1 or soa_server2, depending on which soa-infra you right-clicked on (see image below). The configuration change you made will not apply to both and you must repeat it on each node of your cluster.

Keep this in mind when you consider changing your logger levels.



2. Certain logger configuration is lost if you restart the server

When configuring logger levels, be aware of which loggers you are updating; Runtime Loggers or Loggers With Persistent Log Level State.

When you make a change to Runtime Loggers, the settings will be lost when you bounce the server. On the other hand, Loggers With Persistent Log Level State will remain in effect even if you bounce the server.


Application versions:
  • Oracle SOA Suite 11g (11.1.1+)

References:

Wednesday, January 16, 2013

How-To: Check out a Ruby project in IntelliJ IDEA

The procedure of checking out code is relatively simple, but there are a few key steps that are essential to get started when dealing with a Ruby project and possibly other language types when working in IntelliJ IDEA. This project assumes that you have already installed the Ruby on Rails plugin for IntelliJ IDEA.

Steps

1.  The simplest and most necessary step is to have code to checkout, but after that it needs to be checked out. For this example I am using Git as my source control

2.   Fill out your connection info and target directories.

3.  Create a project from the source just checked out. This may take a while depending on the size of your codebase.

4.  Create project from external sources.

5.  Chose a project name

6.  So far everything seems to work, it's detecting the types for the files in project.

7.  However it doesn't detect any frameworks, which is troubling since it should be Rails.

8.  After the project is created only some of the files in the project are visible.

9.  The next step is to create a new module.
    

10.  Choose a Ruby Module, give your module a name most likely the same as the project name. By default IDEA will add a subdirectory to your current project, but that folder should be deleted.
Example

Module Name: <module_name>
Content Root: /path/to/IdeaProjects/<project_name>/<module_name>/
Module File: /path/to/IdeaProjects/<project_name>/<module_name>/

This should be changed instead to:


Module Name: <module_name>
Content Root: /path/to/IdeaProjects/<project_name>/
Module File: /path/to/IdeaProjects/<project_name>/



11.  The Ruby SDK should be already selected, if this is not true you may not have installed the Ruby/Ruby on Rails Plugin.

12.  The Ruby On Rails check box should be selected and the "Use existing Rails application" should be selected. Everything else is going to depend on your current setup, so don't just breeze through this screen.

13.  Success, now you can see all the files in your project and you are free to work on your code.

Software Used
IntelliJ IDEA 12
Ruby/Ruby On Rails Plugin


Wednesday, January 9, 2013

Cannot deploy OSB 11.1.1.5 project to 11.1.1.4

Problem:

An OSB project is developed under Oracle Service Bus 11.1.1.5. When you export the JAR file and try importing it to Oracle Service Bus 11.1.1.4, you get the following error:

Invalid configuration file java.lang.IllegalArgumentException: The jar that is being imported is an unsupported version of the product. The version was 11.1.1.5. Supported versions are: 10.3.0.0.dev2, 2.6.0, 2.6.1, 3.0.dev2, 3.0.dev1, 3.0.0, 3.0, 2.6, 10.3.0.0, 2.6.dev5, 2.6.dev4, 2.6.dev3, 2.6.dev2, 2.6.dev1, 11.1.1.2, 11.1.1.3, 11.1.1.4, 10.3.2.0.dev.1, 10.3.1.0, 10.3.2.0.dev.2, 10.3.2.0.dev.3, 3.2.dev1, 3.2.dev2, 11.1.1.2.dev.1, 11.1.1.2.dev.2,


Even though downgrading it this way from 11.1.1.5 to 11.1.1.4 is certified, it still does not work.


Solution:

1. Assuming you have WinZip (or equivalent) installed, double-click the JAR file on your desktop.

2. If you are using WinZip, click on the file ExportInfo and edit it by clicking View (or equivalent).


3. Replace the following entry:

OLD: <imp:property name="productversion" value="11.1.1.5"/>
NEW: <imp:property name="productversion" value="11.1.1.4"/>


4. Save the file and update the archive.


5. Try again and you should be good!


Applicable Versions:
  • Oracle Service Bus (OSB) 11.1.1.4
  • Oracle Service Bus (OSB) 11.1.1.5


References:

Sunday, January 6, 2013

Installing Red Hat on Parallels Desktop

Problem
To make things easier while I travel I decided to create a VM of Red Hat Enterprise Linux (RHEL) on my machine. Since OSX is my host OS I have the option of a few different virtualization softwares, but my personal choice is Parallels Desktop.  While going through the standard installation I received the following error.
None of the available drivers work. However the solution is relatively simple.


Solution
1. Shut down the virtual machine.
2. Open the machine configuration.
3. Switch to the Hardware Tab
4. Under Hard Drive 1, set the location to IDE 0:0
5. Under CD/DVD 1, set the location IDE 0:1
6. Start the machine.
From this point installation can proceed normally.


Wednesday, December 19, 2012

JDeveloper Unit Testing: Fault Message

At one of my clients had an issue with the Test Suites running and timing out when performing call remotely using the ant-sca-test.xml, but they would run just fine when they were executed from Enterprise Manager.

Problem
I analyzed one of the troubled projects which had multiple unit test cases and isolated each one to see if it was an issue with a specific unit test. Luckily it was a single test case, the test case was asserting for a fault, with only the <xml-fragment/> tag in the XML field. I had a few observations around this issue.
1. When called using ant-sca-test.xml the process would always time out.
2. When called from Enterprise Manager the
3. When I viewed tests executed from Ant or EM they showed as passing and case of either they are doing so in mere seconds.

Solution
Unfortunately I was unable to come to a solution myself as it appeared to be a bug in the Oracle software. After I opened an SR and spent time going through the process of getting them information they were finally able to come up with the solution. The final solution was relatively simple. To assert a fault it must be part of the contract, which can also be said by that a fault needs to be one of the messages in the WSDL. For more information review the note.

Resources
https://support.oracle.com/epmos/faces/ui/km/BugDisplay.jspx?id=14763394&bugProductSource=Oracle&recommended=true

Applicable Versions
Oracle SOA Suite 11.1.1.5

Emailing HTML in Oracle BPEL 11g

Problem

As part of a BPEL process, I needed an email sent with two tables of information. To accomplish this I decided to send an HTML email. I created a transformation to generate my HTML and store it into a variable. Everything appeared valid , but when trying a few different methods I received one of two results.
1. Nothing would show up in the email body.
2. Only the text from the tables would appear.

Solution

The problem that occurred was that BPEL is trying to grab contents of the element rather than the elements and text contained in their entirety. To fix this <![CDATA[   ]]> needs to be wrapped around the data, this is done with the ora:toCDATA() function. This works because it tells the XML Parser in the notification service to not parse the data and treat it as plain text.

Update: Additionally in the XSL transform remember to use <xsl:output method="html" indent="yes" version="4.0"/> just before the template open tag.

Resources
http://docs.oracle.com/cd/E15523_01/doc.1111/e14770/bpel.htm#BABHFEFE

Tested Versions
Oracle SOA Suite 11.1.1.5