一種のHTTPプロキシとして機能するgroovletを作成しました。GETリクエストを受け入れ、リクエストで提供されたURLに基づいてWebサービス呼び出しを行います。
これが私がこれまでに持っているコードです:
@Grab(group='org.codehaus.groovy.modules.http-builder', module='http-builder', version='0.5.0')
import groovyx.net.http.*
import static groovyx.net.http.ContentType.*
import static groovyx.net.http.Method.*
String url = params.url
def http = new HTTPBuilder(url)
http.request(GET, TEXT) {
response.success = { resp, reader ->
println reader
}
response.'404' = { resp ->
println 'not found!'
}
}
groovletのフォルダーにGroovyHTTPBuilderJARファイルがありWEB-INF/lib
ます。ただし、コードが正常に機能していません。(フォルダを入れてみたところ$TOMCAT_HOME/common/lib
、以下と同じ結果になりました。)
上記のようにコードを実行すると、ページが完全に空白に戻ります。
一番上の行だけを削除すると@Grab
(JARは理論的にはすでにクラスパスにあるはずなので)、Tomcatから厄介なエラーが発生します(5.5で実行していますが、6でもほぼ同じ動作が得られます)。
HTTPステータス500-GroovyServletエラー:スクリプト:'/proxy.groovy':スクリプト処理に失敗しました。起動に失敗しました:セマンティック分析中の一般的なエラー:タイプorg.apache.http.client.methods.HttpRequestBaseが存在しませんjava.lang.TypeNotPresentException:タイプorg.apache.http.client.methods.HttpRequestBaseが存在しません...
その後、スタックトレースが続きます。
私のgroovletの何が問題になっていますか?