Oracle + java

Vincent Vega
Дата: 10.03.2011 19:24:25
Oracle + java
Возникла потребность работы с Websphere MQ из Oracle. Нужно реализовать 2 процедуры:
• PUT – отправляет сообщение в очередь
• GET – забирает сообщение из очереди
Для реализации задачи быстренько написал на java 2 статических метода, которые в своей работе требуют библиотеку com.ibm.mq.jar. Как отдельное приложение работает все наура.
Далее пробую все это загрузить в Oracle использую утилиту LoadJava и тут получаю кучу инвалидных объектов которые никак не хотят компилится

Смотрю ошибки:
select * from sys.all_errors where name LIKE '%ibm%'
Более 100 ошибок подобного рода:

ORA-29534: не может быть разрешен ссылочный объект SCHEMA.com/ibm/mq/ MQSession

Попробовал найти какой же библиотеки не хватает, в итоге наткнулся на, то что Oracle почему-то пытается найти классы которые реально не нужны, но по всей видимости где-то упоминаются в классах которые находятся в com.ibm.mq.jar. Догружать недостающие классы просто нереально, загрузив так еще пару jar файлов количество инвалидных объектов только увеличиваются и требуются вообще какие-то невразумительные классы.
Вопрос: как это все можно обойти? Как исключить поиск ненужных классов при компиляции объектов?
-2-
Дата: 10.03.2011 20:26:27
Vincent Vega
Как исключить поиск ненужных классов при компиляции объектов?
genmissing
Vincent Vega
Дата: 10.03.2011 22:12:16
Спасибо большое! Флаг genmissing помог - все объекты валидные после загрузки
Теперь другие ошибки пошли:

Error report:
ORA-29532: вызов Java прерван неустановленным исключением Java: java.lang.VerifyError: (class: mq/ora/Ora, method: browse signature: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;) catch_type not a subclass of Throwable

по всей видимости не нравится обработка MQException :
	catch (MQException e) {
		message = null;
		e.printStackTrace();

Причем в процедуре я вызываю метод put, а тут ругается на метод browse. По всей видимости весь класс снова компилится и получается эта ошибка
Андрей Панфилов
Дата: 10.03.2011 22:28:03
Vincent Vega,

А Вы свой код под какой JVM отлаживаете? Просто IBM все делает под свою JVM и не факт, что она совместима с сановской.
Vincent Vega
Дата: 10.03.2011 22:31:20
Андрей Панфилов,
под сановской jvm 1.4
Vincent Vega
Дата: 10.03.2011 22:32:46
Vincent Vega,

версия оракла - 10
Андрей Панфилов
Дата: 11.03.2011 04:38:56
Vincent Vega,

Возможно тогда в класлоадере несколько классов MQException и цепляется какой-то левый, проверьте

SELECT object_name, object_type, status
  FROM all_objects
 WHERE object_type LIKE 'JAVA%' AND object_name LIKE '%MQException%';
Vincent Vega
Дата: 11.03.2011 10:20:35
Андрей Панфилов,

Проверил, класс один:
com/ibm/mq/MQException  JAVA CLASS VALID

Еще вот какая ошибка, мои классы которые я написал, находятся в валидном состоянии в базе, но при попытке их перекомпилировать выдает вот такую ошибку:

JAVA CLASS SCHEMA.mq/ora/MQ
On line: 0
ORA-29552: предупреждение проверки достоверности: java.lang.VerifyError:
(class: mq/ora/MQ, method: get signature: (Ljava/lang/String;[BZ)Ljava/lang/String;) catch_type not a subclass of Throwable

P.S. У меня 2 класса: MQ - общий класс в котором реализованы методы подключения к MQ, закрытие подключения и методы put и get. Второй класс Ora - в нем 3 статических метода PUT GET BROWSE которые работают с объектом MQ
SQL*Plus
Дата: 11.03.2011 10:52:24
Vincent Vega
Возникла потребность работы с Websphere MQ из Oracle.

Procedural Gateway for WebSphere MQ Installation and User's Guide for ...
Vincent Vega
Дата: 11.03.2011 11:05:35
SQL*Plus,

Спасибо, этот продукт рассматривали. Дороговато стоит.