我最初在 stackoverflow 上发布了这篇文章。不确定这是否属于 Serverfault。我对 serverfault 与 stackoverflow 的指导原则相当熟悉,然而,虽然这是一个服务器问题,但目标是配置我的 XMPP 开发环境。任何关于 stackoverflow 与 serverfault 的建议都将不胜感激。
无论如何,这是我的问题
我正在尝试使用 MS SQL Server 2008 实例配置我的 Openfire 服务器。
我必须承认,尽管我广泛使用过 SQL Server,但我还是成功地使用它,尽管我当然不是专家(最重要的是,您不应该假设我已经做了任何明显的配置)。如果有什么明显的错误以至于这是一个浪费时间的问题,我也提前道歉。
我的基本 SQL 信息/配置
- 服务器名称:PALBU\PALBUSQL
- 身份验证:Sql Server 身份验证
- 登录名:sa
- 密码:mypassword
这是我的 Openfire 设置/屏幕截图
服务器设置
域名:palbu
管理控制台端口:9090
安全管理控制台端口:9091
我在“数据库设置”下选择了“标准数据库连接”
数据库设置 - 标准连接
- 数据库驱动程序预设:Microsoft SQLServer
- JDBC 驱动程序类:net.sourceforge.jtds.jdbc.Driver
- 数据库网址:jdbc:jtds:sqlserver://PALBU/PALBUSQL;appName=jive
- 用户名:su
- 密码:mypassword
- 最低连接数:5
- 最大连接数:25
- 连接超时:1.0 天
当我尝试连接时,收到一条错误消息“无法连接到数据库,您可以查看错误消息 error.log”
以下是 error.log 文件的输出
2011.07.12 11:10:43 原型 java.sql.SQLException:网络错误 IOException:连接被拒绝:连接在 net.sourceforge.jtds.jdbc.ConnectionJDBC2。(ConnectionJDBC2.java:385)在 net.sourceforge.jtds.jdbc.ConnectionJDBC3。(ConnectionJDBC3.java:50)在 net.sourceforge.jtds.jdbc.Driver.connect(Driver.java:182)在 java.sql.DriverManager.getConnection(未知来源)在 java.sql.DriverManager.getConnection(未知来源)在 org.logicalcobwebs.proxool.DefaultConnectionBuilder.buildConnection(DefaultConnectionBuilder.java:39)在 org.logicalcobwebs.proxool.Prototyper.buildConnection(Prototyper.java:159)在org.logicalcobwebs.proxool.Prototyper.sweep(Prototyper.java:102) at org.logicalcobwebs.proxool.PrototyperThread.run(PrototyperThread.java:44) 导致:java.net.ConnectException:连接被拒绝:连接 at java.net.PlainSocketImpl.socketConnect(Native Method) at java.net.PlainSocketImpl.doConnect(Unknown Source) at java.net.PlainSocketImpl.connectToAddress(Unknown Source) at java.net.PlainSocketImpl.connect(Unknown Source) at java.net.SocksSocketImpl.connect(Unknown Source) at java.net.Socket.connect(Unknown Source) at sun.reflect.GeneratedMethodAccessor3.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(未知来源)位于 net.sourceforge.jtds.jdbc.SharedSocket.createSocketForJDBC3(SharedSocket.java:304)位于 net.sourceforge.jtds.jdbc.SharedSocket。(SharedSocket.java:255)位于 net.sourceforge.jtds.jdbc.ConnectionJDBC2。(ConnectionJDBC2.java:310)... 还有 8 个
我尝试将 DatabaseURL 更改为仅显示我的服务器 URL
- 数据库网址:PALBU/PALBUSQL
我在数据库设置中收到了相同的错误,但在日志文件中收到了不同的输出。
2011.07.12 11:16:12 Prototype
java.sql.SQLException: No suitable driver found for PALBURTUS/PALBURTUSSQL
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at org.logicalcobwebs.proxool.DefaultConnectionBuilder.buildConnection(DefaultConnectionBuilder.java:39)
at org.logicalcobwebs.proxool.Prototyper.buildConnection(Prototyper.java:159)
at org.logicalcobwebs.proxool.Prototyper.sweep(Prototyper.java:102)
at org.logicalcobwebs.proxool.PrototyperThread.run(PrototyperThread.java:44)
似乎默认的 Openfire 安装中缺少此驱动程序,但我对 sql 驱动程序不太熟悉,因此如能得到任何帮助我将不胜感激。
答案1
您的 SQL 服务器是否配置为接受网络连接?或者,它是否位于非标准端口(默认为 1433)?或者,服务器上是否启用了基于主机的防火墙?
从该错误消息来看,OpenFire 服务器可以解析名称,但连接尝试被主动拒绝。
OpenFire 采用 jdbc 连接字符串,因此第二次尝试失败是可以预料的。
答案2
第一个日志中说Connection refused
。尝试从 Openfire 计算机远程登录到 SQL 服务器端口,看看是否可以打开连接。如果不行,那么您可能需要检查防火墙规则并允许传入连接。
第二条日志仅仅告诉您连接字符串无效,并且它不知道在哪里或如何连接。