4

我可以在 Jetty 中成功运行我的 Grails 应用程序。它成功连接到我的 MsSql 数据库,一切都很好。当我在同一台机器上的 Tomcat 6 中部署相同的应用程序时,在 Tomcat 日志中启动时收到以下错误:

Caused by: java.net.ConnectException: Connection refused: connect

我不相信我的 MsSql 服务器是问题,因为我有另一个 Java 应用程序在同一个 Tomcat 实例中运行并成功访问同一个数据库服务器。

当我在 Jetty 和 Tomcat 中部署它时,连接字符串完全相同。在 Tomcat 6 中部署 Grails 应用程序时为什么无法连接到数据库的任何想法?当我的 Grails 应用程序部署在 Tomcat 中时,我似乎无法访问任何数据库。(我的其他 Java 应用程序(Confluence)连接没有问题。

这是我的连接信息:

dataSource {
    pooled = true
    driverClassName = "net.sourceforge.jtds.jdbc.Driver"
    username = "user"
    password = "pass"
}
hibernate {
    cache.use_second_level_cache=true
    cache.use_query_cache=true
    cache.provider_class='com.opensymphony.oscache.hibernate.OSCacheProvider'
}
// environment specific settings
environments {
    development {
        dataSource {
            dbCreate = "update" // one of 'create', 'create-drop','update'
            url = "jdbc:jtds:sqlserver://localhost:1143/holidayCards"
        }
    }
    test { //for AD-DEV02
        dataSource {
            dbCreate = "update"
            url = "jdbc:jtds:sqlserver://AD-DEV02:1237/holidayCards;instance=SQL2005"
        }
    }
    production {
        dataSource {
            dbCreate = "update"
            url = "jdbc:jtds:sqlserver://SQL:1433/holidayCards"
        }
    }
}

我总是部署为“测试”:

grails test war

正如您从下面的回答中看到的那样,我认为这不是连接问题,因为当我从 grails 1.1beta1 降级到 1.0.4 时,我能够成功开始工作

任何帮助表示赞赏,

安德鲁

4

2 回答 2

3

您的 DataSource.groovy 文件是什么样的?当您使用“grails run-app”运行应用程序时,Grails 使用“开发”部分中的数据源。当您使用“grails war”生成一个war 文件并将其部署到应用程序服务器时,Grails 将使用“生产”部分中的数据源。您可能需要确保您的开发和生产数据源配置相同。

于 2008-12-11T11:12:29.033 回答
1

这是 grails 1.1beta1 的一个问题。当我将我的应用程序恢复到 grails 1.0.4 时,它似乎工作了。不幸的是,我不得不更改几段代码,因为 grails 的 beta 版本修复了一些错误,但这似乎植根于我使用的 grails 版本。

我刚刚使用 1.1beta1 创建了一个空的 grails 应用程序,并且能够在 Tomcat 中成功部署它(并访问数据库)。这让我觉得我的项目中还有一些其他设置不能很好地与 beta 版本配合使用。也许这是我的 jquery 插件。也许它正在将我的项目从 grails 1.0.4 升级到 1.1beta1

这并不能完全解决问题,但可以缩小范围。

安德鲁

于 2008-12-11T18:42:48.110 回答