Tuesday, October 29, 2013

[JDeveloper] javax.net.ssl.SSLKeyException: [Security:090542] Certificate chain received from soa-dev.corp.xxx.com - 10.XXX.XXX.XXX was not trusted causing handshake failure

 ISSUE:-


CAUSE:-

This issue is because the client (JDev) is not trusting the certificate chain received from the server. So the solution here is to add the certificate of the server into trust store of Jdeveloper.

SOLUTION:-

1.       Open JDeveloper
2.       Goto Tools -> Preferences -> Credentials




1
3. Go to the location mentioned in “Client Trusted Certificate Keystore”
4. Backup DemoTrust.jks
5. Import the public key/certificate of the server you are trying to connect into  DemoTrust.jks.
6. Restart Jdev
7. Try now

Friday, October 25, 2013

JAVA API to abort RUNNING SOA Composite Instances

I got a requirement from our client to create a JAVA API that can abort all the RUNNING composite instances. This was required as purging script do not purge composite instances in running instances.
JAVA API Source Code-

import java.util.Hashtable;
import java.util.List;
import javax.naming.Context;
import oracle.soa.management.facade.Component;
import oracle.soa.management.facade.ComponentInstance;
import oracle.soa.management.facade.Composite;
import oracle.soa.management.facade.Locator;
import oracle.soa.management.facade.LocatorFactory;
import oracle.soa.management.util.ComponentInstanceFilter;
import oracle.soa.management.util.CompositeInstanceFilter;
import oracle.soa.management.facade.CompositeInstance;
import oracle.soa.management.CompositeDN;

public class abortComposite {
        public abortComposite() {
        super();
        }
        public void abortRunningComposite() {
        Locator locator = null;
        Hashtable jndiProps = new Hashtable();
        //Connection Details to Connect to Server
        jndiProps.put(Context.PROVIDER_URL, "t3://hostname:portnumber/soa-infra");
        jndiProps.put(Context.INITIAL_CONTEXT_FACTORY,  "weblogic.jndi.WLInitialContextFactory");
        jndiProps.put(Context.SECURITY_PRINCIPAL, "weblogic");
        jndiProps.put(Context.SECURITY_CREDENTIALS, "password");
        jndiProps.put("dedicated.connection", "true");

        try {
                //Connect to SOA Server
                locator = LocatorFactory.createLocator(jndiProps);
                System.out.println("Connected to SOA Server.");
                java.util.List
compositeDN=locator.listComposites();
                CompositeInstanceFilter filter = new CompositeInstanceFilter();
                //Set Minimum Creation Time
                filter.setMinCreationDate(new java.util.Date("Tue Aug 10 13:22:02 PDT 2013"));
                //Set Maximum Creation Time
                filter.setMaxCreationDate(new java.util.Date("Tue Aug 30 13:22:02 PDT 2013"));
                //Set for RUNNING State
                filter.setState(0);
                Composite composite=null;
                List
obInstances=null;
                //For each of the returned composite
                for (CompositeDN compositeDN1 : compositeDN) {
                        composite = locator.lookupComposite(compositeDN1);
                        //Get composite instances by filter
                        obInstances = composite.getInstances(filter);
                        //for each of the returned composite instances
                        for (CompositeInstance instance : obInstances) {
                                System.out.println(" DN: " + instance.getCompositeDN() + " Instance: " + instance.getId() + " creation-date: " + instance.getCreationDate() + " state (" + instance.getState() + "): " + getStateAsString(instance.getState()));
                                //Set up a component filter
                                ComponentInstanceFilter cInstanceFilter = new ComponentInstanceFilter();
                                //Get child component instances
                                List
childComponentInstances = instance.getChildComponentInstances(cInstanceFilter);
                                //For each child component instance
                                 for (ComponentInstance cInstance : childComponentInstances) {
                                        System.out.println(" -> componentinstance: " + cInstance.getComponentName() + " type: " + cInstance.getServiceEngine().getEngineType() + " state: " +getStateAsString(cInstance.getState()));
                                        System.out.println("State: "+cInstance.getNormalizedStateAsString());
                                        }
                                instance.abort();
                                }
                                obInstances=null;
                }
        }
        catch (Exception e) {
        System.out.println("Exception in API " + e);
        }
        }
        private String getStateAsString(int state){
                //Note that this is dependent on whether the composite state is captured or not
                if (state == CompositeInstance.STATE_COMPLETED_SUCCESSFULLY)
                        return ("success");
                else if (state == CompositeInstance.STATE_FAULTED)
                        return ("faulted");
                else if (state == CompositeInstance.STATE_RECOVERY_REQUIRED)
                        return ("recovery required");
                else if (state == CompositeInstance.STATE_RUNNING)
                        return ("running");
                else if (state == CompositeInstance.STATE_STALE)
                        return ("stale");
                else
                        return ("unknown");
        }

        public static void main(String[] args) {
        abortComposite  abortcomposite=new abortComposite();
        abortcomposite.abortRunningComposite();
        }
}
 


Steps:-
Set Classpath
export CLASSPATH=$CLASSPATH:$ORACLE_FMW_HOME/oracle_common/soa/modules/oracle.soa.mgmt_11.1.1/soa-infra-mgmt.jar:$ORACLE_FMW_HOME/oracle_common/modules/oracle.fabriccommon_11.1.1/fabric-common.jar:$ORACLE_FMW_HOME/wlserver_10.3/server/lib/weblogic.jar:$ORACLE_FMW_HOME/oracle_common/modules/oracle.jrf_11.1.1/jrf-api.jar

Compile the code
javac abortComposite.java

Execute the Code
java abortComposite