AppEngine (Java) 上的 Adwords API
Posted
技术标签:
【中文标题】AppEngine (Java) 上的 Adwords API【英文标题】:Adwords Api on AppEngine (Java) 【发布时间】:2013-04-15 12:07:39 【问题描述】:我正在尝试在 Google App Engine (Java 1.7.7) 上使用 Adwords Api。
我尝试使用默认依赖项:
<dependency>
<groupId>com.google.api-ads</groupId>
<artifactId>ads-lib</artifactId>
<version>1.14.1</version>
</dependency>
<dependency>
<groupId>com.google.api-ads</groupId>
<artifactId>adwords-axis</artifactId>
<version>1.14.1</version>
</dependency>
它们在开发服务器上工作正常,但在生产中失败(这本身很奇怪)。
在谷歌搜索并没有找到任何东西后,我做了另一个 MavenSearch 并发现:
<dependency>
<groupId>com.google.api-ads</groupId>
<artifactId>adwords-appengine</artifactId>
<version>1.14.1</version>
</dependency>
我尝试使用那个看起来不错的库。
我将我的代码切换为使用 导入 com.google.api.ads.adwords.jaxws.v201302.* 由 Api 提供。
但是,即使在开发服务器上,东西也很糟糕:例如 java.security.AccessControlException: access denied ("java.lang.RuntimePermission" "accessClassInPackage.com.sun.xml.internal.ws")。
它也会在生产中中断 - 例如: java.lang.SecurityException: java.lang.IllegalAccessException: 私有 javax.xml.ws.wsaddressing.W3CEndpointReference$Address javax.xml.ws.wsaddressing.W3CEndpointReference.address 上不允许反射
总结一下:
我的应用程序运行良好并且工作正常。但不在 AppEngine 生产中。而不是使用 adwords-appengine。
有没有关于如何在 AppEngine 上设置 ads-lib 的好教程?似乎官方网站没有对教程(甚至是库)的单一引用。我想知道是否有人在使用 com.google.api-ads 的 adwords-appengine。
非常感谢!
【问题讨论】:
【参考方案1】:您可以使用以下命令行选项禁用开发应用服务器中的安全检查: --jvm_flags=-D--enable_all_permissions=true
【讨论】:
【参考方案2】:好的,“解决方案”如下:
1) 使用
<dependency>
<groupId>com.google.api-ads</groupId>
<artifactId>adwords-appengine</artifactId>
<version>1.14.1</version>
</dependency>
2) 确保您只使用 jaxws - 例如:
com.google.api.ads.adwords.jaxws.v201302.*
3) 注意生产中的“真正”问题。 App Engine 上的许多错误消息只是警告,可以忽略。特别注意 BeansUtils 异常并在您的代码中修复它们。一些 Adwords 类使用 BeanUtils(和反射)并且不在 AppEngine 上运行。我能够轻松地在我的代码中修复这些问题。
4) AppEngine:devserver 1.7.7 坏了,因为它会抛出很多
java.security.AccessControlException: access denied exceptions.
但是
在生产中不会发生这些错误。我正在使用 Ninja 开发我的应用程序,因此我可以轻松地从官方开发服务器切换。但是,如果你不能切换,我猜你会被卡住。在https://code.google.com/p/googleappengine/issues/detail?id=9213提交了一个错误
更新
Adsense AppEngine 团队反应迅速,该问题将在下一个开发服务器 1.7.8 中得到解决。
【讨论】:
3 个快速更新: 1. Google 正在解决这个问题。是的! 2. 切换回 java 6 解决了 devserver 上的问题! 3. 正如 rrch 所指出的 - 标志 --jvm_flags=-D--enable_all_permissions=true 禁用安全检查,因此使其在带有 java 7 的开发服务器上运行。以上是关于AppEngine (Java) 上的 Adwords API的主要内容,如果未能解决你的问题,请参考以下文章
Appengine 上 google Go 与 Python 和 Java 的资源使用情况
Firebase 身份验证不适用于 AppEngine 上的 Ktor 应用程序