2012-07-12 3 views
0

У меня есть Java EE-сервер, который вызывает компонент в проекте A из сервлета в проекте B. Оба проекта находятся в одной и той же «ячейке» (кластере). Я хотел бы пройти через балансировщик нагрузки. Я не хочу использовать Message Driven Beans или Web Services.Вызов компонента A из сервлета проекта B

Есть ли другой способ сделать это, и как это может быть реализовано?

+1

той же клетке чего? – Olaf

+0

В этой ячейке (кластере) имеется два сервера для резервирования, содержащий копию каждого проекта, и балансировщик нагрузки переключается между ними. Так что если вызов поступает из проекта A сервера 1, я хочу пойти, возможно, на проект B-сервер 1 или сервер 2 в зависимости от доступности – otc

+0

Также проекты в настоящее время не зависят друг от друга – otc

ответ

1

На самом деле после того, как некоторое время я нашел решение:

Hashtable env = new Hashtable(); 
env.put(Context.INITIAL_CONTEXT_FACTORY,"com.ibm.websphere.naming 
.WsnInitialContextFactory"); 
env.put(Context.PROVIDER_URL,"corbaloc::boris:9811,:natasha 
:9812"); 
Context ctx = new InitialContext(env); 
TestEJBHome home = (TestEJBHome) 
PortableRemoteObject.narrow(ctx.lookup("ejb/ejbs/TestEJBHome"), 
    TestEJBHome.class); 
TestEJB bean = home.create(); 

Got отсюда: http://www.ibm.com/developerworks/websphere/techjournal/0807_pape/0807_pape.html

0

Если приложение, содержащее EJB, развернуто в том же кластере, что и клиент, то WebSphere всегда будет направлять запрос в EJB на том же сервере приложений, что и клиент, и вызов будет вызовом в виртуальной машине (вместо вызова вне процесса). Это называется сродство к процессу. Насколько я знаю, нет способа избежать или отключить сродство к процессу.

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