Ich habe ein EJB-Modul (EAR1) in der Websphere deployed und möchte auf diese EJB von WAR zugreifen, die auch in der gleichen Websphere deplyed ist.EJB-Lookup in Websphere aus dem Container
Ich habe versucht mit unten Code, der nicht funktioniert.
public class RACAccessProvider {
private InitialContext myInitialContext;
public synchronized Object locateEJB(final Class clazz) throws ClassCastException, NamingException {
try {
System.out.println("looking up ejb.. for class " + clazz);
Object obj;
final String jndiName = clazz.getName();
obj = myInitialContext.lookup(jndiName);
System.out.println("###lookuop object.." + obj);
return obj;
} catch (final Exception e) {
e.printStackTrace();
}
return null;
}
public RACAccessProvider() {
System.out.println("Setting context in RACAccessProvider constructor...");
final Properties context = new Properties();
context.setProperty(Context.INITIAL_CONTEXT_FACTORY, "com.ibm.websphere.naming.WsnInitialContextFactory");
try {
myInitialContext = new InitialContext(context);
} catch (NamingException e) {
e.printStackTrace();
}
}
}
Der obige Code hängt an der Linie
obj = myInitialContext.lookup(jndiName);
Jede Hilfe sehr geschätzt wird.
Sie didnt schreiben, was Version war verwenden Sie, aber wenn Sie auf der gleichen JVM sind nur verwenden 'Initial ctx = new InitailContext();' ohne Requisiten, die zweite - Wenn Sie Java EE 6 verwenden, können Sie versuchen, statt einer Suche eine @ EJB-Anmerkung zu verwenden. – Gas
Haben Sie versucht, während des Hang-Vorgangs einen Thread-Dump auszuführen, um zu sehen, was passiert? –