I use JCA File Adapter in a clustered environment, both nodes of the cluster processes the same file, causing duplicate records in final system. The simple answer is to use "HAFileAdapter" instead of "FileAdapter". In your .jca file:
<adapter-config name="JcaFileCopy" adapter="File Adapter"
wsdlLocation="JcaFileCopy.wsdl"
xmlns="http://platform.integration.oracle/blocks/adapter/fw/metadata">
<connection-factory location="eis/HAFileAdapter"...
HAFileAdapter uses database behind the scene to create mutex to make sure only one node will process one file.
Ideally, that's all you need to do. However, I use this JCA file adapter inside my OSB. Simply changing to "HAFileAdatper" is not good enough. By default, HAFileAdapter uses SOADataSource for the behind scene locking mechanism. By default SOADataSource deployment target contains SOA server only ("soa_server1" in my case or whatever your SOA server name happens to be), so you need to re-configure SOADataSource, add your OSB server (osb_server1) to the deployment target list of the data source. Otherwise, you may scratch your head forever.
Tuesday, February 21, 2012
Friday, February 17, 2012
SOA deployment plan with JCA properties
Configuration/Deployment plan has a section for JCA, somehow i can't get this to work (11.1.1.4)
<reference name="JcaCopyFile">
<!-- ################### can't get this section to work, so add <wsdlAndSchema name="JcaCopyFile_file.jca"> at the bottom
<binding type="jca">
<property name="TargetPhysicalDirectory">
<replace>/test</replace>
</property>
<property name="TargetDirectory">
<replace>/test</replace>
</property>
</binding>
-->
</reference>
it works with this:
<wsdlAndSchema name="JcaCopyFile_file.jca" xmlns:jca="http://platform.integration.oracle/blocks/adapter/fw/metadata">
<jca:property name="TargetPhysicalDirectory">
<replace>/test</replace>
</jca:property>
</wsdlAndSchema>
<reference name="JcaCopyFile">
<!-- ################### can't get this section to work, so add <wsdlAndSchema name="JcaCopyFile_file.jca"> at the bottom
<binding type="jca">
<property name="TargetPhysicalDirectory">
<replace>/test</replace>
</property>
<property name="TargetDirectory">
<replace>/test</replace>
</property>
</binding>
-->
</reference>
it works with this:
<wsdlAndSchema name="JcaCopyFile_file.jca" xmlns:jca="http://platform.integration.oracle/blocks/adapter/fw/metadata">
<jca:property name="TargetPhysicalDirectory">
<replace>/test</replace>
</jca:property>
</wsdlAndSchema>
Subscribe to:
Posts (Atom)