powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / глюкавый вызов EJB
25 сообщений из 25, страница 1 из 1
глюкавый вызов EJB
    #34798947
Andrew-tern
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Столкнулся с такой вот проблемой:

Эсть два сервера на которых установлен AS10g . на одном задеплоина EJB на другом клиент который активизируется через web-интерфейс (сервелет вызывает статический клас котрый возвращает EJB)

Код: plaintext
1.
 Context context = new   InitialContext(env);
             viewDBejb = (ViewDBejb)context.lookup("EJB");

потом вызывает нужную функцию и результат показывает на екран.

Сначала все роботает, но когда приходиш утром то браузер начинает неприлично долго грузить страницу , через несколько минут устает и в окне браузера пустая страница. И это можно повторять не сколько раз, гдето минут через 15 все опять роботает. Такое может потом случатся в обед и вечером. Эксепшн не возникает.(то есть не перехватываеться)

Делаю такой вывод: что на сервере где WEB устаревает сылка на EJB и сервелет долго потом пытаеться конектится, а минут через 15 роздупляэться и все ок.

Что делать если это так? как это проверить? может есть другие варианты ошибки?
...
Рейтинг: 0 / 0
глюкавый вызов EJB
    #34798966
Juga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
если бинс стэйт фул ничего удивительного
...
Рейтинг: 0 / 0
глюкавый вызов EJB
    #34799921
Andrew-tern
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
@Stateless(name="EJB")
...
Рейтинг: 0 / 0
глюкавый вызов EJB
    #34800105
wessen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нужно посмотреть код сервлета, как он там вызывает бин, иначе ничего сказать нельзя.
...
Рейтинг: 0 / 0
глюкавый вызов EJB
    #34800181
Andrew-tern
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Эта процедура в сервелете

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
 private  ViewDBejb getEjbViewDB()  throws  MyException{
             try {
               
                viewDBejb=Config.getEjbViewDB();
            } catch (Exception e){
                Config.LogError(" Exception connect to ejb: "+e.getMessage());
                viewDBejb=Config.getEjbViewDB();
            }
         return  viewDBejb;
    }

А эта в статическом класе Config:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
 public   static  ViewDBejb getEjbViewDB()  throws  MyException{
        ViewDBejb viewDBejb =  null ;
         try {
             Context context = Config.getInitialContextsecEJB();
             viewDBejb = (ViewDBejb)context.lookup("EJB");
             viewDBejb.setSessionInfo(cur_SessionInfo);  
        } catch (Exception e){
             try   {
                Context context = Config.getInitialContextsecEJB();
                context.close();
                context = Config.getInitialContextsecEJB();
                viewDBejb = (ViewDBejb)context.lookup("EJB");
                
            }  catch  (Exception ex)  {          
                 throw   new  MyException(" Config.getEjbViewDB()- Exception :"+ex.getMessage());
            }
        }
         return  viewDBejb;
    }

    public   static  Context getInitialContextsecEJB()  throws  NamingException {
        Hashtable env =  new  Hashtable();       
       
        
        // Oracle Application Server 10g connection details
        env.put( Context.INITIAL_CONTEXT_FACTORY, "oracle.j2ee.rmi.RMIInitialContextFactory" );
        
        
            env.put( Context.SECURITY_PRINCIPAL, login);
            env.put( Context.SECURITY_CREDENTIALS, pass);        
        
            env.put(Context.PROVIDER_URL, "ormis://10.0.29.213:12777/ViewDBejb");        
         return   new  InitialContext(env);// 
        
    }
...
Рейтинг: 0 / 0
глюкавый вызов EJB
    #34800188
Andrew-tern
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
причем ексепшн не возникает так как в Config.LogError ничего не попадает
...
Рейтинг: 0 / 0
глюкавый вызов EJB
    #34800307
wessen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Метод getEjbViewDB() возвращает бин, который в нем не объявляется. Есть глобальная переменная? Нафига? В методе getEjbViewDB() эксепшин возникший в первом блоке try/catch теряется.
...
Рейтинг: 0 / 0
глюкавый вызов EJB
    #34800318
Juga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Посмотри ещё в cторону настройки сервера апп. Что с пулом EJB(на самом деле даже стэйт лесс пулятся), тайм ауты, может коннект к субд(пул JDBC).
...
Рейтинг: 0 / 0
глюкавый вызов EJB
    #34800352
Andrew-tern
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
wessenМетод getEjbViewDB() возвращает бин, который в нем не объявляется. Есть глобальная переменная? Нафига? В методе getEjbViewDB() эксепшин возникший в первом блоке try/catch теряется.

глобальная переменая есть (так сложилось)

блок try для того что б если за первый раз не получилось получить бин то делается еще одна попытка и уже если в ней исключение то то тогда в лог.

P.S Еще сложность в том что глюк исключительная ситуация ведь сейчас все роботает проверять изменеия в коде можно с утра в обед и вечером время глюка не больше 15 мин
...
Рейтинг: 0 / 0
глюкавый вызов EJB
    #34800437
Andrew-tern
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Jugaесли бинс стэйт фул ничего удивительного

как нужно решать вопрос в случае стэйт фул? (возможно здесь аналогично)
...
Рейтинг: 0 / 0
глюкавый вызов EJB
    #34800529
Juga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Понятия не имею как в вашем сервере работает ваш бин контейнер. а вообще есть тайм аут в течении которого бинс находится в состоянии активэйт, после пасивации сервер апп записывает состояние в совою базёнку и бинс убирается из пула потом восстанавливает состояние по запросу. тут всё от реализации контейнера зависит, читайте мануал к вашему серверу.
...
Рейтинг: 0 / 0
глюкавый вызов EJB
    #34800607
wessen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JugaПонятия не имею как в вашем сервере работает ваш бин контейнер. а вообще есть тайм аут в течении которого бинс находится в состоянии активэйт, после пасивации сервер апп записывает состояние в совою базёнку и бинс убирается из пула потом восстанавливает состояние по запросу. тут всё от реализации контейнера зависит, читайте мануал к вашему серверу.

Ну не по 15-ть минут же СП востанавливает состояние бина.
...
Рейтинг: 0 / 0
глюкавый вызов EJB
    #34800623
wessen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andrew-tern

блок try для того что б если за первый раз не получилось получить бин то делается еще одна попытка и уже если в ней исключение то то тогда в лог.


классно, т.е. почему в 1-ый раз не удалось получить бин нас не волнует. вот может там и вылетает какой-нибудь timeout exception.

и еще, инициализация бина происходит при каждом обращении к сервлету?
...
Рейтинг: 0 / 0
глюкавый вызов EJB
    #34800647
Juga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
бывает и хуже. Правда как справился не помню уже. Но была такая у меня проблема в BES при втором обращении к бинсу вылетал эксепшн(с первого раза пока пул чист всё было ок). Это я к тому что контейнеры это чёрный ящик и что там внутри происходит можно только догадываться. При разработке лучше придерживаться доки которая к серверу идёт.
...
Рейтинг: 0 / 0
глюкавый вызов EJB
    #34800677
Andrew-tern
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
wessen JugaПонятия не имею как в вашем сервере работает ваш бин контейнер. а вообще есть тайм аут в течении которого бинс находится в состоянии активэйт, после пасивации сервер апп записывает состояние в совою базёнку и бинс убирается из пула потом восстанавливает состояние по запросу. тут всё от реализации контейнера зависит, читайте мануал к вашему серверу.

Ну не по 15-ть минут же СП востанавливает состояние бина.

да слишком долго в не рабочем состоянии. Например после деплоя как бы бин должен запускаться но это происходит за несколько секунд (а не минут). Если во время глюка сделать рестарт серверу все ок
...
Рейтинг: 0 / 0
глюкавый вызов EJB
    #34800682
Kachalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wessenНу не по 15-ть минут же СП востанавливает состояние бина.
- возможно поутру при первом обращении система понимает что нужен гарбидж коллект, а если настройки GC кривоватые и памяти давалось много, то чистка может занять продолжительное время. Хорошо бы автор топика промониторил расход ОП на сервером приложений и расход ОП в ОС на которой живет сервер (может и физической памяти не хватает).
...
Рейтинг: 0 / 0
глюкавый вызов EJB
    #34800690
Andrew-tern
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
wessen Andrew-tern

блок try для того что б если за первый раз не получилось получить бин то делается еще одна попытка и уже если в ней исключение то то тогда в лог.


классно, т.е. почему в 1-ый раз не удалось получить бин нас не волнует. вот может там и вылетает какой-нибудь timeout exception.

и еще, инициализация бина происходит при каждом обращении к сервлету?

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

поменял код первый эксепшн в случаи такого должен логироваться но смогу проверить только при последуещем сбое
...
Рейтинг: 0 / 0
глюкавый вызов EJB
    #34800784
Andrew-tern
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
в логах сервера найдено такое сообщения(после некоторых эксперментов новые не появляются но ошибка наверно таже)

Код: plaintext
Exception :Disconnected: java.lang.IllegalStateException: ClassLoader "myproject.web.myproject:0.0.0" (из <web-module> in /oracle/product/as10g/j2ee/Online/applications/myproject/myproject/): этот загрузчик был закрыт; его не следует использовать

какой загрузчик?(может конект бину ) а потом он открывается что ли?
...
Рейтинг: 0 / 0
глюкавый вызов EJB
    #34800815
Andrew-tern
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
инглиш версия ошибки тоже найдена:

Код: plaintext
 This  loader has been closed and should not be in use
...
Рейтинг: 0 / 0
глюкавый вызов EJB
    #34802035
Andrew-tern
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
wessenМетод getEjbViewDB() возвращает бин, который в нем не объявляется. Есть глобальная переменная? Нафига? В методе getEjbViewDB() эксепшин возникший в первом блоке try/catch теряется.

возникает такой exception:

Код: plaintext
Disconnected: Connection timed out

может кто то доступно обьяснить почему и как с этим бороться. Спасибо
...
Рейтинг: 0 / 0
глюкавый вызов EJB
    #34802084
wessen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andrew-tern wessenМетод getEjbViewDB() возвращает бин, который в нем не объявляется. Есть глобальная переменная? Нафига? В методе getEjbViewDB() эксепшин возникший в первом блоке try/catch теряется.

возникает такой exception:

Код: plaintext
Disconnected: Connection timed out

может кто то доступно обьяснить почему и как с этим бороться. Спасибо

Желательно полный стектрейс привести.

http://sql.ru/forum/actualthread.aspx?tid=473473#4668825
...
Рейтинг: 0 / 0
глюкавый вызов EJB
    #34804155
Andrew-tern
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть такое предположение что в случае возникновения ексепшн во втором блоке ну жно вставить такую строку:

Код: plaintext
RMIInitialContextFactory.resetContexts();

П.С проверить можна будет через только после следующого прогнозируемого глюка
...
Рейтинг: 0 / 0
глюкавый вызов EJB
    #34807106
Andrew-tern
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
wessen Andrew-tern wessenМетод getEjbViewDB() возвращает бин, который в нем не объявляется. Есть глобальная переменная? Нафига? В методе getEjbViewDB() эксепшин возникший в первом блоке try/catch теряется.

возникает такой exception:

Код: plaintext
Disconnected: Connection timed out

может кто то доступно обьяснить почему и как с этим бороться. Спасибо

Желательно полный стектрейс привести.

http://sql.ru/forum/actualthread.aspx?tid=473473#4668825


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
 07 / 09 / 18   09 : 22 : 21  javax.naming.NamingException: Disconnected: Connection timed out
 07 / 09 / 18   09 : 22 : 21        at com.evermind.server.rmi.RMIClientContext.lookup(RMIClientContext.java: 64 )
 07 / 09 / 18   09 : 22 : 21        at javax.naming.InitialContext.lookup(InitialContext.java: 351 )
 07 / 09 / 18   09 : 22 : 21        at testproject1.Config.getEjbViewDB(Config.java: 90 )
 07 / 09 / 18   09 : 22 : 21        at testproject1.Config.getStrEjb(Config.java: 115 )
 07 / 09 / 18   09 : 22 : 21        at _index._jspService(_index.java: 62 )
 07 / 09 / 18   09 : 22 : 21        at com.orionserver.http.OrionHttpJspPage.service(OrionHttpJspPage.java: 59 )
 07 / 09 / 18   09 : 22 : 21        at oracle.jsp.runtimev2.JspPageTable.service(JspPageTable.java: 462 )
 07 / 09 / 18   09 : 22 : 21        at oracle.jsp.runtimev2.JspServlet.internalService(JspServlet.java: 598 )
 07 / 09 / 18   09 : 22 : 21        at oracle.jsp.runtimev2.JspServlet.service(JspServlet.java: 522 )
 07 / 09 / 18   09 : 22 : 21        at javax.servlet.http.HttpServlet.service(HttpServlet.java: 856 )
 07 / 09 / 18   09 : 22 : 21        at com.evermind.server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java: 712 )
 07 / 09 / 18   09 : 22 : 21        at com.evermind.server.http.ServletRequestDispatcher.forwardInternal(ServletRequestDispatcher.java: 369 )
 07 / 09 / 18   09 : 22 : 21        at com.evermind.server.http.HttpRequestHandler.doProcessRequest(HttpRequestHandler.java: 865 )
 07 / 09 / 18   09 : 22 : 21        at com.evermind.server.http.HttpRequestHandler.processRequest(HttpRequestHandler.java: 447 )
 07 / 09 / 18   09 : 22 : 21        at com.evermind.server.http.AJPRequestHandler.run(AJPRequestHandler.java: 302 )
 07 / 09 / 18   09 : 22 : 21        at com.evermind.server.http.AJPRequestHandler.run(AJPRequestHandler.java: 190 )
 07 / 09 / 18   09 : 22 : 21        at oracle.oc4j.network.ServerSocketReadHandler$SafeRunnable.run(ServerSocketReadHandler.java: 260 )
 07 / 09 / 18   09 : 22 : 21        at com.evermind.util.ReleasableResourcePooledExecutor$MyWorker.run(ReleasableResourcePooledExecutor.java: 303 )
 07 / 09 / 18   09 : 22 : 21        at java.lang.Thread.run(Thread.java: 595 )
...
Рейтинг: 0 / 0
глюкавый вызов EJB
    #34807472
wessen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как уже говорили здесь, возможно на момент обращения сервер чем-то очень занят. Нужно в момент очередного длительного ожидание, сразу же оценивать ситуацию на сервере: загрузку процессора, посмотреть сколько памяти захапал процесс сервера приложений, можно еще попытаться открыть какую нибудь панель управления сервером, если проц занят на все 100%, видно, что не хватает памяти, панель управления не отвечает тоже, значит возможна утечка памяти, если всего этого в момент ожидания не происходит, значит нужно копаться в настройках контейнера ejb.
...
Рейтинг: 0 / 0
глюкавый вызов EJB
    #34824292
Andrew-tern
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вот и разгадка:

проблема была в фаерволе что поставили между двумя серверами, который в случаи отсутствия запросов рубал соединения.
...
Рейтинг: 0 / 0
25 сообщений из 25, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / глюкавый вызов EJB
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]