zoukankan      html  css  js  c++  java
  • openfire整合已有用户数据库(在logs里出现问题:

    Property 'jdbcProvider.connectionString' as specified in openfire.xml differs from what is stored in the database. Please make property changes in the database instead of openfire.xml.)http://lishao378.blog.sohu.com/146785554.html

    首先看下测试数据库结构和内容:

    mysql> use test;
    Database changed
    mysql> show tables;
    +----------------+
    | Tables_in_test |
    +----------------+
    | user           |
    +----------------+
    1 row in set (0.00 sec)

    mysql> select * from user;
    +-----+-------+----------------------------------+-----------------+
    | uid | uname | upass                            | email           |
    +-----+-------+----------------------------------+-----------------+
    |   1 | admin | admin                            | admin@localhost |
    |   2 | test  | 5c177f35077e9e0a4a5f7cb4dbc96937 | test@localhost  |
    +-----+-------+----------------------------------+-----------------+
    2 rows in set (0.00 sec)

    其中:admin密码是明文,test密码是字符串phpcms经md5加密后的密文。

    按照官方在《Custom Database Integration Guide》中给出的示例,结合所建立的测试数据库在conf/openfire.xml中加入了以下代码:
      <provider>
        <auth>
          <className>org.jivesoftware.openfire.auth.JDBCAuthProvider</className>
        </auth>
        <user>
          <className>org.jivesoftware.openfire.user.JDBCUserProvider</className>
        </user>
      </provider>
      <jdbcAuthProvider>
         <passwordSQL>SELECT upass FROM user WHERE uname=?</passwordSQL>
         <passwordType>plain</passwordType>
      </jdbcAuthProvider>
      <jdbcUserProvider>
         <loadUserSQL>SELECT uname,email FROM user WHERE uname=?</loadUserSQL>
         <userCountSQL>SELECT COUNT(*) FROM user</userCountSQL>
         <allUsersSQL>SELECT uname FROM user</allUsersSQL>
         <searchSQL>SELECT uname FROM user WHERE</searchSQL>
         <usernameField>uname</usernameField>
         <nameField>uname</nameField>
         <emailField>email</emailField>
      </jdbcUserProvider>
    但事实证明是不正确的。当重启服务端后,logs/warn.log给出了以下出错警告:
    2010.03.23 23:39:44 Going to buffer response body of large or unknown size. Using getResponseBodyAsStream instead is recommended.
    2010.03.23 23:39:44 Going to buffer response body of large or unknown size. Using getResponseBodyAsStream instead is recommended.
    2010.03.23 23:42:41 Property 'provider.auth.className' as specified in openfire.xml differs from what is stored in the database.  Please make property changes in the database instead of openfire.xml.
    2010.03.23 23:42:41 Property 'provider.user.className' as specified in openfire.xml differs from what is stored in the database.  Please make property changes in the database instead of openfire.xml.
    可见,官方所说通过修改openfire.xml这个配置文件进行整合是不正确的。

    经测试,在mysql中执行以下代码,可以有效进行集成:
    ;//-----------------------------------------------------------------------------------------------------------
    UPDATE `openfire`.`ofProperty` SET propValue='org.jivesoftware.openfire.user.JDBCUserProvider' WHERE name='provider.user.className';
    UPDATE `openfire`.`ofProperty` SET propValue='org.jivesoftware.openfire.auth.JDBCAuthProvider' WHERE name='provider.auth.className';
    INSERT INTO `openfire`.`ofProperty` VALUES  ('jdbcProvider.driver','com.mysql.jdbc.Driver'),
    ('jdbcProvider.connectionString','jdbc:mysql://localhost:3306/test?user=admin&password=admin'),
    ('admin.authorizedJIDs','admin@localhost,test@localhost'),
    ('jdbcAuthProvider.passwordSQL','SELECT upass FROM user WHERE uname=?'),
    ('jdbcAuthProvider.passwordType','plain'),
    ('jdbcUserProvider.loadUserSQL','SELECT uname,email FROM user WHERE uname=?'),
    ('jdbcUserProvider.userCountSQL','SELECT COUNT(*) FROM user'),
    ('jdbcUserProvider.allUsersSQL','SELECT uname FROM user'),
    ('jdbcUserProvider.searchSQL','SELECT uname FROM user WHERE'),
    ('jdbcUserProvider.usernameField','uname'),
    ('jdbcUserProvider.nameField','uname'),
    ('jdbcUserProvider.emailField','email');
    ;//-----------------------------------------------------------------------------------------------------------
    若要继续整合用户组等信息,可以参考《Custom Database Integration Guide》,把相关属性添加到ofProperty数据表中。

  • 相关阅读:
    back-不忘初心,方得始终。讲讲我主场3个月的经历。题外话。
    js中event事件对象的兼容问题以及坐标属性-(clientX clientY;pageX,pageY,offsetX,offsetY)
    布局(左边的div随着右边div的高度变化而变化)
    事件委托如何实现的原理
    寄生组合式继承方法的实现以及原理总结
    封装判断一个字符的后缀名和前缀的方法
    经典的面试题如果不通过其他任何变量实现两个数值类型的变量互相更换值。
    【十次方基础教程(后台)】Dockerfile脚本完成镜像的构建
    【十次方基础教程(后台)】安装并启动RabbitMQ
    【十次方基础教程(后台)】docker下安装head插件来进行Elasticsearch的操作
  • 原文地址:https://www.cnblogs.com/IamThat/p/3093194.html
Copyright © 2011-2022 走看看