Tomcat 未连接到 SQL Server Express

Posted

技术标签:

【中文标题】Tomcat 未连接到 SQL Server Express【英文标题】:Tomcat not connecting to SQL Server Express 【发布时间】:2013-02-12 12:23:52 【问题描述】:

我有一个在 Tomcat 下运行的 webapp,通过 jdbc 连接到 SQL Server Express 以获取数据。在我第一次用于开发的 Vista 机器上运行良好。我一直在尝试将它移动到 Windows 7 机器上,它可以实时运行,但它不起作用,而且我已经没有东西可以检查了。需要帮忙。两台机器上的安装(我的部分)似乎完全相同。但我应该提一下,新机器(它不工作的地方)正在运行另一个应用程序,它连接到相同或另一个版本的 SQL Server。这是Tomcat日志中的错误。

Allvarlig: StandardWrapper.Throwable
java.lang.NullPointerException
    at nu.isr.hll.webshop.core.HLListProcess.initialize(HLListProcess.java:73)
    at nu.isr.hll.webshop.servlets.HLListServlet.init(HLListServlet.java:31)
    at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1266)
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1185)
    at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:857)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:136)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1002)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585)
    at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:1813)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
    at java.lang.Thread.run(Thread.java:722)

【问题讨论】:

【参考方案1】:

jdbc 驱动程序未加载。

看起来问题归结为有缺陷的 Microsoft jdbc 驱动程序。根据文档,sqljdbc4 不需要显式注册驱动程序。版本 4 应该会自动执行此操作。在 Microsoft Vista 开发机器上运行良好。但是当我在 Windows 7 上安装应用程序时它不起作用(它们是两个不同的操作系统,我猜这很重要。)

必须包含 Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");

现在可以了!

【讨论】:

我要在这里添加一个警告。使用 jdbc 的一个很好的理由是您不需要重写代码来切换数据库系统。首先,基于非标准 Microsoft 功能做某事是个坏主意。在过去的一个小时里,我一直在思考这个问题,想知道我为什么会爱上它。 我认为现在这篇文章和解决方案为使用 jdbc 和 SQL Server 的人提供了极好的资源,其中许多人会遇到同样的问题。 我认为在花大量时间在技术论坛上之前,您需要提高专业的人际互动技能;也磨练了逻辑技能。在某事上发帖寻求帮助的人并不是在吹嘘它。因此,您的廉价镜头只是没有达到目标。我可以进一步解释为什么这是一篇好文章,但我认为你现在还不能理解它。

以上是关于Tomcat 未连接到 SQL Server Express的主要内容,如果未能解决你的问题,请参考以下文章

SQL 节点未连接到 mysql 集群中

从 6.1 迁移到 7.1 后,Iphone build 未连接到 Mobile First Server

Spring GCP 服务未连接到 Cloud SQL 数据库

App Engine Java Servlet 未连接到 Cloud SQL

WAR 文件部署未连接到 MySQL

使用客户端凭据从 Tomcat 连接到 SQL Server