अच्छा दिन के साथ! मैं जावाईई 6 में नवागंतुक हूं। मैंने निम्नलिखित ट्यूटोरियल के उपयोग के साथ एक प्रारंभिक प्रोजेक्ट बनाने की कोशिश की: Creating and Running an Application Client on the GlassFish Server। मैंने चार परियोजनाओं को चरण-दर-चरण बनाया: जावा ईएसबी रिमोट इंटरफेस को स्टोर करने के लिए जावाएसई लिब, एक ईजेबी मॉड्यूल और अन्यथा ट्यूटोरियल में वर्णित है।हैलो वर्ल्ड! रिमोट स्टेटलेस सत्र बीन
मेरे मंच:
- वितरक ID: उबंटू विवरण: उबंटू 10.10 रिलीज: 10.10 कोडनाम: आवारा
- jdk1.6.0_26
- Netbean7.2 (बिल्ड 201207171143)
- ग्लासफिश सर्वर 3+
मेरा रिमोट इंटरफ़ेस
package ejb.started;
//
import javax.ejb.Remote;
//
@Remote
public interface StartedSessionBeanRemote {
String getHelloWorld();
}
इसके कार्यान्वयन:
package ejb.started;
//
import javax.ejb.Stateless;
//
@Stateless(name="StartedSessionBeanRemote")
public class StartedSessionBean implements StartedSessionBeanRemote {
@Override
public String getHelloWorld() {
return ("Hello world, EJB!");
}
}
और ग्राहक कोड:
package startedentappclient;
//
import ejb.started.StartedSessionBeanRemote;
import javax.ejb.EJB;
//
public class AppClientMain {
@EJB
private static StartedSessionBeanRemote startedSessionBean;
public static void main(String[] args) {
System.err.println("EJB: "+startedSessionBean.getHelloWorld());
}
}
जब मैं रिमोट क्लाइंट proj चलाने का प्रयास, मैं निम्नलिखित उत्पादन प्राप्त करते हैं:
ant -f /home/ilya/Workspace/git/workspace/StartedEntAppClient -DforceRedeploy=false run
init:
EJBRemoteInterface.init:
Deleting: /home/ilya/Workspace/git/workspace/EJBRemoteInterface/build/built-jar.properties
EJBRemoteInterface.deps-jar:
Updating property file: /home/ilya/Workspace/git/workspace/EJBRemoteInterface/build/built-jar.properties
EJBRemoteInterface.compile:
EJBRemoteInterface.jar:
deps-jar:
compile:
library-inclusion-in-archive:
dist:
pre-run-deploy:
Redeploying /home/ilya/Workspace/git/workspace/StartedEntAppClient/dist/StartedEntAppClient.jar
Initializing...
post-run-deploy:
run-deploy:
Copying 1 file to /home/ilya/Workspace/git/workspace/StartedEntAppClient/dist
Copying 2 files to /home/ilya/Workspace/git/workspace/StartedEntAppClient/dist/StartedEntAppClientClient
Warning: /home/ilya/Workspace/git/workspace/StartedEntAppClient/dist/gfdeploy/StartedEntAppClient does not exist.
com.sun.enterprise.container.common.spi.util.InjectionException: Exception attempting to inject Remote ejb-ref name=startedentappclient.AppClientMain/startedSessionBean,Remote 3.x interface =ejb.started.StartedSessionBeanRemote,ejb-link=null,lookup=,mappedName=,jndi-name=ejb.started.StartedSessionBeanRemote,refType=Session into class startedentappclient.AppClientMain: Lookup failed for 'java:comp/env/startedentappclient.AppClientMain/startedSessionBean' in SerialContext[myEnv={java.naming.factory.initial=com.sun.enterprise.naming.impl.SerialInitContextFactory, java.naming.factory.url.pkgs=com.sun.enterprise.naming, java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl}
at com.sun.enterprise.container.common.impl.util.InjectionManagerImpl._inject(InjectionManagerImpl.java:703)
at com.sun.enterprise.container.common.impl.util.InjectionManagerImpl.inject(InjectionManagerImpl.java:470)
at com.sun.enterprise.container.common.impl.util.InjectionManagerImpl.injectClass(InjectionManagerImpl.java:213)
at com.sun.enterprise.container.common.impl.util.InjectionManagerImpl.injectClass(InjectionManagerImpl.java:205)
at org.glassfish.appclient.client.acc.AppClientContainer$ClientMainClassSetting.getClientMainClass(AppClientContainer.java:625)
at org.glassfish.appclient.client.acc.AppClientContainer.getMainMethod(AppClientContainer.java:517)
at org.glassfish.appclient.client.acc.AppClientContainer.completePreparation(AppClientContainer.java:411)
at org.glassfish.appclient.client.acc.AppClientContainer.prepare(AppClientContainer.java:319)
at org.glassfish.appclient.client.AppClientFacade.prepareACC(AppClientFacade.java:278)
at org.glassfish.appclient.client.acc.agent.AppClientContainerAgent.premain(AppClientContainerAgent.java:82)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at sun.instrument.InstrumentationImpl.loadClassAndStartAgent(InstrumentationImpl.java:323)
at sun.instrument.InstrumentationImpl.loadClassAndCallPremain(InstrumentationImpl.java:338)
Caused by: javax.naming.NamingException: Lookup failed for 'java:comp/env/startedentappclient.AppClientMain/startedSessionBean' in SerialContext[myEnv={java.naming.factory.initial=com.sun.enterprise.naming.impl.SerialInitContextFactory, java.naming.factory.url.pkgs=com.sun.enterprise.naming, java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl} [Root exception is javax.naming.NamingException: Exception resolving Ejb for 'Remote ejb-ref name=startedentappclient.AppClientMain/startedSessionBean,Remote 3.x interface =ejb.started.StartedSessionBeanRemote,ejb-link=null,lookup=,mappedName=,jndi-name=ejb.started.StartedSessionBeanRemote,refType=Session' . Actual (possibly internal) Remote JNDI name used for lookup is 'ejb.started.StartedSessionBeanRemote#ejb.started.StartedSessionBeanRemote' [Root exception is javax.naming.NamingException: Lookup failed for 'ejb.started.StartedSessionBeanRemote#ejb.started.StartedSessionBeanRemote' in SerialContext[myEnv={java.naming.factory.initial=com.sun.enterprise.naming.impl.SerialInitContextFactory, java.naming.factory.url.pkgs=com.sun.enterprise.naming, java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl} [Root exception is javax.naming.NameNotFoundException: ejb.started.StartedSessionBeanRemote#ejb.started.StartedSessionBeanRemote not found]]]
at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:518)
at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:455)
at javax.naming.InitialContext.lookup(InitialContext.java:392)
at com.sun.enterprise.container.common.impl.util.InjectionManagerImpl._inject(InjectionManagerImpl.java:599)
... 15 more
Caused by: javax.naming.NamingException: Exception resolving Ejb for 'Remote ejb-ref name=startedentappclient.AppClientMain/startedSessionBean,Remote 3.x interface =ejb.started.StartedSessionBeanRemote,ejb-link=null,lookup=,mappedName=,jndi-name=ejb.started.StartedSessionBeanRemote,refType=Session' . Actual (possibly internal) Remote JNDI name used for lookup is 'ejb.started.StartedSessionBeanRemote#ejb.started.StartedSessionBeanRemote' [Root exception is javax.naming.NamingException: Lookup failed for 'ejb.started.StartedSessionBeanRemote#ejb.started.StartedSessionBeanRemote' in SerialContext[myEnv={java.naming.factory.initial=com.sun.enterprise.naming.impl.SerialInitContextFactory, java.naming.factory.url.pkgs=com.sun.enterprise.naming, java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl} [Root exception is javax.naming.NameNotFoundException: ejb.started.StartedSessionBeanRemote#ejb.started.StartedSessionBeanRemote not found]]
at com.sun.ejb.EjbNamingReferenceManagerImpl.resolveEjbReference(EjbNamingReferenceManagerImpl.java:191)
at com.sun.enterprise.container.common.impl.ComponentEnvManagerImpl$EjbReferenceProxy.create(ComponentEnvManagerImpl.java:1109)
at com.sun.enterprise.naming.impl.GlassfishNamingManagerImpl.lookup(GlassfishNamingManagerImpl.java:776)
at com.sun.enterprise.naming.impl.GlassfishNamingManagerImpl.lookup(GlassfishNamingManagerImpl.java:744)
at com.sun.enterprise.naming.impl.JavaURLContext.lookup(JavaURLContext.java:169)
at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:498)
... 18 more
Caused by: javax.naming.NamingException: Lookup failed for 'ejb.started.StartedSessionBeanRemote#ejb.started.StartedSessionBeanRemote' in SerialContext[myEnv={java.naming.factory.initial=com.sun.enterprise.naming.impl.SerialInitContextFactory, java.naming.factory.url.pkgs=com.sun.enterprise.naming, java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl} [Root exception is javax.naming.NameNotFoundException: ejb.started.StartedSessionBeanRemote#ejb.started.StartedSessionBeanRemote not found]
at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:518)
at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:455)
at javax.naming.InitialContext.lookup(InitialContext.java:392)
at com.sun.ejb.EjbNamingReferenceManagerImpl.resolveEjbReference(EjbNamingReferenceManagerImpl.java:186)
... 23 more
Caused by: javax.naming.NameNotFoundException: ejb.started.StartedSessionBeanRemote#ejb.started.StartedSessionBeanRemote not found
at com.sun.enterprise.naming.impl.TransientContext.doLookup(TransientContext.java:248)
at com.sun.enterprise.naming.impl.TransientContext.lookup(TransientContext.java:215)
at com.sun.enterprise.naming.impl.SerialContextProviderImpl.lookup(SerialContextProviderImpl.java:77)
at com.sun.enterprise.naming.impl.RemoteSerialContextProviderImpl.lookup(RemoteSerialContextProviderImpl.java:109)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at com.sun.corba.ee.impl.presentation.rmi.ReflectiveTie.dispatchToMethod(ReflectiveTie.java:144)
at com.sun.corba.ee.impl.presentation.rmi.ReflectiveTie._invoke(ReflectiveTie.java:174)
at com.sun.corba.ee.impl.protocol.CorbaServerRequestDispatcherImpl.dispatchToServant(CorbaServerRequestDispatcherImpl.java:528)
at com.sun.corba.ee.impl.protocol.CorbaServerRequestDispatcherImpl.dispatch(CorbaServerRequestDispatcherImpl.java:199)
at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleRequestRequest(CorbaMessageMediatorImpl.java:1624)
at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleRequest(CorbaMessageMediatorImpl.java:1486)
at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleInput(CorbaMessageMediatorImpl.java:990)
at com.sun.corba.ee.impl.protocol.giopmsgheaders.RequestMessage_1_2.callback(RequestMessage_1_2.java:214)
at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleRequest(CorbaMessageMediatorImpl.java:742)
at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.dispatch(CorbaMessageMediatorImpl.java:539)
at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.doWork(CorbaMessageMediatorImpl.java:2324)
at com.sun.corba.ee.impl.orbutil.threadpool.ThreadPoolImpl$WorkerThread.performWork(ThreadPoolImpl.java:497)
at com.sun.corba.ee.impl.orbutil.threadpool.ThreadPoolImpl$WorkerThread.run(ThreadPoolImpl.java:540)
Java Result: 1
run:
BUILD SUCCESSFUL (total time: 11 seconds)
मैं यह नहीं समझ सकता कि वह समस्या क्या है। मैंने अपने दूसरे पीसी पर एक ही परियोजनाएं बनाई और सभी काम सफलतापूर्वक। उसमें एक ही सॉफ्टवेयर मंच है।
मैंने पाया कि ट्यूटोरियल त्रुटिपूर्ण है। वे एक एंटरप्राइज़ एप्लिकेशन बनाने का सुझाव देते हैं। यदि, इसके बजाय, आप केवल एक ईजेबी मॉड्यूल बनाते हैं तो इसे विज्ञापन के रूप में काम करना चाहिए। देखें: http://stackoverflow.com/questions/25828542/how-to-create-a-remote-session-ejb-from-a-client/25829907#25829907 – Thufir