powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Зависимости java в Oracle DB
25 сообщений из 100, страница 2 из 4
Зависимости 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
25 сообщений из 100, страница 2 из 4
Форумы / Java [игнор отключен] [закрыт для гостей] / Зависимости java в Oracle DB
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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