Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Java в Oracle DB не перечитывает конфигурационный файл  [new]
saneka_shrek
Member

Откуда:
Сообщений: 9
Добрый день!

в БД Оракл 19 есть java-класс, который ссылается на конфигурационный файл .properties в каталоге ОС.
При внесении изменений в этот конфигурационный файл поведение метода класса меняется неизвестным для меня образом.
Изменения не применяются очень долго или применяются сразу.

Подскажите, какой механизм работы? Как управлять этим?


java-класс был загружен в БД утилитой loadjava в виде скомпилированного jar-файла.
9 июн 21, 15:36    [22333360]     Ответить | Цитировать Сообщить модератору
 Re: Java в Oracle DB не перечитывает конфигурационный файл  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 9664
saneka_shrek

Подскажите, какой механизм работы?

Спросить у автора java-класса.
Или декомпилировать и попытаться разобраться самому по декомпилированной версии, что и как там происходить.

saneka_shrek

Изменения не применяются очень долго или применяются сразу.
...
Как управлять этим?

Семь бед - один reset
9 июн 21, 16:22    [22333399]     Ответить | Цитировать Сообщить модератору
 Re: Java в Oracle DB не перечитывает конфигурационный файл  [new]
saneka_shrek
Member

Откуда:
Сообщений: 9
Leonid Kudryavtsev,

я склонялся к тому что это особенности СУБД. так как JVM встроена в СУБД, и она даже использует область PGA.
Возможно после вызова функции она кешируется и обновление произойдет только по какому то внутреннему триггеру

код класса могу предоставить

+
код класса
import org.apache.kafka.clients.CommonClientConfigs;
import org.apache.kafka.clients.producer.Callback;
import org.apache.kafka.clients.producer.KafkaProducer;
import org.apache.kafka.clients.producer.ProducerRecord;
import org.apache.kafka.clients.producer.RecordMetadata;
import org.apache.kafka.common.config.SaslConfigs;

import java.io.*;
import java.sql.Timestamp;
import java.util.Date;
import java.util.Properties;
import java.util.logging.Level;
import java.util.logging.LogManager;
import java.util.logging.Logger;

public class KafkaProducerCustom {
    private static Properties props;
    private static KafkaProducer kafkaProducer;
    private final static String propFileName = "/u01/app/oracle/kafka/kafka.properties";
    private final static StringWriter errors = new StringWriter();


    static {
        try {

            FileInputStream fis = new FileInputStream(propFileName);
            if (fis != null) {
                props = new Properties();
                props.load(fis);
                props.put(CommonClientConfigs.SECURITY_PROTOCOL_CONFIG, "SASL_SSL");
                props.put(SaslConfigs.SASL_MECHANISM, "PLAIN");
				// остальные строки получения значений из файла конфига убрал
                kafkaProducer = new KafkaProducer(props);
                fis.close();
            } else {
                props = null;
                kafkaProducer = null;
            }
        } catch (Exception e) {
            e.printStackTrace(new PrintWriter(errors));
        }
    }

    public static String sendMessage(Object topicName, Object value) {

        final StringWriter errors = new StringWriter();

        Integer partition = props.getProperty("partition") == null ? null : Integer.valueOf(props.getProperty("partition"));

        ProducerRecord<Object, Object> record = partition == null ?
                new ProducerRecord<Object, Object>((String) topicName, value) :
                new ProducerRecord<Object, Object>((String) topicName, partition, value);

        try {
            kafkaProducer.send(record, new Callback() {
                @Override
                public void onCompletion(RecordMetadata recordMetadata, Exception e) {
                    if (enablelogger){
                        LOGGER.info("onCompletion() inside");
                    }
                    if (enablelogger && recordMetadata != null){
                        LOGGER.info("Logging the response");
                        LOGGER.info("Successfully received the details as: " +
                                "   Topic: " + recordMetadata.topic() +
                                "   Partition: " + recordMetadata.partition() +
                                "   Offset: " + recordMetadata.offset() +
                                "   Timestamp: " + new Date(new Timestamp(recordMetadata.timestamp()).getTime()));
                    }
                }
            }).get();

    
        } catch (Exception e) {
            e.printStackTrace(new PrintWriter(errors));
            return errors.toString();
        }
        return "";
    }

    public static void main(String[] args) {
        System.out.println(KafkaProducerCustom.sendMessage("", ""));
    }
}




reset чего вы имеете ввиду? БД перезагрузить?
9 июн 21, 16:45    [22333414]     Ответить | Цитировать Сообщить модератору
 Re: Java в Oracle DB не перечитывает конфигурационный файл  [new]
stdio
Member

Откуда:
Сообщений: 4535
saneka_shrek
Leonid Kudryavtsev,

я склонялся к тому что это особенности СУБД. так как JVM встроена в СУБД, и она даже использует область PGA.
Возможно после вызова функции она кешируется и обновление произойдет только по какому то внутреннему триггеру
Горе от ума.
Кто кешируется? Область PGA?
Какому внутреннему триггеру? Это что такое?

Сделай тестовый пример и обратись в техподдержку.
9 июн 21, 17:28    [22333441]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить