Это мой первый вопрос на переполнение стека, так что не стесняйтесь сказать мне, если я что-то неправильно :)Удаленный поиск JNDI возвращение мой собственный EJB
Я работаю над проектом, EJB и JBoss 4.2.3 .ga. В какой-то момент мы пытаемся получить доступ к каждому узлу кластера, найти EJB и вернуть его.
Это кусок кода, который выполняет поиск JNDI:
public static <I> I getCache(Class<I> i, String clusterNode) {
ServiceLocator serviceLocator = ServiceLocator.getInstance();
String jndi = serviceLocator.getRemoteJNDIName(i);
Properties props = new Properties();
props.setProperty(Context.PROVIDER_URL, "jnp://" + clusterNode + ":"
+ jndiPort);
props.setProperty(Context.URL_PKG_PREFIXES, "org.jboss.naming");
props.setProperty(Context.INITIAL_CONTEXT_FACTORY,
"org.jnp.interfaces.NamingContextFactory");
Object result = null;
try {
InitialContext ctx = new InitialContext(props);
result = ctx.lookup(jndi);
} catch (NamingException e) {
return null;
}
return (I) result;
}
Здесь:
- CLUSTERNODE простая строка с IP-адрес или имя DNS-узла. Например: «192.168.2.65» или «cluster1».
- getRemoteJNDIName возвращает строку, например, как это: «MyEARName/MyEJBName/удаленный»
Проблема заключается в том, что, когда я называю этот метод, например, «127.0.0.1» он прекрасно работает. Кроме того, если я назову его существующим и работающим IP-адресом, где работает сервер, все в порядке.
Однако, если я вызываю метод с несуществующим или неработающим адресом или именем dns, вместо того, чтобы бросать исключение NamingException, он возвращает EJB на моей собственной машине. Поэтому я не знаю, как убрать узел или нет.
Я предполагаю, что могут быть лучшие способы сделать это. Я хотел бы услышать о них, но мы не можем совершить «большие» изменения в продукте из-за того, что он находится в производстве уже несколько лет.
Все. Спасибо вам в ожидании и с наилучшими пожеланиями.
Возможно ли, что ваша конфигурация имеет резервную копию на localhost? Каково значение 'clusterNode'? –
clusterNode - это простая строка с IP-адресом или именем DNS-узла. Например: «192.168.2.75» или «cluster1». – Faliorn