Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / глюкавый вызов EJB / 25 сообщений из 25, страница 1 из 1
13.09.2007, 18:54:03
    #34798947
Andrew-tern
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
глюкавый вызов EJB
Столкнулся с такой вот проблемой:

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

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

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

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

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

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

Код: 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
14.09.2007, 11:33:13
    #34800188
Andrew-tern
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
глюкавый вызов EJB
причем ексепшн не возникает так как в Config.LogError ничего не попадает
...
Рейтинг: 0 / 0
14.09.2007, 11:56:50
    #34800307
wessen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
глюкавый вызов EJB
Метод getEjbViewDB() возвращает бин, который в нем не объявляется. Есть глобальная переменная? Нафига? В методе getEjbViewDB() эксепшин возникший в первом блоке try/catch теряется.
...
Рейтинг: 0 / 0
14.09.2007, 12:00:18
    #34800318
Juga
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
глюкавый вызов EJB
Посмотри ещё в cторону настройки сервера апп. Что с пулом EJB(на самом деле даже стэйт лесс пулятся), тайм ауты, может коннект к субд(пул JDBC).
...
Рейтинг: 0 / 0
14.09.2007, 12:12:06
    #34800352
Andrew-tern
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
глюкавый вызов EJB
wessenМетод getEjbViewDB() возвращает бин, который в нем не объявляется. Есть глобальная переменная? Нафига? В методе getEjbViewDB() эксепшин возникший в первом блоке try/catch теряется.

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

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

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

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

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

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


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

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

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

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

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


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

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

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

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

Код: 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
14.09.2007, 13:37:25
    #34800815
Andrew-tern
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
глюкавый вызов EJB
инглиш версия ошибки тоже найдена:

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

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

Код: plaintext
Disconnected: Connection timed out

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

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

Код: plaintext
Disconnected: Connection timed out

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

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

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

Код: plaintext
RMIInitialContextFactory.resetContexts();

П.С проверить можна будет через только после следующого прогнозируемого глюка
...
Рейтинг: 0 / 0
18.09.2007, 10:43:27
    #34807106
Andrew-tern
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
глюкавый вызов EJB
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
18.09.2007, 11:57:32
    #34807472
wessen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
глюкавый вызов EJB
Как уже говорили здесь, возможно на момент обращения сервер чем-то очень занят. Нужно в момент очередного длительного ожидание, сразу же оценивать ситуацию на сервере: загрузку процессора, посмотреть сколько памяти захапал процесс сервера приложений, можно еще попытаться открыть какую нибудь панель управления сервером, если проц занят на все 100%, видно, что не хватает памяти, панель управления не отвечает тоже, значит возможна утечка памяти, если всего этого в момент ожидания не происходит, значит нужно копаться в настройках контейнера ejb.
...
Рейтинг: 0 / 0
25.09.2007, 13:29:17
    #34824292
Andrew-tern
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
глюкавый вызов EJB
вот и разгадка:

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


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