Sa 19 Sep 2009
Name comp/env/ejb not found in context “java:”
Geschrieben von Jürgen Mayer unter Erfahrungen, experience, BPEL, IBM ProcessServer
Tags: BPEL, ProcessServer, WebSphere
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);
}
Verwandte Beiträge:
- Where is ejb/BusinessFlowManagerHome deployed (0)
- Deutsches OpenOffice 3.1 zum Download bereit (0)
- Websphere App Server: Add HTTP transport Header to a JAX-RPC Client Stub (0)