|
0 / 0 / 0
Регистрация: 22.01.2011
Сообщений: 30
|
|
Вызов Oracle stored procedure через DBCP ?31.01.2011, 19:17. Показов 2735. Ответов 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' Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога
Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
|
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога
SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
|
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
|