У меня есть пользовательский класс AllWindowFunction
, в котором есть член класса, отвечающий за вставки в базу данных. Соединение с базой данных является постоянным и открывается во время построения.
Проблема в том, что экземпляр AllWindowFunction
, который создает / открывает соединение, не тот, который вызывается при применении события. Обходной путь для этого - статический член, но я хотел бы знать, является ли это единственным обходным решением?
Пример кода:
public class CustomWindowFunction implements AllWindowFunction<String, String, TimeWindow> {
private static Connection database;
CustomWindowFunction() {
database = new Connection();
}
@Override
public void apply(TimeWindow timeWindow, Iterable<String> trades, Collector<String> out) {
// process data
database.save(data);
out.collect(data.toString());
}
}
Я не смог найти ничего относительно этого механизма, все, что я знаю, это то, что идентификатор объекта из конструктора отличается от идентификатора объекта, вызываемого из apply
.