настроить порт поиска JNDI jboss + EJB - PullRequest
0 голосов
/ 01 июня 2011

Я использую JSF и EJB как два отдельных проекта в моем приложении.Ниже я описал код, используемый для поиска JNDI

protected final Object lookup(Class className) throws NamingException {

        Properties properties = new Properties();
        properties.put("java.naming.factory.initial","org.jnp.interfaces.NamingContextFactory");
        properties.put("java.naming.factory.url.pkgs","org.jboss.naming:org.jnp.interfaces");
        properties.put("java.naming.provider.url",ProjectConstants.PORT_NUMBER);
        initialContext = new InitialContext(properties);
        return initialContext.lookup(ProjectConstants.DEPLOYMENT_NAME+"/"+className.getSimpleName().substring(0, className.getSimpleName().lastIndexOf("Remote")) + "/remote-" + className.getName());
    }

Есть ли какая-то особая конфигурация, необходимая в jboss для порта, я использую для поиска?

Ответы [ 2 ]

2 голосов
/ 01 июня 2011

По умолчанию порт JNDI равен 1099. Если вы хотите другой порт, запустите jBoss с -Djboss.service.binding.set=ports-01. Это добавит 100 к каждому порту. 1099 -> 1199 и т. Д.

1 голос
/ 01 июня 2011

Порт по умолчанию - 1099, и загрузчик контекста попытается выполнить собственное обнаружение.

Однако вы также можете указать порт для java.naming.provider.url, например, это также будет работать:

properties.put("java.naming.provider.url", "jnp://localhost:15102");

Я также рекомендую вам не использовать жестко закодированные строки, а полагаться на существующие константы в javax.naming.Context, например:

    final Properties    props   = new Properties();

    props.put(Context.SECURITY_PRINCIPAL, username);
    props.put(Context.SECURITY_CREDENTIALS, password);
    props.put(Context.INITIAL_CONTEXT_FACTORY, MY_JNDI_FACTORY);
    props.put(Context.URL_PKG_PREFIXES, "org.jboss.naming:org.jnp.interfaces");
    props.put(Context.SECURITY_PROTOCOL, MY_JNDI_PROTOCOL);
    props.put(Context.PROVIDER_URL, server);
...