我已使用spring-security-oauth
创建sample application。当多个线程尝试作为同一用户进行身份验证时,首先在加载时创建access_token存在问题。这是通过this commit修复的。这解决了H2 / Oracle数据库的问题。不幸的是,这个修复程序不适用于postgre数据库,我不知道如何正确设置事务(我已经尝试了@Transactional
上的所有隔离但是没有用)。如果有人可以指点我的某些文档/博客或者告诉我如何在postgresql中调整那些很棒的事务。
由于
修改
Isolation.DEFAULT
,Isolation.READ_COMMITTED
,Isolation.READ_UNCOMMITTED
我得到了这个例外:
{
"error" : "server_error",
"error_description" : "PreparedStatementCallback; uncategorized SQLException for SQL [select token_id, token from oauth_access_token where authentication_id = ?]; SQL state [25P02]; error code [0]; ERROR: current transaction is aborted, commands ignored until end of transaction block; nested exception is org.postgresql.util.PSQLException: ERROR: current transaction is aborted, commands ignored until end of transaction block"
}
奇怪的是,对于Isolation.REPEATABLE_READ
和Isolation.SERIALIZABLE
,我得到了这个:
{
"error" : "unsupported_grant_type",
"error_description" : "Unsupported grant type: password"
}
我真的不了解postgresql中的事务传播和配置:(