0

我是 GRAILS 的新手,但我构建了一个简单的应用程序,并且正在尝试将其部署到 tomcat。

如果我使用以下方式运行应用程序:

grails prod run-app

一切正常。但是,如果我将它构建到一个战争文件

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 肯定应该找到,因为它是从索引中的表列出并链接的。

我在深入了解它时遇到了很大的麻烦,因为无论我是在 tomcat 中还是直接运行它,我似乎都无法从正在运行的 war 文件中找到任何反馈,即使我将环境移动到测试或开发。日志文件或标准输出中没有任何内容。

这是我的 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”,一切都会正常工作。

我很感激任何帮助。谢谢。

4

2 回答 2

0

我在使用 Grails 3.2.2 时遇到了同样的问题。

无法加载“/”。我正在使用命名空间,所以我的映射看起来像

"/"(namespace: 'corp', controller: 'index', action: 'index')

com.example.corp.IndexController {
  static namespace = 'corp'
  def index() {)
}

在使用 grails run-app 的任何环境中,一切都可以正常工作,但是当我运行并运行它时,它会给我一个错误页面。

于 2016-10-30T20:36:53.730 回答
0

我的问题是 Grails 3.2.1。在我更新到 Grails 3.2.2 之后,做了一个 gradle clean,然后重新打包,一切正常。

于 2016-11-02T23:47:36.847 回答