Прямо сейчас ваш код пытается инициализировать FirebaseApp
для каждого запроса. Это не нужно и фактически запрещено (как показано в сообщении об ошибке). Самое простое решение - проверить, инициализирована ли уже FirebaseApp
с помощью:
if (FirebaseApp.getApps().isEmpty()) {
String DATABASE_URL = "https://name.firebaseio.com/";
try {
ClassLoader classLoader = getClass().getClassLoader();
InputStream inputStream = classLoader.getResourceAsStream("token.json");
FirebaseOptions options = new FirebaseOptions.Builder()
.setCredentials( GoogleCredentials.fromStream(inputStream))
.setDatabaseUrl(DATABASE_URL)
.build();
FirebaseApp.initializeApp(options);
} catch (IOException e) {
e.printStackTrace();
System.out.println("Error loading database");
}
}
FirebaseToken decodedToken = FirebaseAuth.getInstance().verifyIdToken(idToken);
String uid = decodedToken.getUid();
return service.getAll();
Но это все равно проверяет FirebaseApp
каждый вызов и, честно говоря, просто делает код этого метода больше, чем нужно. Поэтому, вероятно, лучше привязаться к жизненному циклу контроллера и запускать код, который инициализирует FirebaseApp
, только когда контроллер создается. Я не достаточно осведомлен о Spring, чтобы ответить, как это сделать, но в этой статье показаны некоторые многообещающие подходы.
Печально SQL ничего не знает об участниках, таким образом, вся информация исходного файла, которую Вы могли получить от qsys2.syscolumns, что они состоят из трех столбцов.
Вы хотите информацию об участнике, и я предлагаю использовать qshell (STRQSH) вместе с запросом к qsys2.systables, поскольку исходные файлы особенно отмечены там.
select table_schema , table_name from qsys2.systables where File_type = 'S'
я бил вместе qshell остроту в copy&paste целях..
db2 -S "select '/QSYS.LIB/' concat table_schema concat '.LIB/' concat table_name concat '.FILE' from qsys2.systables where File_type = 'S'" | grep '/' | xargs -n1 find >/home/myuser/myfile
это передает по каналу каждого участника, которого это находит к каталогу IFS/home/myuser/myfile, Вы могли также указать участника Исходного файла. не стесняйтесь изменять к своим потребностям.
PS: это бросает ошибки для Исходных файлов, непосредственно находящихся в/QSYS.LIB, но я думаю, что Вы не хотите их так или иначе..
береги себя! :)
Можно записать программу CL, которая получает список участников, использующих команду DSPFD. Возможно, можно ли назвать ту программу из хранимой процедуры?