我创建了一个使用 highcharts 和 D3 js 库的 grails 应用程序。这些图表的数据源目前是在我的PC上运行的MySQL服务器
当应用程序使用“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 的新手
任何解决此问题的建议/方法将不胜感激。
最佳答案
我认为您有一个 Ajax 调用 http://yourdomain.com:8080/marchmock2/Tablev1class/salesjson ?
所以在 url 中有三件重要的事情:
- marchmock2:基础应用名称
- Tablev1class: Controller 名称
- salesjson: Action 名称
创建 war 时将其重命名为 marchmock2.war?如果 war 的名称不同,例如 marchmock2-0.1.war,正确的 url 将会出现:
http://yourdomain.com:8080/marchmock2-0.1/Tablev1class/salesjson
因此,当您在 javascript 中放置链接时,请注意并使用 grails 标记库,g.createLink 用于 Controller 和操作,g.createLinkTo 用于资源。
希望能帮到你 问候。
关于tomcat - Grails部署数据问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24807904/