2013-01-15 14 views
6

थोड़ी देर के बाद मैंने जेबॉस 7.1.1 के तहत एक स्टेटलेस ईजेबी रन को दूरस्थ पहुंच प्रदान की। गुण का उपयोग कर वस्तु:जेबॉस 7: जेएनडीआई लुकअप

Properties jndiProps = new Properties(); 
jndiProps.put(Context.INITIAL_CONTEXT_FACTORY, 
    "org.jboss.naming.remote.client.InitialContextFactory"); 
jndiProps.put(Context.PROVIDER_URL,"remote://localhost:4447"); 
jndiProps.put(Context.SECURITY_PRINCIPAL, "remote"); 
jndiProps.put(Context.SECURITY_CREDENTIALS, "remotepwd"); 
jndiProps.put("jboss.naming.client.ejb.context", true); 
Context ctx = new InitialContext(jndiProps); 

String lookupString = "//HelloWorld/HelloWorldBean!org.acme.test.HelloWorld"; 
HelloWorld hw = (HelloWorld) ctx.lookup(lookupString); 
System.out.println("Response: "+ hw.sayHello("Hi there")); 

तो इस काम करता है ठीक लेकिन अब मैं jndi.properties फ़ाइल में JNDI बात रखना चाहता हूँ लेकिन विफल रहा है, यह कैसे फ़ाइल लग रहा है जैसे:

java.naming.factory.initial=org.jboss.naming.remote.client.InitialContextFactory 
java.naming.factory.url.pkgs=org.jboss.ejb.client.naming 
java.naming.provider.url=remote://localhost:4447 
java.naming.security.principal=remote 
java.naming.security.credentials=remotepwd 

अपवाद:

Exception in thread "main" java.lang.IllegalStateException: No EJB receiver available for handling [appName:,modulename:HelloWorld,distinctname:] combination for invocation context [email protected] 
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 $Proxy0.sayHello(Unknown Source) 
at de.brockhaus.test.client.TestClient.main(TestClient.java:35) 

मैं पहले से ही कई डॉको के माध्यम से चला गया लेकिन असफल रहा, तो इसे कैसा दिखना है?

उत्तर

7

ठीक है, तो मैं इस सवाल का जवाब अपने आप को पाया ...

सबसे पहले आप दो गुण फ़ाइलें, jndi.properties प्लस jboss-ejb-client.properties की आवश्यकता है।

jndi.properties:

# 
# jndi.properties 
# 
java.naming.factory.initial=org.jboss.naming.remote.client.InitialContextFactory 
java.naming.factory.url.pkgs=org.jboss.ejb.client.naming 
java.naming.provider.url=remote://localhost:4447 
java.naming.security.principal=remote 
java.naming.security.credentials=remotepwd 

jboss-ejb-client.properties:

# 
# jboss-ejb-client.properties 
# 
remote.connectionprovider.create.options.org.xnio.Options.SSL_ENABLED=false 
remote.connections=default 
remote.connection.default.host=localhost 
remote.connection.default.port = 4447 
remote.connection.default.connect.options.org.xnio.Options.SASL_POLICY_NOANONYMOUS=false 

भी गुण निर्दिष्ट किए बिना classpath पर उन दोनों के बाद एक आकर्षण की तरह कोड रन कर देगा कोड के भीतर

फिर भी भ्रामक देखने स्ट्रिंग के निर्माण है ...

+0

देखने स्ट्रिंग के निर्माण के लिए, आप यहाँ संदर्भित कर सकते हैं: https://docs.jboss.org/author/display/AS72/Remote+EJB+ आमंत्रण + के माध्यम से + JNDI + - + EJB + ग्राहक + एपीआई + या + रिमोट नामकरण + परियोजना। रिमोट लिंक के लिए, jboss सर्वर की शुरुआत में, लुकअप स्ट्रिंग आमतौर पर "जावा: jboss/exported /" के ठीक बाद होती है – dellgg

संबंधित मुद्दे