Saturday, June 28, 2014

Linux Setup for SOA install on AWS -EC2

Create a M3-Large instance on AWS -EC2:

Create m3 large instance for SOA installation on AWS -EC2.

 1. Choose Static Elastic IP. So that you do not loose IP when server is restarted.
  
 2.  Save the KeyPair on local Machine.  Use PuttyGen to create the PPK file.

 3. Use Putty to login to the terminal using the PPK.  

      a. Hostname:  Public DNS name from AWS console.
      b. Port : 22  for ssh.  
      c.  Putty-> connection -> ssh -> Auth -> Browse for PPK file.

   4.  Default username used to login to AWS Instance is 'ec2-user'.


Change HOSTName on AWS EC2 Linux:


root>  vi /etc/sysconfig/network

Change Hostname to Fully Qualified name.

HOSTNAME=obprodb.objectprosolutions.com

Direct your custom hostname to AWS Public IP:

Create the A Record in your DNS control pointing to AWS PUBLIC IP.


Create User:


From Root user:


ec2-user> sudo useradd oracle

ec2-user> sudo su - oracle

oracle> mkdir .ssh


oracle> chmod 700 .ssh

oracle> touch .ssh/authorized_keys

oracle> chmod 600 .ssh/authorized_keys

oracle> vi .ssh/authrized_keys

Paste the public key here.  

P.S:  PuttyGEN is used to dispaly the public key 

Now login to terminal using the new user 'oracle'.


To Delete a user:



userdel -r oracle


To allow Remote access to User:

su - oracle

mkdir .ssh

chmod 700 .ssh

touch .ssh/authorized_keys

chmod 600 .ssh/authorized_keys



Run YUM Update:


root> yum update


Friday, June 27, 2014

WSM-00138: The path to the certificate is invalid



Scenario:

Oracle SOA calling secured service on Vordel Gateway.  OWSM policy used is 'oracle/wsm_username_tokoen_with_messsageprotection_client'.  Using this policy request message signed with SOA platform's certifacte along with UserNameToken.

OWSM policy expects the response message also be signed.  So we have configured the gateway the sign the response message with Root CA.

We have imported Root CA  to SOA's Keystore as trust.


Issue:


The path to the certificate is invalid. [[
Validation failed for the certificate "Subject DN:- CN=test.oprosoa.oprohome.com, OU=Information Technology, O="ObjectPro LLC.", L=Atlanta, ST=Georgia, C=US, Serial Number:- 132780370344752896279323, Issuer DN:- CN=OPRO Enterprise Certification Authority 01, DC=ObjectPro LLC, DC=com"
 Certificates in cert path used for validation are:-
"Subject DN:- CN=test.oprosoa.oprohome.com, OU=Information Technology, O="ObjectPro LLC.", L=Atlanta, ST=Georgia, C=US, Issuer DN:- CN=OPRO Enterprise Certification Authority 01, DC=ObjectPro LLC, DC=com"

]]


Solution:


According to Below Oracle Notes.  We need to import if any intermediate chain of certificates as well, in order to successfully read the response.

We have imported the dependent  ENT CA  certificate and issue is resolved





WSM-00138: The path to the certificate is invalid. Validation failed for the certificate {0} Certificates in cert path used for validation are:- {1}
Cause: The intermediate and root certificates of the certificate were not present in the keystore during verification.
Action: Make sure that the entire certificate chain is available in the keystore for verification.
Level: 1
Type: ERROR
Impact: Security



Tuesday, October 22, 2013

SOA AIAAsyncErrorHandlerBPELProcess Email Requirements

SOA AIA Error Handling

Error handling in SOA using  AIA Foundation pack. 
Exception handling in SOA can be achieved by calling  AIA FP OOB’s AIAAsyncErrrorHandlingBPELProcess.
AIAAsyncErrrorHandlingBPELProcess can be invoked in 2 ways.
1.       Using  fault policies
2.       Directly invoking  AIAAsyncErrrorHandlingBPELProcess from Catch Activity.

Using Fault Policies


Steps involved in using  fault policies.
1.       Add “EBM_HEADER” variable and populate “ EBM_HEADER “variable.
<variable name="EBM_HEADER" element="corecom:EBMHeader"/>
This variable is used in populating the  “FaultNotification”  element of AIAAsyncErrorHandlerBPELProcess, when invoked by fault policies.

Find the sample XSL used to populate EBM_HEADER


2.       Define a fault policy for the BPEL process and bind the process with this policy in fault-bindings.xml.
We can use specific fault policy for each process and store then in project directory or MDS.
We can use a Generic fault policy with covers standard exceptions and use the same in all BPEL processes. This policy has to be stored on MDS.

<property name="oracle.composite.faultPolicyFile">oramds:/apps/cfa/payroll/faultPolicies/fault-policies.xml</property>
    <property name="oracle.composite.faultBindingFile">oramds:/apps/cfa/payroll/faultPolicies/fault-bindings.xml</property>

3.       Populating FaultNotification element of AIAAsyncErrorHandlerBPELProcess’s Request message
Make sure “EBM_to_Fault.xsl” is in place in ‘XSL’ folder in project directory.  Fault polices  use this is transformation file to populate the notification message..

<from expression="ora:processXSLT('xsl/EBM_to_Fault.xsl',bpws:getVariableData('EBM_HEADER'))"/>                        <to variable="AIAAsyncErrorHandlingBPELProcessRequestMessage" part="FaultMessage"                             query="/corecom:Fault"/>
               
Above code is executed by fault policies to populate the FaultNotification Message.  SO EBM_HEADER variable and EBM_to_Fault.xsl are expected.
4.       Define catch and catchall blocks in BPEL process.

CompositeJavaAction in fault policies rethrow the error after the specified action. BPEL process catches that exception to show as faulted in EM console.  So we need to create separate Catch blocks for the exception conditions specified in fault policies.





Directly invoking AIAAsyncErrrorHandlingBPELProcess from Catch Activity.


  For Invoking  AIAAsyncErrrorHandlingBPELProcess directly from catch and catchall blocks, we can follow the steps as mentioned above or we can directly populate all the  elements in Catch or catchall blocks.
1.       Invoke AIAAsyncErrrorHandlingBPELProcess from Catch block.
2.       Populate atleast below elements in the Request message body
1.       CompositeInstance ID
2.       BPEL Process Name
3.       Payload Key (  Location number, employee number)
4.       TimeStamp
3.       Once the AIAAsyncErrrorHandlingBPELProcess has been invoked. Rethrow the exception, so that process appears as faulted in EM console

Tuesday, March 26, 2013

HOW TO CREATE USERS IN BAM


HOW TO CREATE USERS:

Oracle SOA Platform – BAM (Business Activity Monitoring) - Version: 11.1.1.3.0 and later   [Release: 11gR1 and later ]
Information in this document applies to any platform.
Goal

How to create specific users with roles in BAM so that users can see only view or create the report and not act as Administrators?


Solution

Enterprise Manager manages the Application Policies for Oracle BAM.

It is pre-configured with 4 roles for Oracle BAM application:

Administrator: Has access to all features
Report Architect: Has access to features for creating data objects and reports
Report Creator: Has access to features for creating reports
Report Viewer: Has access to features for viewing reports


Create a User and a group in the Weblogic Console by following the steps provided in the following document:

Oracle Fusion Middleware Oracle WebLogic Server Administration Console Online Help
11g Release 1 (10.3.5)
Part Number E13952-05, Section "Managing Users and Groups"

Assign the user this group
Open the Enterprise Manager start page in your web browser
Click on BAM / OracleBAMServer
Right Click on OracleBAMServer / Security / Application Policies
Click on the blue button next to the text box labeled permission to view the pre-configured polices:
Right Click on OracleBAMServer / Security / Application Roles
Click on the same blue button next to Role Name to view the pre-configured Roles
Click on a RoleName e.g. ‘Report Viewer’
Click on the green Plus sign Add Role under Members
An Add Role dialog box appears. Select Group in the Role Type and click the blue-green arrow button
This will show all the Groups created in WebLogic Console
Select the group that should be assigned to the role (e.g., the group created in step 1) and move it to the Selected Roles list
Click Ok.

Monday, August 13, 2012

Abstract WSDL vs Concrete WSDL




Issue:

Composites are in Inactive state after the server restart

Root Cause:

Concrete WSDLs are used in the place of abstract wsdl.

Solution:


<reference name="SyncWorkerEBIZProvABCSImpl"
             ui:wsdlLocation="oramds:/apps/AIAMetaData/AIAComponents/ApplicationObjectLibrary/EBIZ/Worker/wsdls/v1/SyncWorkerEBIZProvABCSImpl.wsdl">
    <interface.wsdl interface="http://xmlns.oracle.com/ABCSImpl/EBIZ/Core/SyncWorkerEBIZProvABCSImpl/V1#wsdl.interface(SyncWorkerEBIZProvABCSImpl)"/>
    <binding.ws port="http://xmlns.oracle.com/ABCSImpl/EBIZ/Core/SyncWorkerEBIZProvABCSImpl/V1#wsdl.endpoint(SyncWorkerEBIZProvABCSImpl/SyncWorkerEBIZProvABCSImpl_pt)"
                location="http://dev.soahome.com:20111/soa-infra/services/payroll/SyncWorkerEBIZProvABCSImpl/SyncWorkerEBIZProvABCSImpl?WSDL"
                soapVersion="1.1">
      <property name="weblogic.wsee.wsat.transaction.flowOption"
                type="xs:string" many="false">WSDLDriven</property>
    </binding.ws>
  </reference>

ui:wsdlLocation:  Abstract WSDL

location:  Concrete WSDL.

Steps while designing in Jdeveloper:

1. In composite.xml drag Webservice Adapter to reference lane.
2. Select the WSDL from Resource Pallette  -> Application Server -> Select default verison composite ws
3. Go to composite.xml source
4. Change ui:wsdlLocation  value to Abstract WSDL. ( WSDL from MDS)


References:

http://docs.oracle.com/cd/E17904_01/doc.1111/e17364/bestpractices.htm#BABCGHEH
https://blogs.oracle.com/aia/entry/aia_11g_best_practices_for_dec

Thursday, March 1, 2012

Oracle GridLink DataSource for SOA 11g


Oracle GridLink DataSource:


Starting from version 10.3.4 Oracle WebLogic introduces Oracle Gridlink DataSource which supports Oracle Database 11g R2 Grid based RAC.

During the SOA 11g installation  we donot have the option to enter the Grid based DataSource details.  So all the default DataSources are created as 'Generic'.

In case if you run into issues with current DataSources. Please recreate DataSources as 'Gridlink DataSources'. 

Make sure all the default parameters and values of 'Generic' Datasources are entered in 'GridLink'  Datasources as well.

Please use below documentation as reference for creation of 'GridLink Datasources'

References: