Java Google OAuth CredentialDataStore和服务器群集

Java Google OAuth CredentialDataStore和服务器群集,java,oauth,google-oauth,credentials,Java,Oauth,Google Oauth,Credentials,我有这个密码 AuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow.Builder( new NetHttpTransport(), JacksonFactory.getDefaultInstance(), clientSecrets, loadScopes()) .setAccessTyp

我有这个密码

        AuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow.Builder(
                new NetHttpTransport(), JacksonFactory.getDefaultInstance(), 
                clientSecrets, 
                loadScopes())
            .setAccessType("offline")
            .setCredentialDataStore(StoredCredential.getDefaultDataStore(new FileDataStoreFactory(new File("/dir/datastoredir"))))
当google用户授权我的web应用程序访问他的一些数据时,我可以通过google API正确访问他的数据。 很好

问题在于,此“凭证”仅存储在物理上管理该请求的应用程序服务器(在其目录“/dir/datastoredir”)上的本地

如果我有一个集群作业,例如读取用户的Google日历并将其与我的应用程序同步,那么该作业可能不会在管理用户OAUTH授权的应用程序服务器上运行。(类似的问题可能发生在用户浏览我的网站时,负载平衡器会将其重定向到其他应用程序服务器节点)

第一个问题:我做得对吗?无法访问管理OAUTH进程的第一个应用服务器的“/dir/datastoredir”的应用服务器没有从Google API读取用户数据的权限,这是否“正常”

第二个问题:如何解决这个问题?出于安全原因,从我的应用程序服务器打开的唯一通信通道是到数据库。(我无法设置网络共享文件系统目录…) 从我的架构观点来看,在OAUTH进程之后接收到的那些凭证应该集中存储在DB中

据我所知,实现这一点的唯一方法是通过JDO,但我并没有在我的应用程序中使用JDO。我正在使用JPA(或者有时我使用普通的JDBC)。 我觉得很奇怪,没有一个默认的实现可以通过JDBC或JPA在数据库中集中管理这些OAUTH凭据