2

我正在尝试在 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>

我尝试使用那个看起来不错的库。

我将代码切换为使用 Api 提供的 import com.google.api.ads.adwords.jaxws.v201302.*。

但是即使在开发服务器上,东西也很糟糕:例如 java.security.AccessControlException: access denied ("java.lang.RuntimePermission" "accessClassInPackage.com.sun.xml.internal.ws")。

它还在生产中中断 - 例如: java.lang.SecurityException: java.lang.IllegalAccessException: Reflection is not allowed on private javax.xml.ws.wsaddressing.W3CEndpointReference$Address javax.xml.ws.wsaddressing.W3CEndpointReference.address

简单总结一下:

我的应用程序运行良好并且可以正常工作。但不在 AppEngine 生产中。而不是使用 adwords-appengine。

有没有很好的教程如何在 AppEngine 上设置 ads-lib?似乎官方网站没有对教程(甚至是库)的单一引用。我想知道是否有人在使用 com.google.api-ads 的 adwords-appengine。

提前谢谢了!

4

2 回答 2

0

好的,“解决方案”如下:

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 团队反应迅速,该问题将在下一个 devserver 1.7.8 中修复。

于 2013-04-23T09:03:23.390 回答
0

您可以使用以下命令行选项禁用开发应用服务器中的安全检查:--jvm_flags=-D--enable_all_permissions=true

于 2013-04-24T19:25:02.730 回答