Note that there are some explanatory texts on larger screens.

plurals
  1. POJNDI jboss 7 client on tomcat throws java.lang.IllegalStateException: No EJB receiver available for handling
    primarykey
    data
    text
    <p>can anyone help me what is happening on jboss server/my client app...? i stuck for last 10<br> days just for this test. My EJB is deployed on Jboss AS 7.1.1 and client web app is deployed on tomcat 7.0.42.<br> i follow the following tutorial and set up stateless session bean and my servlet client.<br> [EJB invocations from a remote client using JNDI]:<a href="https://docs.jboss.org/author/display/AS71/EJB+invocations+from+a+remote+client+using+JNDI" rel="nofollow">https://docs.jboss.org/author/display/AS71/EJB+invocations+from+a+remote+client+using+JNDI</a> and<br> i can access the remote object once but when i refresh the page it gives me the following error: </p> <pre><code>java.lang.IllegalStateException: No EJB receiver available for handling [appName:DPlacementEAR,modulename:DPlacementEJB,distinctname:] combination for invocation context org.jboss.ejb.client.EJBClientInvocationContext@18b5012 at org.jboss.ejb.client.EJBClientContext.requireEJBReceiver(EJBClientContext.java:584) </code></pre> <p>here is my project structure:<br> -on Jboss 7.1.1 server i deployed DPlacementEAR, which contains: -DPlacementEJB which contains entity class Rule and session bean RuleBL and -DPlacementLib which contains remote interface IRuleBL and DTO RuleDO -DPlacementUI is a Client web app is deployed on tomcat 7.0.42 server which contains RuleServlet<br> here are the codes and configs i used:<br> RuleBL: </p> <pre><code>@Stateless @Remote(IRuleBL.class) public class RuleBL implements IRuleBL{ @PersistenceContext(unitName = "PLACEMENTDB") private EntityManager entityManager; @Override public RuleDO get(int id) { try { Rule rule = entityManager.find(Rule.class, id); RuleDO rdo = new RuleDO(); rdo.setId(rule.getId()); rdo.setCutPoint(rule.getCutPoint()); rdo.setDisabilityPercentage(rule.getDisabilityPercentage()); rdo.setFemalePercentage(rule.getFemalePercentage()); rdo.setTopPercentage(rule.getTopPercentage()); return rdo; } catch (Exception e) { e.printStackTrace(); return null; } } } </code></pre> <p>and RuleServlet: </p> <pre><code>protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try{ PrintWriter out = response.getWriter(); IRuleBL rulebl = ObjectLookupFactory.lookupRuleBL(); RuleDO r = rulebl.get(1); if(r!=null) out.println("percent: "+ r.getTopPercentage()); else out.println("null"); }catch(Exception e){ e.printStackTrace(); } ... public class ObjectLookupFactory { public static IRuleBL lookupRuleBL(){ Context context = null; IRuleBL bean = null; try { context = JNDILookupClass.getInitialContext(); String appName = "DPlacementEAR"; String moduleName = "DPlacementEJB"; String distinctName = ""; String beanName = "RuleBL"; final String interfaceName = "com.placement.business.IRuleBL"; String name = "ejb:" + appName + "/" + moduleName + "/" + distinctName + "/" + beanName + "!" + interfaceName; bean = (IRuleBL) context.lookup(name); } catch (NamingException e) { e.printStackTrace(); } return bean; } ....... public class JNDILookupClass { private static Context initialContext; public static Context getInitialContext() throws NamingException { if (initialContext == null) { Properties properties = new Properties(); properties.put(Context.INITIAL_CONTEXT_FACTORY, "org.jboss.naming.remote.client.InitialContextFactory"); properties.put(Context.PROVIDER_URL, "remote://localhost:4447"); properties.put(Context.SECURITY_PRINCIPAL, "appuser"); properties.put(Context.SECURITY_CREDENTIALS, "123"); // properties.put("jboss.naming.client.ejb.context", true); properties.put(Context.URL_PKG_PREFIXES, "org.jboss.ejb.client.naming"); initialContext = new InitialContext(properties); } return initialContext; } } </code></pre> <p>Jboss deployment: </p> <pre><code>16:14:52,777 INFO [org.jboss.as.jpa] (MSC service thread 1-8) JBAS011401: Read persistence.xml for PLACEMENTDB 16:14:52,792 INFO [org.jboss.as.ejb3.deployment.processors.EjbJndiBindingsDeploymentUnitProcessor] (MSC service thread 1-3) JNDI bindings for session bean named RuleBL in deployment unit subdeployment "DPlacementEJB.jar" of deployment "DPlacementEAR.ear" are as follows: java:global/DPlacementEAR/DPlacementEJB/RuleBL!com.placement.business.IRuleBL java:app/DPlacementEJB/RuleBL!com.placement.business.IRuleBL java:module/RuleBL!com.placement.business.IRuleBL java:jboss/exported/DPlacementEAR/DPlacementEJB/RuleBL!com.placement.business.IRuleBL java:global/DPlacementEAR/DPlacementEJB/RuleBL java:app/DPlacementEJB/RuleBL java:module/RuleBL 16:14:52,814 INFO [org.jboss.as.jpa] (MSC service thread 1-1) JBAS011402: Starting Persistence Unit Service 'DPlacementEAR.ear/DPlacementEJB.jar#PLACEMENTDB' 16:14:52,816 INFO [org.hibernate.ejb.Ejb3Configuration] (MSC service thread 1-1) HHH000204: Processing PersistenceUnitInfo [ name: PLACEMENTDB ...] </code></pre> <p>After i run DPlacementUI on tomcat 7.042 it gives me </p> <pre><code>percent:60.0 </code></pre> <p>but when i refresh the page it keeps showing the following error: </p> <pre><code>java.lang.IllegalStateException: No EJB receiver available for handling [appName:DPlacementEAR,modulename:DPlacementEJB,distinctname:] combination for invocation context org.jboss.ejb.client.EJBClientInvocationContext@17c3215 at org.jboss.ejb.client.EJBClientContext.requireEJBReceiver(EJBClientContext.java:584) at org.jboss.ejb.client.ReceiverInterceptor.handleInvocation(ReceiverInterceptor.java:119) at org.jboss.ejb.client.EJBClientInvocationContext.sendRequest(EJBClientInvocationContext.java:181) at org.jboss.ejb.client.EJBInvocationHandler.doInvoke(EJBInvocationHandler.java:136) at org.jboss.ejb.client.EJBInvocationHandler.doInvoke(EJBInvocationHandler.java:121) at org.jboss.ejb.client.EJBInvocationHandler.invoke(EJBInvocationHandler.java:104) at com.sun.proxy.$Proxy5.get(Unknown Source) at com.servlet.RuleServlet.doGet(RuleServlet.java:38) at javax.servlet.http.HttpServlet.service(HttpServlet.java:621) at javax.servlet.http.HttpServlet.service(HttpServlet.java:728) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1023) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:724) </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload