Grails中SSL验证的错误

时间:2011-06-22 15:54:27

标签: grails ssl-certificate

我想在Grails中使用SSL验证向网址发帖。 我已经导入了证书,并且我已经生成了jks文件。 但似乎Grails没有找到那些jks文件。 下面是我正在执行的代码(它在Grails服务类中):

def certificate = "mycert.jks"

def http = new HTTPBuilder(url)

def keyStore = KeyStore.getInstance(KeyStore.defaultType)
getClass().getResource(certificate).withInputStream {
    keyStore.load(it, "test1234".toCharArray())
}

http.client.connectionManager.schemeRegistry.register(new Scheme("https", new SSLSocketFactory(keyStore), 443))

错误是 “无法在null对象上调用withInputStream()方法” 所以 方法getResource()不起作用,并返回null。

我看到这个代码在functionalTest类中工作正常。

任何人都知道如何解决这个问题?

感谢!!!!!!!

1 个答案:

答案 0 :(得分:2)

问题是来自grails-app/services的非源文件未复制到类路径中。 src/java就是这种情况,但不是src/groovygrails-app/conf的情况也是如此,但这是唯一发生这种情况的grails-app文件夹,因为它是配置文件文件夹。

所以最好的办法是将文件移至grails-app/conf并使用

Thread.currentThread().contextClassLoader.getResource(certificate).withInputStream {
    keyStore.load(it, "test1234".toCharArray())
}