experience


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);
}

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();

I want to search for some text in a directory containing log files. I want to know all lines containg this text, I use this command:

find . -type f -print | xargs grep “[text you want to search for]”

I wanted to create a webservice client with Rational Application Developer and Websphere Integration Developer. With both products I got this message:

IWAB0014E Unexpected exception occured.

This exception occurs when there is not a configured server for your client environment in the workbench. The workaround is to create at least one server via New -> Server. It worked for me.

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

Manche Log-Meldungen lesen sich einfach nur göttlich:.

CWTKE0036I: Der Dämon zur Aktualisierung von Staff-Abfragen hat  0 Aktualisierungsoperationen ausgelöst.

achso, aha und jetzt?

( in english: The Staff Query Refresh Daemon has triggered {0} refresh operations.)

Nun eins ist sicher, mit ‘Dämon’ ist nichts mit Hörnern am Kopf gemeint, sondern ein Hintergrundprozess.

Nun ein konkretes Problem habe ich mit der Meldung nicht. Bei Google gibt es zu dieser Meldung drei Treffer von IBM, klar die Meldung kommt vom Log-File eines IBM Process Servers.

Die Meldung kommt genauer gesagt von der Komponente HTM. Das dürfte der Human Task Manager sein. Im Moment verwende ich in meinem BPEL Prozess allerdings keine Human Tasks, deswegen gibt es auch nichts mit Personal zu belegen. Der Prozess, der für die Belegung von Human Tasks mit “Personal” zuständig ist hat also nichts zu tun, ok. Deswegen bekomme ich die Meldung um genau darüber informiert zu werden.

nun gut let’s go ahead.

I work with IBM Process Server currently. I created a little business process calling different web services (created with HATS). These web services are running quite long. Well the transaction time out came earlier than the webservice call could be requested. Well, my process test failed. This is the (important) part of the error message:

0000000f TimeoutManage I   WTRN0006W: Die Transaktion 0000011A9ADC727A0000000100000292B159ED84FC3BD6C8097B775B9601EEEB6C727F2F0000011A9ADC727A0000000100000292B159ED84FC3BD6C8097B775B9601EEEB6C727F2F00000001 hat nach 120 Sekunden das Zeitlimit überschritten. (in english ‘has timed out after 120 seconds.’)
0000009d TranManagerIm I   WTRN0041I: Die Transaktion 0000011A9ADC727A0000000100000292B159ED84FC3BD6C8097B775B9601EEEB6C727F2F0000011A9ADC727A0000000100000292B159ED84FC3BD6C8097B775B9601EEEB6C727F2F00000001 wurde rückgängig gemacht. (in english ‘has been rolled back’)

To make it work I increased the Total transaction lifetime timeout. You will find this here:

servers -> Application servers -> [YOUR_SERVER maybe server1] -> Open Container Services -> Click to Transaction Service

transaction_service.jpg

You may also mark the correct checkbox to make the process long running.

« Previous PageNext Page »