|
|
|
Pool соединение и рекурсия в сервлете как реализовать???
|
|||
|---|---|---|---|
|
#18+
Пытаюсь создать pool-соединение проекта. Созданию pool соединение используя класс AbstractDao и ServletContextListener. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. Код: java 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. web.xml Код: xml 1. 2. 3. И сервлет, от которого наследуются все остальные Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. Вопрос в том, как сделать в сервлете с рекурсией одно соединение на весь сервлет. Пытаюсь вот так и ничего не получается. Код: java 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. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2012, 12:28:46 |
|
||
|
Pool соединение и рекурсия в сервлете как реализовать???
|
|||
|---|---|---|---|
|
#18+
gema, и нафига весь этот велосипед нужен? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2012, 12:59:49 |
|
||
|
Pool соединение и рекурсия в сервлете как реализовать???
|
|||
|---|---|---|---|
|
#18+
Чтобы у пользователя в течении всего сеанса работы было одно подключение к БД. И потом один раз прописал насройки подключения к БД и потом пользуешься. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2012, 13:09:24 |
|
||
|
Pool соединение и рекурсия в сервлете как реализовать???
|
|||
|---|---|---|---|
|
#18+
gemaЧтобы у пользователя в течении всего сеанса работы было одно подключение к БД.Тогда пул вам противопоказан.И потом один раз прописал насройки подключения к БД и потом пользуешься.Для всего этого не требуется никаких листенеров и (отдельных) сервлетов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2012, 13:12:18 |
|
||
|
Pool соединение и рекурсия в сервлете как реализовать???
|
|||
|---|---|---|---|
|
#18+
gemaСозданию pool соединение используя класс AbstractDao и ServletContextListener. javax.sql.DataSource это и есть пул. А не то что вы создаёте. gemaИ сервлет, от которого наследуются все остальные Это как раз отличный пример злоупотребления наследованием. Не нужно наследовать классы только для того чтобы использовать какую-то готовую функциональность. Погуглите на тему "наследование" против "делегирования". В вашем дизайне - вы не можете сделать так чтобы не сервлет использовал готовый код работы с пулом. Вы не сможете наследовать сервлеты от других классов, потому что множественного наследования в Java нет и родитель уже ваш класс init. Интересно как это вообще работает, у вас класс наследние переопределяет init родителя и никак не использует super.init(). Что тогда вообще даёт наследование от init? Ознакомьтесь с общепринятыми coding conventions в Java. Тогда ваш код будет понятнее другим. gemaВопрос в том, как сделать в сервлете с рекурсией одно соединение на весь сервлет. Пытаюсь вот так и ничего не получается. Скорее всего вы спрашиваете про класс ThreadLocal. Но в вашей задаче он скорее всего не нужен. Хорошей практикой считается получить соединение из пула, использовать, и как можно быстрее "закрыть" - отдать обратно в пул. Таким образом вы минимизируете количество одновременно открытых соединений при максимальном количестве запросов к сервлетам. Почему у вас время жизни соединения привязано к времени жизни сервлета - не понятно. И что это за close() метод сервлета вообще? Если соединение требуется иметь дольше для поддержки единой транзакции проходящей через много разных методов, то стоит сразу обратить внимание на такие фреймверки как Spring IoC и Spring MVC, либо EJB. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2012, 13:14:08 |
|
||
|
Pool соединение и рекурсия в сервлете как реализовать???
|
|||
|---|---|---|---|
|
#18+
Basil A. Sidorov, +1 аффтар! Самый простой вариант - на каждый вызов в сервлете - новое соединение в БД. Все настройки брать в сервлете из констант из рессурса (XML) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2012, 13:15:52 |
|
||
|
Pool соединение и рекурсия в сервлете как реализовать???
|
|||
|---|---|---|---|
|
#18+
gemaЧтобы у пользователя в течении всего сеанса работы было одно подключение к БД. Такая архитектура используется достаточно редко, только в случае если у вас пользователь авторизируется в базе данных. Соответсвенно соединение всегда содержит имя и права пользователя. В высоконагруженых системах такой подход не используется, потому что в базах сильно ограничено максимальное количество соединений. Если у вас БД позволяет иметь только 200-1000 соединений, то это будет пределом пользователей в вашей системе. При использовани пула и кратковременных соединений сервер может обслуживать на порядок больше пользователей при том же количестве физических соединений. gemaИ потом один раз прописал насройки подключения к БД и потом пользуешься. DataSource для этих целей штука правильная. Весь остальной код у вас делает слишком сложным образом очень простые вещи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2012, 13:17:58 |
|
||
|
Pool соединение и рекурсия в сервлете как реализовать???
|
|||
|---|---|---|---|
|
#18+
Petro123Все настройки брать в сервлете из констант из рессурса (XML) Не-не-не. DataSource - правильный путь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2012, 13:18:52 |
|
||
|
Pool соединение и рекурсия в сервлете как реализовать???
|
|||
|---|---|---|---|
|
#18+
BlazkowiczPetro123Все настройки брать в сервлете из констант из рессурса (XML) Не-не-не. DataSource - правильный путь. да ради Бога. У меня ДЕМО сайт работает как я написал))) Можно считать это извратом - нагрузка небольшая )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2012, 13:21:32 |
|
||
|
Pool соединение и рекурсия в сервлете как реализовать???
|
|||
|---|---|---|---|
|
#18+
Petro123У меня ДЕМО сайт работает как я написал))) Это очень важно. Petro123Можно считать это извратом - нагрузка небольшая )) Нагрузка тут не при чем. Просто в нормальном комерческом проекте проще переносить, собирать и разворачивать приложение на разные сервера, когда соединение в базе настроено один раз в самом контейнере. Это изначально хорошая практика, к которой стоит привыкать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2012, 13:23:58 |
|
||
|
Pool соединение и рекурсия в сервлете как реализовать???
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, да. Согласен. Просто у меня сервер один. У него не знаю. Просто, в целях, обучения, если идти по шагам, то код сверху надо выкинуть и дописать 2 строки констант. А потом уже DS. Хотя бы чтобы знать что для чего служит. IMHO ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2012, 13:30:25 |
|
||
|
Pool соединение и рекурсия в сервлете как реализовать???
|
|||
|---|---|---|---|
|
#18+
То есть получается, что логика моего приложения не верна. Прочитала на форуме http://www.javatalks.ru/ftopic30425.php&highlight=abstractdao и взяла за образец. Вопрос тогда как правильно организовать пул в приложении? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2012, 13:45:08 |
|
||
|
Pool соединение и рекурсия в сервлете как реализовать???
|
|||
|---|---|---|---|
|
#18+
>И что это за close() метод сервлета вообще? Метод close() - это попытка вернуть все соединения в пул, которые появились при использовании рекурсии. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2012, 13:50:35 |
|
||
|
Pool соединение и рекурсия в сервлете как реализовать???
|
|||
|---|---|---|---|
|
#18+
gemaТо есть получается, что логика моего приложения не верна. Логику вашего приложения можете оценить только вы сами. А ошибки у вас в дизайне имеются. gemaПрочитала на форуме http://www.javatalks.ru/ftopic30425.php&highlight=abstractdao и взяла за образец. Читайте англоязычные статьи, а не темы на форумы, где такие же как вы новички наступают сразу на все грабли. gemaВопрос тогда как правильно организовать пул в приложении? На этот вопрос я подробно ответил выше. Что конкретно не понятно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2012, 13:50:38 |
|
||
|
Pool соединение и рекурсия в сервлете как реализовать???
|
|||
|---|---|---|---|
|
#18+
gemaМетод close() - это попытка вернуть все соединения в пул, которые появились при использовании рекурсии. О какой вообще рекурсии речь? Почему "попытка"? Почему во множественночи числе, когда закрывается одно соединение внутри? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2012, 13:51:30 |
|
||
|
Pool соединение и рекурсия в сервлете как реализовать???
|
|||
|---|---|---|---|
|
#18+
Т.е удаляем AbstractDao,Listener, init и делаем вот так: context.xml Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. Код: java 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. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2012, 13:57:05 |
|
||
|
Pool соединение и рекурсия в сервлете как реализовать???
|
|||
|---|---|---|---|
|
#18+
Как закрыть conn??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2012, 14:00:21 |
|
||
|
Pool соединение и рекурсия в сервлете как реализовать???
|
|||
|---|---|---|---|
|
#18+
gema, Connection нельзя делать полем сервлета. Один экземпляр сервлета параллельно обслуживает множественные подключения клиентов. В поле, вроде бы, можно вынести сам DataSource. Нужна работа с базой, делаем так: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2012, 14:06:15 |
|
||
|
Pool соединение и рекурсия в сервлете как реализовать???
|
|||
|---|---|---|---|
|
#18+
Но ведь в таком случае соединений будет столько, сколько будет вызываться Cost2() при рекурсии, если я правильно понимаю.Кол-во соединений будет расти.Как с этим быть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2012, 15:20:19 |
|
||
|
Pool соединение и рекурсия в сервлете как реализовать???
|
|||
|---|---|---|---|
|
#18+
gemaНо ведь в таком случае соединений будет столько, сколько будет вызываться Cost2() при рекурсии, если я правильно понимаю.Кол-во соединений будет расти.Как с этим быть? Еле нашел где у вас рекурсия. Вызывайте Cost2() после закрытия соединения (возврата в пул). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2012, 15:26:34 |
|
||
|
Pool соединение и рекурсия в сервлете как реализовать???
|
|||
|---|---|---|---|
|
#18+
Извиняюсь за тупость, но итог должен быть такой? Просто хочется разобраться. Код: java 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. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2012, 15:44:44 |
|
||
|
Pool соединение и рекурсия в сервлете как реализовать???
|
|||
|---|---|---|---|
|
#18+
gema, записей много? - без цикла сразу одним запросом посчитать сумму нельзя? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2012, 15:50:57 |
|
||
|
Pool соединение и рекурсия в сервлете как реализовать???
|
|||
|---|---|---|---|
|
#18+
Суть задачи в рекурсии. Нельзя тупо сумму в запросе посчитать. Есть еще вариант функцию на mysql написать с рекурсией. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2012, 16:02:47 |
|
||
|
Pool соединение и рекурсия в сервлете как реализовать???
|
|||
|---|---|---|---|
|
#18+
gemaСуть задачи в рекурсии. Нельзя тупо сумму в запросе посчитать. реальная задача? Рассказал бы. Всегда интересно то, что НЕЛЬЗЯ )) и рекурсия в субд (кроме деревьев \ нодов) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2012, 16:17:55 |
|
||
|
Pool соединение и рекурсия в сервлете как реализовать???
|
|||
|---|---|---|---|
|
#18+
Есть система линейных уравнений размером где-то 40*40 с большим разбегом коэффициентов порядка 6-8 степеней. Пыталась решить задачу математическими методами, но появлялись решения, которые не подходили потом в систему. Причем я использовала не один метод, а несколько разных. Возможная причина в разбеге коэффициентов прочитала где-то, что такого быть не должно. И кроме того, точное решение задачи мне нужно, именно приближенное, что и достигается в использовании рекурсии. Предметная область задачи - расчет себестоимости взаимозависимых продуктов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2012, 16:30:33 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=37935313&tid=2131048]: |
0ms |
get settings: |
17ms |
get forum list: |
21ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
61ms |
get topic data: |
24ms |
get forum data: |
6ms |
get page messages: |
116ms |
get tp. blocked users: |
3ms |
| others: | 339ms |
| total: | 597ms |

| 0 / 0 |
