2

我在使用 Grails 2.3.0 时遇到了几个非常烦人的问题,其中最烦人的是当我杀死我的 Grails 应用程序时 Tomcat 拒绝死掉。如果我从命令行或 GGTS 运行我的 Grails 应用程序似乎并不重要,当我停止我的 Grails 应用程序时,Tomcat 不会死,所以下次我尝试运行我的 Grails 应用程序时,我会收到以下警告:

| Error Server failed to start for port 8080: Address already in use: JVM_Bind (Use --stacktrace to see the full trace)

我必须去寻找 Tomcat 的进程并手动终止它以释放端口。

我安装了 XAMPP,但是 XAMPP 附带的 Tomcat 安装没有运行。我重命名了 XMAPP Tomcat 目录以确保。奇怪的是,当我运行 Grails 应用程序时,XAMPP 控制面板显示 Tomcat 已启动(尽管停止按钮不起作用)。

4

3 回答 3

4

XAMP 带有一个Apache http 服务器而不是Tomcat,它的停止按钮不会杀死您的 Grails 应用程序。它可能显示为已启动,因为它检查是否http://localhost:8080/在线但它不验证本地主机是否来自 XAMP 或其他服务器。

尝试使用红色按钮杀死应用程序GGTS确实会失败,为此有一张 JIRA 票。同时,正确的流程是运行命令stop-app( ctrl++ alt) 。shiftg

于 2013-10-11T20:22:00.823 回答
0

I found that your proxy settings affect 'stop-app's ability to shutdown tomcat. When you run 'run-app' grails also listens on the server port + 1 (usually 8081). Any requests to that port cause the server to shutdown. The 'stop-app' script simply makes a request to that port.

In my case I used the 'add-proxy' command to configure my proxy but I didn't add the '--noproxy=localhost' parameter. I assume that that when I ran stop-app it tried to access localhost:8081 though the proxy and failed so the server didn't shutdown. Once I added '--noproxy=localhost' to my proxy config stop-app worked fine.

It also means that when you hit Ctrl+C at the grails> prompt tomcat is shutdown.

于 2014-03-31T06:28:49.700 回答
0

我是一个不耐烦的人,虽然打开一个新控制台并使用该stop-app命令确实有效,但它的运行速度不够快。我制作了这个小批处理文件来加快速度,直到它得到修复。该批处理文件将找到绑定到端口 8080 的进程并将其杀死。

@echo off
for /f "delims=" %%a in ('netstat -aon ^| find ":8080"') do @set netstatRslt=%%a
set pid=%netstatRslt:~-5%
taskkill /f /pid %pid%
于 2013-10-15T23:03:25.953 回答