Powered By Blogger

Friday, February 14, 2014

OSB with JCA large file processing


 As we know, we can use JCA protocol with OSB to interact with various Oracle adapters.

This post will talk about one of the issues faced when OSB is used with FTP JCA for processing files.
FTP JCA was working fine for files less than 3 to 4 MB but file sizes more than that we got below error

<BEA-000000> <Generic Error caught while translating inbound file in streaming mode :
file_name.xml
java.lang.NullPointerException
at oracle.tip.adapter.file.inbound.InboundTranslatorDelegate.xlate(InboundTranslatorDelegate.java:295)
at oracle.tip.adapter.file.inbound.InboundTranslatorDelegate.doXlate(InboundTranslatorDelegate.java:121)
at oracle.tip.adapter.file.inbound.ProcessorDelegate.doXlate(ProcessorDelegate.java:408)
at oracle.tip.adapter.file.inbound.ProcessorDelegate.process(ProcessorDelegate.java:177)
at oracle.tip.adapter.file.inbound.ProcessWork.run(ProcessWork.java:349)
at weblogic.work.ContextWrap.run(ContextWrap.java:41)
at weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTuningWorkManagerImpl.java:545)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:256)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:221)

JCA uses a flavor of DOM called ScalableDOM to process files but OSB doesn't support this feature.
ScalableDOM XML processing relieves problems of memory inefficiency, limited scalability, and lack of control over the DOM configuration

As per Oracle,three main features of ScalableDOM are
  1. Pluggable DOM:external XML representation to be directly used by Scalable DOM without replicating XML in internal representation
  2. Lazy materialization:XML processor creates nodes that are accessed and frees unused nodes from memory. Applications can process very large XML documents with improved scalability
  3. Configurable: DOM configurations can be made to suit different applications. You can configure the DOM with different access patterns such as read-only, streaming, transient update, and shadow copy, achieving maximum memory use and performance in your applications.
Anyway, in nutshell, we need to disable scalable DOM processing in case of large files with JCA OSB
Please set below property in JCA file

<property name="SupportsScalableDOM" value="false"/>