GroovyServlet可以';在Tomcat中找不到JAR文件
我创建了一个groovlet,它将充当某种HTTP代理。它接受GET请求,然后根据请求中提供的URL进行web服务调用 以下是我目前掌握的代码:GroovyServlet可以';在Tomcat中找不到JAR文件,groovy,groovlet,grape,httpbuilder,Groovy,Groovlet,Grape,Httpbuilder,我创建了一个groovlet,它将充当某种HTTP代理。它接受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 sta
@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的WEB-INF/lib
文件夹中找到了JAR文件。然而,代码并没有正常工作。(我还尝试将文件夹放入$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怎么了?两件事
首先,Groovlet似乎不能使用Grape(Grab命令)。这就是为什么当这一行出现时,groovlet会无声地失败
其次,httpbuilder
模块还依赖于大约19个其他包(包括错误消息中引用的org.apache.http.client.methods.HttpRequestBase
)。您可以在~/.groovy/grapes
文件夹中找到这些包
如果要查找所有依赖项,请删除Grapes目录。然后在本地运行使用该@Grab
命令的脚本。脚本执行完毕后,您可以查看Grapes目录,查看它下载的所有内容
当我这么做的时候,我得到了下面的包列表:
antlr
asm
commons-beanutils
commons-codec
commons-collections
commons-lang
commons-logging
net.sf.ezmorph
net.sf.json-lib
net.sourceforge.nekohtml
org.apache
org.apache.commons
org.apache.httpcomponents
org.codehaus.groovy
org.codehaus.groovy.modules.http-builder
xerces
因此,如果您想在groovlet中使用HttpBuilder,则需要在WEB-INF/lib或Tomcat common/lib目录中获取所有这些依赖项
另一方面,如果您不需要非常新奇的东西,可以使用GroovyURL对象。请参阅。两件事
首先,Groovlet似乎不能使用Grape(Grab命令)。这就是为什么当这一行出现时,groovlet会无声地失败
其次,httpbuilder
模块还依赖于大约19个其他包(包括错误消息中引用的org.apache.http.client.methods.HttpRequestBase
)。您可以在~/.groovy/grapes
文件夹中找到这些包
如果要查找所有依赖项,请删除Grapes目录。然后在本地运行使用该@Grab
命令的脚本。脚本执行完毕后,您可以查看Grapes目录,查看它下载的所有内容
当我这么做的时候,我得到了下面的包列表:
antlr
asm
commons-beanutils
commons-codec
commons-collections
commons-lang
commons-logging
net.sf.ezmorph
net.sf.json-lib
net.sourceforge.nekohtml
org.apache
org.apache.commons
org.apache.httpcomponents
org.codehaus.groovy
org.codehaus.groovy.modules.http-builder
xerces
因此,如果您想在groovlet中使用HttpBuilder,则需要在WEB-INF/lib或Tomcat common/lib目录中获取所有这些依赖项
另一方面,如果您不需要非常新奇的东西,可以使用GroovyURL对象。看