【发布时间】:2015-08-14 01:35:02
【问题描述】:
我尝试将在google-api-client-assembly-1.20.0-1.20.01.zip(从https://developers.google.com/api-client-library/java/google-api-java-client/download 下载)中找到的所有JAR 复制到{cf_root}/lib,重新启动ColdFusion,一切正常。但是,当我使用<cfhttp>:
org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [CfmServlet] in context with path [/] threw exception [org.apache.http.impl.client.DefaultHttpClient.setRedirectStrategy(Lorg/apache/http/client/RedirectStrategy;)V] with root cause
java.lang.NoSuchMethodError: org.apache.http.impl.client.DefaultHttpClient.setRedirectStrategy(Lorg/apache/http/client/RedirectStrategy;)V
at coldfusion.tagext.net.HttpTag.createConnection(HttpTag.java:1728)
at coldfusion.tagext.net.HttpTag.connHelper(HttpTag.java:928)
at coldfusion.tagext.net.HttpTag.doEndTag(HttpTag.java:1219)
当我从 {cf_root}/lib 中删除所有 google jar 时,它再次按预期工作。我的解决方法是使用 tokeninfo 端点而不是 com.google.api.client.googleapis.auth.oauth2.GoogleIdTokenVerifier,但 Google 建议不要将其用于生产用途。
验证 ID 令牌的最简单方法是使用 tokeninfo 端点。调用此端点涉及额外的网络请求 这会为您完成大部分验证,但会引入一些延迟 以及网络错误的可能性。由于这些原因,它是 仅适用于每月活动少于 100 个的部署 用户,以及用于调试和信息目的。
https://developers.google.com/identity/sign-in/ios/backend-auth
一旦将来自 Google 的 Jar 加载到 ColdFusion 中,是否有任何更好的解决方案可以解决 org.apache.http.impl.client.DefaultHttpClient 的其他问题?
【问题讨论】:
-
不确定您的总体目标,但您真的需要所有这些罐子吗?我们还需要更多详细信息 A) 哪个
/lib目录 - {cf_root}\lib? B)您删除了哪些罐子?听起来有冲突的是httpclient-4.0.1.jar。删除它应该可以解决那个特定的错误 -
C) 由于您使用的是 CF10,您是否尝试过使用
this.javaSettings将 jar 加载到您的 application.cfc 中? (显然,如果你这样做,不要将 jars 放在 {cf_root}\lib 或 CF 类路径中的任何其他位置,因为它违背了动态类加载的目的)。 -
B) 您到底删除了哪些 jar? 如果您的意思是您已经删除了 httpclient-4.0.1.jar,那么问题是什么?如果您将所有 jars 放在 CF 类路径中,则使用 google 库应该会自动选择与 CF 捆绑的任何版本的 jar。所以,当罐子被移除时,你还不清楚你遇到了什么问题。你能详细说明一下吗?
-
(编辑)这可能不是唯一的冲突/错误。很多 jar 都很常见,CF 也可以使用,例如
commons-logging-1.1.1.jar。您可能不需要所有的罐子,但这取决于您在做什么。看看他们是否有一个依赖列表。如果不是,您可能可以从maven setup 中推断出它。此外,对于笑容,请尝试option "C)" -
酷,我不确定。很高兴它起作用了,因为某些库存在无法轻松修复的问题(例如旧版本的 dom4j),即使 使用 动态类加载器也是如此。 Java 版本的 DLL Hell ;-)
标签: coldfusion apache-httpclient-4.x coldfusion-10 google-api-java-client