Troubleshooting: JNDI NameNotFoundException on startup (WebSphere)
Symptom
Depending on how you deploy Process Commander with WebSphere, you may choose either of the following file types:
- WAR (Web Archive) files
- EAR (Enterprise Archive) files
When installing Process Commander, two examples of these types of files are:
prweb.war – runs all Process Commander classes in the Web tier and is good for quick deployment.
preweb_j2ee1.4.ear – runs all Process Commander classes in the Web tier, but also contains EJBs to run Service EJB and communicate with Process Commander.
The install scripts for support both .war and .ear files. When you deploy prweb.war with WebSphere, the EJB references are defined in WebSphere’s web.xml file. Since prweb.war does not use the EJB components with Process Commander, the following error appears when you start Process Commander:
[11/18/07 1:48:50:576 EST] 00000018 Helpers W NMSV0605W: A Reference object looked up from the context "java:" with the name "comp/env/ejb/Engin eBMT" was sent to the JNDI Naming Manager and an exception resulted. Reference data follows: Reference Factory Class Name: com.ibm.ws.naming.util.IndirectJndiLookupObjectFactory Reference Factory Class Location URLs: <null> Reference Class Name: java.lang.Object Type: JndiLookupInfo Content: JndiLookupInfo: jndiName="ejb/PREngineBMT"; providerURL=""; initialContextFactory=""
Solution
This error is not detrimental to your system and can be ignored. Process Commander runs correctly. To prevent this error message from appearing in the future, do the following:
1) In the ibm-web-bnd.xml file, remove the following ejbRefBinding elements:
<ejbRefBindings xmi:id="EjbRefBinding_1" jndiName="ejb/PREngineBMT">
<bindingEjbRef href="https://docs-previous.pega.com/WEB-INF/web.xml#EjbRef_1"/>
</ejbRefBindings>
<ejbRefBindings xmi:id="EjbRefBinding_2" jndiName="ejb/PREngineCMT">
<bindingEjbRef href="https://docs-previous.pega.com/WEB-INF/web.xml#EjbRef_2"/>
</ejbRefBindings>
<ejbRefBindings xmi:id="EjbRefBinding_3" jndiName="ejb/PREngineBMT">
<bindingEjbRef xmi:type="com.ibm.etools.j2ee.common:EJBLocalRef" href="https://docs-previous.pega.com/WEB-INF/web.xml#EJBLocalRef_1"/>
</ejbRefBindings>
<ejbRefBindings xmi:id="EjbRefBinding_4" jndiName="ejb/PREngineCMT">
<bindingEjbRef xmi:type="com.ibm.etools.j2ee.common:EJBLocalRef" href="https://docs-previous.pega.com/WEB-INF/web.xml#EJBLocalRef_2"/>
</ejbRefBindings>
2) In the web.xml file, remove the following ejb-ref elements:
<!-- The PegaRULES Enterprise Tier EJB -->
<ejb-ref id="EjbRef_1">
<description><![CDATA[Reference to PegaRULES Engine EJB]]></description>
<ejb-ref-name>ejb/EngineBMT</ejb-ref-name>
<ejb-ref-type>Session</ejb-ref-type>
<home>com.pega.pegarules.etier.interfaces.EngineHome</home>
<remote>com.pega.pegarules.etier.interfaces.Engine</remote>
</ejb-ref>
<ejb-ref id="EjbRef_2">
<description><![CDATA[Reference to PegaRULES Engine EJB]]></description>
<ejb-ref-name>ejb/EngineCMT</ejb-ref-name>
<ejb-ref-type>Session</ejb-ref-type>
<home>com.pega.pegarules.etier.interfaces.EngineHome</home>
<remote>com.pega.pegarules.etier.interfaces.Engine</remote>
</ejb-ref>
<ejb-local-ref id="EJBLocalRef_1">
<description><![CDATA[Reference to PegaRULES Engine EJB]]></description>
<ejb-ref-name>ejb/EngineBMTLocal</ejb-ref-name>
<ejb-ref-type>Session</ejb-ref-type>
<local-home> com.pega.pegarules.etier.interfaces.EngineLocalHome</local-home>
<local>com.pega.pegarules.etier.interfaces.EngineLocal</local>
</ejb-local-ref>
<ejb-local-ref id="EJBLocalRef_2">
<description><![CDATA[Reference to PegaRULES Engine EJB]]></description>
<ejb-ref-name>ejb/EngineCMTLocal</ejb-ref-name>
<ejb-ref-type>Session</ejb-ref-type>
<local-home> com.pega.pegarules.etier.interfaces.EngineLocalHome</local-home>
<local>com.pega.pegarules.etier.interfaces.EngineLocal</local>
</ejb-local-ref>