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
Post a Comment