Friday, May 15, 2015

Oracle SOA BPM : Get jca reference properties using api

Some times we found out while using config plans to change schema for the package or procedure it was not reflecting.  In order to check in all the code, we had to manually go into EM console and check the JCA reference for schema name.

After some exploration, i found out that we can check schema names for all composites quickly  using soa facade api's ,below is the java code.

package com.raylabs.soa.management;
import java.util.ArrayList;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import javax.naming.Context;
import oracle.soa.management.facade.Binding;
import oracle.soa.management.facade.Component;
import oracle.soa.management.facade.Composite;
import oracle.soa.management.facade.Locator;
import oracle.soa.management.facade.LocatorFactory;
import oracle.soa.management.facade.Reference;
import oracle.soa.management.util.CompositeFilter;
public class GetReferencePropertiesForAllDeFaultRevisions {
private static String hostName =
"t3://xyz.com/soa-infra";
public GetReferencePropertiesForAllDeFaultRevisions() {
super();
}
public static void main(String[] args) {
Locator loc = null;
try {
loc = LocatorFactory.createLocator(getConnectionDetails());
CompositeFilter compositeFilter = new CompositeFilter();
compositeFilter.setPartition("default");
List<Composite> composites = new ArrayList<Composite>();
composites = loc.getComposites(compositeFilter);
Iterator compositesIterator = composites.iterator();
System.out.println("-----------------------------------------------------");
while (compositesIterator.hasNext()) {
Composite composite = (Composite)compositesIterator.next();
if (composite.isDefaultRevision()) {
System.out.println("Composite name :" +
composite.getCompositeDN().getCompositeName());
System.out.println("Composite name :" +
composite.getCompositeDN().getRevision());
System.out.println("Default revision :" +
composite.isDefaultRevision());
List<Reference> list = composite.getReferences();
//Get details for composite.xml
// String asString = composite.getDocumentAsString("composite.xml");
// System.out.println(asString);
Iterator<Reference> iterator = list.iterator();
while (iterator.hasNext()) {
Reference next = iterator.next();
System.out.println("Reference name :" +
next.getName());
try {
System.out.println("WSDL URL :" +
next.getWSDLURL());
} catch (UnsupportedOperationException uoe) {
// TODO: Add catch code
//uoe.printStackTrace();
System.out.println("Unsupported getWSDLURL()");
}
List<Binding> bindings = next.getBindings();
Iterator<Binding> bIterator = bindings.iterator();
while (bIterator.hasNext()) {
Binding binding = bIterator.next();
//System.out.println(binding.getType());
Map<String, String> map = binding.getProperties();
Set<Map.Entry<String, String>> entrySet =
map.entrySet();
Iterator<Map.Entry<String, String>> eiterator =
entrySet.iterator();
while (eiterator.hasNext()) {
Map.Entry<String, String> entry =
eiterator.next();
System.out.println("Property :" +
entry.getKey() + " :" +
entry.getValue());
}
}
System.out.println("-------------------------------------------------");
}
System.out.println("-------------------------------------------------");
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
loc.close();
}
}
private static Hashtable getConnectionDetails() {
Hashtable jndiProps = new Hashtable();
jndiProps.put(Context.PROVIDER_URL, hostName);
jndiProps.put(Context.INITIAL_CONTEXT_FACTORY,
"weblogic.jndi.WLInitialContextFactory");
jndiProps.put(Context.SECURITY_PRINCIPAL, "xxxx");
jndiProps.put(Context.SECURITY_CREDENTIALS, "yyyy");
jndiProps.put("dedicated.connection", "true");
return jndiProps;
}
}











Thursday, May 7, 2015

Work around when Audit trail is not visible in EM : Unable to display Flowtrace due to exception while initializing object, please review logs for detailed information

Some times when you open an instance in EM console, you might not be able to view the audit trail.

The error might be as below

Unable to display Flowtrace due to exception while initializing object, please review logs for detailed information.

>> Exception occured while retrieving the Flowtrace XML for the Composite Instance; ECID: 41343d22bdb09a74:-2967886c:144cf30c70b:-8000-000000000296dd8a
>> java.lang.NullPointerException
  at oracle.sysman.emai.model.sca.share.composite.FlowTraceModel.setFloatraceModelInfo(FlowTraceModel.java:185)
  at oracle.sysman.emai.model.sca.share.composite.FlowTraceModel.initialize(FlowTraceModel.java:90)
  at oracle.sysman.emai.model.sca.EMEntityModel._initializeEntityData(EMEntityModel.java:28)
  at oracle.sysman.emai.model.sca.common.SCAEntityObject.initializeSCAData(SCAEntityObject.java:124)
  at oracle.sysman.emai.model.sca.SCAObject.initializeData(SCAObject.java:74)
  at oracle.sysman.core.model.util.ModelUtil$EMObjectResetter.initOrResetEMObject(ModelUtil.java:319)
  at oracle.sysman.core.model.util.ModelUtil$EMObjectResetter.access$000(ModelUtil.java:280)
  at oracle.sysman.core.model.util.ModelUtil.initializeMBEMObjects(ModelUtil.java:231)
  at oracle.sysman.core.model.util.ModelUtil.initializeAllEMObjects(ModelUtil.java:128)
  at oracle.sysman.core.model.util.ModelUtil.initializeAllEMObjects(ModelUtil.java:101)
  at oracle.sysman.emSDK.adfext.ctlr.EMPagePhaseListener.doPrePrepareModel(EMPagePhaseListener.java:867)
  at oracle.sysman.emSDK.adfext.ctlr.EMPagePhaseListener.beforePhase(EMPagePhaseListener.java:795)
  at oracle.adfinternal.controller.lifecycle.ADFLifecycleImpl$PagePhaseListenerWrapper.beforePhase(ADFLifecycleImpl.java:558)
  at oracle.adfinternal.controller.lifecycle.LifecycleImpl.internalDispatchBeforeEvent(LifecycleImpl.java:100)
  at oracle.adfinternal.controller.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:191)
  at oracle.adfinternal.controller.faces.lifecycle.ADFPhaseListener.startPageLifecycle(ADFPhaseListener.java:203)
  at oracle.adfinternal.controller.faces.lifecycle.ADFPhaseListener$1.after(ADFPhaseListener.java:377)
  at oracle.adfinternal.controller.faces.lifecycle.ADFPhaseListener.afterPhase(ADFPhaseListener.java:88)
  at oracle.adfinternal.controller.faces.lifecycle.ADFLifecyclePhaseListener.afterPhase(ADFLifecyclePhaseListener.java:53)
  at oracle.adfinternal.view.faces.lifecycle.LifecycleImpl._executePhase(LifecycleImpl.java:520)
  at oracle.adfinternal.view.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:207)
  at javax.faces.webapp.FacesServlet.service(FacesServlet.java:265)
  at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)
  at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
  at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:301)
  at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26)
  at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
  at oracle.sysman.emSDK.license.LicenseFilter.doFilter(LicenseFilter.java:164)


I had to debug the issue, so i tried a new way.

1. Get all the components with id associated with the instance.
2. Now i had list of components with component instance id and i will get list of error messages


package com.raylabs.soa.management;
import java.util.ArrayList;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.List;
import javax.naming.Context;
import oracle.soa.management.facade.ComponentInstance;
import oracle.soa.management.facade.CompositeInstance;
import oracle.soa.management.facade.Locator;
import oracle.soa.management.facade.LocatorFactory;
import oracle.soa.management.util.ComponentInstanceFilter;
import oracle.soa.management.util.CompositeInstanceFilter;
public class GetComponentsBasedOnCompositeId {
private static String id ="1450155";
public static void main(String[] args) {
Locator loc = null;
List exclusions = new ArrayList();
try {
loc = LocatorFactory.createLocator(getConnectionDetails());
CompositeInstanceFilter compositeInFilter =
new CompositeInstanceFilter();
compositeInFilter.setId(id);
compositeInFilter.setOrderBy(CompositeInstanceFilter.ORDER_BY_CREATION_DATE_ASC);
List<CompositeInstance> compositeInstances =
loc.getCompositeInstances(compositeInFilter);
System.out.println(compositeInstances.size());
Iterator compositeInstancesIterator =
compositeInstances.iterator();
while (compositeInstancesIterator.hasNext()) {
CompositeInstance compositeInstance =
(CompositeInstance)compositeInstancesIterator.next();
if (!exclusions.contains(compositeInstance.getCompositeDN().getCompositeName())) {
System.out.println("Parent composite name :" +
compositeInstance.getCompositeDN().getCompositeName());
System.out.println("Parent composite instance id :" +
compositeInstance.getId());
System.out.println("Title :" +
compositeInstance.getTitle());
System.out.println("Created date :" +
compositeInstance.getCreationDate());
if (compositeInstance.getState() ==
CompositeInstance.STATE_COMPLETED_SUCCESSFULLY) {
System.out.println("State : COMPLETED_SUCCESSFULLY");
} else if (compositeInstance.getState() ==
CompositeInstance.STATE_FAULTED) {
System.out.println("State : STATE_FAULTED");
} else if (compositeInstance.getState() ==
CompositeInstance.STATE_RUNNING) {
System.out.println("State : STATE_RUNNING");
} else if (compositeInstance.getState() ==
CompositeInstance.STATE_STALE) {
System.out.println("State : STATE_STALE");
} else if (compositeInstance.getState() ==
CompositeInstance.STATE_RECOVERY_REQUIRED) {
System.out.println("State : STATE_RECOVERY_REQUIRED");
} else if (compositeInstance.getState() ==
CompositeInstance.STATE_SUSPENDED) {
System.out.println("State : STATE_SUSPENDED");
} else if (compositeInstance.getState() ==
CompositeInstance.STATE_TERMINATED_BY_USER) {
System.out.println("State : STATE_SUSPENDED");
} else if (compositeInstance.getState() ==
CompositeInstance.STATE_UNKNOWN) {
System.out.println("State : STATE_UNKNOWN");
} else {
System.out.println("State : Undefined");
}
ComponentInstanceFilter filter1 =
new ComponentInstanceFilter();
filter1.setECID(compositeInstance.getECID());
filter1.setOrderBy(ComponentInstanceFilter.ORDER_BY_CREATION_DATE_ASC);
List<ComponentInstance> childComponentInstances =
compositeInstance.getChildComponentInstances(filter1);
Iterator<ComponentInstance> iterator =
childComponentInstances.iterator();
while (iterator.hasNext()) {
ComponentInstance componentInstance = iterator.next();
System.out.println("Child Component name :" +
componentInstance.getComponentName());
System.out.println("Child Component instance id :" +
componentInstance.getId());
System.out.println("State :" +
componentInstance.getNormalizedStateAsString());
System.out.println("Payload :" +
componentInstance.getAuditTrail());
System.out.println("<-------------------------------------------->");
}
System.out.println("--------------------------------------------");
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
loc.close();
}
}
private static Hashtable getConnectionDetails() {
Hashtable jndiProps = new Hashtable();
jndiProps.put(Context.PROVIDER_URL,
"t3://xyz.com:1234/soa-infra");
jndiProps.put(Context.INITIAL_CONTEXT_FACTORY,
"weblogic.jndi.WLInitialContextFactory");
jndiProps.put(Context.SECURITY_PRINCIPAL, "xxxx");
jndiProps.put(Context.SECURITY_CREDENTIALS, "yyyyyy");
jndiProps.put("dedicated.connection", "true");
return jndiProps;
}
}
package com.raylabs.soa;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.List;
import javax.naming.Context;
import oracle.soa.management.facade.Fault;
import oracle.soa.management.facade.Locator;
import oracle.soa.management.facade.LocatorFactory;
import oracle.soa.management.util.FaultFilter;
public class GetFaultsForCompositeId {
public GetFaultsForCompositeId() {
super();
}
public static void main(String[] args) {
String compositeId="1440095";
Locator locator = null;
try{
locator = LocatorFactory.createLocator(getConnectionForLocator());
FaultFilter faultFilter = new FaultFilter();
faultFilter.setCompositeInstanceId(compositeId);
System.out.println("---------------------------------------------------------------");
faultFilter.setOrderBy(FaultFilter.ORDER_BY_CREATION_DATE_DESC);
// faultFilter.setECID("d96112c160649698:231b4e4c:14b863930d4:-8000-00000000001b14a5");
//faultFilter.setRecoverable(true);
faultFilter.setPageSize(10);
List<Fault> list = locator.getFaults(faultFilter);
Iterator<Fault> faults = list.iterator();
while (faults.hasNext()) {
Fault fault = faults.next();
System.out.println(fault.getCompositeInstanceId());
System.out.println(fault.getCreationDate());
System.out.println(fault.getComponentName());
System.out.println(fault.getMessage());
System.out.println("---------------------------------------------------------------");
}
System.out.println("---------------------------------------------------------------");
} catch (Exception e) {
System.out.println("Unknown Exception ");
e.printStackTrace();
} finally {
try {
locator.close();
System.out.println("Locator closed successfully");
} catch (Exception e) {
System.out.println("Exception while closing Locator handle");
e.printStackTrace();
}
}
}
public static Hashtable getConnectionForLocator() {
Hashtable jndiProps = new Hashtable();
jndiProps.put(Context.INITIAL_CONTEXT_FACTORY,
"weblogic.jndi.WLInitialContextFactory");
jndiProps.put(Context.PROVIDER_URL,
"t3://xyz.com:12354/soa-infra");
jndiProps.put(Context.SECURITY_PRINCIPAL, "xxx");
jndiProps.put(Context.SECURITY_CREDENTIALS, "yyyy");
jndiProps.put("dedicated.connection", "true");
return jndiProps;
}
}
view raw GetErrors hosted with ❤ by GitHub



Now i know which component has error.

Whether its BPEL, BPMN, MEDIATOR, HUMAN TASK etc I will goto the respective service engines in EM console, put the component instance id and will be able to view the faults with audit trail of that particular component.