2017-04-19 1 views
0

Ich möchte Remote-EJB-Lookup von Spring oder Standalone Java ausführen, da meine Anwendung als Standalone ausgeführt wird. Ich kann keine Hersteller-Jars wie WebLogic/Jboss verwenden Thin Clients. Wie kann Remote-EJB-Lookup mithilfe von Java-Spezifikationsregistern oder nur Spring ausgeführt werden?Remote-JNDI-Suche mit nur Java-Jars (ohne Thin Clients von WebLogic/Jboss usw.)

Ich habe versucht, javax.naming.spi.InitialContextFactory aber unter Fehler zur Laufzeit zu verwenden.

Aufruf der Init-Methode fehlgeschlagen; verschachtelte Ausnahme javax.naming.NoInitialContextException ist: Kann nicht Klasse instanziiert: javax.naming.spi.InitialContextFactory [Root Ausnahme ist java.lang.InstantiationException: javax.naming.spi.InitialContextFactory]

+0

Bitte lesen Sie [Unter welchen Umständen kann ich „dringend“ oder andere ähnliche Ausdrücke auf meine Frage hinzufügen, um schnelle Antworten zu erhalten?] (h ttps: //meta.stackoverflow.com/q/326569) - Die Zusammenfassung ist, dass dies keine ideale Methode ist, um Freiwillige anzusprechen, und ist wahrscheinlich kontraproduktiv, um Antworten zu erhalten. Bitte unterlassen Sie das Hinzufügen zu Ihren Fragen. – halfer

Antwort

0

Durch Feder verwenden, können Sie tun dass durch folgenden Java-config:

@Configuration 
public class EJBConfig { 
    @Bean 
    public LocalStatelessSessionProxyFactoryBean fooService(){ 
     LocalStatelessSessionProxyFactoryBean factory = new LocalStatelessSessionProxyFactoryBean(); 
     factory.setBusinessInterface(FooService.class); 
     factory.setJndiName("java:global/my_ear/my_jar/FooServiceBean"); 
     return factory; 
    } 
} 

oder mit xml

<bean id="fooService" 
     class="org.springframework.ejb.access.LocalStatelessSessionProxyFactoryBean"> 
    <property name="jndiName" value="java:global/my_ear/my_jar/FooServiceBean"/> 
    <property name="businessInterface" value="com.company.ejb.FooService"/> 
</bean> 
+0

mit diesem kann ich nur mit lokalen EJBs verbinden, aber mein Fall ist Remote-EJB suchen (dieser ejb ist in anderen Container in Remote-Server bereitgestellt), in diesem Fall, wie InitialContext erhalten, welches Paket von java.naming.factory.initial sollte ich benutze jetzt? – Ramesh

+0

In ähnlicher Weise muss für den Zugriff auf das Stateless Session Bean die Klasse SimpleRemoteStatelessSessionProxyFactoryBean anstelle von LocalStatelessSessionProxyFactoryBean verwendet werden. Die Eigenschaften 'jndiName' und 'businessInterface' sind weiterhin gültig. – mhshimul

+0

Shi, es funktioniert nicht, weil Spring nicht weiß, welcher Server sich verbindet und den Kontext lädt, da wir keinen Kontext laden. Spring sollte jndiProperties dazu bringen, die Umgebungs-Referenz zu laden und diese Referenz für jee: lookup zu verwenden. Wenn ich Weblogic Kontext Fabrik verwenden, funktioniert es, aber wie pro Projektspezifikationen, kann ich keinen Anbieter verwandt, es sei denn es kommt standardmäßig von Java oder Frühling. – Ramesh