【问题标题】:Grails deployment data issueGrails 部署数据问题
【发布时间】:2014-07-17 15:37:19
【问题描述】:

我创建了一个使用 highcharts 和 D3 js 库的 grails 应用程序。这些图表的数据源目前是 MySQL 服务器,它在我的 PC 上运行

当应用程序在我的 PC 上使用“grails run-app”以开发模式运行时,它运行得非常好。 现在,我想部署应用程序(生产模式)并使用“grails war”创建了一个war文件,并使用“Apache tomcat 7.0.54”作为我的容器,但是当我在管理器中打开我的应用程序时它会引发很多错误Tomcat服务器的模式。 此外,可视化没有正确显示 - 只有一个下拉菜单(而不是 4 个)并且没有图表显示

这是点击过滤器时观察到的错误:

GET http://localhost:8080/marchmock2/Tablev1class/salesjson 404 (Not Found) d3.v3.min.js:1
Uncaught SyntaxError: Unexpected token u (index):409

它根本无法读取可视化所需的 json 文件。 我认为主要问题在于Datasource.groovy。 代码: 开发模式(工作):

development {
        dataSource {

            url = "jdbc:mysql://localhost/marchmock2?useUnicode=yes&characterEncoding=UTF-8"
            username = "root"
            password = "root"
        }

生产模式(WAR文件) 不工作:

代码:

production {
        dataSource {
            dbCreate = "update"
            url = "jdbc:mysql://localhost/marchmock2?useUnicode=yes&characterEncoding=UTF-8"
            username = "root"
            password = "root"
            properties {
               maxActive = -1
               minEvictableIdleTimeMillis=1800000
               timeBetweenEvictionRunsMillis=1800000
               numTestsPerEvictionRun=3
               testOnBorrow=true
               testWhileIdle=true
               testOnReturn=false
               validationQuery="SELECT 1"
               jdbcInterceptors="ConnectionState"
            }
        }
    }

所以,问题可能是

  • Datasource.groovy 中的错误代码
  • Apache Tomcat 找不到 mysql 数据库,因此无法获取相关数据

另外,servlet 容器究竟是如何从数据库中提取数据的?我不明白这一点,因为我对 Tomcat 和 Grails 很陌生

任何解决此问题的建议/方法都将受到高度赞赏。

【问题讨论】:

  • http://localhost:8080/marchmock2/Tablev1class/salesjson - 这个控制器名称似乎很奇怪 - Tablev1class。
  • grails 控制器动作看起来如何被引用并服务于 json 结构?
  • 如何在使用 js 的 .gsp(view) 中创建链接?
  • 您在应用程序/Tomcat 日志文件中看到任何错误/异常吗?
  • 您能否向我们提供有关您的控制器和操作的更多信息?我认为这根本与您的数据库无关。

标签: tomcat grails deployment


【解决方案1】:

我想你有一个对http://yourdomain.com:8080/marchmock2/Tablev1class/salesjson 的 Ajax 调用?

所以在 url 中有三个重要的东西:

  1. marchmock2:基本应用程序名称
  2. Tablev1class:控制器名称
  3. salesjson:操作名称

当您创建战争时,您将其重命名为marchmock2.war?如果战争的名称不同,例如marchmock2-0.1.war,正确的网址就会出现:

http://yourdomain.com:8080/marchmock2-0.1/Tablev1class/salesjson

因此,当您在 javascript 中添加链接时,请注意并使用 grails 标签库,g.createLink 用于控制器和操作,g.createLinkTo 用于资源。

希望能帮到你 问候。

【讨论】:

    猜你喜欢
    • 2010-09-26
    • 2023-04-04
    • 1970-01-01
    • 2011-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-13
    • 2015-07-26
    相关资源
    最近更新 更多