Topic: [Resolved] Standalone JAVA client to connect to the Bonita execution engine
I have a java class intending to conenct to the process engine via api-type "EJB3".
I have checked through the conf.bat file and have verified the properties of
a. initial context factory,
b. provider url
c. api-type
The Jaas config file contains the following entry-
BonitaAuth {
org.ow2.bonita.identity.auth.BonitaIdentityLoginModule required;
};
BonitaStore {
org.ow2.bonita.identity.auth.BonitaRemoteLoginModule required;
org.jboss.security.ClientLoginModule required password-stacking=useFirstPass;
};
The exception I get here is -
Mar 27, 2012 4:44:07 PM org.ow2.bonita.util.AccessorUtil resetContext
INFO: API-Type: EJB3 has been specified through property: org.ow2.bonita.api-type
org.ow2.bonita.facade.exception.BonitaInternalException: Bonita Error: baa_CAPII_1
Ouch! Unexpected error: java.lang.NoSuchMethodException: javax.naming.Reference.getProcess(org.ow2.bonita.facade.uuid.ProcessDefinitionUUID, java.util.Map)
at org.ow2.bonita.facade.interceptor.ClientRemoteAPIInterceptor.invoke(ClientRemoteAPIInterceptor.java:152)
at $Proxy2.getProcess(Unknown Source)
at com.self.bonita.validator.service.BonitaClientApp.main(BonitaClientApp.java:69)
Caused by: java.lang.NoSuchMethodException: javax.naming.Reference.getProcess(org.ow2.bonita.facade.uuid.ProcessDefinitionUUID, java.util.Map)
at java.lang.Class.getMethod(Unknown Source)
at org.ow2.bonita.facade.interceptor.ClientRemoteAPIInterceptor.invoke(ClientRemoteAPIInterceptor.java:135)
... 2 more
The java code for the client is -
private static final String LOGIN = "admin";
private static final String PSSWD = "bpm";
private static final String jaasFile = "jaas-jboss.cfg";
public static void main(String[] args) throws Exception {
//set system properties
System.setProperty(BonitaConstants.API_TYPE_PROPERTY, "EJB3");
/*System.setProperty(BonitaConstants.INITIAL_CONTEXT_FACTORY_PROPERTY, "org.jnp.interfaces.NamingContextFactory");
System.setProperty(BonitaConstants.PROVIDER_URL_PROPERTY, "jnp://127.0.0.1:1099");*/
System.setProperty(BonitaConstants.JAAS_PROPERTY, jaasFile);
System.setProperty("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory");
System.setProperty("java.naming.provider.url", "jnp://localhost:1099");
//login
//verify the user exists
LoginContext loginContext = new LoginContext("BonitaStore",
new SimpleCallbackHandler(LOGIN, PSSWD));
loginContext.login();
//get he APIs
//final ManagementAPI managementAPI = AccessorUtil.getManagementAPI();
final RuntimeAPI runtimeAPI = AccessorUtil.getAPIAccessor().getRuntimeAPI();
final QueryRuntimeAPI queryRuntimeAPI = AccessorUtil.getAPIAccessor().getQueryRuntimeAPI();
final QueryDefinitionAPI queryDefinitionAPI = AccessorUtil.getAPIAccessor().getQueryDefinitionAPI();
try {
ProcessDefinitionUUID processUUID = new ProcessDefinitionUUID("ExternalWebAppIntegratn", "1.0");
ProcessDefinition process = queryDefinitionAPI.getProcess(processUUID);
System.out.println("BonitaClientApp.main() [" + process + "]");
//instantiate process
ProcessInstanceUUID instanceUUID = runtimeAPI.instantiateProcess(processUUID);
System.out.println("----------------\nNew process instance Created\n----------------");
final Collection<LightTaskInstance> taskList = queryRuntimeAPI.getLightTaskList(instanceUUID, ActivityState.READY);
if (taskList.size() != 1) {
throw new Exception("Incorrect list size. Actual size: " + taskList.size());
}
//execute task
final LightTaskInstance taskInstance = taskList.iterator().next();
runtimeAPI.executeTask(taskInstance.getUUID(), true);
System.out.println("----------------\nTask executed\n----------------");
final InstanceState state = queryRuntimeAPI.getProcessInstance(instanceUUID).getInstanceState();
/*if(!state.equals(InstanceState.FINISHED)){
throw new Exception("Incorrect state. Actual state: " + state);
}*/
System.out.println("----------------\nApplication executed sucessfully\n----------------");
} catch (Exception e) {
e.printStackTrace();
} finally {
loginContext.logout();
}
}
Kindly let me knwo what I am doing wrong here.
Regards
Chandan.
