首页 > 解决方案 > Spring boot Firebase Admin SDK 在部署到 aws EC2 实例时失败

问题描述

我有一个集成了 Firebase Admin SDK 的 spring boot 应用程序。在我的本地开发环境中,一切正常。一旦我构建了一个 war 文件并将其部署到基于 AWS EC2 ubuntu 的实例,它就无法初始化。我将 serviceAccountKey.json 保存在资源文件夹中

@Service
public class FirebaseInitialization {
  
    @PostConstruct
    public void initialize() {
        InputStream inputStream;

        try {
            inputStream = getClass().getResourceAsStream("/serviceAccountKey.json");
          
            System.out.print(inputStream);
            assert inputStream != null;
            FirebaseOptions options = FirebaseOptions.builder()
                    .setCredentials(GoogleCredentials.fromStream(inputStream))
                    .setDatabaseUrl("https://example-default-rtdb.firebaseio.com")
                    .build();

            FirebaseApp firebaseApp;

            if(FirebaseApp.getApps().isEmpty()) { //<--- check with this line
                firebaseApp = FirebaseApp.initializeApp(options);
            } 
            System.out.print(firebaseApp.getName());
        } catch (Exception e) {
            e.printStackTrace();
            e.getMessage();
        }
    }
}

以下堆栈被抛出

2021-11-16 12:56:04.542  INFO 85106 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet        : Completed initialization in 9 ms

2021-11-16 12:56:15.145 WARN 85106 --- [ebsocket-worker] io.netty.channel.ChannelInitializer:无法初始化通道。结束:[id:0x23ad1ad1]

io.netty.channel.ChannelPipelineException: io.netty.handler.ssl.SslHandler.handlerAdded() 已抛出异常;删除。在 io.netty.channel.DefaultChannelPipeline.callHandlerAdded0(DefaultChannelPipeline.java:656) [core-3.4.8.jar:3.4.7] 在 io.netty.channel.DefaultChannelPipeline.addLast(DefaultChannelPipeline.java:235) [core- 3.4.8.jar:3.4.7] 在 io.netty.channel.DefaultChannelPipeline.addLast(DefaultChannelPipeline.java:409) [core-3.4.8.jar:3.4.7] 在 io.netty.channel.DefaultChannelPipeline.addLast (DefaultChannelPipeline.java:396) [core-3.4.8.jar:3.4.7] 在 com.google.firebase.database.connection.NettyWebSocketClient$1.initChannel(NettyWebSocketClient.java:101) [firebase-admin-8.1.0 .jar:na] 在 com.google.firebase.database.connection.NettyWebSocketClient$1.initChannel(NettyWebSocketClient.java:96) [firebase-admin-8.1.0.jar:na] 在 io.netty.channel。

2021-11-16 12:56:15.282 错误 85106 --- [ebsocket-worker] cgfdconnection.WebsocketConnection : [ws_0] WebSocket 错误

java.nio.channels.ClosedChannelException: null at io.netty.channel.AbstractChannel$AbstractUnsafe.ensureOpen(...)(Unknown Source) ~[core-3.4.8.jar:3.4.7]

我不知道我错过了什么,尝试了几个修复,但我没有得到任何工作。

标签: javafirebasespring-bootmaven

解决方案


推荐阅读