我们已经成功地使用GData库访问了用户的Google Docs。但是,当许多用户同时或连续登录我们的网站并授权我们的web应用程序时,我们会遇到问题。
下面是发生的事情:
第一个用户成功登录,通过OAuth授权我们的web应用程序,并能够添加标准(或谷歌电子表格)。
第二个用户在第一个用户添加题目后立即成功登录,然后webapp在授权时失败(未给出令牌。我尝试将其记入日志。)
第三个用户登录失败。
第四个用户能够登录,通过OAuth授权,并成功创建rubrics。
第五个用户能够登录,但像第二个用户一样,在授权时获得一个无效的令牌(未给出令牌。)
这份清单还在继续。结果是不可预测的。
下面是我们在失败场景发生时获得的堆栈跟踪的摘录:
Nested in org.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang.NullPointerException:
java.lang.NullPointerException
at com.google.gdata.client.authn.oauth.OAuthUtil.normalizeParameters(OAuthUtil.java:158)
at com.google.gdata.client.authn.oauth.OAuthUtil.getSignatureBaseString(OAuthUtil.java:81)
at com.google.gdata.client.authn.oauth.OAuthHelper.addCommonRequestParameters(OAuthHelper.java:649)
at com.google.gdata.client.authn.oauth.OAuthHelper.getOAuthUrl(OAuthHelper.java:592)
at com.google.gdata.client.authn.oauth.OAuthHelper.getUnauthorizedRequestToken(OAuthHelper.java:276)
at com.projectrix.controller.OAuthController.authorize(OAuthController.java:59)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Method.java:40)帮助!
发布于 2009-10-04 20:42:16
这很难判断,但我的直觉是,在某个地方有一个并发错误,一些用于OAuth的对象不是线程安全的,正在跨多个请求处理线程使用。
https://stackoverflow.com/questions/1502668
复制相似问题