tomcat 运行时出现Cannot create PoolableConnectionFactory (到主机 的 TCP/IP 连接失败...

将一个Java Web应用转移到一台新的PC机上供测试使用。配置环境为:

  1. JDK 1.6.0
  2. Tomcat 6.0
  3. SQL Server 2012 企业版

    其中SQL Server 2012 为新安装在此机器上。将Web应用部署到Tomcat的webapps文件夹后运行启动脚本,开始并未注意到控制台的一些提示信息。Tomcat启动后在地址栏中输入登录路径,登录界面成功出现。此时在登录框中输入正确的用户名与密码,系统提示错误。

    注意到Tomcat的控制台出现异常提示:

Cannot create PoolableConnectionFactory (到主机  的 TCP/IP 连接失败。 java.net.ConnectException: Connection refused: connect)
Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: 到主机  的 TCP/IP 连接失败。 java.net.ConnectException: Connection refused: connect

 

错误提示很明显,到主机的TCP/IP连接失败。就是与SQL Server的TCP/IP连接失败。打开Microsoft SQL Server2012 -->配置工具-->SQL Server Configuration Manager,看到左侧的'SQL Server 2012 网络配置',点击'SQLEXPRESS的协议',检查右侧的'TCP/IP'协议的状态是否为已启用。然后双击'TCP/IP'协议,弹出属性对话框,切换到'IP地址'选项卡。展开'IPAll',检查'TCP端口'是否是Web应用中请求连接数据库的端口号,一般端口号默认为1433,若没有请填入。对话框确定后会提示停止并重启相应服务,照做即可。


其实Tomcat抛出异常的原因就是编译时无法连接到相应的数据源,根本原因就是找不到连接数据库的TCP端口号,而在Web应用中又配置了相应的数据源,故在编译时抛出异常。其实在上诉异常之前Tomcat早已抛出异常,只是一闪而过没有细心看罢了。因为Web应用采用SSH框架,故Hibernate需要绑定数据实体,既然没有端口号更无从谈起绑定了,故Tomcat抛出了

AbandonedObjectPool is used (org.apache.tomcat.dbcp.dbcp.AbandonedObjectPool@f70ee1)
   LogAbandoned: false
   RemoveAbandoned: true
   RemoveAbandonedTimeout: 2


你可能感兴趣的:(Java)