我遇到了與Firebase和Java EE相關的問題。Java EE FirebaseApp名稱[DEFAULT]已存在
我目前正在爲我的項目編寫一些Java servlet,並且我第一次使用Firebase是因爲我想嘗試新的東西。
我的實際問題如下: 我有一個servlet負責在用戶數據庫中交換iOS設備令牌。這對於將遠程推送通知發送到設備是必需的。 我做這個像谷歌的教程,但我發現以下異常:
java.lang.IllegalStateException: FirebaseApp name [DEFAULT] already exists!
我訪問火力地堡數據庫的方式是通過Java SDK。
我做這個用下面的代碼:
連接方法
// gets called by the servlet to configure Firebase
public static void connect() {
try {
// for authentication purpose
Map<String, Object> auth = new HashMap<>();
auth.put("uid", "my-service-account");
// Setting up the FirebaseOptions object
// constant FIREBASE_DATABASE_URL = "url to my database"
// constant FIREBASE_KEY_PATH = "path to my json key"
options = new FirebaseOptions.Builder()
.setDatabaseUrl(FIREBASE_DATABASE_URL)
.setServiceAccount(new FileInputStream(FIREBASE_KEY_PATH))
.setDatabaseAuthVariableOverride(auth)
.build();
FirebaseApp.initializeApp(options);
// calling the method for exchanging the token
exchangeIosDeviceToken("[email protected]", "5bf53173c9ef0a37638f3ddaa59cf2c0687c14ca0dcd47ccf57f9f09bd6368ab");
} catch (FileNotFoundException ex) {
ex.printStackTrace();
}
}
exchangeIosDeviceToken方法
public static boolean exchangeIosDeviceToken(String email, String newDeviceToken) {
FirebaseDatabase database = FirebaseDatabase.getInstance();
// getting a reference to my "employee" child
DatabaseReference employeeReference = database.getReference("/employee");
Map<String, Object> employeeUpdates = new HashMap<>();
// updating the device token with child "iosDeviceToken" of "employee"
employeeUpdates.put(email+"/iosDeviceToken", newDeviceToken);
// update the actual children
employeeReference.updateChildren(employeeUpdates);
return true;
}
有趣的是,當我試圖執行此代碼在一個獨立的主類(替換連接方法,與馬在方法中),代碼正在工作。
在你說「有很多與這個主題相關的問題」之類的東西之前......他們幾乎都與Android相關,並且與我的問題相關的問題很少得到答案。
Regards
.delete()似乎不存在運行版本11.0.1 –