Tomcat6 - 作为独立应用程序和服务运行时数据源的任何差异?

时间:2012-05-21 14:31:21

标签: windows jdbc tomcat6

我一直在运行tomcat 6作为一个独立的应用程序,并通过控制面板中的“数据源”工具指定数据源>管理工具。

今天,我尝试将tomcat作为服务安装,以便在电脑启动时自动启动。

然而,它无法再识别数据源。当我从命令提示符重启tomcat时,相同的数据源工作。

以下是stacktrace

org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory ([Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified)
    org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1225)
    org.apache.tomcat.dbcp.dbcp.BasicDataSource.getConnection(BasicDataSource.java:880)
    com.qc.helpers.connection.ConnectionPool.<init>(ConnectionPool.java:38)
    com.qc.main.servlets.TableView.init(TableView.java:47)
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263)
    org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
    org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:584)
    org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
    java.lang.Thread.run(Thread.java:619)

有什么想法吗?提前谢谢..

1 个答案:

答案 0 :(得分:1)

问题是您使用的是ODBC数据源。您很可能创建了用户DSN而不是系统DSN。如果TomCat作为服务运行,则Java无法访问为普通用户帐户定义的ODBC数据源。如果您将其定义为系统DSN,则它应该具有访问权限。

顺便说一句:我建议尽可能不使用JDBC / ODBC网桥,但要为数据库使用实际的JDBC驱动程序。