我是GRAILS的新手,但我构建了一个简单的应用程序,我正在尝试将其部署到tomcat。
如果我使用以下方式运行应用程序:
grails prod run-app
一切正常。但是,如果我将它构建为war文件
grails prod war
然后将war包上传到tomcat服务器或直接运行它,如
java -Dgrails.env=prod -jar build\lib\app.war
然后我得到了这种奇怪的行为,一开始看起来一切都很好,但每当我点击索引以外的某个动作的链接时,我都会收到404错误。 例如。
webapp:8080/employee WORKS
webapp:8080/employee/index WORKS
webapp:8080/employee/show/1 404 error
webapp:8080/department WORKS
webapp:8080/department/show/1 404 error
等
在上面的示例中,webapp:8080 / employee / show / 1肯定会被找到,因为它是从索引中的表中列出和链接的。
我遇到了很多麻烦,因为我似乎无法从正在运行的war文件中找到任何反馈,无论我是在tomcat中运行还是直接运行,即使我将环境移动到测试或开发。在日志文件或标准输出中没有任何内容。
这是我的UrlMappings
package generico
class UrlMappings {
static mappings = {
"/$controller/$action?/$id?(.$format)?"{
constraints {
// apply constraints here
}
}
// "/"(view:"/index")
"/"(controller:"employee", action:"index")
"500"(view:'/error')
"404"(view:'/notFound')
}
}
如果我为任何环境做“grails run-app”,那么一切都运行得很好。
我感谢任何帮助。感谢。
答案 0 :(得分:0)
我在Grails 3.2.2中遇到了同样的问题。
无法获得" /"载入。我使用名称空间,所以我的映射看起来像
"/"(namespace: 'corp', controller: 'index', action: 'index')
与
com.example.corp.IndexController {
static namespace = 'corp'
def index() {)
}
在使用grails run-app的任何环境中,一切正常,但是当我战争并运行时,它会给我一个错误页面。
答案 1 :(得分:0)
我的问题出在Grails 3.2.1上。在我更新到Grails 3.2.2之后,做了一个gradle清理,然后重新包装,一切正常。