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 的资源使用情况

不同线程上的 Appengine 过滤器和 Servlet

Firebase 身份验证不适用于 AppEngine 上的 Ktor 应用程序

AppEngine 上的 JAX-WS 慢

自定义子域上的 AppEngine“Google 管理的自动续订”SSL 证书错误地路由内容

AppEngine 开发服务器上的 Google KMS - 日志混乱