|
0 / 0 / 0
Регистрация: 22.01.2011
Сообщений: 30
|
|
Вызов Oracle stored procedure через DBCP ?31.01.2011, 19:17. Показов 2786. Ответов 19
Метки нет (Все метки)
Может кто сталкивался с подобным...
Есть Tomcat + DPCP + JNDI и Oracle + stored procedure ... Когда из приложения на Tomcat вызов хранимой процедуры осуществляется через 'прямое' соединение с Oracle - всё нормально... и результаты в ResultSet возвращаются ... А вот когда 'прямое' соединение заменяется соединением, полученным от pool connection (DBCP) возникает ошибка. При этом все простейшие запросы (типа select ...) через DBCP к базе работают нормально... Для соединения с базой во всех случаях используется JDBC thin driver. Что бы это могло быть ? KSV
0
|
|
| 31.01.2011, 19:17 | |
|
Ответы с готовыми решениями:
19
DB2 Java Stored Procedure Stored Procedure Stored Procedure |
|
mishgun
|
|
| 31.01.2011, 19:30 | |
|
nado posmotret settingi poola kak minimum.Typo v url v userName,password ne tot port da vsyo chto ugodno mozhet byt
|
|
|
0 / 0 / 0
Регистрация: 22.01.2011
Сообщений: 30
|
|
| 31.01.2011, 23:54 [ТС] | |
|
Ответ крут и главное абсолютно верный и бесполезный... т.к. является континуумом...
Но такой ответ и мне известен был до написания вопроса здесь. KSV
0
|
|
|
paradise
|
|
| 01.02.2011, 10:33 | |
|
Как спросили, так и ответили. 'Возникает ошибка' - это, мягко говоря, абстрактная формулировка. Хотите конкретный ответ - задавайте конкретный вопрос.
Кроме того, если верить вам: 'Но такой ответ и мне известен был до написания вопроса здесь.' Т.е. вам было понятно, что проблема в пуле , так почему не написать более подробно и о его настройках?
|
|
|
mishgun
|
|
| 01.02.2011, 16:54 | |
|
Voobsche-to po normalnomu vikladivaut kak minimum error...
My Vam ne extrasensy chtob ugadyvat na rasstoyanii chego vi tam naportachili u sebya v proge. Mozhem voobsche ne otvechat esli takie otvety ne nravyatsa. V dogonku Posmotrite esli u vas vse parametry neobhodimie dlya peredachi v store proc are bounded. |
|
|
0 / 0 / 0
Регистрация: 22.01.2011
Сообщений: 30
|
|
| 01.02.2011, 17:59 [ТС] | |
|
Если не делал такое как описано выше, то вряд ли чем поможешь...
Первое сообщение исчерпывающе описывает ситуацию для тех кто это делал... KSV
0
|
|
|
mishgun
|
|
| 01.02.2011, 18:15 | |
|
Delayu delayu i ne tolko s Oraclom a nedavno s MS SQL Server.Tak chto esli ty schitaesh chto my dolzhny gadat cgto u tebya v code navorocheno ili v poole to uvol sidi i sam razbiraysaya.tak pomoshi ne prosyat.tebe chto tut obyazany brosit vsyo i lomat golovu a pochemu u etogo deyatelya ne rabotaet store proc cherez pool?
PS.esli ty dumaesh chto eto kruto delat eto vsyo na Tomcat to pozvol sprosit a chem zhe ya togda na WebLogic zanimaus? |
|
|
0 / 0 / 0
Регистрация: 22.01.2011
Сообщений: 30
|
|
| 01.02.2011, 18:47 [ТС] | |
|
Уважаемый, Tomcat выбран не от хорошей жизни.
Я не просто так написал про, то что используется Jakarta DBCP ( http://jakarta.apache.org/commons/dbcp ) и thin JDBC Oracle driver. Ты под WebLogic используешь такую связку ? Или всё же OCI и ДРУГОЙ pool connection ? KSV P.S.: А что такое круто?
0
|
|
|
mishgun
|
|
| 01.02.2011, 19:44 | |
|
Pri developinge na Oknah + Weblogic - thin pri developinge na Unix oci i na Production serverah - oci
|
|
|
mishgun
|
|
| 01.02.2011, 19:48 | |
|
A stack trace tak i ne hotim pokazivat? mozhet srazu vse voprosy by otpali
|
|
|
mishgun
|
|
| 01.02.2011, 21:12 | |
|
Sorry pro pool connection propustil.estestvenno Pool Connection drugoy.Weblogic Pool Connection.No eto suti ne menyaet.Esli prostoy select prohodit nado smotret settingi poola i chto peredaetsa v store proc.Bylo kak to u menya chto v store proc dobavili escho odin parameter a mne soobshili tolko na sleduyushiy den.A ya sidel i vtikal pochemu all over sudden Ya stal poluchat ArrayOutofBoundException.Utrom poshel na razborki v Oracle gruppu a oni gryat chto dobavili escho odin parameter a mne mylo poslali utrom.Shit happens...
tak chto error v studiyu - dalshe budem posmotret ))
|
|
|
0 / 0 / 0
Регистрация: 22.01.2011
Сообщений: 30
|
|
| 02.02.2011, 11:12 [ТС] | |
|
Мы решили ПОКА отказаться от вызова хранимых процедур в пользу pool.
Все классы, которые мы хотели запихать в Oracle в качестве хранимых процедур ПОКА будут вызываться с Tomcat и работать через pooll connection. Почему? Потому, что вчера обнаружили в bug list Jakarta Commons Developers описание проблемы очень похожее на нашу (http://issues.apache.org/bugzilla/show_bug.cgi?id=32375). Как только будет новая версия DBCP попробуем снова... KSV
0
|
|
|
0 / 0 / 0
Регистрация: 22.01.2011
Сообщений: 30
|
||||||
| 06.02.2011, 11:44 [ТС] | ||||||
|
В процессе вызова хранимой процедуры через DBCP возникает ошибка приведения типа: java.lang.ClassCastException
Листинг. server8080.xml. <?xml version='1.0' encoding='UTF-8'?> <Server debug='0' port='8081' shutdown='SHUTDOWN'> <GlobalNamingResources> <Resource name='jdbc/IcIDB' auth='Container' type='javax.sql.DataSource'/> <ResourceParams name='jdbc/IcIDB'> <parameter> <name>factory</name> <value>org.apache.commons.dbcp.BasicData SourceFactory</value> </parameter> <parameter> <name>maxWait</name> <value>5000</value> </parameter> <parameter> <name>maxActive</name> <value>10</value> </parameter> <parameter> <name>username</name> <value>IcIDB</value> </parameter> <parameter> <name>password</name> <value>IcIDB</value> </parameter> <parameter> <name>url</name> <value>jdbc:oracle:thin:@10.1.33.99:1521 :ORATEST0</value> </parameter> <parameter> <name>driverClassName</name> <value>oracle.jdbc.OracleDriver</value> </parameter> <parameter> <name>maxIdle</name> <value>2</value> </parameter> </ResourceParams> </GlobalNamingResources> <Service name='Tomcat-Standalone'> <Connector acceptCount='10' className='org.apache.catalina.connector .http.HttpConnector' connectionTimeout='60000' debug='9' maxProcessors='75' minProcessors='5' port='8080'/> <Engine debug='9' defaultHost='localhost' name='Standalone'> <Host appBase='D:PTUVDGlobDBProjectsLoginIcIDB Tomcatwebapps' debug='9' name='localhost' unpackWARs='false'> <Context debug='9' docBase='D:PTUVDGlobDBProjectsLoginIcIDB LoginIcIDB' path='/LoginIcIDB' reloadable='false' workDir='D:PTUVDGlobDBProjectsLoginIcIDB TomcatworkLoginIcIDB'> <ResourceLink name='IcIDBLnk' global='jdbc/IcIDB' type='javax.sql.DataSource'/> </Context> </Host> </Engine> </Service> </Server> Листинг. web.xml. <?xml version='1.0' encoding='UTF-8'?> <!DOCTYPE web-app PUBLIC '-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN' 'http://java.sun.com/dtd/web-app_2_3.dtd'> <web-app> <display-name>LoginIcIDB</display-name> <servlet> <servlet-name>action</servlet-name> <servlet-class>org.apache.struts.action.ActionSer vlet</servlet-class> <init-param> <param-name>config</param-name> <param-value>/WEB-INF/struts-config.xml</param-value> </init-param> <init-param> <param-name>debug</param-name> <param-value>2</param-value> </init-param> <init-param> <param-name>application</param-name> <param-value>Appli ный ресурс в контексте приложения) * @param attemptCnt int - кол-во попыток установить соединение * @param timeDelay long - время между попытками установить соединение * @return Connection - возвращаемое соединение */ public Connection getConnection(String dataSourceName, int attemptCnt, long timeDelay) { Connection con=null; try { // инициализация контекста и пойск контекста ресурсов: компонентов и окружения Context init = new InitialContext(); Context ctx = (Context) init.lookup('java:comp/env'); // возврат параметров набора данных по результатам поиска реурса с именем dataSourceName DataSource dataSource = (DataSource) ctx.lookup(dataSourceName); int curAttemptNum=0; // попытки открыть соединение while (con==null && curAttemptNum<attemptCnt){ try { con = (Connection) dataSource.getConnection(); } catch (Exception e) { //Обработка исключения по установке соединения задержка до следующей попытки con=null; curAttemptNum++; System.out.println('Attempt to open the connection is failed.'); Thread.sleep(timeDelay); } } } catch (Exception ex) { //обработка исключения по работе с JNDI System.out.println('Cannot retrieve java:comp/env '+dataSourceName); } return con; } } [/code] Метод вызова хранимой процедуры. Соединение передается в метод, а устанавливается с помощью класса OraConnection и его метода getConnection
KSV
0
|
||||||
|
mishgun
|
|
| 06.02.2011, 23:43 | |
|
А может стоить попробовать в целях чистоты експеримента заменить Оракловские объекты Объектами из jdk? Чтобы исключить ошибки на своей стороне.Если сработает посмотрите что за библиотеки вы подключили....
А если честно то мы вообще практически не используем OracleCallableStatement OracleResultset.Обходимся своими наследованными от jdk-ских объектов.OracleTypes.CURSOR да используем.остальное - нет |
|
|
0 / 0 / 0
Регистрация: 22.01.2011
Сообщений: 30
|
|
| 07.02.2011, 09:03 [ТС] | |
|
Не понял. Так DBCP используете для вызова хранимых процедур на Oracle?
Если да, то может поделитесь кусочком кода касающегося этой темы? KSV
0
|
|
|
mishgun
|
|
| 07.02.2011, 18:00 | |
|
Ya zhe govoril chto my ispolzuem ne DBCP a Weblogic CP tak chto eto vryad li vam pomozhet.Moya ideya byla zamenit v vashem code Oraclovskiy OracleCallableStatement na java.sql.CallableStatement i OracleResultSet na java.sql.ResultSet. Esli zamena srabotaet to znachit problema v nesovmestimosti podkluchonnih classov iz biblioteki Oracle.
|
|
|
0 / 0 / 0
Регистрация: 22.07.2009
Сообщений: 457
|
|
| 07.02.2011, 18:34 | |
|
Не просветите ли. В чем польза от использования встроенной в Томкат поддержки соединения к базе, через JNDI. Наверное, это удобно, когда на Томкате бегают несколько приложений и все они имеют одинаковый унифицированный доступ? Есть ли еще преимущества по сравнению с прямым соединением из приложений?
0
|
|
|
0 / 0 / 0
Регистрация: 22.01.2011
Сообщений: 30
|
|
| 07.02.2011, 19:17 [ТС] | |
|
А еще в случае с точностью до наоборот при использовании naming , когда несколько ресурсов (mail, data base, переменные разных типов, LDAP...)http://www.j2eeolympus.com/J2EE/JNDI/JNDI.jsp - тут всё про JNDI...
0
|
|
|
0 / 0 / 0
Регистрация: 22.07.2009
Сообщений: 457
|
|
| 07.02.2011, 21:57 | |
|
А кайф от JNDI в том, что в хозяйстве много компьютеров с разными операционными системами? Или это уже не важно, а просто стандарт?
0
|
|
|
0 / 0 / 0
Регистрация: 22.01.2011
Сообщений: 30
|
|
| 08.02.2011, 00:27 [ТС] | |
|
JNDI предоставляет доступ к ресурсам в виде объектов, реализующим много стандартов... http://java.sun.com/products/jndi/
KSV
0
|
|
| 08.02.2011, 00:27 | |
|
Помогаю со студенческими работами здесь
20
SELECT in Stored Procedure stored procedure in sqlserver2000 Could not find stored procedure Просмотр Stored Procedure Could not find stored procedure 'c' Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git
main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели
8ATzM_2aurI
|
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2.
Задача: запретить редактирование документа, если он открыт у другого пользователя.
/ / . . .
|
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои.
А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
|
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20%
kYBz3eJf3jQ
|
|
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
|
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
|
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора
Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2.
Задача: уведомлять пользователя, если. . .
|
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
|