2013-11-01 5 views
0

Согласно java ee Tutorial можно получить доступ к EJB через jndi с:доступа к EJB через JNDI поиск

java:global[/application name]/module name/enterprise bean name[/interface name] 

Я использую сервер Jboss приложений и при попытке получения доступа к EJB имени FirstBean, который реализует на интерфейсе CustomerData с:

bean = (CustomerData) context.lookup("java:global/EJBTest/FirstBean/CustomerData"); 

он бросает исключение:

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 

Если добавить строку:

properties.put(javax.naming.Context.INITIAL_CONTEXT_FACTORY, "org.jboss.naming.remote.client.InitialContextFactory"); 

он бросает другого Exception:

No provider URL configured for connection 

я достиг к нему доступ с помощью Jboss спецификацию:

bean = (CustomerData) context.lookup("ejb:/EJBTest//FirstBean!com.al.ejbtest.CustomerData"); 

Как можно получить его, используя стандартную спецификацию java ee speci и особенно только с косой чертой, а не с восклицательным знаком? Нужны ли какие-либо переменные среды?

+0

Что 'Jboss' версию вы используете? – Ilya

+0

jboss-as-7.1.1.Final – arjacsoh

+0

Откуда вы пытаетесь получить доступ к EJB? Если вы попробуете его с помощью удаленного ejb-клиента, вам нужно проверить документацию этого клиента. Например https://docs.jboss.org/author/display/AS71/Remote+EJB+invocations+via+JNDI+-+EJB+client+API+or+remote-naming+project?_sscc=t –

ответ

0

дополнительно попробовать это:

properties.put(javax.naming.Context.PROVIDER_URL, "jnp://127.0.0.1:1099");

+0

Нет, он делает не работа. Даже если я попробую новее: jndiProps.put (Context.PROVIDER_URL, "remote: // localhost: 4447"); – arjacsoh

Смежные вопросы