powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Зависимости java в Oracle DB
100 сообщений из 100, показаны все 4 страниц
Зависимости java в Oracle DB
    #39498366
PsyDiamond
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Быть может в верной ветке пишу, кто его знает

В общем: как в вашем Java мире можно установить цепочку зависимостей?
вот допустим у меня есть Apache POI можно какими либо средствами получить цепочку, что в какой последовательности загружать? начиная от корня и заканчивая собственно poi-3.16.jar
...
Рейтинг: 0 / 0
Зависимости java в Oracle DB
    #39498369
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maven, gradle?
...
Рейтинг: 0 / 0
Зависимости java в Oracle DB
    #39498403
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PsyDiamond что в какой последовательности загружать?
Куда загружать и почему последовательность вдруг стала важна?
PsyDiamondначиная от корня и заканчивая собственно poi-3.16.jar
От корня чего?
...
Рейтинг: 0 / 0
Зависимости java в Oracle DB
    #39498427
irbis_al
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,
Куда загружать и почему последовательность вдруг стала важна?

Он имеет ввиду Загрузить в базу оракловую...
У него есть такая фича...загрузить java классы и можно вызывать методы из из pl/sq;
Т.е я смогу из оракловой процедуры сразу получить pdf...
Гл чтоб загрузить со всеми зависимостями...это ещё тот головняк.
(именно поэтому я этим не пользуюсь проще автономно на java написать а взаимодействовать через soket например)
...
Рейтинг: 0 / 0
Зависимости java в Oracle DB
    #39498433
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
irbis_al(именно поэтому я этим не пользуюсь проще автономно на java написать а взаимодействовать через soket например)
+1 микросервисы наше всё. Хоть через командную строку.
...
Рейтинг: 0 / 0
Зависимости java в Oracle DB
    #39498557
PsyDiamond
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
слова знакомые и хорошие попадаются, но суть пока что не улавливаю

Была вот задача - на основании данных собрать отчет в docx. Было принято решение использовать для решения Apache POI (ибо на чистом pl/sql я готового варианта не нашел, а изучив структуру xml - понял что руками писать будет неоправданно. не потому что сложно, а нужно было сделать гибко)
так вот с горем пополам я развернул в базу, сделал обёртки и всё работает замечательно. Но вот поступит мне задача - "нужно сделать у того клиента вот точно такой же функционал" и снова нетривиальная игра с зависимостями? ну это как то не профессионально что ли.
можно конечно N раз один тот же набор файлов деплоить и тогда всё встанет на свои места.

с этим то ладно, тут всё доволно легко пошло

деплоил я другие пакеты, например "fr.opensagres.xdocreport.converter.docx.xwpf" мало того что - это было сложнее, так и результаты различные обнаружились. Например, написал test под InteliJ Idea, настроенным на Java 1.6 - всё работает корректно, за разумное время, всё получается красиво. Задеплоил я в базу, где тоже 1.6 сидит - выполняется быстро, но pdf получается жутко косячный. Набор jar'ов подкинул один и тот же
...
Рейтинг: 0 / 0
Зависимости java в Oracle DB
    #39498560
PsyDiamond
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
irbis_alBlazkowicz,
Куда загружать и почему последовательность вдруг стала важна?

Он имеет ввиду Загрузить в базу оракловую...
У него есть такая фича...загрузить java классы и можно вызывать методы из из pl/sq;
Т.е я смогу из оракловой процедуры сразу получить pdf...
Гл чтоб загрузить со всеми зависимостями...это ещё тот головняк.
(именно поэтому я этим не пользуюсь проще автономно на java написать а взаимодействовать через soket например)

а пример можно, насчет сокетов?
а то для получения pdf пришлось через Runtime.getRuntime().exec(...) вызывать приложение на сервере. blob гонять в файла и обратно в blob
...
Рейтинг: 0 / 0
Зависимости java в Oracle DB
    #39498564
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Зависимости java в Oracle DB
    #39498565
PsyDiamond
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BlazkowiczPsyDiamond,

Что-нибудь вроде этого
https://apexplained.wordpress.com/2016/03/21/utl_http-and-a-multipartform-data-request-body/

а ну можно тогда начать с простого http://www.opencodez.com/oracle/oracle-pl-sql-programming-socket-connection.htm

теперь очень простой вопрос: как обернуть java апликацию в exe? а то запускать напрямую java чего_то_там - это здорово, но exe всё таки привычнее
...
Рейтинг: 0 / 0
Зависимости java в Oracle DB
    #39498566
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PsyDiamondтеперь очень простой вопрос: как обернуть java апликацию в exe? а то запускать напрямую java чего_то_там - это здорово, но exe всё таки привычнее
какой такой exe? Apache Procrun наше всё.
...
Рейтинг: 0 / 0
Зависимости java в Oracle DB
    #39498576
PsyDiamond
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BlazkowiczPsyDiamondтеперь очень простой вопрос: как обернуть java апликацию в exe? а то запускать напрямую java чего_то_там - это здорово, но exe всё таки привычнее
какой такой exe? Apache Procrun наше всё.

вот, то что надо. благодарю :)
...
Рейтинг: 0 / 0
Зависимости java в Oracle DB
    #39498585
PsyDiamond
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
но всё таки вопрос у меня остался, как минимум 1
если я нужные jar'ы всей кучей помещу все в один jar задеплою в базу - оно мне поможет?
...
Рейтинг: 0 / 0
Зависимости java в Oracle DB
    #39498614
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jar внутри jar? Это не будет работать ни в базе, ни за её пределами.
Перособрать кучку jar-ов в один? Вполне возможно, но надо тестировать.
...
Рейтинг: 0 / 0
Зависимости java в Oracle DB
    #39498642
irbis_al
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PsyDiamondirbis_alBlazkowicz,
пропущено...

Он имеет ввиду Загрузить в базу оракловую...
У него есть такая фича...загрузить java классы и можно вызывать методы из из pl/sq;
Т.е я смогу из оракловой процедуры сразу получить pdf...
Гл чтоб загрузить со всеми зависимостями...это ещё тот головняк.
(именно поэтому я этим не пользуюсь проще автономно на java написать а взаимодействовать через soket например)

а пример можно, насчет сокетов?
а то для получения pdf пришлось через Runtime.getRuntime().exec(...) вызывать приложение на сервере. blob гонять в файла и обратно в blob

В oracle есть такой пакет utl_tcp
https://docs.oracle.com/cd/B28359_01/appdev.111/b28419/u_tcp.htm#CEGDFJJE
он может организовать сокет.
1.В автономном java приложении организуете сокет.(У меня обычно java сервером сокета является)
2.В pl/sql процедуре вызываете utl_tcp...и обычно отправляется некоторые данные(у меня в xml) можно json
3.По этому xml java знает что делать.


Ваш случай ...на сколько я помню POI преобразует html в разные форматы.
1.Подготовили varchar2(Это текстовый оракловый тип(это для тех кто неораклист))
2.Кинули его(html) в сокет.
3.Ваша автономная приложуха сделала с ним что надо и далее либо вернула ораклу(как бинарный поток) либо(попроще) положила в папку...а папка прописана в oracle directory...и вернула в оракле толькр имя файла.ОН(оракле) зная где лежит файл организовывает бинарник(BFILE),Подмножество BLOB и далее работает с ним так же как если бы у Вас получилось все POI jar загрузить в оракле и обернуть их pl/sql процедурой.
...
Рейтинг: 0 / 0
Зависимости java в Oracle DB
    #39498736
PsyDiamond
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
irbis_alPsyDiamondпропущено...


а пример можно, насчет сокетов?
а то для получения pdf пришлось через Runtime.getRuntime().exec(...) вызывать приложение на сервере. blob гонять в файла и обратно в blob

В oracle есть такой пакет utl_tcp
https://docs.oracle.com/cd/B28359_01/appdev.111/b28419/u_tcp.htm#CEGDFJJE
он может организовать сокет.
1.В автономном java приложении организуете сокет.(У меня обычно java сервером сокета является)
2.В pl/sql процедуре вызываете utl_tcp...и обычно отправляется некоторые данные(у меня в xml) можно json
3.По этому xml java знает что делать.


Ваш случай ...на сколько я помню POI преобразует html в разные форматы.
1.Подготовили varchar2(Это текстовый оракловый тип(это для тех кто неораклист))
2.Кинули его(html) в сокет.
3.Ваша автономная приложуха сделала с ним что надо и далее либо вернула ораклу(как бинарный поток) либо(попроще) положила в папку...а папка прописана в oracle directory...и вернула в оракле толькр имя файла.ОН(оракле) зная где лежит файл организовывает бинарник(BFILE),Подмножество BLOB и далее работает с ним так же как если бы у Вас получилось все POI jar загрузить в оракле и обернуть их pl/sql процедурой.

первые 2 пункта не ясны немного
насчет docx у меня ситуация такая: я беру шаблон из базы (blob) заполняю его через POI, а затем выдаю обратно blob.
могу я через сокет передать blob в сторону java?
...
Рейтинг: 0 / 0
Зависимости java в Oracle DB
    #39498747
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PsyDiamondну это как то не профессионально что ли
В базе с java мало кто работает.
Делают рядом с базой утилиту или веб сервер работающий совместно.
...
Рейтинг: 0 / 0
Зависимости java в Oracle DB
    #39498748
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
irbis_al,
Какой сокет, если есть jdbc?
...
Рейтинг: 0 / 0
Зависимости java в Oracle DB
    #39498753
irbis_al
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123irbis_al,
Какой сокет, если есть jdbc?
В случае jdbc действие инициируется клиентом.
А ему нужно чтоб действие инициировалось ораклом.
...
Рейтинг: 0 / 0
Зависимости java в Oracle DB
    #39498758
irbis_al
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
первые 2 пункта не ясны немного
насчет docx у меня ситуация такая: я беру шаблон из базы (blob) заполняю его через POI, а затем выдаю обратно blob.
могу я через сокет передать blob в сторону java?

Тогда

1.Взяли blob из базы.
2.Кинули его в сокет(вместе с данными заполнения...я бы рекомендовал xml,,,где blob-шаблон в base64 переведён...но тут сами думайте)....ваша прога обработала его.
2.Альтернативный...есть пакет utl_http...кинули его(blob шаблон с данными) http-requst запросом.
(В этом случае в Вашей проге должно быть embended(встроенный) http сервер типа grizzly ,jetty и т .д )

И эта схема будет работать быстрее(намного быстрее) нежели загруженный jar обёрнутый pl/sql процедурой.
...
Рейтинг: 0 / 0
Зависимости java в Oracle DB
    #39498761
irbis_al
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
irbis_alPetro123irbis_al,
Какой сокет, если есть jdbc?
В случае jdbc действие инициируется клиентом.
А ему нужно чтоб действие инициировалось ораклом.

А вообще в догонку...действительно,если Ваш основной язык java.(я просто думал это не Ваш основной язык(или же основная ИС неявовская) иначе то ,что я ниже перечисляю абсолютно тривиально и прямой путь)
1.Получаете блоб шаблона из базы.
2.Получаете данные из базы.
3.Скармливаете это всё POI получаете документ.
...
Рейтинг: 0 / 0
Зависимости java в Oracle DB
    #39498764
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
irbis_alPetro123irbis_al,
Какой сокет, если есть jdbc?
В случае jdbc действие инициируется клиентом.
А ему нужно чтоб действие инициировалось ораклом.
Он мало что о ЗАДАЧЕ ОТ ПОЛЬЗОВАТЕЛЯ говорил.
Чтобы сервер сам по себе pdf/docx собирал?
...
Рейтинг: 0 / 0
Зависимости java в Oracle DB
    #39498786
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
irbis_al,
Да. Я тоже подумал что он просто новенький java)
...
Рейтинг: 0 / 0
Зависимости java в Oracle DB
    #39498796
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PsyDiamondслова знакомые и хорошие попадаются, но суть пока что не улавливаю

Была вот задача - на основании данных собрать отчет в docx. Было принято решение использовать для решения Apache POI (ибо на чистом pl/sql я готового варианта не нашел, а изучив структуру xml - понял что руками писать будет неоправданно. не потому что сложно, а нужно было сделать гибко)
так вот с горем пополам я развернул в базу, сделал обёртки и всё работает замечательно. Но вот поступит мне задача - "нужно сделать у того клиента вот точно такой же функционал" и снова нетривиальная игра с зависимостями? ну это как то не профессионально что ли.
можно конечно N раз один тот же набор файлов деплоить и тогда всё встанет на свои места.

с этим то ладно, тут всё доволно легко пошло

деплоил я другие пакеты, например "fr.opensagres.xdocreport.converter.docx.xwpf" мало того что - это было сложнее, так и результаты различные обнаружились. Например, написал test под InteliJ Idea, настроенным на Java 1.6 - всё работает корректно, за разумное время, всё получается красиво. Задеплоил я в базу, где тоже 1.6 сидит - выполняется быстро, но pdf получается жутко косячный. Набор jar'ов подкинул один и тот же

Зачем изобретать велосипед?!
"Все украдено до нас" (с) Операция Ы
Существует куча построителей отчетов, которые могут импортировать отчет практически в любой формат.
Например в мире Java пользуется определенной популярностью JasperReport.
Если не использовать JasperServer, то вещь бесплатная.
Для создание отчетов есть JasperStudio. По мне вещь не очень удобная, но работать можно.

Есть и другие построители отчетов, в т.ч. и у Oracle что-то есть свое, правда платное.
...
Рейтинг: 0 / 0
Зависимости java в Oracle DB
    #39498833
PsyDiamond
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123irbis_alпропущено...

В случае jdbc действие инициируется клиентом.
А ему нужно чтоб действие инициировалось ораклом.
Он мало что о ЗАДАЧЕ ОТ ПОЛЬЗОВАТЕЛЯ говорил.
Чтобы сервер сам по себе pdf/docx собирал?

да, в мире Java я крайне зелен.

вообщем есть клиент написанный то ли на Delphi, то ли на C++ Builder; далее есть база Oracle
так вот. Клиент делает вызов а-ля "Вот тебе идентификаторы отмеченных записей - собери мне отчет и отдай blob"

так что выжеизложенный способ с сокетами буду рассматиривать. Пока что собственно задача не совсем понятная: как определить какого объема blob принимать на стороне java

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Socket socket = listener.accept();
InputStream in = socket.getInputStream();
byte [] mybytearray  = new byte [FILE_SIZE];
                    int bytesRead = in.read(mybytearray, 0, mybytearray.length);
                    int current = bytesRead;

                    do {
                        bytesRead =
                                in.read(mybytearray, current, (mybytearray.length-current));
                        if(bytesRead >= 0) current += bytesRead;
                    } while(bytesRead > -1);
socket.close();



Код: plsql
1.
2.
3.
4.
5.
6.
WHILE offset_ < Dbms_Lob.GetLength(bTemplate) LOOP
        Dbms_Lob.Read (bTemplate, chunk_size_, offset_, file_chunk_);
        b := utl_tcp.WRITE_RAW(CONN, utl_encode.base64_encode(file_chunk_));
        offset_ := offset_ + chunk_size_;
    END LOOP;
 UTL_TCP.FLUSH(CONN);



в первом приближении как то так
...
Рейтинг: 0 / 0
Зависимости java в Oracle DB
    #39498840
irbis_al
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PsyDiamond,

FILE_SIZE Это константа...
Любая пусть будет 1024
По Вашему алгоритму пока не закончился блоп из базы читать в буфер 1024 байт и прибавлять этот маленький кусочек к большому куску(исходному явовскому blob)
...
Рейтинг: 0 / 0
Зависимости java в Oracle DB
    #39498841
irbis_al
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
irbis_alPsyDiamond,

FILE_SIZE Это константа...
Любая пусть будет 1024
По Вашему алгоритму пока не закончился блоп из базы читать в буфер 1024 байт и прибавлять этот маленький кусочек к большому куску(исходному явовскому blob)

В догонку у Вас пример немного выхолощенный ...прибавлять к большому куску там нет...
На этом же форме были примеры
типа
http://www.sql.ru/forum/1151147/klient-server-porugayte-kod-servera
...
Рейтинг: 0 / 0
Зависимости java в Oracle DB
    #39498842
PsyDiamond
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
верно ли я понимаю, что константу следует выбирать в районе 32ххх дабы подойти к максимально возможной строке, которую передаёт Oracle?
...
Рейтинг: 0 / 0
Зависимости java в Oracle DB
    #39498843
irbis_al
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PsyDiamondверно ли я понимаю, что константу следует выбирать в районе 32ххх дабы подойти к максимально возможной строке, которую передаёт Oracle?

Нет это любой буфер хоть 1 байт..просто итераций будет много.
...
Рейтинг: 0 / 0
Зависимости java в Oracle DB
    #39498878
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PsyDiamondвообщем есть клиент написанный то ли на Delphi, то ли на C++ Builder; далее есть база Oracle
так вот. Клиент делает вызов а-ля "Вот тебе идентификаторы отмеченных записей - собери мне отчет и отдай blob"
Ну, я думал ты хотел на java перейти.
А это костыль.
2. Дельфи в хранимку говорит вот тебе?
3. Зачем дельфи сокет чтобы забрать?
...
Рейтинг: 0 / 0
Зависимости java в Oracle DB
    #39498881
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
irbis_al,
Java в базе вроде может читать блоб из своей же базы.
...
Рейтинг: 0 / 0
Зависимости java в Oracle DB
    #39498882
PsyDiamond
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ну не совсем Dephi чистой воды. кто работает - думаю знает Парус Бюджет 8
...
Рейтинг: 0 / 0
Зависимости java в Oracle DB
    #39498893
PsyDiamond
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вот пока что тут я оставновился. ругается теперь XWPFDocument что пришел кривой blob.
Exception in thread "main" org.apache.poi.POIXMLException: org.apache.poi.openxml4j.exceptions.InvalidFormatException: Package should contain a content type part [M1.13]

куда копать?

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
 Socket socket = listener.accept();
                ByteArrayOutputStream baos = new ByteArrayOutputStream();
                TeeInputStream tis = new TeeInputStream(socket.getInputStream(), baos);
                try {

                    byte [] mybytearray  = new byte [FILE_SIZE];

                    while((tis.read(mybytearray)) != -1) {
                    }

                    ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
                    XWPFDocument document = new XWPFDocument(bais);
                    PdfOptions options = PdfOptions.create();
                    ByteArrayOutputStream pdfout = new  ByteArrayOutputStream();
                    PdfConverter.getInstance().convert(document, pdfout, options);

                    System.out.println("Final");
                } finally {
                    socket.close();
                }
...
Рейтинг: 0 / 0
Зависимости java в Oracle DB
    #39498894
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PsyDiamondну не совсем Dephi чистой воды. кто работает - думаю знает Парус Бюджет 8
Напугал прям.
Сокет зачем?
...
Рейтинг: 0 / 0
Зависимости java в Oracle DB
    #39498901
PsyDiamond
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ох, сокет нужен на серверной стороне Oracle из за того, что с кучей зависимостей довольно проблематично разворачивать java напрямую в базу.
Вот в этой ветке и предложили - держать java отдельно общаться с базой по сокету
...
Рейтинг: 0 / 0
Зависимости java в Oracle DB
    #39498905
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PsyDiamondох, сокет нужен на серверной стороне Oracle из за того, что с кучей зависимостей довольно проблематично разворачивать java напрямую в базу.
Вот в этой ветке и предложили - держать java отдельно общаться с базой по сокету
Я не понял.
Java отдельно это свой My.jar?
...
Рейтинг: 0 / 0
Зависимости java в Oracle DB
    #39498906
PsyDiamond
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123PsyDiamondох, сокет нужен на серверной стороне Oracle из за того, что с кучей зависимостей довольно проблематично разворачивать java напрямую в базу.
Вот в этой ветке и предложили - держать java отдельно общаться с базой по сокету
Я не понял.
Java отдельно это свой My.jar?

да, всё верно My.jar поднятый через Apache Procrun
...
Рейтинг: 0 / 0
Зависимости java в Oracle DB
    #39498909
PsyDiamond
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
в данном случае микросервис, который получает docx в виде BLOB и выдаёт pdf в виде BLOB
...
Рейтинг: 0 / 0
Зависимости java в Oracle DB
    #39498911
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PsyDiamondчерез Apache Procrun
Теперь понял))
Чудно.
ОК.
...
Рейтинг: 0 / 0
Зависимости java в Oracle DB
    #39498914
PsyDiamond
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
это всё конечно была лирика. а вот суть - не понятна)

PsyDiamondвот пока что тут я оставновился. ругается теперь XWPFDocument что пришел кривой blob.
Exception in thread "main" org.apache.poi.POIXMLException: org.apache.poi.openxml4j.exceptions.InvalidFormatException: Package should contain a content type part [M1.13]

куда копать?

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
 Socket socket = listener.accept();
                ByteArrayOutputStream baos = new ByteArrayOutputStream();
                TeeInputStream tis = new TeeInputStream(socket.getInputStream(), baos);
                try {

                    byte [] mybytearray  = new byte [FILE_SIZE];

                    while((tis.read(mybytearray)) != -1) {
                    }

                    ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
                    XWPFDocument document = new XWPFDocument(bais);
                    PdfOptions options = PdfOptions.create();
                    ByteArrayOutputStream pdfout = new  ByteArrayOutputStream();
                    PdfConverter.getInstance().convert(document, pdfout, options);

                    System.out.println("Final");
                } finally {
                    socket.close();
                }
...
Рейтинг: 0 / 0
Зависимости java в Oracle DB
    #39498917
irbis_al
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PsyDiamond,

Вы это уже с ораклом соеденили через utl_socket ?
...
Рейтинг: 0 / 0
Зависимости java в Oracle DB
    #39498918
PsyDiamond
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
из Base64 нужно декодировать?
...
Рейтинг: 0 / 0
Зависимости java в Oracle DB
    #39498919
PsyDiamond
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
irbis_alPsyDiamond,

Вы это уже с ораклом соеденили через utl_socket ?

да

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
WHILE offset_ < Dbms_Lob.GetLength(bTemplate) LOOP
        Dbms_Lob.Read (bTemplate, chunk_size_, offset_, file_chunk_);
        b := utl_tcp.WRITE_RAW(CONN, utl_encode.base64_encode(file_chunk_));
        offset_ := offset_ + chunk_size_;
    END LOOP;
	
    --RETVAL := UTL_TCP.WRITE_LINE(CONN,L_TEXT);
    UTL_TCP.FLUSH(CONN);



где chunk_size_ NUMBER := 20000;
...
Рейтинг: 0 / 0
Зависимости java в Oracle DB
    #39498920
irbis_al
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PsyDiamond,

У Вас же код кривой...Ну дал же примеры...на сайте stackowerflow посмотрите
Вот это что означает.
Код: java
1.
2.
while((tis.read(mybytearray)) != -1) {
                    }



Сделайте сначала сервер и клиент на java(Примеров полно в том числе по ссылке)...получите и сохраните файл.
Уюедитесь ,что файл полученный небитый...
Дальше расширяйте код.
...
Рейтинг: 0 / 0
Зависимости java в Oracle DB
    #39498922
irbis_al
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PsyDiamondirbis_alPsyDiamond,

Вы это уже с ораклом соеденили через utl_socket ?

да

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
WHILE offset_ < Dbms_Lob.GetLength(bTemplate) LOOP
        Dbms_Lob.Read (bTemplate, chunk_size_, offset_, file_chunk_);
        b := utl_tcp.WRITE_RAW(CONN, utl_encode.base64_encode(file_chunk_));
        offset_ := offset_ + chunk_size_;
    END LOOP;
	
    --RETVAL := UTL_TCP.WRITE_LINE(CONN,L_TEXT);
    UTL_TCP.FLUSH(CONN);



где chunk_size_ NUMBER := 20000;

Неверно...если Вы передаёте base 64 то на клиенте надо декодировать.

А что напрямки бинарник нельзя передавать.(то я советовал вначале для другого случая,если вы всё в xml засовывать будите данные и шаблон...тогда шаблон только через bas64) а если в два реквеста...
То бинарник отправляете бинарник получаете.
...
Рейтинг: 0 / 0
Зависимости java в Oracle DB
    #39498923
irbis_al
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
irbis_al,
Вот сразу гуглится
https://oracle-base.com/dba/miscellaneous/ftp.pkb
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
PROCEDURE put_remote_binary_data (p_conn  IN OUT NOCOPY  UTL_TCP.connection,
                                  p_file  IN             VARCHAR2,
                                  p_data  IN             BLOB) IS
-- --------------------------------------------------------------------------
  l_conn      UTL_TCP.connection;
  l_result    PLS_INTEGER;
  l_buffer    RAW(32766);
  l_amount    BINARY_INTEGER := 32766;
  l_pos       INTEGER := 1;
  l_blob_len  INTEGER;
BEGIN
  l_conn := get_passive(p_conn);
  send_command(p_conn, 'STOR ' || p_file, TRUE);

  l_blob_len := DBMS_LOB.getlength(p_data);

  WHILE l_pos <= l_blob_len LOOP
    DBMS_LOB.READ (p_data, l_amount, l_pos, l_buffer);
    l_result := UTL_TCP.write_raw(l_conn, l_buffer, l_amount);
    UTL_TCP.flush(l_conn);
    l_pos := l_pos + l_amount;
  END LOOP;

  UTL_TCP.close_connection(l_conn);
  -- The following line allows some people to make multiple calls from one connection.
  -- It causes the operation to hang for me, hence it is commented out by default.
  -- get_reply(p_conn);

EXCEPTION
  WHEN OTHERS THEN
    UTL_TCP.close_connection(l_conn);
    RAISE;
END;
...
Рейтинг: 0 / 0
Зависимости java в Oracle DB
    #39498927
PsyDiamond
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
во! теперь на данном этапе развития всё прекрасно
...
Рейтинг: 0 / 0
Зависимости java в Oracle DB
    #39498929
PsyDiamond
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
irbis_alPsyDiamond,

У Вас же код кривой...Ну дал же примеры...на сайте stackowerflow посмотрите
Вот это что означает.
Код: java
1.
2.
while((tis.read(mybytearray)) != -1) {
                    }



Сделайте сначала сервер и клиент на java(Примеров полно в том числе по ссылке)...получите и сохраните файл.
Уюедитесь ,что файл полученный небитый...
Дальше расширяйте код.

ну по моему разумению - читаю поток, пока в нём есть что читать. возможно коряво да, но я же через TeeInputStream связал входящий и выходящий потоки. и мне нет нужды явным образом читать из одного и писать в другой. данной конструкцией я делаю мост
...
Рейтинг: 0 / 0
Зависимости java в Oracle DB
    #39498932
irbis_al
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PsyDiamond,

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
while((tis.read(mybytearray)) != -1) {

Вот тут ничего не делается,
а должно быть.
Чтение из сокетного потока(у Вас это tis) и запись в Ваш получаемый поток.
Смотрите ещё примеры

                    }
...
Рейтинг: 0 / 0
Зависимости java в Oracle DB
    #39498938
PsyDiamond
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
irbis_alPsyDiamond,

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
while((tis.read(mybytearray)) != -1) {

Вот тут ничего не делается,
а должно быть.
Чтение из сокетного потока(у Вас это tis) и запись в Ваш получаемый поток.
Смотрите ещё примеры

                    }



https://commons.apache.org/proper/commons-io/javadocs/api-1.4/org/apache/commons/io/input/TeeInputStream.html
...
Рейтинг: 0 / 0
Зависимости java в Oracle DB
    #39498940
irbis_al
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PsyDiamondirbis_alPsyDiamond,

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
while((tis.read(mybytearray)) != -1) {

Вот тут ничего не делается,
а должно быть.
Чтение из сокетного потока(у Вас это tis) и запись в Ваш получаемый поток.
Смотрите ещё примеры

                    }



https://commons.apache.org/proper/commons-io/javadocs/api-1.4/org/apache/commons/io/input/TeeInputStream.html

Ну может быть и правильно(я не обратил внимание на неизвестный мне TeeInputStream ) если работает...я просто пользуюсь обычными Streamами...что в java из коробки
а это org.apache.commons.io.input.TeeInputStream...если делает переброску то всё ,наверное, правильно.

А если не работает код посмотрите классические примеры.
...
Рейтинг: 0 / 0
Зависимости java в Oracle DB
    #39498957
PsyDiamond
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а почему я не могу в сокет записать?

Код: java
1.
2.
3.
OutputStream socketout = socket.getOutputStream();
                    //ByteArrayOutputStream pdfout = new ByteArrayOutputStream();
                    PdfConverter.getInstance().convert(document, socketout, options);



либо

Код: java
1.
2.
3.
ByteArrayOutputStream pdfout = new ByteArrayOutputStream();
PdfConverter.getInstance().convert(document, pdfout , options);
pdfout.writeTo(socketout);



Caused by: java.net.SocketException: Software caused connection abort: socket write error
...
Рейтинг: 0 / 0
Зависимости java в Oracle DB
    #39498960
irbis_al
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PsyDiamond,
Software caused connection abort

Оракле отключился...и не ждёт ответа.
...
Рейтинг: 0 / 0
Зависимости java в Oracle DB
    #39498965
PsyDiamond
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ну как же

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
begin
	WHILE UTL_TCP.AVAILABLE(CONN, 2) > 0 LOOP
	l_result := UTL_TCP.READ_RAW(CONN, file_chunk_, chunk_size_);
	DBMS_LOB.writeappend(pdf, l_result, file_chunk_);
	end loop;
	end;

DBMS_OUTPUT.PUT_LINE('Size: ' || length(pdf));



ждёт 2 секунды и выводит Size: 0
...
Рейтинг: 0 / 0
Зависимости java в Oracle DB
    #39498968
PsyDiamond
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
быть может имеет смысл при отправке из java бить на пакеты по 32766 байт например?
...
Рейтинг: 0 / 0
Зависимости java в Oracle DB
    #39498973
irbis_al
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PsyDiamondну как же

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
begin
	WHILE UTL_TCP.AVAILABLE(CONN, 2) > 0 LOOP
	l_result := UTL_TCP.READ_RAW(CONN, file_chunk_, chunk_size_);
	DBMS_LOB.writeappend(pdf, l_result, file_chunk_);
	end loop;
	end;

DBMS_OUTPUT.PUT_LINE('Size: ' || length(pdf));



ждёт 2 секунды и выводит Size: 0

Пока сложно что-либо сказать...надо смотреть как у меня.
Вы от простого к сложному идите...это ж уже второй этап...
а первый ...Вы блоп-шаблон получили?
...
Рейтинг: 0 / 0
Зависимости java в Oracle DB
    #39498976
PsyDiamond
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
irbis_alPsyDiamondну как же

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
begin
	WHILE UTL_TCP.AVAILABLE(CONN, 2) > 0 LOOP
	l_result := UTL_TCP.READ_RAW(CONN, file_chunk_, chunk_size_);
	DBMS_LOB.writeappend(pdf, l_result, file_chunk_);
	end loop;
	end;

DBMS_OUTPUT.PUT_LINE('Size: ' || length(pdf));



ждёт 2 секунды и выводит Size: 0

Пока сложно что-либо сказать...надо смотреть как у меня.
Вы от простого к сложному идите...это ж уже второй этап...
а первый ...Вы блоп-шаблон получили?

да. цепочка у меня работает: посылаю из Oracle по сокету blob, ловлю его в Java, конвертирую в pdf (в файл выводиться - проверял).

Дело за тем, чтобы передать полученный pdf обратно на oracle
...
Рейтинг: 0 / 0
Зависимости java в Oracle DB
    #39498980
PsyDiamond
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
для проверки даже беру вот blob изначальный, который меньше чем 32766
посылаю - ошибки нет и результата тоже)
...
Рейтинг: 0 / 0
Зависимости java в Oracle DB
    #39498983
irbis_al
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PsyDiamondдля проверки даже беру вот blob изначальный, который меньше чем 32766
посылаю - ошибки нет и результата тоже)
Я говорил,буфер не имеет значения.

Теперь по передаче назад
1.Убедитесь что в оракле Вы не сделали
Код: plsql
1.
UTL_TCP.close_connection(l_conn);



И пересмотрите код отправки назад...по моему он какой-то простой.(сильно не вдавался..может Вы там тоже нетипичные Streamы пользуете)

Начните с простого отправьте в оракле строку ОK
...
Рейтинг: 0 / 0
Зависимости java в Oracle DB
    #39498990
irbis_al
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PsyDiamondну как же

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
begin
	WHILE UTL_TCP.AVAILABLE(CONN, 2) > 0 LOOP
	l_result := UTL_TCP.READ_RAW(CONN, file_chunk_, chunk_size_);
	DBMS_LOB.writeappend(pdf, l_result, file_chunk_);
	end loop;
	end;

DBMS_OUTPUT.PUT_LINE('Size: ' || length(pdf));



ждёт 2 секунды и выводит Size: 0

И ещё Вы уверены,что через две секунды Ваш java-сервер отвечает.(Т.е он сделал pdf) и ответил...увеличить время.
...
Рейтинг: 0 / 0
Зависимости java в Oracle DB
    #39499056
PsyDiamond
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
я пробовал отправлять blob который получил. 1 секунда - уже за глаза. в pdf в данном случае - менее секунды конвертирует. буду осваивать и думать почему так
...
Рейтинг: 0 / 0
Зависимости java в Oracle DB
    #39499060
irbis_al
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PsyDiamondя пробовал отправлять blob который получил. 1 секунда - уже за глаза. в pdf в данном случае - менее секунды конвертирует. буду осваивать и думать почему так

Вообще по вашей логике работы время ставить нельзя ...надо поставить 0(или очень большое)...Т.е Если оракле отправил шаблон...то он уже ждёт документ.
...
Рейтинг: 0 / 0
Зависимости java в Oracle DB
    #39499063
PsyDiamond
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
в будующем согласен, но конкретно в этом случае - время уместно
...
Рейтинг: 0 / 0
Зависимости java в Oracle DB
    #39499187
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PsyDiamondэто всё конечно была лирика. а вот суть - не понятна)Сокеты, немцы ...
Раз уж вы подняли на сервере БД сервер приложений, то пусть в сервере БД работает кака-бы-нить хранимка, которая складывает запросы пользователей куда-бы-нить в таблицу.
Сервер приложений, как честный jdbc-клиент цепляется к серверу БД, обнаруживает запросы, обрабатывает их, складывает результаты в куды-положено, чтобы хранимка вернула их клиентам.
...
Рейтинг: 0 / 0
Зависимости java в Oracle DB
    #39499200
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov,
У них фишка в том, что яву вызвать из бд проблема.
А библиотеки только на java есть.
Java клиент для юзверя он не хочет.
...
Рейтинг: 0 / 0
Зависимости java в Oracle DB
    #39499209
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123У них фишка в том, что яву вызвать из бд проблема.
А библиотеки только на java есть.
Java клиент для юзверя он не хочет.А теперь внимательно перечитайте моё сообщение.
...
Рейтинг: 0 / 0
Зависимости java в Oracle DB
    #39499219
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov,
Я не понял что у них сервер приложений)
Увы.
Поэтому весь твой ответ непонятен.
...
Рейтинг: 0 / 0
Зависимости java в Oracle DB
    #39499224
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Я не понял что у них сервер приложений)"Сервер приложений" это то, что "с пол-пинка" не получается разместить в базе. Далее начинается изобретение велосипедов из пророческих пакетов и ява-классов.
Я предлагаю не страдать ерундой, а использовать то, что уже сделано и работает - jdbc-драйвер. При таком подходе "сервер приложений" и становится "клиентом БД".Поэтому весь твой ответ непонятен.Непонятно - уточни то, что непонятно.
...
Рейтинг: 0 / 0
Зависимости java в Oracle DB
    #39499232
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov,
Сервер приложений, я понимаю, сервер с контейнером для приложений типа томкат.
Тут непонятно, кто в этом качестве.
И по какому событию запрос?
...
Рейтинг: 0 / 0
Зависимости java в Oracle DB
    #39499238
PsyDiamond
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
то что вы предлагаете - это тоже добавление звена, но с другой стороны. а это концептуально не правильно
я не допиливаю сервер приложений, который является к тому же - толстым клиентом.

Действительно идея в принципе не плохая. но получается что java будет мониторить некую таблицу или реагировать по тригеру. Задача такая: пользователь жмёт - "Договор в DOCX", "Договор в PDF" или "Сформировать цепочку документов в PDF и отправить клиенту" и собственно в кратчайшие сроки получает ответ. Вводить некую очередь печати - я не вижу смысла
...
Рейтинг: 0 / 0
Зависимости java в Oracle DB
    #39499240
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PsyDiamond,
На самом деле аналогия с сервером печати типа Jasper просматривается..
...
Рейтинг: 0 / 0
Зависимости java в Oracle DB
    #39499242
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы в чем показываете pdf/word?
...
Рейтинг: 0 / 0
Зависимости java в Oracle DB
    #39499244
PsyDiamond
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
быть может я технология плохо рассмотрел

она не подходит по следующим моментам
1)есть требование, чтобы визуальная часть шаблона, будь то под Excel или Word была уже в соответствующем формате. Например, если меняются какие то моменты в шаблоне, например в Договоре - чтобы и бухгалтер могла простыми дествиями поправить
2)количество пользоваетелей 10 штук, малый трафик отчетов (я про конкретную базу) - я собственно не вижу смысл поднимать для этого целый сервис для печати
3)Опять же - для однородности системы, мне все существующие отчеты нужно будет перетаскивать в тот же Jasper Reports. Я считаю не оправданно.

для конвертации docx в pdf можно было заморочиться несколькими путями: использовать VBS, COM объекты - на стороне клиента, либо же использовать pl/sql, java и прочее на серверной стороне

нет у меня ни видения, ни задачи поставить гибкую систему печати
...
Рейтинг: 0 / 0
Зависимости java в Oracle DB
    #39499247
PsyDiamond
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123Вы в чем показываете pdf/word?

docx - вордом, pdf - ридером, который на конкретном клиенском компе установлен. тут без особых заморочек.

я вызываю процедуру а-ля "Напечатай Договоры по отмеченным записям", передаю в хранимую процедуру идентификаторы, возвращаю blob, а толстый клиент уже сохраняет их в %temp% как реальные файлы и открывает
...
Рейтинг: 0 / 0
Зависимости java в Oracle DB
    #39499250
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PsyDiamond,
П.1 делал в дельфи через OLE server excell.
Шаблоны были обычные *.dot.
...
Рейтинг: 0 / 0
Зависимости java в Oracle DB
    #39499251
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Т.е. юзверь сам открывал dot, правил выравнивание напр. И сохранял.
...
Рейтинг: 0 / 0
Зависимости java в Oracle DB
    #39499252
PsyDiamond
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123PsyDiamond,
П.1 делал в дельфи через OLE server excell.
Шаблоны были обычные *.dot.

сервер приложений разрабатываю не я:) так что я могу лишь расширять на своём уровне
...
Рейтинг: 0 / 0
Зависимости java в Oracle DB
    #39499256
PsyDiamond
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123Т.е. юзверь сам открывал dot, правил выравнивание напр. И сохранял.
так и сейчас насчет word/excel есть сейчас возможность у юзера поправить визуальную составляющую.
для Excel используется OLE, а вот насчет Word - приходиться выгружать во вне и загружать файл обратно. В принципе, можно приноровиться и OLE для Word прицепить. но острой необходимости нет
...
Рейтинг: 0 / 0
Зависимости java в Oracle DB
    #39499260
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PsyDiamond,
1. Я не в курсе что за АппСервер у тебя.
2. Если счас работает, то нафиг тебе java?
...
Рейтинг: 0 / 0
Зависимости java в Oracle DB
    #39499261
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PsyDiamond,
OLE server называют com объект на клиенте где стоит excell.
...
Рейтинг: 0 / 0
Зависимости java в Oracle DB
    #39499265
PsyDiamond
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123PsyDiamond,
1. Я не в курсе что за АппСервер у тебя.
2. Если счас работает, то нафиг тебе java?

1. я веду речь об CRM/ERP системе Парус Бюджет 8. Двухзвенная архитектура. Всё под винду. Клиент, по-моему на Dephi, судя по использованию BPL

2. Из коробки, по поводу отчетности, работает с Crystal Reports и Excel. Нужно было прикрутить DOCX - я это сделел через POI.
Нужно было прикрутить DOCX2PDF я собственно прикрутил :) но как костыль: я выгружаю blob в файл на серевере, заупскаю скрипт на VBS, который через COM объекты вызывает word и конвертит файл в pdf, отдаёт файл я его забираю в blob. Хотел чтобы pdf convertor был в базе - не удалось

изначальная позиция же была: как составить цепочку зависимостей, например POI, так чтобы я мог дать некий скрипт спецам по внедрению или сопровождению, который задеплоит яву в базу, а так же хранимые процедуры и пакеты.

Несмотря на то что, сам я обитаю в мире .Net, но ситуация oracle db/java мне понравилась, что можно сложные структуры передавать в обе стороны.
...
Рейтинг: 0 / 0
Зависимости java в Oracle DB
    #39499273
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PsyDiamond,
На любом ЯП высокого уровня можно передавать структуры.
Если вы с Net, то там нельзя передать?
У вас ни одного показателя на java решение.
Парус - двухзвенка.
...
Рейтинг: 0 / 0
Зависимости java в Oracle DB
    #39499365
PsyDiamond
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
звено на Java не написано и не обещается. там народ довольно консервативный сидит

касательно же сложных структур я имею в виду

Код: plsql
1.
2.
3.
create or replace type tListofBlob is table of blob;
CREATE OR REPLACE TYPE TBOOKMARK AS OBJECT ( sKey VARCHAR2(50), sValue VARCHAR2(4000), blobs  tListofBlob );
create or replace type tlistall is table of TBOOKMARK;



да хоть вот эту. берём ojdbc6.jar. на вход получаем java.sql.Array
Код: java
1.
2.
3.
4.
5.
6.
Object[] objectarray = (Object[]) array.getArray();
        for (Object o : objectarray) {
            STRUCT struct = (STRUCT) o;
            Object[] attribs = struct.getAttributes();
...
}



разворачиаем по цепочке

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
oracle.jdbc.OracleConnection conn =
                (oracle.jdbc.OracleConnection) new OracleDriver().defaultConnection();
        ArrayDescriptor arr = ArrayDescriptor.createDescriptor("TBLOBLIST", conn);
        ArrayList list = new ArrayList();
        BLOB b = oracle.sql.BLOB.createTemporary(conn,
                true,
                oracle.sql.BLOB.DURATION_SESSION);

        OutputStream str = b.setBinaryStream(0);


и прочее
...
Рейтинг: 0 / 0
Зависимости java в Oracle DB
    #39499376
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PsyDiamond,
Ну дак непринято тип оракла тащить на клинта.
Я тоже не использую так оракл.
Если нужно передать массив, то передаю либо поэлементно простым типом в цикле, либо xml в хранимку.
База это черный ящик и api снаружи должно быть простое как 3 рубля.
А ты наверно из бывших, т.к. любишь нижний уровень, buffer, pointer, @адрес памяти.
Этому Парусу вроде на свалку пора AFAIK
...
Рейтинг: 0 / 0
Зависимости java в Oracle DB
    #39499378
PsyDiamond
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
C/C++ со студенчества даёт о себе знать

и да, это же получается не клиенсткая сторона, а расширение серверной части

ну вот, как без массива блобов решить задачу разбивки напрмер pdf на картинки постранично? пример конечно, как сферический конь в вакууме, но всё же)
...
Рейтинг: 0 / 0
Зависимости java в Oracle DB
    #39499379
PsyDiamond
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а насчет свалки истории, хм, enterprise же необычайно консервативен. даже сейчас можно найти системы которые до сих пор работают под dos. Есть те кто сидит на FoxPro и .net ранних версий
...
Рейтинг: 0 / 0
Зависимости java в Oracle DB
    #39499381
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PsyDiamondну вот, как без массива блобов решить задачу разбивки напрмер pdf на картинки постранично?
Это про api или про java?
Я получал Документ одним куском блоб из базы. Как его вогнали со сканера.
Потом в коде парсил на страницы.
В net нет библиотеки?
...
Рейтинг: 0 / 0
Зависимости java в Oracle DB
    #39499389
PsyDiamond
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
больше про api

Вот гипотетическая задача. Взять docx или pdf выдернуть из него картинки jpg и например, и отдать обратно. например сохранить их таблице для последующей обработки

мы сейчас говорим о том, что происходит на сервере. Клиент тут не при чём
...
Рейтинг: 0 / 0
Зависимости java в Oracle DB
    #39499394
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PsyDiamondбольше про api

Вот гипотетическая задача. Взять docx или pdf выдернуть из него картинки jpg и например, и отдать обратно. например сохранить их таблице для последующей обработки

мы сейчас говорим о том, что происходит на сервере. Клиент тут не при чём
ООП везде одинаков...почти
Blob blob = select xxxxxx
Код: java
1.
2.
3.
4.
5.
For x in count
{
    Jpeg j = getPic (x);
    saveDb (j, ID_Parent);
}
...
Рейтинг: 0 / 0
Зависимости java в Oracle DB
    #39499404
PsyDiamond
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ну что сказать - ваша точка зрения жизнеспособная. это больше вопрос архитектуры, где именно сохранять: прямо на базе (oracle) или в расширении сервера (java через jdbc)
...
Рейтинг: 0 / 0
Зависимости java в Oracle DB
    #39499425
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PsyDiamond,
sql.ru = клиент-сервер.
А никакие не 'расширения'.
Но работать будет все что ни напишите.
Удачи!
...
Рейтинг: 0 / 0
Зависимости java в Oracle DB
    #39502775
PsyDiamond
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Господа, вернёмся к нашим баранам.
Решил я продолжить эту затею с микросервисами.
и практически выснил почему данные обратно не передаются

если я для проверки возвращаю строку из java в oracle db, таким путём
Код: java
1.
2.
3.
4.
5.
6.
7.
while ((count = s.read(mybytearray, 0, mybytearray.length)) != -1) {
                        //int total = count;
                        baos.write(mybytearray, 0, count);
                        baos.flush();
                    }
out.print("lalala");
                    out.flush();






то я ничего не получаю обраатно. пусто и всё тут, но если я делаю так
Код: java
1.
2.
3.
4.
5.
6.
7.
while ((count = s.read(mybytearray, 0, mybytearray.length)) != -1) {
                        //int total = count;
                        baos.write(mybytearray, 0, count);
                        baos.flush();
out.print("lalala");
                    out.flush();
                    }





то получается ожидаемый результат.
как мне решить эту диллему? как я понял, после чтения закрывается входящий поток и тогда становиться не активным исходящий

что же это?
...
Рейтинг: 0 / 0
Зависимости java в Oracle DB
    #39502845
irbis_al
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PsyDiamond,

Вы весь код можете показать,что за out у Вас?
Как он организуется куда "ныряет"?
...
Рейтинг: 0 / 0
Зависимости java в Oracle DB
    #39502875
PsyDiamond
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
irbis_alPsyDiamond,

Вы весь код можете показать,что за out у Вас?
Как он организуется куда "ныряет"?
Java
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
BufferedInputStream b = new BufferedInputStream(s);
InputStream s = socket.getInputStream();
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
byte [] mybytearray  = new byte [FILE_SIZE];
int count;
while ((count=s.read(mybytearray, 0, mybytearray.length)) != -1) {
                        //int total = count;
                        baos.write(mybytearray, 0, count);
                        baos.flush();
                    }

                    out.print("lalala");
                    out.flush();



Oracle
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
DECLARE
    CONN         UTL_TCP.CONNECTION;
    RETVAL       BINARY_INTEGER;
    L_RESPONSE   VARCHAR2(1000) := '';
    L_TEXT  VARCHAR2(1000);  
    b_DOCX blob;
    l_result    PLS_INTEGER;
    l_buffer    RAW(32766);
    l_amount    BINARY_INTEGER := 32766;
    l_pos       INTEGER := 1;
    l_blob_len  INTEGER;
BEGIN
    select template_data into b_DOCX from parus.USERREPORTS where code = 'тест';
    l_blob_len := DBMS_LOB.getlength(b_DOCX);
     
    --OPEN THE CONNECTION
    CONN := UTL_TCP.OPEN_CONNECTION(
        REMOTE_HOST   => '127.0.0.1',
        REMOTE_PORT   => 1489,
        TX_TIMEOUT    => 10
    );
    
    
     WHILE l_pos <= l_blob_len LOOP
    DBMS_LOB.READ (b_DOCX, l_amount, l_pos, l_buffer);
    l_result := UTL_TCP.write_raw(CONN, l_buffer, l_amount);
    UTL_TCP.flush(CONN);
    l_pos := l_pos + l_amount;
    END LOOP;
    
    -- CHECK AND READ RESPONSE FROM SOCKET
    BEGIN
        WHILE UTL_TCP.AVAILABLE(CONN,10) > 0 LOOP
            L_RESPONSE := L_RESPONSE ||  UTL_TCP.GET_LINE(CONN,TRUE);
            dbms_output.put_line(L_RESPONSE);
        END LOOP;
    EXCEPTION
        WHEN UTL_TCP.END_OF_INPUT THEN
            NULL;
    END;
 
    DBMS_OUTPUT.PUT_LINE('Response from Socket Server : ' || L_RESPONSE);
    UTL_TCP.CLOSE_CONNECTION(CONN);
EXCEPTION
    WHEN OTHERS THEN
        RAISE_APPLICATION_ERROR(-20101,SQLERRM);
        UTL_TCP.CLOSE_CONNECTION(CONN);
END;
...
Рейтинг: 0 / 0
Зависимости java в Oracle DB
    #39502888
PsyDiamond
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
быть может нужно отдельно послать размер сообщения, а потом получать согласно этому значению, а не до конца потока?
...
Рейтинг: 0 / 0
Зависимости java в Oracle DB
    #39502893
irbis_al
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PsyDiamond,

Вот я не знаю зачем все эти обёртки
Код: java
1.
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);


О что просто
Код: java
1.
socket.getOutputStream().write('lalal'.getBytes());


Уже не модно?
...
Рейтинг: 0 / 0
Зависимости java в Oracle DB
    #39502895
PsyDiamond
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
irbis_alPsyDiamond,

Вот я не знаю зачем все эти обёртки
Код: java
1.
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);


О что просто
Код: java
1.
socket.getOutputStream().write('lalal'.getBytes());


Уже не модно?

да это же мелочи и не причина происходящего
...
Рейтинг: 0 / 0
Зависимости java в Oracle DB
    #39502896
irbis_al
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PsyDiamond,
Тут рабочий код.
Отправляю xml-task в генератор отчётов.
Получаю имя файла по сокету.
(Дальше не Ваш формат)
Гружу файл в оракле
Возвращаю через апекс юзеру.

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
declare

 c      utl_tcp.connection;
pget varchar2(32767);
mimetype varchar2(80);
p_file_name varchar2(40);
t_blob blob;
t_clob clob;
l_rcursortile sys_refcursor;

 l_dest_offset   integer := 1;
   l_source_offset integer := 1;
  
d1 date;
d2 date;
lFile  BFILE ;
dirname varchar2(15):='REPORT';
filename varchar2(100):='';
retval PLS_INTEGER;
xmlparam varchar2(6000);
shema varchar2(20);
data VARCHAR2(256);
len  PLS_INTEGER;
buffer varchar2(4000):=' ';
cb pls_integer;
begin
/*
d1:=to_date(:P40_DATAON,'dd.mm.yyyy');
d2:=to_date(:P40_DATAOFF,'dd.mm.yyyy');
*/
xmlparam:='<?xml version="1.0" encoding="Windows-1251" ?>'||chr(13)||chr(10);
xmlparam:=xmlparam||'<document><title>'||chr(13)||chr(10);
xmlparam:=xmlparam||'<id>'||:P40_REPORT_ID||'</id>'||chr(13)||chr(10);
shema:=lower('#OWNER#');
xmlparam:=xmlparam||'<shema>'||shema||'</shema>'||chr(13)||chr(10);
xmlparam:=xmlparam||'<shemareport>'||shema||'</shemareport>'||chr(13)||chr(10);
xmlparam:=xmlparam||'<session>'||:APP_SESSION||'</session>'||chr(13)||chr(10);
xmlparam:=xmlparam||'<type>'||'pdf'||'</type>'||chr(13)||chr(10);
xmlparam:=xmlparam||'<prntype>'||'bfile'||'</prntype>'||chr(13)||chr(10);
xmlparam:=xmlparam||'<pipe>'||'</pipe></title>'||chr(13)||chr(10);

xmlparam:=xmlparam||'<params><row>'||chr(13)||chr(10);
xmlparam:=xmlparam||'<name>titles_id</name>'||chr(13)||chr(10);
xmlparam:=xmlparam||'<type>1</type>'||chr(13)||chr(10);
xmlparam:=xmlparam||'<v>'||:P40_DOCUMENT_ID||'</v>'||chr(13)||chr(10);
xmlparam:=xmlparam||'</row></params>'||chr(13)||chr(10);
xmlparam:=xmlparam||'</document>'||chr(13)||chr(10);




 c := utl_tcp.open_connection(remote_host => 'localhost', remote_port => 5656
,charset => 'CL8MSWIN1251');

retval := utl_tcp.write_text(c, xmlparam);
begin
LOOP
cb:=0;
cb:=utl_tcp.available(c,null);
    IF (cb > 0) THEN
      len := utl_tcp.read_text(c, data, 256);
      buffer:=buffer||data;

    ELSE
    exit;
   
    END IF;
  END LOOP;

 EXCEPTION
    WHEN utl_tcp.end_of_input THEN
      NULL; -- end of input
    WHEN OTHERS THEN
      NULL;
  END;

 BEGIN
utl_tcp.flush(c);
  EXCEPTION
    WHEN OTHERS THEN
      NULL;
  END;
 
DBMS_LOB.CREATETEMPORARY(t_blob, TRUE);
p_file_name :=:P40_REPORT_ID;
if nvl(buffer,'')<>' ' then
 p_file_name:=trim(buffer);
else raise_application_error(-20001,'Проблема с генератором отчёта');
end if;

 utl_tcp.close_connection(c);
filename:=p_file_name;
begin
lFile:= BFILENAME(dirname, filename);
--dbms_lock.sleep( 1 );
DBMS_LOB.OPEN(lFile, DBMS_LOB.LOB_READONLY);
EXCEPTION
    WHEN OTHERS THEN
     raise_application_error(-20001,filename);
end;

DBMS_LOB.LOADFROMFILE(DEST_LOB => t_blob,
                          SRC_LOB  => lFile,
                          AMOUNT   => DBMS_LOB.GETLENGTH(lFile));


mimetype:='application/pdf';




htp.flush;
owa_util.mime_header( mimetype, false );
 htp.print( 'Content-Length: ' || dbms_lob.getlength( t_blob ) );
  htp.p( 'Content-disposition: attachment; filename='||p_file_name||';' );
owa_util.http_header_close; 
 wpg_docload.download_file( t_blob );
 --owa_util.http_header_close;
--htp.p(t_blob);
    dbms_lob.freetemporary(t_blob);
  --   dbms_lob.freetemporary(t_clob);
DBMS_LOB.CLOSE(lFile);
end;

...
Рейтинг: 0 / 0
Зависимости java в Oracle DB
    #39502900
PsyDiamond
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
irbis_al,

т.е. вы настаиваете, что у меня косяк на стороне oracle в момент приёма, а не отправки из java?
...
Рейтинг: 0 / 0
Зависимости java в Oracle DB
    #39502902
irbis_al
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PsyDiamondirbis_al,

т.е. вы настаиваете, что у меня косяк на стороне oracle в момент приёма, а не отправки из java?
Ни в коем случае...чтоб настаивать надо исследовать код...а Вы пользуете какие-то новые технологии(неклассичесике)...я просто показал как у меня.(и это реальный пример)
а в яве у меня
Код: java
1.
2.
OutputStream o=socet.getOutputStream;
o.write(filename.getbytes());
...
Рейтинг: 0 / 0
Зависимости java в Oracle DB
    #39502904
PsyDiamond
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
irbis_alPsyDiamondirbis_al,

т.е. вы настаиваете, что у меня косяк на стороне oracle в момент приёма, а не отправки из java?
Ни в коем случае...чтоб настаивать надо исследовать код...а Вы пользуете какие-то новые технологии(неклассичесике)...я просто показал как у меня.(и это реальный пример)
а в яве у меня
Код: java
1.
2.
OutputStream o=socet.getOutputStream;
o.write(filename.getbytes());


но всё же хочу понять почему так происходит) про простые вещи - это всё понятно. но в данном случае не важно - использовать поток напрямую или обряжать в декоратор
...
Рейтинг: 0 / 0
100 сообщений из 100, показаны все 4 страниц
Форумы / Java [игнор отключен] [закрыт для гостей] / Зависимости java в Oracle DB
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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