小编Ing*_*ngo的帖子

在Google App Engine Java应用程序中加载自定义密钥库

我想使用URLFetch服务在Google App Engine应用中打开HTTPS连接.为了能够验证我的应用正在与之交谈的服务器的SSL证书,我使用自己的密钥库文件.我想在加载我的应用程序时,即在执行任何HTTPS请求之前,在预热请求中读取此文件.密钥库文件是我的WAR文件的一部分.

TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());  
KeyStore keystore = KeyStore.getInstance(KeyStore.getDefaultType());
keystore.load(ClassLoader.getSystemResourceAsStream("myKeystoreFile"), "password".toCharArray());  
trustManagerFactory.init(keystore);  

TrustManager[] trustManagers = trustManagerFactory.getTrustManagers();  
SSLContext sslContext = SSLContext.getInstance("SSL");  
sslContext.init(null, trustManagers, null);  

HttpsURLConnection.setDefaultSSLSocketFactory(sslContext.getSocketFactory());
Run Code Online (Sandbox Code Playgroud)

但是,我不能使用这种方法,因为虽然HttpURLConnection在GAE的JRE白名单上,但HttpsUrlConnection却没有.

还有另一种在GAE中使用自定义密钥库的方法吗?我在GAE文档中没有找到任何相关信息.看起来,当Google的URLFetch服务支持HTTPS时,无法自定义密钥库.它是否正确?

如果这是不可能的,那么这种方法一般是否仍然有效?或者是否有一种不同的方法仍然允许我验证SSL证书?

UPDATE

2009年,谷歌的App Engine开发者Nick Johnson在https://groups.google.com/d/topic/google-appengine-python/C9RSDGeIraE/discussion上说:

urlfetch API不允许您指定自己的客户端证书,因此很遗憾您目前无法实现所需的目标.

这仍然是正确的吗?如果App Engine中的每个HTTP(s)请求都依赖于URLFetch,这意味着GAE中根本无法使用自定义证书.

java https google-app-engine keystore urlfetch

21
推荐指数
1
解决办法
2892
查看次数

在GAE 1.7.3中使用DeferredTasks时耗尽PermGen空间

我最近切换到Google App Engine Java SDK 1.7.3.从那时起,每次我将DeferredTasks提交到任务队列时,我的PermGen空间都用完了.

  • 将应用程序部署到App Engine时不会发生这种情况.它只发生在本地.但它阻止了我的本地测试和失败的集成测试.
  • 它发生在使用Java 6的MacOSX 10.7.5上

    $ java -version 
    java version "1.6.0_37"
    Java(TM) SE Runtime Environment (build 1.6.0_37-b06-434-11M3909)
    Java HotSpot(TM) 64-Bit Server VM (build 20.12-b01-434, mixed mode)
    
    Run Code Online (Sandbox Code Playgroud)
  • 这是我发现问题时堆栈跟踪的一部分.

    INFO: Successfully processed ../target/projectName/WEB-INF/queue.xml
    Nov 1, 2012 3:04:00 PM com.google.appengine.api.taskqueue.dev.LocalTaskQueue init
    INFO: LocalTaskQueue is initialized
    Nov 1, 2012 3:04:01 PM org.quartz.simpl.SimpleThreadPool initialize
    INFO: Job execution threads will use class loader of thread: 1255545583@qtp-1458850232-0
    Nov 1, 2012 3:04:02 PM org.quartz.core.QuartzScheduler <init>
    INFO: …
    Run Code Online (Sandbox Code Playgroud)

google-app-engine memory-leaks permgen task-queue

18
推荐指数
1
解决办法
1843
查看次数

Maven 3.1.0打破了Google App Engine Maven插件

看起来像Google App Engine插件已经破坏了新的maven 3.1.0版本.当我尝试运行开发服务器时,我得到了异常

Caused by: java.lang.ClassNotFoundException: org.sonatype.aether.RepositorySystem
        at org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy.loadClass(SelfFirstStrategy.java:50)
        at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:244)
        at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:230)
        ... 57 more
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)

我的maven版本是

Apache Maven 3.1.0 (893ca28a1da9d5f51ac03827af98bb730128f9f2; 2013-06-28 05:15:32+0300)
Maven home: C:\Program Files\Maven\apache-maven-3.1.0
Java version: 1.7.0_25, vendor: Oracle Corporation
Java home: C:\Program Files\Java\jdk1.7.0_25\jre
Default locale: en_US, platform encoding: Cp1252
OS name: "windows 7", version: "6.1", arch: "amd64", family: "windows"
Run Code Online (Sandbox Code Playgroud)

在Apache网站上有关于此问题的汇总页面http://cwiki.apache.org/confluence/display/MAVEN/AetherClassNotFound

java google-app-engine maven-3

9
推荐指数
2
解决办法
7618
查看次数

如何使用Go http包发送204 No Content?

我使用Google App Engine上的Go构建了一个小型示例应用程序,在调用不同的URL时发送字符串响应.但是,如何使用Go的http包向客户端发送204 No Content响应?

package hello

import (
    "fmt"
    "net/http"
    "appengine"
    "appengine/memcache"
)

func init() {
    http.HandleFunc("/", hello)
    http.HandleFunc("/hits", showHits)
}

func hello(w http.ResponseWriter, r *http.Request) {
    name := r.Header.Get("name")
    fmt.Fprintf(w, "Hello %s!", name)
}

func showHits(w http.ResponseWriter, r *http.Request) {
    fmt.Fprintf(w, "%d", hits(r))
}

func hits(r *http.Request) uint64 {
    c := appengine.NewContext(r)
    newValue, _ := memcache.Increment(c, "hits", 1, 0)
    return newValue
}
Run Code Online (Sandbox Code Playgroud)

google-app-engine http go

6
推荐指数
1
解决办法
3945
查看次数

如何将聚合函数应用于从Google BigQuery中的JSON中提取的数据?

我使用的是从BigQuery列中提取JSON数据JSON_EXTRACT.现在我想提取值列表AVG并对它们运行聚合函数(如)..objects[*].vhttp://jsonpath.curiousconcept.com/上测试JsonPath表达式成功.但查询:

SELECT
  JSON_EXTRACT(json_column, "$.id") as id,
  AVG(JSON_EXTRACT(json_column, "$.objects[*].v")) as average_value
FROM [tablename]
Run Code Online (Sandbox Code Playgroud)

在BigQuery上抛出JsonPath解析错误.这可能在BigQuery上吗?或者我是否需要预处理我的数据以便针对我的JSON内部的数据运行聚合函数?

我的数据与此类似:

# Record 1
{
  "id": "abc",
  "objects": [
    {
      "id": 1,
      "v": 1
    },
    {
      "id": 2,
      "v": 3
    }
  ]
}
# Record 2
{
  "id": "def",
  "objects": [
    {
      "id": 1,
      "v": 2
    },
    {
      "id": 2,
      "v": 5
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

这与另一个问题有关.

更新:运行两个查询可以简化问题.首先,运行JSON_EXTRACT并将结果保存到视图中.其次,针对此视图运行聚合函数.但即便如此,我还需要纠正JsonPath表达式$.objects[*].v …

sql json aggregate-functions google-cloud-sql google-bigquery

6
推荐指数
1
解决办法
2738
查看次数

在Google App Engine中填充许多延迟任务的任务队列的最佳存储桶大小是多少?

我的谷歌App Engine应用程序被添加了大量的延迟任务任务队列.任务计划每x秒运行一次.如果我正确理解了bucket-size属性b,则高值将阻止延迟任务运行,直到添加了b任务.但是,有一个接近实时的要求,即任务按计划运行.我不希望在达到桶大小之前阻止任务.相反,他们应该尽可能接近他们的预定时间.

为了支持这个用例,我应该使用1的桶大小和500 的速率(这是当前的最大速率)吗?还有哪些方法可以支持这个?谢谢!

python java google-app-engine task-queue deferred-execution

3
推荐指数
1
解决办法
1048
查看次数

如何在Go GAE应用程序中可视化代码覆盖率信息?

我正在使用最新的 Go GAE SDK开发服务器.每次更改后我都会运行测试:

goapp test -test.v=true
Run Code Online (Sandbox Code Playgroud)

-cover用来记录覆盖范围,如下所述goapp help testflag:

goapp test -cover -test.v=true -test.coverprofile=c.out
[..]
coverage: 53.8% of statements
ok      _/var/lib/jenkins/jobs/loyalty/workspace    30.464s
Run Code Online (Sandbox Code Playgroud)

这成功完成并打印测试所涵盖的行的百分比.但是,尝试可视化结果失败:

goapp tool cover -html=c.out
cover: can't find "app.go": cannot find package "_/home/ingo/git/loyalty/" in any of:
/home/ingo/Downloads/go_appengine_sdk_linux_amd64-1.9.10/go_appengine/goroot/src/pkg/_/home/ingo/git/loyalty (from $GOROOT)
/home/ingo/git/loyalty/src/_/home/ingo/git/loyalty (from $GOPATH)
Run Code Online (Sandbox Code Playgroud)

Go的封面工具是否仅适用于非GAE应用程序?我是否必须以不同方式打包我的应用程序才能显示覆盖率结果?

我以前在golang-nuts上问过这个问题是不成功的.

tdd google-app-engine unit-testing code-coverage go

3
推荐指数
1
解决办法
402
查看次数

如何以编程方式启动Google Compute实例?

AWS SDK,EC2实例可以通过编程的推出AmazonEC2Client.一般的GCP计算引擎是否专门为相同的操作提供基于CLI的 gcloud命令?或者也可以从Java/Python/Go/etc控制GCE实例?哪些SDK适用于这些语言,其示例和文档在哪里?

我在GCP世界中寻找相同的东西:

client = new AmazonEC2Client(credentials);
client.runInstances(new RunInstancesRequest())
Run Code Online (Sandbox Code Playgroud)

google-compute-engine google-cloud-platform gcloud

3
推荐指数
1
解决办法
1426
查看次数