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


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