java - Access EJB from Application Client (project configuration) -


i know has been asked before, can't find answer

so want have client application calls remote ejbs.

for have 2 ear applications. 1 ear ejb module, , ear application client module. in client module trying inject in main() class ejb @ejb annotation.

application.xml ejb:

<?xml version="1.0" encoding="utf-8"?> <application  xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:application="http://java.sun.com    /xml/ns/javaee/application_5.xsd" xsi:schemalocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns    /javaee/application_5.xsd" id="application_id" version="5">   <display-name>        mppl4_server</display-name>       <module>          <ejb>mppl4_serverejb.jar</ejb>       </module>  </application> 

application.xml app-client:

<application    <display-name>        mppl4_client   </display-name>   <module>      <java>mppl4_clientclient.jar</java>   </module>   <module>      <ejb>mppl4_serverejb.jar</ejb>   </module> </application> 

if deploy both ears on glassfish server get:

evere: exception while invoking class org.glassfish.ejb.startup.ejbdeployer load method java.lang.runtimeexception: ejb container initialization error     @ org.glassfish.ejb.startup.ejbapplication.loadcontainers(ejbapplication.java:219)     @ org.glassfish.ejb.startup.ejbdeployer.load(ejbdeployer.java:197)     @ org.glassfish.ejb.startup.ejbdeployer.load(ejbdeployer.java:63)     @ org.glassfish.internal.data.moduleinfo.load(moduleinfo.java:175)     @ org.glassfish.internal.data.applicationinfo.load(applicationinfo.java:216)     @ com.sun.enterprise.v3.server.applicationlifecycle.deploy(applicationlifecycle.java:338)     @ com.sun.enterprise.v3.server.applicationlifecycle.deploy(applicationlifecycle.java:183)     @ org.glassfish.deployment.admin.deploycommand.execute(deploycommand.java:272)     @ com.sun.enterprise.v3.admin.commandrunnerimpl$1.execute(commandrunnerimpl.java:305)     @ com.sun.enterprise.v3.admin.commandrunnerimpl.docommand(commandrunnerimpl.java:320)     @ com.sun.enterprise.v3.admin.commandrunnerimpl.docommand(commandrunnerimpl.java:1176)     @ com.sun.enterprise.v3.admin.commandrunnerimpl.access$900(commandrunnerimpl.java:83)     @ com.sun.enterprise.v3.admin.commandrunnerimpl$executioncontext.execute(commandrunnerimpl.java:1235)     @ com.sun.enterprise.v3.admin.commandrunnerimpl$executioncontext.execute(commandrunnerimpl.java:1224)     @ com.sun.enterprise.v3.admin.adminadapter.docommand(adminadapter.java:365)     @ com.sun.enterprise.v3.admin.adminadapter.service(adminadapter.java:204)     @ com.sun.grizzly.tcp.http11.grizzlyadapter.service(grizzlyadapter.java:166)     @ com.sun.enterprise.v3.server.hk2dispatcher.dispath(hk2dispatcher.java:100)     @ com.sun.enterprise.v3.services.impl.containermapper.service(containermapper.java:245)     @ com.sun.grizzly.http.processortask.invokeadapter(processortask.java:791)     @ com.sun.grizzly.http.processortask.doprocess(processortask.java:693)     @ com.sun.grizzly.http.processortask.process(processortask.java:954)     @ com.sun.grizzly.http.defaultprotocolfilter.execute(defaultprotocolfilter.java:170)     @ com.sun.grizzly.defaultprotocolchain.executeprotocolfilter(defaultprotocolchain.java:135)     @ com.sun.grizzly.defaultprotocolchain.execute(defaultprotocolchain.java:102)     @ com.sun.grizzly.defaultprotocolchain.execute(defaultprotocolchain.java:88)     @ com.sun.grizzly.http.httpprotocolchain.execute(httpprotocolchain.java:76)     @ com.sun.grizzly.protocolchaincontexttask.docall(protocolchaincontexttask.java:53)     @ com.sun.grizzly.selectionkeycontexttask.call(selectionkeycontexttask.java:57)     @ com.sun.grizzly.contexttask.run(contexttask.java:69)     @ com.sun.grizzly.util.abstractthreadpool$worker.dowork(abstractthreadpool.java:330)     @ com.sun.grizzly.util.abstractthreadpool$worker.run(abstractthreadpool.java:309)     @ java.lang.thread.run(thread.java:662) caused by: java.lang.runtimeexception: error while binding jndi name entities.personapiremote__3_x_internal_remotebusinesshome__ ejb : personapi     @ com.sun.ejb.containers.basecontainer.initializehome(basecontainer.java:1530)     @ com.sun.ejb.containers.statelesssessioncontainer.initializehome(statelesssessioncontainer.java:197)     @ com.sun.ejb.containers.containerfactoryimpl.createcontainer(containerfactoryimpl.java:161)     @ org.glassfish.ejb.startup.ejbapplication.loadcontainers(ejbapplication.java:207)     ... 32 more caused by: javax.naming.namealreadyboundexception [root exception org.omg.cosnaming.namingcontextpackage.alreadybound: idl:omg.org/cosnaming/namingcontext/alreadybound:1.0]     @ com.sun.jndi.cosnaming.exceptionmapper.mapexception(exceptionmapper.java:75)     @ com.sun.jndi.cosnaming.cnctx.callbindorrebind(cnctx.java:595)     @ com.sun.jndi.cosnaming.cnctx.bind(cnctx.java:620)     @ com.sun.jndi.cosnaming.cnctx.bind(cnctx.java:658)     @ javax.naming.initialcontext.bind(initialcontext.java:400)     @ com.sun.enterprise.naming.impl.glassfishnamingmanagerimpl.publishcosnamingobject(glassfishnamingmanagerimpl.java:224)     @ com.sun.ejb.containers.basecontainer$jndiinfo.publish(basecontainer.java:5482)     @ com.sun.ejb.containers.basecontainer.initializehome(basecontainer.java:1515)     ... 35 more caused by: org.omg.cosnaming.namingcontextpackage.alreadybound: idl:omg.org/cosnaming/namingcontext/alreadybound:1.0     @ org.omg.cosnaming.namingcontextpackage.alreadyboundhelper.read(alreadyboundhelper.java:60)     @ org.omg.cosnaming._namingcontextstub.bind(_namingcontextstub.java:67)     @ com.sun.jndi.cosnaming.cnctx.callbindorrebind(cnctx.java:584)     ... 41 more  severe: exception while loading app java.lang.runtimeexception: ejb container initialization error     @ org.glassfish.ejb.startup.ejbapplication.loadcontainers(ejbapplication.java:219)     @ org.glassfish.ejb.startup.ejbdeployer.load(ejbdeployer.java:197)     @ org.glassfish.ejb.startup.ejbdeployer.load(ejbdeployer.java:63)     @ org.glassfish.internal.data.moduleinfo.load(moduleinfo.java:175)     @ org.glassfish.internal.data.applicationinfo.load(applicationinfo.java:216)     @ com.sun.enterprise.v3.server.applicationlifecycle.deploy(applicationlifecycle.java:338)     @ com.sun.enterprise.v3.server.applicationlifecycle.deploy(applicationlifecycle.java:183)     @ org.glassfish.deployment.admin.deploycommand.execute(deploycommand.java:272)     @ com.sun.enterprise.v3.admin.commandrunnerimpl$1.execute(commandrunnerimpl.java:305)     @ com.sun.enterprise.v3.admin.commandrunnerimpl.docommand(commandrunnerimpl.java:320)     @ com.sun.enterprise.v3.admin.commandrunnerimpl.docommand(commandrunnerimpl.java:1176)     @ com.sun.enterprise.v3.admin.commandrunnerimpl.access$900(commandrunnerimpl.java:83)     @ com.sun.enterprise.v3.admin.commandrunnerimpl$executioncontext.execute(commandrunnerimpl.java:1235)     @ com.sun.enterprise.v3.admin.commandrunnerimpl$executioncontext.execute(commandrunnerimpl.java:1224)     @ com.sun.enterprise.v3.admin.adminadapter.docommand(adminadapter.java:365)     @ com.sun.enterprise.v3.admin.adminadapter.service(adminadapter.java:204)     @ com.sun.grizzly.tcp.http11.grizzlyadapter.service(grizzlyadapter.java:166)     @ com.sun.enterprise.v3.server.hk2dispatcher.dispath(hk2dispatcher.java:100)     @ com.sun.enterprise.v3.services.impl.containermapper.service(containermapper.java:245)     @ com.sun.grizzly.http.processortask.invokeadapter(processortask.java:791)     @ com.sun.grizzly.http.processortask.doprocess(processortask.java:693)     @ com.sun.grizzly.http.processortask.process(processortask.java:954)     @ com.sun.grizzly.http.defaultprotocolfilter.execute(defaultprotocolfilter.java:170)     @ com.sun.grizzly.defaultprotocolchain.executeprotocolfilter(defaultprotocolchain.java:135)     @ com.sun.grizzly.defaultprotocolchain.execute(defaultprotocolchain.java:102)     @ com.sun.grizzly.defaultprotocolchain.execute(defaultprotocolchain.java:88)     @ com.sun.grizzly.http.httpprotocolchain.execute(httpprotocolchain.java:76)     @ com.sun.grizzly.protocolchaincontexttask.docall(protocolchaincontexttask.java:53)     @ com.sun.grizzly.selectionkeycontexttask.call(selectionkeycontexttask.java:57)     @ com.sun.grizzly.contexttask.run(contexttask.java:69)     @ com.sun.grizzly.util.abstractthreadpool$worker.dowork(abstractthreadpool.java:330)     @ com.sun.grizzly.util.abstractthreadpool$worker.run(abstractthreadpool.java:309)     @ java.lang.thread.run(thread.java:662) caused by: java.lang.runtimeexception: error while binding jndi name entities.personapiremote__3_x_internal_remotebusinesshome__ ejb : personapi     @ com.sun.ejb.containers.basecontainer.initializehome(basecontainer.java:1530)     @ com.sun.ejb.containers.statelesssessioncontainer.initializehome(statelesssessioncontainer.java:197)     @ com.sun.ejb.containers.containerfactoryimpl.createcontainer(containerfactoryimpl.java:161)     @ org.glassfish.ejb.startup.ejbapplication.loadcontainers(ejbapplication.java:207)     ... 32 more caused by: javax.naming.namealreadyboundexception [root exception org.omg.cosnaming.namingcontextpackage.alreadybound: idl:omg.org/cosnaming/namingcontext/alreadybound:1.0]     @ com.sun.jndi.cosnaming.exceptionmapper.mapexception(exceptionmapper.java:75)     @ com.sun.jndi.cosnaming.cnctx.callbindorrebind(cnctx.java:595)     @ com.sun.jndi.cosnaming.cnctx.bind(cnctx.java:620)     @ com.sun.jndi.cosnaming.cnctx.bind(cnctx.java:658)     @ javax.naming.initialcontext.bind(initialcontext.java:400)     @ com.sun.enterprise.naming.impl.glassfishnamingmanagerimpl.publishcosnamingobject(glassfishnamingmanagerimpl.java:224)     @ com.sun.ejb.containers.basecontainer$jndiinfo.publish(basecontainer.java:5482)     @ com.sun.ejb.containers.basecontainer.initializehome(basecontainer.java:1515)     ... 35 more caused by: org.omg.cosnaming.namingcontextpackage.alreadybound: idl:omg.org/cosnaming/namingcontext/alreadybound:1.0     @ org.omg.cosnaming.namingcontextpackage.alreadyboundhelper.read(alreadyboundhelper.java:60)     @ org.omg.cosnaming._namingcontextstub.bind(_namingcontextstub.java:67)     @ com.sun.jndi.cosnaming.cnctx.callbindorrebind(cnctx.java:584)     ... 41 more  warning: exception while cleaning module 'org.glassfish.internal.data.engineref@1e493eb'java.lang.nullpointerexception java.lang.nullpointerexception     @ org.glassfish.appclient.server.core.appclientdeployer.clean(appclientdeployer.java:265)     @ org.glassfish.internal.data.engineinfo.clean(engineinfo.java:114)     @ org.glassfish.internal.data.engineref.clean(engineref.java:171)     @ com.sun.enterprise.v3.server.applicationlifecycle$1.acton(applicationlifecycle.java:224)     @ com.sun.enterprise.v3.server.applicationlifecycle.deploy(applicationlifecycle.java:342)     @ com.sun.enterprise.v3.server.applicationlifecycle.deploy(applicationlifecycle.java:183)     @ org.glassfish.deployment.admin.deploycommand.execute(deploycommand.java:272)     @ com.sun.enterprise.v3.admin.commandrunnerimpl$1.execute(commandrunnerimpl.java:305)     @ com.sun.enterprise.v3.admin.commandrunnerimpl.docommand(commandrunnerimpl.java:320)     @ com.sun.enterprise.v3.admin.commandrunnerimpl.docommand(commandrunnerimpl.java:1176)     @ com.sun.enterprise.v3.admin.commandrunnerimpl.access$900(commandrunnerimpl.java:83)     @ com.sun.enterprise.v3.admin.commandrunnerimpl$executioncontext.execute(commandrunnerimpl.java:1235)     @ com.sun.enterprise.v3.admin.commandrunnerimpl$executioncontext.execute(commandrunnerimpl.java:1224)     @ com.sun.enterprise.v3.admin.adminadapter.docommand(adminadapter.java:365)     @ com.sun.enterprise.v3.admin.adminadapter.service(adminadapter.java:204)     @ com.sun.grizzly.tcp.http11.grizzlyadapter.service(grizzlyadapter.java:166)     @ com.sun.enterprise.v3.server.hk2dispatcher.dispath(hk2dispatcher.java:100)     @ com.sun.enterprise.v3.services.impl.containermapper.service(containermapper.java:245)     @ com.sun.grizzly.http.processortask.invokeadapter(processortask.java:791)     @ com.sun.grizzly.http.processortask.doprocess(processortask.java:693)     @ com.sun.grizzly.http.processortask.process(processortask.java:954)     @ com.sun.grizzly.http.defaultprotocolfilter.execute(defaultprotocolfilter.java:170)     @ com.sun.grizzly.defaultprotocolchain.executeprotocolfilter(defaultprotocolchain.java:135)     @ com.sun.grizzly.defaultprotocolchain.execute(defaultprotocolchain.java:102)     @ com.sun.grizzly.defaultprotocolchain.execute(defaultprotocolchain.java:88)     @ com.sun.grizzly.http.httpprotocolchain.execute(httpprotocolchain.java:76)     @ com.sun.grizzly.protocolchaincontexttask.docall(protocolchaincontexttask.java:53)     @ com.sun.grizzly.selectionkeycontexttask.call(selectionkeycontexttask.java:57)     @ com.sun.grizzly.contexttask.run(contexttask.java:69)     @ com.sun.grizzly.util.abstractthreadpool$worker.dowork(abstractthreadpool.java:330)     @ com.sun.grizzly.util.abstractthreadpool$worker.run(abstractthreadpool.java:309)     @ java.lang.thread.run(thread.java:662) 

my app-client main class:

public class main {      @ejb     private static personapiremote personapi;      public static void main(string[] args) {         system.out.println("client started...");          //person p = new person(3, "lololol", 456);         personapi.service();          system.out.println("client ended...");     }      /* (non-java-doc)      * @see java.lang.object#object()      */     public main() {         super();     } 

i using glassfish tools bundle eclipse ide.

you can inject ejb container managed beans i.e. servlet, session beans etc.

in case have locate remote interface through jndi lookup.

example:

properties props = new properties();         props.setproperty(context.initial_context_factory, "com.sun.enterprise.naming.serialinitcontextfactory");         props.setproperty("org.omg.corba.orbinitialhost", remotehost);         props.setproperty("org.omg.corba.orbinitialport", remoteport);          initialcontext ic = new initialcontext(props);         return ic.lookup(remoteinterface); 

Comments

Popular posts from this blog

php - What is the difference between $_SERVER['PATH_INFO'] and $_SERVER['ORIG_PATH_INFO']? -

fortran - Function return type mismatch -

queue - mq_receive: message too long -