powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Вложенная Жава в DB2, возможно?
25 сообщений из 38, страница 1 из 2
Вложенная Жава в DB2, возможно?
    #32691411
VortexCorba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет всем. Помогите пожалуйста.
Говорят что в DB2 можно создать таблицу куда будут засовыватся Java.class
файлы, такое возможно? Если да, то возникает следующий вопрос:

Как можно вне DB2 из Жава проги вызвать эти откомпилированные класс файлы из таблицы и запустить через эту прогу их?
Спазибо заранее.
...
Рейтинг: 0 / 0
Вложенная Жава в DB2, возможно?
    #32691940
hgst
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Такое возможно в любой BLOB засунуть в любой базе

Создать свой ClassLoader загрузить массив байт - представить их как класс и запустить на выполнение.

For ex (classloader):
http://www.panix.com/~mito/articles/articles/classloader/j-classloader-ltr.pdf
...
Рейтинг: 0 / 0
Вложенная Жава в DB2, возможно?
    #32692888
VortexCorba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ясно, но остается вопрос, а разве можно допустим читать с Жава class файл и залить в таблицу? Ведь class файл это не текстовый файл.
...
Рейтинг: 0 / 0
Вложенная Жава в DB2, возможно?
    #32692925
Фотография riman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какая разница между текстовым файлом и жаба классом? или рисунком? или видео? В BLOB можно залить любые данные.
...
Рейтинг: 0 / 0
Вложенная Жава в DB2, возможно?
    #32694910
VortexCorba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ясно, но почему то моя прога не заливает его, вот пример:
.................
..............
Чтение файла и присвайвание к переменной:

FileReader FR = new FileReader("example.class");
BufferedReader BR = new BufferedReader(FR);
while ( (s = BR.readLine()) != null) {
gr += "\n" + s;
}

или надо байтовое чтение из файла?
..................
................
Заливка таблицы:
Connection conn = DB2Connector.getConnect();
Statement stmt = conn.createStatement();
stmt.executeUpdate("Insert Into DBName.table1 Values(' " + gr + " ' )");

// Здесь в таблице table1 тип поле BLOB
...........
Так он не работает, пишет ошибку:

com.ibm.db2.jcc.b.SQLException: bug check

Что делать?

А после того как я залил допустим, и вытащил из таблицы обратно значение, потом как поступить? сохранить в файл и расширение сделать class?
Вот этот момент меня настораживает
...
Рейтинг: 0 / 0
Вложенная Жава в DB2, возможно?
    #32695023
Фотография riman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
keyword:
Statement::setBlob(int i, Blob x);

2 all.
Помогите разобраться с этим:
http://www.sql.ru/forum/actualthread.aspx?tid=122623
...
Рейтинг: 0 / 0
Вложенная Жава в DB2, возможно?
    #32695526
VortexCorba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Statement::setBlob(int i, Blob x);
Что бы интересно это означало?
...
Рейтинг: 0 / 0
Вложенная Жава в DB2, возможно?
    #32695541
VortexCorba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Воабще у меня задача стоит такая:
Надо написать прогу которая работала бы под OS390.
Прога должна вызывать из таблицы class файл и запускал его. В свою очередь этот файл что то выполняет.
1. Залить в DB2. Каким методом?
2. Вызывать class файл и запускать его.
Если чесно я никогда не вызывал из таблицы class файл и не запускал, по этому для меня это новинка.
Я бы попросил кого нибудь знающего, хотя бы коротко написать эти два шага.
Как надо реализовывать такую задачу и как запускать. Хотя бы коротко.
Помогите!!!
...
Рейтинг: 0 / 0
Вложенная Жава в DB2, возможно?
    #32695653
Фотография riman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VortexCorbaStatement::setBlob(int i, Blob x);
Что бы интересно это означало?
Извиняюсь не Statement конечно а PreparedStatement:
Код: plaintext
1.
2.
3.
4.
5.
String updatequery="update table set image=? where id=1";
PreparedStatement stmt=conn.prepareStatement(updatequery);
Blob myimage;
....
stmt.setBlob(1, myimage);
...
Рейтинг: 0 / 0
Вложенная Жава в DB2, возможно?
    #32695761
hgst
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот тебе пример - сохраняет массив байт.
Blob - интерфейс который, делает то же самое. Но для него нужно написать реализацию или пользоваться существующей.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
    
     PreparedStatement pstmt =  
         conn.prepareStatement 
            ("INSERT INTO XXX (X) VALUES(?)"); 
     ByteArrayInputStream bais =  
         new ByteArrayInputStream(something);  // от массива байт
      pstmt.setBinaryStream( 1 ,bais, length); 
      pstmt.executeUpdate(); 
Этот код сохраняет массив байт. Class файл - это двоичные файлы - их читать именно как массив байт а не Reader-ом.
К примеру:
[src] byte[] data = new byte[(int) (new File(key).length())];
new FileInputStream(key).read(data);
[src]
Читать из базы - ResultSet.getBytes - дальше ClassLoader - смотри пример выше по ссылке
...
Рейтинг: 0 / 0
Вложенная Жава в DB2, возможно?
    #32696812
VortexCorba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спаибо всем
...
Рейтинг: 0 / 0
Вложенная Жава в DB2, возможно?
    #32697650
VortexCorba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Еще есть примеры у кого? Рад буду посмотреть
...
Рейтинг: 0 / 0
Вложенная Жава в DB2, возможно?
    #32697889
VortexCorba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть еще вопрос:
Какой вид ниже перечисленных программ лучшее:
1. Есть прога которая из таблицы вытаскивает нужный класс файл и запускает его. Все это под OS390 работает.
2. Есть прога которая запускает класс файл из папки. т.е файл лежит в папке.
Есть ли разница? Эффективность? Еще что нибудь?
...
Рейтинг: 0 / 0
Вложенная Жава в DB2, возможно?
    #32699763
hgst
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Описал бы задачу :)
А то сложно сказать - пункт 1 требует установки дб2 а это стоит денег. Во втором вроде по описанию не требуется - можно их и сэкономить :)

Если смотреть с точки зрения производительности - то чтобы зачитать класс из БД требуется больше операций чем в случае с файловой системой. Опять же если их (классов) много - то время поиска по файловой системе в каталоге (предположительно) линейное - а в базе (может быть) логарифическое от числа файлов. Т.е. при определенном N...

Если серьезно - это довольно специфический подход - написание собственного класслоадера - есть конечно задачи где это требуется и для этого есть причины - но это все же не такой большой круг задач. Имхо, в подавляющем большинстве случаев это не нужно делать.
Давай описание задачи - может там все на порядок проще решается
...
Рейтинг: 0 / 0
Вложенная Жава в DB2, возможно?
    #32699892
VortexCorba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть прога, скажем Диспечер.
Есть DB 2. Насчет этого все ок
Он следит за таблицей куда падают какие то данные, у каждого падающего в таблицу данного есть скажем номер. По этому номеру Диспечер запускает соответствующий файл(class файл)
Вот теперь вопрос:
Стоит ли ради этого пихать в БД класс файлы или нет?
Или пусть с папки запускает?
Таких класс файлов будет 300 ровно.
Но все это под OS390 работает, это может привести к затруднениям во время запуска файлов из БД, а из папки они без проблем могут запускатся. Вот чего я боюсь.
Допустим напишу проги для всех 300 обьектов(Я не один конечно, 15 программеров).
И залю всю эту приблуду в таблицу, я все это пишк пока на WindowsXP
И иду спокойно на OS390 b запускаю диспечер, и вдруг ошибка еще 200 ошибок. Вот теперь сиди и расхлебывай все это дерьмо.
А из папки все таки легче.
Как думает Народ?
...
Рейтинг: 0 / 0
Вложенная Жава в DB2, возможно?
    #32699959
Фотография Новый Год
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сорри за оффтоп, java на 390 работает? .
...
Рейтинг: 0 / 0
Вложенная Жава в DB2, возможно?
    #32700179
Aion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 VortexCorba
Насовсем понятно зачем Вам все это?!
Примерно выглядит типа как запахивать .exe файлы в базу, а потом их "запускать". И зачем? В чем смысл то?


2 Новый Год
http://www-1.ibm.com/servers/eserver/zseries/software/java/
...
Рейтинг: 0 / 0
Вложенная Жава в DB2, возможно?
    #32700219
Фотография Новый Год
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aion, я споросил спросил про то, можно ли счтитать j2ee на 390 нормально функционирующей :)
WebSphere на 390 доступно для меня, хотя я под нее и не пишу. но зато поспоянно слышу комментарии коллег:)
...
Рейтинг: 0 / 0
Вложенная Жава в DB2, возможно?
    #32700362
Фотография riman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что действительно что ли такие проблемы? А как обстоят дела для WebSphere for AS/400?
Мы сейчас ожидаем заключения контракта, который полностью ориентирован на WebSphere, отсюда и интерес.

зы. У меня на АСке жаба работает нормально, правда не под WebSphere, а под Domino и правда тоже не Ж2ИИ :).
...
Рейтинг: 0 / 0
Вложенная Жава в DB2, возможно?
    #32700391
hgst
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Имхо:
Пихать это добро в базу не следует - просто нет никакого смысла. Просто завести конфигурационный файл который по номеру записи (назовем к примеру transaction id) будет инстанциировать определенный класс и запускать его. Положить все в один jar файл и не мучится.
Диспетчер такой пишется за день-два. Если возникнет необходимость он легко переносится на отдельную машину (чтобы не совмещать БД и приложение).
Сам по себе интересен вопрос нотификации что поступили новые данные. Как это будет выглядеть? При желании можно просто посмотреть может что-либо из существующих реализаций подходит.

Что еще смущает:
авторДопустим напишу проги для всех 300 обьектов(Я не один конечно, 15 программеров). И залю всю эту приблуду в таблицу, я все это пишк пока на WindowsXP
Немного смущает такой подход... Т.е. насколько я понимаю задачи будут похожие - наверняка можно обобщить какие-то операции, написать какую-то общую библиотеку для обработки Или что-то подобное - а то писать 300 обработчиков - или все операции настолько уникальны?
Можно вкратце какого рода обработка будет?
...
Рейтинг: 0 / 0
Вложенная Жава в DB2, возможно?
    #32701092
VortexCorba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Обработка будет как сказать обработка сообщении которые падают в концентратор а оттуда другая пога берет и заливает в таблицу, не давно написали прогу которая уже залитые в таблицу сообщения проверяют по конкретным параметрам(используя рег. выр) и заливает в еще другую таблицу.
Ав от последняя таблица уже чиста сообщения. Теперь надо завершающую прогу написать которая бы обрабатывала эти сообщения по номерам сообщении. к примеру: 200 - сообщ. Диспечер вызвает прогу для обр. 200 сообщ. и т.д.и.т.п
Короче все это в одну прогу незя, да проффесиональняй подход это делить прогу на части типа.
Короче, какая из них будет потом под OS390 труднее. Загрузка в табицу и оттуда вытаскивать и запускать класслоадеером?
или из jar файла вытаскивать и запускать прогу?
Еще момент если поступят новые сообщ. как мы поступим? Ну можно в jar пихнуть новый файл, но тода теряем автоматизацию, с другой стороны из таблицы в OS390 вытаскивать и запускать для меня немношко страшно, чувствую какой то подмох.
...
Рейтинг: 0 / 0
Вложенная Жава в DB2, возможно?
    #32701408
Aion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Новый Год

Sorry, не совсем я понял что имелось ввиду...
...
Рейтинг: 0 / 0
Вложенная Жава в DB2, возможно?
    #32701435
hgst
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В jar будет проще. Если что-то новоя появится то переложить jar и перезапустить сервер будет достаточно просто. Автоматизировать это также легко - или скриптом в системе или, если хочется делать удаленно, можно через ant - к примеру: при наличии ftp + telnet/ssh можно написать скрипт под ant который будет доставать последние исходники из системы контроля версий, компилировать, паковать, заливать по ftp на сервер и через telnet делать рестарт. Это к вопросу о выкладывании нового кода.
Если требуется динамическая загрузка классов, можно взять готовый контейнер, который ее поддерживает и писать для него компоненты-обработчики событий. Что-либо вроде phoenix справится вполне.
Чем решение с использованием сервера не нравится - скорость ниже, если класс ссылается на другие классы залитые в таблицы, то необходимо устанавливать этот класслоадер для потока обработчика. Если тот запрашивает новый класс тогда искать его сначала в таблицах БД, если не найден - передавать управление класслоадеру верхнего уровня. Т.е. сделать так конечно можно, и работать будет, только зачем так усложнять? В любом случае если понадобятся новые библиотеки или еще что - потребуется перезапуск контейнера обработчиков. Да и трудно представить решение где 1 обработчик = 1 классу. Разве что они просто дико примитивны - но тогда наверняка можно их обобщить.
[q]Короче все это в одну прогу незя, да проффесиональняй подход это делить прогу на части типа.[/q] 1 сlass file не есть прога. Прога здесь - это система обработки в целом :) а конкретный класс - просто обработчик определенного сообщения. И все же стоило бы поискать в них общее что-либо. А то 200 хэндлеров и все с нуля писать... или даже копи-пастом... не дело это, имхо.
Для увеличения эффективности обработки пул потоков поставить - обрабатывать параллельно несколько задач.
А обработка сама какого рода?
...
Рейтинг: 0 / 0
Вложенная Жава в DB2, возможно?
    #32701456
VortexCorba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я тоже придерживаюсь такого мнения, но поробуйте наших переубедить. Самое интересное это то что они никто из них не писал никогда класслоадер и хотят чтобы я написал, я бы написал, но эффективности не вижу. Нет никакой пользы, они говорят что если из таблицы то можно новую обработку только в таблицу залить и все. А с jar файлом тоже самое будет, я уверен. Перезапуск диспечера токо нада.
...
Рейтинг: 0 / 0
Вложенная Жава в DB2, возможно?
    #32701648
VortexCorba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Возможно такое:
import java.io.IOException;

public class LocalClassLoader {
public static void run(String classFile) throws IOException {
Process p = Runtime.getRuntime().exec("java " + classFile);
p.waitFor();
System.out.println("File was runned");
int ret = p.exitValue();
}
public static void main(String args[]) throws IOException {
String className = "Outer";
run(className);
}
}
Можно запускать java компилятор указывая класс файл который запустится?
Знаю что javac можно использовать для компиляции.
...
Рейтинг: 0 / 0
25 сообщений из 38, страница 1 из 2
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Вложенная Жава в DB2, возможно?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]