Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Java EE (J2EE) и Spring > EJB клиент |
Автор: KostenkoSergey 21.4.2010, 16:14 |
Интерессует следующий момент: Есть некое Swing-приложение, которое работает с EJB 3.0 через удалённые интерфейсы. У меня стоит JBoss 4.2.3 - локально приемлемо, а на удалённом сервере - вроде как медлительно получается. Отсюда вопросы: 1. Насколько оптимальна такая схема с точки зрения производительности ? 2. Насколько требователен к каналам связи rmi\iiop протокол? 3. Возможно есть ещё какие то более "быстрые" протоколы для вызова удалённых тырфейсов ? зы. Может имеет смысл сделать в качестве точки входа сервлет, который будет дёргать бины локально и позаморачиваться с взаимодействием клиента с сервлетом. pps может кто встречал цифры с тестами времени отклика веб-сервиса и удалённого вызова ? |
Автор: COVD 21.4.2010, 18:17 |
Если локально быстро, а удаленно медленно, значит медленный интернет. зы. бессмысленно. |
Автор: KostenkoSergey 22.4.2010, 12:42 |
Локально - оно наверное через одну ВМ работает - сичас пишу сравнительный тест - отпишусь о результатах. |
Автор: KostenkoSergey 22.4.2010, 13:40 | ||||||||
И так для теста был выбран JBoss 4.2.3 GA, EJB 3.0, Hessian как веб сервис. Если кому лень читать суть изложу что проверял: 1. Локап ремоте-ежб, и выполнение 50-ти удалённых вызовов 2. 50 вызовов вебсервиса 3. 50 вызовов EJB через веб-сервис Код который использовался привожу ниже: Интерфейс - общий для вебсервиса и EJB:
Код EJB:
Код вебсервиса:
И собсно говоря, код клиента:
Резултат выполения последнего на интернет-канале 3,1 Мбит/с сдедующий: Lokup time: 687 ms. Hello EJB Remote Hello EJB Remote Hello EJB Remote Hello ............. Execute 50 remote call time: 13453 ms. Create proxy time: 0 ms. HelloService HelloService HelloService HelloService HelloService.......... Execute 50 webservice call time: 5609 ms. Create proxy time: 0 ms. HelloService [Hello EJB Remote] HelloService [Hello EJB Remote] ............ Execute 50 ejb call via webservice time: 5672 ms. Такие вот пирожки. Имхо, результат тут мало зависит от скорости канала - проверю ещё дома на 10 мбит/c, думаю результат будет соизмерим. ззы. Мож кому интересно - на локалхосте результаты такие: Lokup time: 343 ms. Hello EJB Remote Hello EJB Remote .... Execute 50 remote call time: 1047 ms. Create proxy time: 0 ms. HelloService HelloService HelloService....... Execute 50 webservice call time: 297 ms. Create proxy time: 0 ms. HelloService [Hello EJB Remote] HelloService [Hello EJB Remote] ......... Execute 50 ejb call via webservice time: 234 ms. |
Автор: COVD 22.4.2010, 18:11 |
Вы подтвердили факт, что локальные коммуникации обычно всегда быстрее (еще и надежнее), чем удаленные. А вот то, что testEJBOwerWebService у вас работает быстрее, чем testEJBRemote - это странно. В RMI встроены несколько протоколов связи и выбирается оптимальный. В том числе и HTTP, который применяется для туннелирования, если остальные протоколы запрещены (файерволы). Но для этого на серверной стороне предполагается сервлет, который работает в паре с RMI. Прямое соединение через RMI не может проигрывать варианту EJBOwerWebService. |