配置openfire的数据源时出错

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了配置openfire的数据源时出错相关的知识,希望对你有一定的参考价值。

下午给同事配的时候到数据那里出错,它默认带了个选项,我选择的是postgresql(因为我们的项目用的这个数据库用起来比较方便一些)。驱动自动生成的org.postgresql.Driver。然后连接字符串和用户名密码都填对了。之后就在驱动那一行报“Unable to load the specified JDBC driver. Please verify the name of the driver is correct and that the driver is in the classpath of this server (usually the 'lib' directory). If you add a driver to your classpath you will neeed to restart the ”server.这个错误
日志中记录的如下:
2009.09.14 15:06:19 [org.jivesoftware.util.log.util.CommonsLogFactory$1.error(CommonsLogFactory.java:92)
] Prototype
java.sql.SQLException: No suitable driver
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)
我换成了mysql就可以用。很奇怪,我的机器上就可以通过,不过后来我再配的时候我机器也出现过类似问题一直没有解决掉。
用户名。连接字符串肯定没有问题,数据库权限也设置。数据库的配置文件中也允许该ip访问。lib下他自己带的有驱动jar,我又把我们自己用的版本的也放进去了,但是就是驱动加载不上。能想到的都试了。高人帮忙啊。是那里出了问题?

既然报的是驱动问题,那肯定是你jar包有问题。他的sql好像是postgresql7.0的版本,相对应的jar有可能不适用你当前的版本,现在都已经是8.2以上的。你把他自带的jar删了,放上你们项目自己用的,试试看,不要让2个版本的共存。容易出现问题。 参考技术A Adodc1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\数据库名.mdb;Persist Security Info=False" Adodc1.RecordSource = "select 语句" Adodc1.Refresh 另外不要在ADODC控件的属性里设置连接字符串(指定时,如果用相对路径【例如,只有库文件名】也没问题,但是如果用绝对路径,换机器后会出错。)建议读取一个配置文件,前提是程序要有设置数据库链接配置的功能 参考技术B 《基于jabber(XMPP)架设内部即时通讯服务》

这篇文章相信是大部分研究openfire的同胞起步看的一篇文章了,的确写得很好,就是对数据库配置这一块写得不够详细,他原有的内容我就不再转载了,大家自己百度一下,我就补充说说一些配数据库的东西吧。

我就试验了三种数据库:HSQLDB 、Microsoft SQLServer 、IBM DB2

一、HSQLDB

HSQLDB最简单了,基本上和一般的软件安装一样,全部下一步下去就OK了,不用多说,这都出问题我建议就不要花时间在这上面了。

二、Microsoft SQLServer

我是用的是2005的版本,其他版本相信差不多,数据库的配置就是要建立一个openfire数据库,然后记住,要开放TCP/IP端口,不然会出错,具体步骤如下:

SQL Server 2005必须为混合登录模式,例如:可以用“sa”登录
修改登陆模式方法:企业管理器>SQL组展开>右击(local)(windows NT)>属性>安全性

1、进入“SQL Server 配置管理器(SQL Server Configuration Manager)”,在左边窗口选择“SQL Server 2005网络配置”下面的分支“MSSQLServer的协议”

2、在右边窗口中右键点击“TCP/IP”,选“属性”,再选择“IP地址”,将表单中的“TCP端口”的值都改成1433(动态端口可以不改),然后点“确定”。

3、重启“SQL Server”和“SQL Server Browser”这两项服务即可。

4、在防火墙中打开1433端口。

5、装入SQL Server 2005 JDBC驱动,编译时要添加到环境变量中。 下载地址:http://www.microsoft.com/downloads/details.aspx?familyid=6D483869-816A-44CB-9787-A866235EFC7C&displaylang=en

然后是吧JDBC驱动放进openfire的lib中去,启动openfire,在设置数据库时的两个参数如下:

Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");

Url = "jdbc:sqlserver://localhost:1433;databaseName=**** "

用户名密码自己设置,要求对数据库有修改权限。

三、DB2

有一点要注意的是DB2数据库对索引长度有限制,最新的2.5以上版本的openfire数据超过了这个限制,即使使用DB2v9也不行,我们只好使用openfire2.4的版本了。

DB2的使用也需要自己新建一个openfire的数据库,然后将JDBC驱动放进openfire的lib中去,驱动位置在DB2的安装文件中的...\IBM\SQLLIB\java\db2java.zip。把后缀改成jar后就可以用了。

启动openfire,在设置数据库时的两个参数如下:

Class.forName("COM.ibm.db2.jdbc.app.DB2Driver");

Url = "jdbc:db2://localhost:50000/databaseName "

要注意的是COM是大写的,小写可找不到Driver文件;还有,如果配置出错要自己手工删除已经添加进数据库的表文件,否则重新配置会出错。

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/wenwucauc/archive/2008/08/19/2794093.aspx

openfire 外部用户身份验证

【中文标题】openfire 外部用户身份验证【英文标题】:openfire external user auth 【发布时间】:2012-04-30 14:58:07 【问题描述】:

我们公司需要将 openfire 用于 xmpp 聊天应用程序,我们希望使用现有的用户表进行身份验证,而不是使用 openfire 中的 ofUser 表。我已经在我们的服务器上安装了 openfire 并将其配置为使用我们的 mysql 数据库并创建了必要的表。我正在尝试遵循找到的自定义数据库集成指南 here

但我无法让它工作。我的配置文件如下(表名略有变化):

<jdbcProvider>
<driver>com.mysql.jdbc.Driver</driver>
<connectionString>jdbc:mysql://localhost/fueledin_winkage?user=fueledin_winkage&amp;password=845Fulton</connectionString>
</jdbcProvider>
<provider>
  <auth>
    <className>org.jivesoftware.openfire.auth.JDBCAuthProvider</className>
  </auth>
  <user>
    <className>org.jivesoftware.openfire.user.JDBCUserProvider</className>
  </user>
</provider>
<jdbcAuthProvider>
    <passwordSQL>SELECT password FROM users WHERE email=?</passwordSQL>
    <passwordType>md5</passwordType>
</jdbcAuthProvider>
<jdbcUserProvider>
    <loadUserSQL>SELECT email,email FROM users WHERE email=?</loadUserSQL>
    <userCountSQL>SELECT COUNT(*) FROM users</userCountSQL>
    <allUsersSQL>SELECT email FROM users</allUsersSQL>
    <searchSQL>SELECT email FROM users WHERE</searchSQL>
    <usernameField>email</usernameField>
    <nameField>email</nameField>
    <emailField>email</emailField>
</jdbcUserProvider>
<setup>true</setup>

这是一种奇怪的设置,因为用户可以在使用电子邮件登录时更改他们的用户名。有人可以解释我可能做错了什么吗,我尝试使用用户表中的用户登录服务器,但没有运气。另外,在浏览器中运行设置向导后,我将配置脚本编辑为如上所示,现在每次我进入浏览器工具时,它都会要求我再次运行设置向导,即使我再次运行它仍然会询问然后。任何帮助都提前感谢。

【问题讨论】:

只是想知道,您是否启动并运行了它。我很想知道它是如何工作的,因为我目前面临着同样的问题。干杯... 【参考方案1】:

您必须在 openfire 的管理界面中设置参数。这将为您完成工作。

如果您想在数据库中执行此操作,请使用表 ofProperty ;)

编辑:

像这样:

在系统属性(在服务器管理器中)中将所有 XML 节点更改为类似 node.subnode 的属性名称。

例如:

<provider>
  <auth>
    <className>org.jivesoftware.openfire.auth.JDBCAuthProvider</className>
  </auth>
  <user>
    <className>org.jivesoftware.openfire.user.JDBCUserProvider</className>
  </user>
</provider>

将会

provider.auth.className
provider.user.className

属性值相同,例如provider.auth.className 的值为 org.jivesoftware.openfire.auth.JDBCAuthProviderprovider.user.className 的值为 org.jivesoftware.openfire.user.JDBCUserProvider

【讨论】:

您能详细描述一下吗?谢谢

以上是关于配置openfire的数据源时出错的主要内容,如果未能解决你的问题,请参考以下文章

Mac中的Openfire数据库设置问题

openfire连接数据库mysql

openfire 安装配置时出现The Openfire database schema does not appear to be installed. Follow the installati错

怎么修改openfire的数据库连接

openfire集群集群插件hazelcast配置

openfire 外部用户身份验证