Select Your Language

Infrastructure and Management

Cloud Computing

Storage

Runtimes

Integration and Automation

  • Comments
  • EJB lookup fails during startup but is fine when the call is made after the server is started.

    Posted on

    HI All

    I am using Jboss EAP 7.1. And i managed to deploy a stateless EJBbean successfully.

    And i am also able to access the deploy EJB after the server is started successfully. using the below piece of code.

    final Hashtable jndiProperties = new Hashtable();
        jndiProperties.put(Context.INITIAL_CONTEXT_FACTORY, "org.jboss.naming.remote.client.InitialContextFactory");
        jndiProperties.put(Context.URL_PKG_PREFIXES, "org.jboss.ejb.client.naming");
        jndiProperties.put("jboss.naming.client.ejb.context", true);
        Context context;
        try {
            context = new InitialContext(jndiProperties);
            String appName = "";
    
            if ("FlowControllerBean/remote".equalsIgnoreCase(jndiName)) {
                appName = "";
    
            } else {
                appName = "upm-0.1";
            }
            final String distinctName = "";
            String beanName = "";
            final String viewClassName = FlowController.class.getName();
            System.out.println(
                    "ejb:" + appName + "/" + moduleName + "/" + distinctName + "/" + beanName + "!" + viewClassName);
            if ("".equalsIgnoreCase(interfacename)) {
                context = new InitialContext();
                return context.lookup(jndiName);
            } else {
                beanName = jndiName.substring(0, jndiName.indexOf("/"));
                return context.lookup("ejb:" + appName + "/" + moduleName + "/" + distinctName + "/" + beanName + "!"
                        + interfacename);
            }
        } catch (NamingException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return null;
    

    But my real problem comes when i want to access the same EJB during server start up itself. One of my method inside a service bean calls this EJB Bean during server startup itself. But it fails with the message "EJBCLIENT000079: Unable to discover destination for request for EJB StatelessEJBLocator for "/ejb-remote-server/FlowControllerBean", view is interface com.hexaware.framework.flowcontroller.FlowController, affinity is None".

    Before the lookup is executed the actual EJB beans are deployed. Please find below the logs from server before the lookup is made during start up.

    14:36:25,971 INFO [org.jboss.weld.deployer] (MSC service thread 1-4) WFLYWELD0003: Processing weld deployment ejb-remote-server.jar

    14:36:26,373 INFO [org.jboss.as.ejb3.deployment] (MSC service thread 1-4) WFLYEJB0473: JNDI bindings for session bean named 'FlowControllerBean' in deployment unit 'deployment "ejb-remote-server.jar"' are as follows:

    java:global/ejb-remote-server/FlowControllerBean!com.hexaware.framework.flowcontroller.FlowController
    java:app/ejb-remote-server/FlowControllerBean!com.hexaware.framework.flowcontroller.FlowController
    java:module/FlowControllerBean!com.hexaware.framework.flowcontroller.FlowController
    java:jboss/exported/ejb-remote-server/FlowControllerBean!com.hexaware.framework.flowcontroller.FlowController
    java:global/ejb-remote-server/FlowControllerBean
    java:app/ejb-remote-server/FlowControllerBean
    java:module/FlowControllerBean
    

    [org.apache.cxf.endpoint.ServerImpl] (MSC service thread 1-4) Setting the server's publish address to be http://localhost:8080/ejb-remote-server/EventManagerService
    14:36:29,409 INFO [org.jboss.ws.cxf.deployment] (MSC service thread 1-4) JBWS024074: WSDL published to: file:/D:/Magesh/Softwares/Jboss-eap-7.1/standalone/data/wsdl/ejb-remote-server.jar/EventManagerServiceService.wsdl
    14:36:29,643 INFO [org.jboss.as.webservices] (MSC service thread 1-4) WFLYWS0003: Starting service jboss.ws.endpoint."ejb-remote-server.jar".EventStatusService
    14:36:29,650 INFO [org.jboss.as.webservices] (MSC service thread 1-2) WFLYWS0003: Starting service jboss.ws.endpoint."ejb-remote-server.jar".EventManagerService
    14:36:30,197 INFO [org.wildfly.extension.undertow] (ServerService Thread Pool -- 72) WFLYUT0021: Registered web context: '/ejb-remote-server' for server 'default-server'

    But the same code works if i call it after the server is started completely.

    Please help.
    Below is how i have defined my EJBbean.

    @Stateless(mappedName = "FlowController/remote")
    @Remote
    @Startup
    public class FlowControllerBean implements FlowController
    {
    public TransferObject execute(TransferObject transferObject) throws ApplicationException {

    Below is my property file which i have used for connecting from the client to my remote server.Both server and client are in same Jboss server instance in my local machine.

    remote.connectionprovider.create.options.org.xnio.Options.SSL_ENABLED=false
    remote.connections=default
    remote.connection.default.host=localhost
    remote.connection.default.port = 8080
    remote.connection.default.connect.options.org.xnio.Options.SASL_POLICY_NOANONYMOUS=false
    ~~~

    Note: Look up is successful during startup or any other time. But when i try to call a method in the bean the error message is encountered. But same bean method call works after server startup

    Regards
    M Magesh Kumar

    by

    points

    Responses

    Red Hat LinkedIn YouTube Facebook X, formerly Twitter

    Quick Links

    Help

    Site Info

    Related Sites

    © 2026 Red Hat