|
|
|
HTTP Status 500 и Tomcat
|
|||
|---|---|---|---|
|
#18+
Тестирую проделанную работу. Эта ошибка была изначально, но теперь хочу избавиться от нее окончательно. Тестирую на локальной машине. Запускаю, захожу. Проделав с десяток однотипных действий (поочередно изменяю язык вывода контента, нажимая на кнопки, - все работает, стринги подгружает из базы, одним словом, все корректно и работает именно так, как задумано), выдает ошибку: << type Exception report message description The server encountered an internal error () that prevented it from fulfilling this request. exception java.lang.NullPointerException com.simple.db.impl.SimpleProjectQuery.makeQuery(SimpleProjectQuery.java:46) com.simple.db.impl.SimpleProjectQuery.getLabel(SimpleProjectQuery.java:88) com.simple.servlets.MainWebServlet.processChangeStrings(MainWebServlet.java:193) com.simple.servlets.MainWebServlet.process(MainWebServlet.java:68) com.simple.servlets.MainWebServlet.doPost(MainWebServlet.java:33) javax.servlet.http.HttpServlet.service(HttpServlet.java:709) javax.servlet.http.HttpServlet.service(HttpServlet.java:802) note The full stack trace of the root cause is available in the Apache Tomcat/5.5.17 logs. >> Если перезагрузить Tomcat, то все снова работает отлично ... но недолго. Покопался в инете, вроде это как-то связано с настройками Tomcat. В моем случае исключение вызвано при работе с базой (именно при закрытии брокера). Практически уверен, что при аплоаде на хост ошибки не будет, но очень бы хотелось, чтобы ее не было и у меня на локальной машине. Кто сталкивался, хелп. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2006, 12:23 |
|
||
|
HTTP Status 500 и Tomcat
|
|||
|---|---|---|---|
|
#18+
Это не томкат виноват, а ваш код. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2006, 12:31 |
|
||
|
HTTP Status 500 и Tomcat
|
|||
|---|---|---|---|
|
#18+
В прцессе работы дохнет коннект с БД. Или Вы его сами где то убиваете или по времени. У хостинг провайдера буду те же проблемы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2006, 14:57 |
|
||
|
HTTP Status 500 и Tomcat
|
|||
|---|---|---|---|
|
#18+
Да вроде нет ... Я видел где-то объяснение, что Tomcat может переназначать порт, и когда после этого идет снова обращение по старому, он дает сбой. На всякий случай покажу, где выдает сбой: << private Collection makeQuery(Query query) { Collection list = null; PersistenceBroker broker = null; try { broker = PersistenceBrokerFactory.defaultPersistenceBroker(); list = broker.getCollectionByQuery(query); } catch (Exception exc) { } finally { broker.close(); } return list; } >> Сбой дает в строке briker.close(). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2006, 15:08 |
|
||
|
HTTP Status 500 и Tomcat
|
|||
|---|---|---|---|
|
#18+
зашибись. и такое г.. потом ктото будет поддерживать. не подумали что получится если у вас возникнет исключение (посмотрите хотя бы на прямых потомков Exception ) в try catch? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2006, 15:31 |
|
||
|
HTTP Status 500 и Tomcat
|
|||
|---|---|---|---|
|
#18+
Это вопрос или просто желание погрубить? - Нет дельного совета, не надо обливать грязью. Знаю, что ошибка типичная, а не локальная и код тут ни при чем: сто раз подряд выполняется функция, а на 101-ый дает сбой, причем, меняется только стринговая переменная, даже отсутствие которой не инициирует исключение. И знаю, что дело тут либо в настройках Tomcat, либо во взаимодействии сервера с PostgreSQL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2006, 15:44 |
|
||
|
HTTP Status 500 и Tomcat
|
|||
|---|---|---|---|
|
#18+
И все же проблема с БД. Ваш пул при каком то обращении не создается (возможно срабатывает ограничение на количество одновременных соединений с БД), а так как закрытие соединения Вы пихнули в finally, то при исключении в try, соединение с БД не создается, а Вы его все равно пытаетесь закрыть: broker.close(); Как минимум поместите все в try: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Но вообще то, мне кажется, Вы не правильно используете пул соединений! Создать его нужно только однажды, а затем многократно его использовать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2006, 16:01 |
|
||
|
HTTP Status 500 и Tomcat
|
|||
|---|---|---|---|
|
#18+
:) так оно и есть Открытие пула происходит при первом обращении к классу PersistanceBrokerFactory (это класс библиотеки OJB). А PersistenceBrokerFactory.defaultPersistenceBroker() только указывает на него (точнее, юзер не касается таких понятий как соединение или пул - все это за него делает OJB, предоставляя брокер, посредством которого осуществляется доступ к таблицам или выполнение запросов БД). Поэтому уж про что, про что, а про непосредственное соединение тут речь идти не может. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2006, 16:16 |
|
||
|
HTTP Status 500 и Tomcat
|
|||
|---|---|---|---|
|
#18+
IDVsbruckЭто вопрос или просто желание погрубить? - Нет дельного совета, не надо обливать грязью. Знаю, что ошибка типичная, а не локальная и код тут ни при чем : сто раз подряд выполняется функция, а на 101-ый дает сбой, причем, меняется только стринговая переменная, даже отсутствие которой не инициирует исключение. И знаю, что дело тут либо в настройках Tomcat, либо во взаимодействии сервера с PostgreSQL. знайте дальше. таким знайкам оч часто руки хочется пообрывать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2006, 16:39 |
|
||
|
HTTP Status 500 и Tomcat
|
|||
|---|---|---|---|
|
#18+
Мне кажется что у Вас утекают соединения. Никогда не пользовался OJB, но в Инете нашел интересный запрос для OJB: Код: plaintext 1. попробуете посмотреть что там твориться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2006, 18:20 |
|
||
|
HTTP Status 500 и Tomcat
|
|||
|---|---|---|---|
|
#18+
В общем-то, проблему решил. Как и говорил, проблема в настройках. Только не Томкета, а самого OJB. Пришлось покапать немного доки и вернуться на свою машину в файлик конфигурации OJB - OJB.properties. (Возможно, не все мои выражения достаточно корректны, но суть от этого не меняется) Дело в том, что самим OJB открывается пул (как вы понимаете - один единственный), для которого сам OJB лимитирует количество активных брокеров, количество idle брокеров, а также время реакции на запросы брокеров (к примеру - максимальное время отзыва базы, после которого вызывается исключение). Кроме этого, есть такой важный параметр - "ConnectionFactory / Default ConnectionPool" - способ создание пула (соединения) и брокеров; к примеру, можно, чтобы для каждой транзакции открывался новый пул, инициировался брокер, выполнялся запрос и пул закрывался. Все эти параметры по умолчанию стоят для удаленного сервера, где время от запроса юзера до его получения несравненно больше, чем на виртуальном сервере, организованном на отдельно взятом компьютере. Поэтому при выполнении запросов на локальном Томкете при частом поступлении запросов (как это было у меня) наступал момент, когда мой класс не мог получить "свободного" брокера и вызывалось исключение. Я поменял тип класса в настройках ОДжиБи и исключения больше не вызываются, сколько бы я не совершал однотипных действий. Правда, немного стало заметно, что запросы стали производиться немного дольше (исключительно субъективное мнение). Кроме этого, грешу на свой компьютер, который для веб-разработок на eclipse под Java, мягко говоря, слабоват, не успевая принудительно закрывать открытые брокеры. Также хочу сделать замечание по поводу кода. Нельзя не согласиться, что исправленный вами код выглядит "элегантнее", но дело в том, что почему-то я больше доверяю такой дворовой компании как Apache, перу которой принадлежит и OJB. А мой код, мягко говоря, содран с их сайта: apache -> db -> ojb -> docs -> tutorials. Большое спасибо, вопрос снимается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2006, 22:04 |
|
||
|
HTTP Status 500 и Tomcat
|
|||
|---|---|---|---|
|
#18+
Да, и ответ на последний пост: OJB действительно пользуется служебными таблицами, которые надо пальчиками (*.sql имеется) занести в свою БД, которых целых 9 (!). Кстати, этот момент также можно считать недостатком, правда за удобства всегда надо платить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2006, 22:08 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=33910722&tid=2148439]: |
0ms |
get settings: |
6ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
221ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
29ms |
get tp. blocked users: |
1ms |
| others: | 233ms |
| total: | 521ms |

| 0 / 0 |
