2012-10-15 6 views
8

मैं JBoss पर @Remote EJB मिल गया है के रूप में 7, उपलब्ध निपटने नाम java:global/RandomEjb/DefaultRemoteRandom!pl.lechglowiak.ejbTest.RemoteRandom द्वारा लिए उपलब्ध।स्प्रिंग <जेईई: रिमोट slsb> और JBoss AS7 - कोई EJB रिसीवर

स्टैंडअलोन ग्राहक <jee:remote-slsb> सेम का उपयोग करता है वसंत आवेदन है। उस बीन का उपयोग करने का प्रयास करते समय मुझे java.lang.IllegalStateException: EJBCLIENT000025: No EJB receiver available for handling [appName:, moduleName:RandomEjb, distinctName:] combination for invocation context [email protected] मिलता है।

<jee:remote-slsb id="remoteRandom" 
    jndi-name="RandomEjb/DefaultRemoteRandom!pl.lechglowiak.ejbTest.RemoteRandom" 
    business-interface="pl.lechglowiak.ejbTest.RemoteRandom" 
    <jee:environment> 
     java.naming.factory.initial=org.jboss.naming.remote.client.InitialContextFactory 
     java.naming.provider.url=remote://localhost:4447 
     jboss.naming.client.ejb.context=true 
     java.naming.security.principal=testuser 
     java.naming.security.credentials=testpassword 
    </jee:environment> 
</jee:remote-slsb> 

<bean id="remoteClient" class="pl.lechglowiak.RemoteClient"> 
    <property name="remote" ref="remoteRandom" /> 
</bean> 

RemoteClient.java सार्वजनिक वर्ग RemoteClient {

private RemoteRandom random; 

public void setRemote(RemoteRandom random){ 
    this.random = random; 
} 

public Integer callRandom(){ 
    try { 
     return random.getRandom(100); 
    } catch (Exception e) { 
     e.printStackTrace(); 
     return null; 
    } 
} 

}

मेरे jboss ग्राहक जार: org.jboss

यहाँ applicationContext.xml के प्रासंगिक हिस्सा है .as jboss-as-ejb-client-bom 7.1.2. अंतिम पोम

pl.lechglowiak.ejbTest.RemoteRandom क्लाइंट एप्लिकेशन क्लासपाथ के लिए उपलब्ध है। jndi.properties में <jee:environment><jee:remote-slsb> में सटीक गुण होते हैं।

Context ctx2 = new InitialContext(); 
RemoteRandom rr = (RemoteRandom) ctx2.lookup("RandomEjb/DefaultRemoteRandom!pl.lechglowiak.ejbTest.RemoteRandom"); 
System.out.println(rr.getRandom(10000)); 

लेकिन यह: से निपटने [के लिए appName :, moduleName नहीं EJB रिसीवर उपलब्ध:

ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml"); 
RemoteClient client = ctx.getBean("remoteClient", RemoteClient.class); 
System.out.println(client.callRandom()); 

अपवाद के साथ समाप्त होता है: java.lang.IllegalStateException: EJBCLIENT000025

इस तरह के कोड बिना किसी अपवाद के चलाता है : RandomEjb, विशिष्ट नाम:] आमंत्रण संदर्भ [email protected] के लिए संयोजन।

jboss.naming.client.ejb.context=true निर्धारित है। क्या आपको कोई विचार है कि मैं <jee:remote-slsb> में गलत क्या कर रहा हूं?

+0

यह एक सुधार है https://jira.primekey.se/browse/ECA-3607 – eluish192

उत्तर

1

मैंने अभी एक बहुत ही समान समस्या हल की है। क्या आपने "jboss-ejb-client.propeties" फ़ाइल बनाई है?

यदि नहीं, तो बाहर की जाँच इन: https://docs.jboss.org/author/display/AS71/EJB+invocations+from+a+remote+client+using+JNDI (विशेष रूप से उप-विषय "EJB ग्राहक संदर्भ गुण स्थापना")

https://community.jboss.org/message/740827

https://community.jboss.org/thread/197989

आप classpath में फ़ाइल रखना चाहिए आपके ग्राहक का

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 

remote.connection.default.username=login 
remote.connection.default.password=password 

गुड लक: यहाँ यह कैसा नज़र आ सकते सरल उदाहरण है!

पीएस: इस कॉन्फ़िगरेशन में एकमात्र प्रोजेक्ट-विशिष्ट मान "उपयोगकर्ता नाम" और "पासवर्ड" होगा।

पीएस 2: और यदि आपने अपने जेबॉस सेट-अप में कोई उपयोगकर्ता नहीं जोड़ा है, तो यह आपके जेबॉस फ़ोल्डर में स्थित "बिन/एड-यूजर। [Bat/sh]" स्क्रिप्ट के माध्यम से किया जाता है।

0

expose-access-context="true" को जी में सेट करें: रिमोट-एसएलएसबी टैगलिब।

0

java.naming.factory.url.pkgs का उपयोग कर = java.naming.factory.initial = org.jboss.naming.remote.client.InitialContextFactory

के बजाय org.jboss.ejb.client.naming
संबंधित मुद्दे