|
Вложенная Жава в DB2, возможно?
|
|||
---|---|---|---|
#18+
Привет всем. Помогите пожалуйста. Говорят что в DB2 можно создать таблицу куда будут засовыватся Java.class файлы, такое возможно? Если да, то возникает следующий вопрос: Как можно вне DB2 из Жава проги вызвать эти откомпилированные класс файлы из таблицы и запустить через эту прогу их? Спазибо заранее. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2004, 11:28 |
|
Вложенная Жава в DB2, возможно?
|
|||
---|---|---|---|
#18+
Такое возможно в любой BLOB засунуть в любой базе Создать свой ClassLoader загрузить массив байт - представить их как класс и запустить на выполнение. For ex (classloader): http://www.panix.com/~mito/articles/articles/classloader/j-classloader-ltr.pdf ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2004, 14:13 |
|
Вложенная Жава в DB2, возможно?
|
|||
---|---|---|---|
#18+
Ясно, но остается вопрос, а разве можно допустим читать с Жава class файл и залить в таблицу? Ведь class файл это не текстовый файл. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2004, 06:22 |
|
Вложенная Жава в DB2, возможно?
|
|||
---|---|---|---|
#18+
Какая разница между текстовым файлом и жаба классом? или рисунком? или видео? В BLOB можно залить любые данные. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2004, 08:15 |
|
Вложенная Жава в DB2, возможно?
|
|||
---|---|---|---|
#18+
Ясно, но почему то моя прога не заливает его, вот пример: ................. .............. Чтение файла и присвайвание к переменной: 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? Вот этот момент меня настораживает ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2004, 09:12 |
|
Вложенная Жава в DB2, возможно?
|
|||
---|---|---|---|
#18+
keyword: Statement::setBlob(int i, Blob x); 2 all. Помогите разобраться с этим: http://www.sql.ru/forum/actualthread.aspx?tid=122623 ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2004, 10:12 |
|
Вложенная Жава в DB2, возможно?
|
|||
---|---|---|---|
#18+
Statement::setBlob(int i, Blob x); Что бы интересно это означало? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2004, 12:59 |
|
Вложенная Жава в DB2, возможно?
|
|||
---|---|---|---|
#18+
Воабще у меня задача стоит такая: Надо написать прогу которая работала бы под OS390. Прога должна вызывать из таблицы class файл и запускал его. В свою очередь этот файл что то выполняет. 1. Залить в DB2. Каким методом? 2. Вызывать class файл и запускать его. Если чесно я никогда не вызывал из таблицы class файл и не запускал, по этому для меня это новинка. Я бы попросил кого нибудь знающего, хотя бы коротко написать эти два шага. Как надо реализовывать такую задачу и как запускать. Хотя бы коротко. Помогите!!! ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2004, 13:03 |
|
Вложенная Жава в DB2, возможно?
|
|||
---|---|---|---|
#18+
VortexCorbaStatement::setBlob(int i, Blob x); Что бы интересно это означало? Извиняюсь не Statement конечно а PreparedStatement: Код: plaintext 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2004, 13:49 |
|
Вложенная Жава в DB2, возможно?
|
|||
---|---|---|---|
#18+
Вот тебе пример - сохраняет массив байт. Blob - интерфейс который, делает то же самое. Но для него нужно написать реализацию или пользоваться существующей. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8.
К примеру: [src] byte[] data = new byte[(int) (new File(key).length())]; new FileInputStream(key).read(data); [src] Читать из базы - ResultSet.getBytes - дальше ClassLoader - смотри пример выше по ссылке ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2004, 14:21 |
|
Вложенная Жава в DB2, возможно?
|
|||
---|---|---|---|
#18+
Спаибо всем ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2004, 08:40 |
|
Вложенная Жава в DB2, возможно?
|
|||
---|---|---|---|
#18+
Еще есть примеры у кого? Рад буду посмотреть ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2004, 13:30 |
|
Вложенная Жава в DB2, возможно?
|
|||
---|---|---|---|
#18+
Есть еще вопрос: Какой вид ниже перечисленных программ лучшее: 1. Есть прога которая из таблицы вытаскивает нужный класс файл и запускает его. Все это под OS390 работает. 2. Есть прога которая запускает класс файл из папки. т.е файл лежит в папке. Есть ли разница? Эффективность? Еще что нибудь? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2004, 14:35 |
|
Вложенная Жава в DB2, возможно?
|
|||
---|---|---|---|
#18+
Описал бы задачу :) А то сложно сказать - пункт 1 требует установки дб2 а это стоит денег. Во втором вроде по описанию не требуется - можно их и сэкономить :) Если смотреть с точки зрения производительности - то чтобы зачитать класс из БД требуется больше операций чем в случае с файловой системой. Опять же если их (классов) много - то время поиска по файловой системе в каталоге (предположительно) линейное - а в базе (может быть) логарифическое от числа файлов. Т.е. при определенном N... Если серьезно - это довольно специфический подход - написание собственного класслоадера - есть конечно задачи где это требуется и для этого есть причины - но это все же не такой большой круг задач. Имхо, в подавляющем большинстве случаев это не нужно делать. Давай описание задачи - может там все на порядок проще решается ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2004, 13:20 |
|
Вложенная Жава в DB2, возможно?
|
|||
---|---|---|---|
#18+
Есть прога, скажем Диспечер. Есть DB 2. Насчет этого все ок Он следит за таблицей куда падают какие то данные, у каждого падающего в таблицу данного есть скажем номер. По этому номеру Диспечер запускает соответствующий файл(class файл) Вот теперь вопрос: Стоит ли ради этого пихать в БД класс файлы или нет? Или пусть с папки запускает? Таких класс файлов будет 300 ровно. Но все это под OS390 работает, это может привести к затруднениям во время запуска файлов из БД, а из папки они без проблем могут запускатся. Вот чего я боюсь. Допустим напишу проги для всех 300 обьектов(Я не один конечно, 15 программеров). И залю всю эту приблуду в таблицу, я все это пишк пока на WindowsXP И иду спокойно на OS390 b запускаю диспечер, и вдруг ошибка еще 200 ошибок. Вот теперь сиди и расхлебывай все это дерьмо. А из папки все таки легче. Как думает Народ? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2004, 14:01 |
|
Вложенная Жава в DB2, возможно?
|
|||
---|---|---|---|
#18+
сорри за оффтоп, java на 390 работает? . ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2004, 14:31 |
|
Вложенная Жава в DB2, возможно?
|
|||
---|---|---|---|
#18+
2 VortexCorba Насовсем понятно зачем Вам все это?! Примерно выглядит типа как запахивать .exe файлы в базу, а потом их "запускать". И зачем? В чем смысл то? 2 Новый Год http://www-1.ibm.com/servers/eserver/zseries/software/java/ ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2004, 16:14 |
|
Вложенная Жава в DB2, возможно?
|
|||
---|---|---|---|
#18+
Aion, я споросил спросил про то, можно ли счтитать j2ee на 390 нормально функционирующей :) WebSphere на 390 доступно для меня, хотя я под нее и не пишу. но зато поспоянно слышу комментарии коллег:) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2004, 16:32 |
|
Вложенная Жава в DB2, возможно?
|
|||
---|---|---|---|
#18+
А что действительно что ли такие проблемы? А как обстоят дела для WebSphere for AS/400? Мы сейчас ожидаем заключения контракта, который полностью ориентирован на WebSphere, отсюда и интерес. зы. У меня на АСке жаба работает нормально, правда не под WebSphere, а под Domino и правда тоже не Ж2ИИ :). ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2004, 17:34 |
|
Вложенная Жава в DB2, возможно?
|
|||
---|---|---|---|
#18+
Имхо: Пихать это добро в базу не следует - просто нет никакого смысла. Просто завести конфигурационный файл который по номеру записи (назовем к примеру transaction id) будет инстанциировать определенный класс и запускать его. Положить все в один jar файл и не мучится. Диспетчер такой пишется за день-два. Если возникнет необходимость он легко переносится на отдельную машину (чтобы не совмещать БД и приложение). Сам по себе интересен вопрос нотификации что поступили новые данные. Как это будет выглядеть? При желании можно просто посмотреть может что-либо из существующих реализаций подходит. Что еще смущает: авторДопустим напишу проги для всех 300 обьектов(Я не один конечно, 15 программеров). И залю всю эту приблуду в таблицу, я все это пишк пока на WindowsXP Немного смущает такой подход... Т.е. насколько я понимаю задачи будут похожие - наверняка можно обобщить какие-то операции, написать какую-то общую библиотеку для обработки Или что-то подобное - а то писать 300 обработчиков - или все операции настолько уникальны? Можно вкратце какого рода обработка будет? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2004, 17:53 |
|
Вложенная Жава в DB2, возможно?
|
|||
---|---|---|---|
#18+
Обработка будет как сказать обработка сообщении которые падают в концентратор а оттуда другая пога берет и заливает в таблицу, не давно написали прогу которая уже залитые в таблицу сообщения проверяют по конкретным параметрам(используя рег. выр) и заливает в еще другую таблицу. Ав от последняя таблица уже чиста сообщения. Теперь надо завершающую прогу написать которая бы обрабатывала эти сообщения по номерам сообщении. к примеру: 200 - сообщ. Диспечер вызвает прогу для обр. 200 сообщ. и т.д.и.т.п Короче все это в одну прогу незя, да проффесиональняй подход это делить прогу на части типа. Короче, какая из них будет потом под OS390 труднее. Загрузка в табицу и оттуда вытаскивать и запускать класслоадеером? или из jar файла вытаскивать и запускать прогу? Еще момент если поступят новые сообщ. как мы поступим? Ну можно в jar пихнуть новый файл, но тода теряем автоматизацию, с другой стороны из таблицы в OS390 вытаскивать и запускать для меня немношко страшно, чувствую какой то подмох. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.09.2004, 04:53 |
|
Вложенная Жава в DB2, возможно?
|
|||
---|---|---|---|
#18+
Новый Год Sorry, не совсем я понял что имелось ввиду... ... |
|||
:
Нравится:
Не нравится:
|
|||
19.09.2004, 22:49 |
|
Вложенная Жава в DB2, возможно?
|
|||
---|---|---|---|
#18+
В jar будет проще. Если что-то новоя появится то переложить jar и перезапустить сервер будет достаточно просто. Автоматизировать это также легко - или скриптом в системе или, если хочется делать удаленно, можно через ant - к примеру: при наличии ftp + telnet/ssh можно написать скрипт под ant который будет доставать последние исходники из системы контроля версий, компилировать, паковать, заливать по ftp на сервер и через telnet делать рестарт. Это к вопросу о выкладывании нового кода. Если требуется динамическая загрузка классов, можно взять готовый контейнер, который ее поддерживает и писать для него компоненты-обработчики событий. Что-либо вроде phoenix справится вполне. Чем решение с использованием сервера не нравится - скорость ниже, если класс ссылается на другие классы залитые в таблицы, то необходимо устанавливать этот класслоадер для потока обработчика. Если тот запрашивает новый класс тогда искать его сначала в таблицах БД, если не найден - передавать управление класслоадеру верхнего уровня. Т.е. сделать так конечно можно, и работать будет, только зачем так усложнять? В любом случае если понадобятся новые библиотеки или еще что - потребуется перезапуск контейнера обработчиков. Да и трудно представить решение где 1 обработчик = 1 классу. Разве что они просто дико примитивны - но тогда наверняка можно их обобщить. [q]Короче все это в одну прогу незя, да проффесиональняй подход это делить прогу на части типа.[/q] 1 сlass file не есть прога. Прога здесь - это система обработки в целом :) а конкретный класс - просто обработчик определенного сообщения. И все же стоило бы поискать в них общее что-либо. А то 200 хэндлеров и все с нуля писать... или даже копи-пастом... не дело это, имхо. Для увеличения эффективности обработки пул потоков поставить - обрабатывать параллельно несколько задач. А обработка сама какого рода? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2004, 02:12 |
|
Вложенная Жава в DB2, возможно?
|
|||
---|---|---|---|
#18+
Я тоже придерживаюсь такого мнения, но поробуйте наших переубедить. Самое интересное это то что они никто из них не писал никогда класслоадер и хотят чтобы я написал, я бы написал, но эффективности не вижу. Нет никакой пользы, они говорят что если из таблицы то можно новую обработку только в таблицу залить и все. А с jar файлом тоже самое будет, я уверен. Перезапуск диспечера токо нада. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2004, 06:24 |
|
Вложенная Жава в DB2, возможно?
|
|||
---|---|---|---|
#18+
Возможно такое: 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 можно использовать для компиляции. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2004, 10:29 |
|
|
start [/forum/topic.php?fid=43&fpage=152&tid=1606140]: |
0ms |
get settings: |
7ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
68ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
82ms |
get tp. blocked users: |
2ms |
others: | 529ms |
total: | 717ms |
0 / 0 |