我的Web应用程序的根目录中有一个Groovy脚本,由Tomcat 7.0.22提供服务。该脚本由Groovy 1.8.4中的GroovyServlet提供服务。当我启动应用程序时,通过Tomcat的“管理器”应用程序,我可以向脚本发送请求并返回200. 无需更改任何内容我可以发送第二个请求并返回404。第一个请求后的请求导致404,直到我重新启动应用程序。写入Catalina.out日志的唯一事情是:
GroovyServlet Error: script: '/test.groovy': Script not found, sending 404.
我如何1)解决此问题或2)进行调试?我通过GroovyServlet source code查看了任何可能的web.xml配置参数以进行调试,但我没有看到任何参数。
要清楚,我的应用程序的web目录是:
/test.groovy
/WEB-INF/lib/*.jar
/WEB-INF/groovy/classes*.groovy
/WEB-INF/web.xml
答案 0 :(得分:1)
GroovyServlet应该允许将.groovy脚本放在Web应用程序的普通Web根目录或/ WEB-INF / groovy /中。但是,我已经看过几次,如果在web根目录中脚本没有得到解决。尝试将 .groovy 脚本移动到/ WEB-INF / groovy /并重启Tomcat。
这是我用于在Tomcat和Google App Engine中部署groovy脚本的配置。通常使用Groovy 1.8.4到2.0.1,但是,我看到Groovy 2.0.2,2.0.4和2.0.5的一些问题没有像你描述的那样解析脚本。我将继续使用Groovy 2.0.1,直到修复了GroovyServlet错误。
http://groovy.codehaus.org/api/groovy/servlet/GroovyServlet.html
更新:在Groovy 2.0.6中修复了上面描述的在web根目录或/ WEB-INF / groovy中使用groovy脚本的错误。
答案 1 :(得分:0)
在groovy / util / GroovyScriptEngine中改变Groovy 1.8.8 / 2.0.2中的501/491行
String path = conn.getURL().toExternalForm();
到
String path = conn.getURL().getPath();
为我解决了这个问题。