2013-04-15 54 views
2

我正嘗試在Google App Engine上使用Adwords API(Java 1.7.7)。AppEngine上的Adwords API(Java)

我試圖使用默認的依賴關係:

<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> 

它們工作得很好的devserver,但在生產中失敗(本身是什麼怪)。

周圍的Googling和沒有找到任何東西之後,我做了另外一個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提供。但是,即使在devserver上,東西也會崩潰:E.g 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 $地址javax.xml.ws.wsaddressing .W3CEndpointReference.address

只是爲了總結:

我的應用程序運行,很好地和作品。但不是在AppEngine生產中。而不是用adwords-appengine。

有沒有一個很好的教程如何在AppEngine上設置ads-lib?似乎官方網站沒有提供對教程的單個引用(甚至是lib)。我想知道是否有人使用com.google.api-ads的adwords-appengine。

非常感謝提前!

回答

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. 

在生產中不發生這些錯誤。我正在使用忍者來開發我的應用程序,所以我可以輕鬆地從官方devserver切換。但是如果你不能退出,我猜你會被卡住。在https://code.google.com/p/googleappengine/issues/detail?id=9213

UPDATE建檔的錯誤

在AdSense的AppEngine隊真的響應和問題將在未來devserver 1.7.8。

+0

3快速更新:1,谷歌正在對這一問題。是啊! 2.切換回java 6可以解決devserver上的問題! 3.正如rrch所指出的那樣 - flag --jvm_flags = -D - enable_all_permissions = true會禁用安全檢查,因此可以使用java 7在devserver上運行。 –

0

您可以使用此命令行選項來禁用在開發應用程序服務器的安全性檢查: --jvm_flags = -D - enable_all_permissions =真

+0

非常好的指針!謝謝! –