2011-06-22 20 views
2

GrailsでSSL検証を使用してURLへの投稿を行います。 証明書をインポートしましたが、jksファイルが生成されました。 しかし、Grailsはそれらのjksファイルを見つけられません。 getResource()がないので、 方法 「ヌルオブジェクトのメソッドwithInputStreamを(呼び出すことはできません)」GrailsのSSL検証でエラーが発生しました

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

エラーが である:以下 は、私は(それはGrailsのサービスクラスにあります)を実行していたコードです作業し、nullを返します。

このコードはfunctionalTestクラスでうまく動作することがわかりました。

どのようにしてこの問題を解決できますか?

ありがとう!!!!!!!

答えて

2

grails-app/servicesの非ソースファイルは、クラスパスにコピーされないという問題があります。これはsrc/javaの場合ですが、src/groovyの場合はありません。 grails-app/confの場合もありますが、これは構成ファイルフォルダなので、これが起こるのはgrails-appフォルダだけです。

だからあなたの最善の策はgrails-app/confにファイルを移動し、私はにThread.currentThread()。getContextClassLoader()。getResourceの(証明書)とも試みたが、私はまだ同じ問題を抱えて

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

を使用することです(nullを返します) – NachoAsking

+0

これは実行アプリ、または展開された戦争、ユニットまたは統合テストでですか?また、証明書ファイルはどこにありますか? –

+0

run-appにあり、証明書はサービスクラスと同じフォルダにあります – NachoAsking

関連する問題