Search This Blog

ExecutorService - Java - Parallel execution

ExecutorService - Java - Parallel execution    


import java.util.concurrent.ExecutorService;

import java.util.concurrent.Executors;




                  ExecutorService executor = Executors.newFixedThreadPool(2);
                     
                        Runnable worker1 = new accumulator();
                        executor.execute(worker1);
                     

                        Runnable worker2 = new claim();
                        executor.execute(worker2);
                 

                        executor.shutdown();
             
                        // Wait until all threads are finish
                        while (!executor.isTerminated()) {
                         
                        }




    public class accumulator implements Runnable {
                    @Override
                    public void run() {
                        try {
                         
                        } catch(Exception e){
                            e.printStackTrace();
                        }
                    }
    }
   
   
    public  class claim implements Runnable {
                    @Override
                    public void run() {
                        try {
                     
                        } catch(Exception e){
                            e.printStackTrace();
                        }
                       
                    }
    }


XREF Usage in SOA ( Select - xref:lookupXRef , Add - Update - xref:populateXRefRow )

XRef Usage:

( Select,Add and Update)


Xref Table Name : CLR

Name : "InterfaceName" , "LastRunDate"

Select Xref :


Syntax :


xref:lookupXRef(xrefLocation as string, xrefReferenceColumnName as string,
xrefReferenceValue as string, xrefColumnName as string, needAnException as
boolean) as string
Example :

xref:lookupXRef("CLR.xref","InterfaceName","CLR022","LastRunDate",true())


Add - xref:populateXRefRow :



xref:populateXRefRow(xrefLocation as string, xrefReferenceColumnName as string,
 xrefReferenceValue as string, xrefColumnName as string, xrefValue as string, mode
 as string) as string
Parameters

  • xrefLocation: The cross reference table URI.
  • xrefReferenceColumnName: The name of the reference column.
  • xrefReferenceValue: The value corresponding to the reference column name.
  • xrefColumnName: The name of the column to be populated.
  • xrefValue: The value to be populated in the column.
  • modeThe mode in which the xref:populateXRefRow function populates the column. You can specify any of the following values: ADDLINK, or UPDATE
Example :

xref:populateXRefRow("CLR.xref","InterfaceName","CLR022","LastRunDate",xp20:format-dateTime(xp20:current-dateTime(),'[Y0001]-[M01]-[D01] [H01]:[m01]:[s01].[f001]'),"ADD")


Update :


xref:populateXRefRow("CLR.xref","InterfaceName","CLR022","LastRunDate",xp20:format-dateTime(xp20:current-dateTime(),'[Y0001]-[M01]-[D01] [H01]:[m01]:[s01].[f001]'),"UPDATE")

Common Used code for Dev

DVM Syntax:

dvm:lookupValue("DVM Location ","Key","ValueName","Value","")

Example :
dvm:lookupValue("oramds:/apps/Hello/dvm/wave3/xyz.dvm","Key","compName","Value","")

Count Line for large file in Java: ( Fast Execution )

    /**
     * @param filePath
     * @return
     * @throws FileNotFoundException
     * @throws IOException
     */
    public int countLineNumbers(String filePath) throws FileNotFoundException,
                                                        IOException {

        LineNumberReader lnr =
            new LineNumberReader(new FileReader(new File(filePath)));
        lnr.skip(Long.MAX_VALUE);
        int lineCount = lnr.getLineNumber() + 1;
        lnr.close();
        return lineCount;
    }

Move File and Copy File logic in Java:



    public void moveWorkingFile(String sourceFile, String destinationPath) {
            try {
                File afile = new File(sourceFile);
                afile.renameTo(new File(destinationPath));
            } catch (Exception e) {
                 throw ex;
            }
        }
         
       
     import oracle.j2ee.ws.common.util.FileUtils;
  
    public void copyWorkingFile(String sourceFile,
                                    String destinationPath) throws Exception {
            try {
                FileUtils.copyFile(new File(sourceFile),
                                   new File(destinationPath));
            } catch (Exception ex) {
                             throw ex;
            }
        }

 

StringTokenizer :

 private HashMap<String, String>  propertiesMap = new HashMap<String, String>();

strProps ( userName=xyz | password = abc | url = http)

    private void loadCommonProperties(String strProps) throws Exception {

          String strTempProps = "";
            try {
                StringTokenizer tok = new StringTokenizer(strProps, "|");
                while (tok.hasMoreTokens()) {
                  strTempProps = tok.nextToken();
                    if (strTempProps.contains("=")) {
                        String[] strKeyVal = strTempProps.split("=");
                        if( strKeyVal.length < 2 ){
                            propertiesMap.put(strKeyVal[0], " ");
                                }else{
                        propertiesMap.put(strKeyVal[0], strKeyVal[1]);
                                }
                    }
                }
           } catch (Exception ex) {
                       throw ex;
            }
         
        }


Value get from Map

propertiesMap.get("userName");



Creating Connection in Java code from Data Source JNDI Name:


private Connection getJdbcConnection(String jdbcParams) throws SQLException,
                                                                   NamingException,
                                                                   ClassNotFoundException {
        try {
            String[] strParam = jdbcParams.split(",");

            String serverUrl = strParam[0];
            String jndi = strParam[1];
            Properties prop = new Properties();
            prop.put(Context.INITIAL_CONTEXT_FACTORY,
                     "weblogic.jndi.WLInitialContextFactory");
            prop.put(Context.PROVIDER_URL, serverUrl);

            InitialContext ctx = new InitialContext(prop);

            DataSource dataSource = (DataSource)ctx.lookup(jndi);
           Connection objConn = dataSource.getConnection();
  }catch(Exception ex){
  throw ex;
  }
  return objConn;

  }



Java code to Convert Unix File format to DOS File Format

Note : Below logic only works in Unix Flavor platform.

    public static String convertUnixToDosFile(String sourceFile,String targetFile) {

        try {

            Runtime.getRuntime().exec("unix2dos " + sourceFile + " " +   targetFile);

        } catch (IOException e) {

            e.printStackTrace();

        }
        return "true";
    }


SingleTon Property very important if code deployed in Cluster Env


SingleTon Property very important if code deployed in Cluster Env



 <reference name="CopyMoveFileOperation"   ui:wsdlLocation="CopyMoveFileOperation.wsdl">
    <interface.wsdl interface="http://xmlns.oracle.com/pcbpel/adapter/file/CopyMoveFileOperation#wsdl.interface(CopyFile_ptt)"/>
    <binding.jca config="CopyMoveFileOperation_file.jca">
       <property name="singleton">true</property>
    </binding.jca>
  </reference>

IHelperBean Class - Predefined SOA Class to set JCA properties in Spring Component

IHelperBean Class - Predefined SOA Class to set JCA properties in Spring Component 


    Most of the Business logic are not simple to achieve in SOA ( BPEL ) or BPM, to make process more faster and simple to maintain Spring approach  can be use. Calling SOA adapter in Spring also simple.

Question ???    

How to set JCA properties in Run Time with out hard coding properties in .JCA  and I know how to use in BPEL , But how to set in Spring ????


IHelper Bean  ( Note don't change any name for IHelper Bean)

Import Statement :
import oracle.soa.platform.component.spring.beans.IHeaderHelperBean;


 private IHeaderHelperBean headerHelper;


Getters and Setters 


    public void setHeaderHelper(IHeaderHelperBean headerHelper) {
        this.headerHelper = headerHelper;
    }

    public IHeaderHelperBean getHeaderHelper() {
        return headerHelper;

    }


Code Logic :


      headerHelper.setHeaderProperty("jca.file.FileName", "TmpBPCL.txt");
      headerHelper.setHeaderProperty("jca.file.Directory", filePath);



Spring.xml

<beans>
  <bean class="com.bcbsri.spring.mapUtil.ClaimProcessor"
        id="CLM030837IpEditsFileBean">
    <property name="headerHelper" ref="headerHelperBean"/>
  </bean>
</beans>