1

私のGrailsアプリケーションは、ログインしているユーザーの詳細を見つけるために非常に簡単な呼び出しを行います。それは基本的にこれです:

select id, username, password, firstname, lastname from Person where id=3;

結果が出る時間もあれば、そうでない時間もあります。送信されているSQLを分析してきましたが、意味がありません。1つのリクエストで人物が検索され、後続のリクエストでは検索されません。以下のログは、スレッドID、セッションID、およびログインユーザーを追跡します。私のSQLクエリログを見るように人々に頼むのは素晴らしいことではないことを私は知っていますが、私が見ているものを以下で明らかにすることができたと思います。

2701 [INFO] 2012-12-03 02:19:02,136 audit [T-82] [23212190391C07976A2CC568F06A780A] [cb18b110954f4476b80c2@stratus5.com] 3. 
Connection.prepareStatement(select person0_.id as id4_0_, person0_.version as version4_0_, 
person0_.account_expired as account3_4_0_, person0_.account_locked as account4_4_0_, 
person0_.created_date as created5_4_0_, person0_.email_hash as email6_4_0_, person0_.enabled as enabled4_0_, person0_.first_name as first8_4_0_, 
person0_.last_name as last9_4_0_, person0_.`password` as password10_4_0_, person0_.password_expired as password11_4_0_, person0_.tmp_password as tmp12_4_0_, 
person0_.username as username4_0_ from person person0_ where person0_.id=?)     

2702 [INFO] 2012-12-03 02:19:02,137 audit [T-82] [23212190391C07976A2CC568F06A780A] 
[cb18b110954f4476b80c2@stratus5.com] 3. PreparedStatement.setLong(1, 1160)

2749 [DEBUG] 2012-12-03 02:19:02,278 SignUpApiController [T-82]
[23212190391C07976A2CC568F06A780A] [cb18b110954f4476b80c2@stratus5.com] 
user: com.stratus5.auth.Person : 1160

280 [INFO] 2012-12-03 02:15:32,143 audit [T-160] [23212190391C07976A2CC568F06A780A] [cb18b110954f4476b80c2@stratus5.com] 5. Connection.prepareStatement(select person0_.id as id4_0_, person0_.version as version4_0_, 
 person0_.account_expired as account3_4_0_, 
 person0_.account_locked as account4_4_0_, 
 person0_.created_date as created5_4_0_, person0_.email_hash as email6_4_0_, 
 person0_.enabled as enabled4_0_, person0_.first_name as first8_4_0_, 
 person0_.last_name as last9_4_0_, person0_.`password` as password10_4_0_, 
 person0_.password_expired as password11_4_0_, person0_.tmp_password as tmp12_4_0_, 
 person0_.username as username4_0_ from person person0_ 
 where person0_.id=?) 

281 [INFO] 2012-12-03 02:15:32,143 audit [T-160] [23212190391C07976A2CC568F06A780A] 
[cb18b110954f4476b80c2@stratus5.com] 5. PreparedStatement.setLong(1, 1160) 

313 [DEBUG] 2012-12-03 02:15:32,939 SignUpApiController [T-160] 
[23212190391C07976A2CC568F06A780A] [cb18b110954f4476b80c2@stratus5.com] 
Current user: null

役立つ場合のコードの抜粋を次に示します。

def principalId = new Long(springSecurityService.getPrincipal().id)
def p = Person.get(principalId)
log.debug "Current user: $p"

springSecurityService.currentUserを使用していたところ、同じエラーが発生していました。問題がspringSecurityServiceにある可能性があるという仮説に基づいて、意図的にPerson.getを呼び出すように変更しましたが、現在はほとんどありそうにありません。

4

0 に答える 0