You know I was working with the Human Task Manager API, so it was interesting for me to know where the EJB is deployed. There is the information:

On IBM ProcessServer:

ejb/BusinessFlowManagerHome ist part of BPE_Container Application. Concrete it’s a part of the EJB module bpecontainer.jar inside this application. ejb/HumanTaskManagerHome is part of TaskContainer Application, located inside EJB module taskejb.jar.


I currently working with IBM ProcessServer and I created a BPEL process doing some stuff.

I wanted to use the Human Task API inside a snippet. I got this error message:

javax.naming.NameNotFoundException: Name comp/env/ejb not found in context “java:”

How to make it work:

Add a reference to the HumanTaskManager EJB at your EJB project, in my case this was TestProcessEJB . There is a ejb-jar.xml under ejbModule/META-INF/. Don’t forget to add the JNDI name to the EJB reference at the references tab. If this JNDI name is not set you will receive such an error message:

Stack-Trace: com.ibm.websphere.naming.CannotInstantiateObjectException: Exception occurred while the JNDI NamingManager was processing a javax.naming.Reference object.  Root exception is javax.naming.NameNotFoundException: Context: ctrNode01Cell/nodes/wps/servers/server1, name: ejb/HumanTaskManagerHome: First component in name HumanTaskManagerHome not found.  Root exception is org.omg.CosNaming.NamingContextPackage.NotFound: IDL:omg.org/CosNaming/NamingContext/NotFound:1.0

java.lang.ClassCastException: Unable to load class: com.ibm.task.api._HumanTaskManagerHome_Stub

Now have have to package task137650.jar  with your enterprise application. In my case I had to place this file to TEST_ProcessWeb\WebContent\WEB-INF\lib\task137650.jar. In my case I found it here: IBM\Rational\SDP\6.0\runtimes\bi_v6\ProcessChoreographer\client

If you work with the BusinessFlowManager Bean inside your snippet you have to add bpe137650.jar.

Now this code would work inside a Java Snippet:

TKIID tkiid = null;
try
{
System.out.println(”Prozess Starter ” + processInstance().getStarter());
// Obtain the default initial JNDI context

Context initialContext = new InitialContext();
Object resultHTMHome = initialContext.lookup(”java:comp/env/ejb/HumanTaskManagerHome”);

// Get the home interface
HumanTaskManagerHome taskHome =
(HumanTaskManagerHome) javax.rmi.PortableRemoteObject.narrow(resultHTMHome, HumanTaskManagerHome.class);

// Create the EJB
HumanTaskManager taskManager = taskHome.create();

QueryResultSet result = taskManager.query(”DISTINCT TASK.TKIID”,
“TASK.NAME = ‘ATestTask’”,
(String)null, (Integer)null, (TimeZone)null);
if (result.size() > 0)
{
result.first();
tkiid = (TKIID) result.getOID(1);
System.out.println(”TKIID+ ” + tkiid.toString() );
Task startCreateECOTask = taskManager.getTask(tkiid);
String ownerOfStartCreateECOTask = startCreateECOTask.getOwner();startCreateECOTask.
System.out.println(”ownerOfStartCreateECOTask ” + ownerOfStartCreateECOTask);
}
}
catch (Exception e)
{
e.printStackTrace(System.out);
}

OpenOffice 3.1 ist fertig, siehe hier die Meldung von heise.de. Zu den neuen Funktionen am besten den Artikel bei heise open lesen. Die deutsche Version von OO ist inzwischen auch hier zum Download verfügbar.

com.ibm.websphere.webservices.Constants.REQUEST_TRANSPORT_PROPERTIES contains this string: com.ibm.websphere.webservices.requestTransportProperties

This constant is available since Webpshere App Server 6.0.  It’s quite easy to add a HTTP transport header to a JAX-RPC-Client-Stub, look to this:

String endpoint = “http://localhost:8080/YOURAPP/services/YourService”;

java.net.URL endpoint = new URL(endpoint );

YourServiceLocator locator = new YourServiceLocator ();
YourService stub= locator.getYourService(endpointUrl);

java.util.HashMap sendTransportHeaders = new java.util.HashMap();
sendTransportHeaders.put(”Cookie”,”YourCookieName=YourCookieValue”);
// this is needed for basic authentication header:

((javax.xml.rpc.Stub) stub)._setProperty(javax.xml.rpc.Stub.USERNAME_PROPERTY, “user”);
((javax.xml.rpc.Stub) stub)._setProperty(javax.xml.rpc.Stub.PASSWORD_PROPERTY, “password”);
((javax.xml.rpc.Stub) stub)._setProperty(Constants.REQUEST_TRANSPORT_PROPERTIES, sendTransportHeaders);

//now call your service

stub.anyMethod();

There are some static methods which can be used within a process snippet to perform some context relevant functions, for e.g. processInstance() returns a ProcessInstanceData object of the  current process. processInstance().getStarter() returns process starter user id. There are some other methods, further information see here.

‘Error 403 Forbidden!’ was returned as response to a GET request to the IBM Workplace startpage because of a corrupt LtpaToken. If you get such an exception (see below) have look to the LtpaToken cookie. It can’t be verified, in my case last two characters of the LtpaToken cookie value were missing.

WebCollaborat A SECJ0056E: Authentication failed for reason 310

CWWBF0024E Process [YOUR_PROCESS] of application [YOUR_APP] is not stopped. Stop the templates manually before updating or uninstalling a process application

You have to stop the process template first, before any updates to the process can happen. It wont help to restart the application or even the server.

Go to websphere process server admin console /ibm/console.

Go to ‘Applications’ -> Enterprise Applications > YOUR_APP > EJB Modules > YOUR_APPEJB.jar

Go to Business Processes and stop the running process template. Save changes. There is no need to restart the server.

I currently work with HATS ( Host Access Transformation Services ) . I created some webservices to access HOST applications with it.
HATS admin console is deployed under /[YOUR_HATS_APPLICATION]/hatsadmin/admin.

Next Page »