2016-03-29 21 views
0

JNDI yapılandırma sonu EJB 3.1 ve Oracle 12.1 DB ile ilgili bir sorunum var. kodum:EJB yapılandırmasıyla Java JNDI

private static NewSessionBeanRemote lookupRemoteSessionBean() throws NamingException { 

    final Hashtable jndiProperties = new Hashtable(); 
    jndiProperties.put(Context.URL_PKG_PREFIXES, "org.jboss.ejb.client.naming"); 

    final Context context = new InitialContext(jndiProperties); 
    final String appName = ""; 
    final String moduleName = "EjbComponent"; 
    final String distinctName = ""; 
    final String beanName = NewSessionBean.class.getSimpleName(); 
    final String viewClassName = NewSessionBeanRemote.class.getName(); 
    System.out.println("ejb:" + appName + "" + moduleName + "" + distinctName + "/" + beanName + "!" + viewClassName); 
    return (NewSessionBeanRemote) context.lookup("ejb:" + appName + "" + moduleName + "" + distinctName + "/" + beanName + "!" + viewClassName); 
} 

HATA i jndi arama çalıştığınızda: Ayrıca

javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file: java.naming.factory.initial 
at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:662) 
at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:313) 
at javax.naming.InitialContext.getURLOrDefaultInitCtx(InitialContext.java:350) 
at javax.naming.InitialContext.lookup(InitialContext.java:417) 
at com.studio.java.client.EjbTester.lookupRemoteSessionBean(EjbTester.java:73) 
at com.studio.java.client.EjbTester.invokeStatelessBean(EjbTester.java:51) 
at com.studio.java.client.EjbTester.main(EjbTester.java:41) 
+1

Olası kopyası [NoInitialContextException hatası] (http://stackoverflow.com/questions/1525385/noinitialcontextexception-error) – SkyWalker

+0

Hangi uygulama sunucusunu kullanıyorsunuz? – aribeiro

cevap

1

senin Context.URL_PKG_PREFIXES ayrıca aşağıdaki özellikleri ayarlayın gerekir: Eğer varsa, aynı zamanda

jndiProperties.put(Context.INITIAL_CONTEXT_FACTORY, "org.jboss.naming.remote.client.InitialContextFactory"); 
jndiProperties.put(Context.PROVIDER_URL, "http-remoting://127.0.0.1:8080"); 

Herhangi bir kimlik doğrulama türü için Context.SECURITY_PRINCIPAL ve Context.SECURITY_CREDENTIALS:

jndiProperties.put(Context.SECURITY_PRINCIPAL, "username"); 
jndiProperties.put(Context.SECURITY_CREDENTIALS, "password"); 
+0

Çok Teşekkürler aribeiro! Şimdi alacağım: EJBCLIENT000025: [appName :, moduleName: EjbComponent, distinctName:] işlemek için kullanılabilecek EJB alıcısı yok [email protected] – reve

+0

@reve, bu özelliği de kaçırıyorsunuz : jndiProperties.put ("jboss.naming.client.ejb.context", true); '. Daha fazla bilgi bulunabilir [burada] (https://docs.jboss.org/author/display/WFLY9/Remote+JNDI+Reference+Update+Draft). – aribeiro