注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

欢迎光临我的博客

 
 
 

日志

 
 

在IDM中管理Postgres数据库  

2008-01-15 17:29:00|  分类: 数据库 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

在IDM中管理Postgres数据库

在IDM中管理Postgres数据库

在IDM中管理Postgres数据库 - lsxblog - 欢迎光临我的博客 Print-friendly Version

By Benny.Luo@Sun.com, 6/19/07  

在IDM中管理Postgres数据库 - lsxblog - 欢迎光临我的博客

SUN中国软件技术中心

罗浩/Benny Luo

简介:

Sun Identity Manager是Sun公司非常著名的一个身份管理软件 (以下简称IDM),它通过映射Sun IDM里面的虚拟用户到各种受管理的资源, 比如Solaris操作系统,Oracle数据库里面相应的用户,实现统一的日常事物管理,比如密码统一改变,数据同步等等。

大家可以参照<<使用Sun Identity Manager 来实现多种系统上的统一用户身份管理>>这篇文章,里面对Sun IDM有非常详细的介绍。

我们今天想做的实验是在IDM里面加入原来没有列出的数据库资源进行管理,Sun IDM可以管理的数据库资源目前有Oracle, DB2, SQL server, Sybase, Mysql,对其他的数据库没有写出官方支持,但如果客户的应用有自己的数据库,比如Informix或者Postgres, 也想使用我们的IDM来做统一管理,那应该怎么办呢?下面我们就来做这样的实验。

本来希望做Informix的文档,但下载Informix的Solaris安装文件似乎比较困难,所以选择了Postgres数据库。

实验过程:

我的实验是在Sun Blade 1500上做的,所有的系统都装在这台机器上,包括Postgres, Sun application server, IDM, mysql, 运行的是Solaris 10操作系统。

  1. 首先我们搭建Sun IDM环境,这里在<<使用Sun Identity Manager 来实现多种系统上的统一用户身份管理>>文章中有详细介绍,这里就不再重复。& lt; /li>
  2. 然后在Sun Blade 1500上安装和启动Postgres数据库,下面是简要过程。
  1. http://www.postgresql.org/ftp/source/v8.2.4/下载8.2.4源文件。< /li>
  2. Ftp 到 Sun Blade 1500上的/export/home/postgres
  3. bunzip2 postgresql-8.2.4.tar.bz2
  4. tar xvf postgresql-8.2.4.tar
  5. 使用gcc编译器

    vi /.profile

    PATH=$PATH:/usr/sbin:/usr/bin:/opt/gcc/bin:/usr/ccs/bin

    export PATH

  6. make install
  7. useradd -d /usr/local/pgsql/data postgres
  8. mkdir /usr/local/pgsql/data
  9. chown postgres /usr/local/pgsql/data
  10. su – postgres
以postgres用户执行:

  1. export LANG=C
  2. usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data
  3. /usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data &
至此Postgres数据库安装完毕。

  1. 测试JDBC驱动让Java程序可连接到Postgres数据库。
  1. 在http://jdbc.postgresql.org/download.html下载最新的JDBC Driver,我用的是 JDK5.0,所以选择JDBC 3 – postgresql-8.2-505.jdbc3.jar.
  2. Ftp 到sun Blade 1500的/export/home/idm-test
  3. su – postgres
  4. /usr/local/pgsql/bin/psql
  5. 将以下的sql命令在postgres数据库敲入生成测试表, 并且加入一条数据为测试和 IDM管理做准备。

    CREATE TABLE usertest

    (

    Uid bigserial NOT NULL ,

    Name varchar ( 30 ),

    Password varchar (30),

    CONSTRAINT usertest_pkey PRIMARY KEY (Uid)

    );

    ALTER TABLE usertest OWNER TO postgres;

    INSERT INTO usertest values (1, 'benny', 'benny');

  6. 加入Postgres的一个超级用户为Java测试程序和IDM后期操作做准备, 用户名和密码都为idm.

    /usr/local/pgsql/bin/createuser -P -s -e idm

    Enter password for new role:

    Enter it again:

    CREATE ROLE idm PASSWORD 'md5a7166168adf400148b59b7b7e0825466'

    SUPERUSER CREATEDB CREATEROLE INHERIT LOGIN;

    CREATE ROLE

  7. su - root
  8. cd /export/home/idm-test
  9. vi Test.java

    import org.postgresql. * ;

    import java.sql. * ;

    public class Test {

         public Test() {

          }

    public static void main(String args[])

    {

          try

          {

              Class.forName("org.postgresql.Driver").newInstance();

              String url = "jdbc:postgresql://localhost:5432/postgres" ;

              Connection con = DriverManager.getConnection(url, "idm" , "idm" );

              Statement st = con.createStatement();

              String sql = " select * from usertest " ;

              ResultSet rs = st.executeQuery(sql);

              while (rs.next())

              {

                   System.out.println(rs.getInt( 1 ));

                   System.out.println(rs.getString( 2 ));

              }

              rs.close();

              st.close();

              con.close();

           }

           catch (Exception ee)

           {

              ee.printStackTrace();

           }

       }

    }

  10. javac -classpath ./postgresql-8.2-505.jdbc3.jar -d . Test.java
  11. java -cp ./postgresql-8.2-505.jdbc3.jar:./ Test

    结果如下:

    1

    benny

  12. 至此,Postgres数据库测试已经完成,包括了验证Postgres可以正常操作,JDBC驱动可以正常连接,而 JDBC的驱动在后面是要加入到IDM里面以让IDM可以连接到Postgres数据库,所以验证JDBC的驱动正确性是必要的。
  1. 然后我们启动IDM,看看目前我们所支持的管理资源数据库品种。我的IDM是装在mysql和Sun application server的基础上的。
  1. /etc/init.d/mysql start
  2. /opt/SUNWappserver/bin/asadmin start-domain --user admin domain1
  3. 登陆到IDM界面

    在IDM中管理Postgres数据库 - lsxblog - 欢迎光临我的博客

  4. 当我们选择New database resource时我们只能看到五种数据库,具体选择资源步骤请参看<<使用Sun Identity Manager 来实现多种系统上的统一用户身份管理>>文档或者Sun网站上的IDM管理文档,这里不再重复。结果如下图所示:

    在IDM中管理Postgres数据库 - lsxblog - 欢迎光临我的博客

    我们可以看到目前只有五种数据库可供管理,但没有Postgres可以选择,下面来看看如何把它添加进去。

  1. 添加Postgres数据库管理资源的步骤:
  1. 首先先要把JDBC驱动程序的库文件放到IDM里面,让IDM运行时候能够找到 Postgres的JDBC驱动程序。我的IDM是装在系统的根目录下的/idm目录。

    i. cp /export/home/idm-test/postgresql-8.2-505.jdbc3.jar /idm/WEB-INF/lib/

  2. 然后找到/idm/WEB-INF/lib/idmclient.jar库文件,这里面包含了两个class文件我们需要用到,一个是 com/waveset/ui/web/resources/wizard/DBTypes.class, 另一个是 com/waveset/ui/web/resources/wizard/DBTypes$DBType.class, DBTypes$DBType.class是DBTypes.class文件衍生出来的静态class文件,而 DBTypes.class里面定义了IDM目前所支持的数据库和相应的特性。
  3. 用网上流行的DJ Java Complier软件把class文件反编译成Java文件。
  4. 在反编译完的 DBTypes.java文件里面的数据库定义里加入一行,如下所示:

    private static DBType dbTypeList[];

    static

    {

        ArrayList dbTypes = new ArrayList();

        dbTypes.add(new DBType("Oracle", "oracle.jdbc.driver.OracleDriver","jdbc:oracle:thin:@%h:%p:%d", "1521"));

        dbTypes.add(new DBType("MySQL", "org.gjt.mm.mysql.Driver","jdbc:mysql://%h:%p/%d", "3306"));

        dbTypes.add(new DBType("Sybase", "com.sybase.jdbc2.jdbc.SybDriver","jdbc:sybase:Tds:%h:%p/%d", "2638"));

        dbTypes.add(new DBType("DB2", "COM.ibm.db2.jdbc.net.DB2Driver","jdbc:db2://%h:%p/%d", "6789"));

        dbTypes.add(new DBType("Postgres", "org.postgresql.Driver","jdbc:postgresql://%h:%p/%d", "5432"));

        dbTypes.add(new DBType("SQL Server","com.microsoft.jdbc.sqlserver.SQLServerDriver","jdbc:microsoft:sqlserver://%h:%p;DatabaseName=%d;SelectMethod=Cursor", "1433"));

        dbTypeList = (DBType[])dbTypes.toArray(new DBType[dbTypes.size()]);

    }

  5. 并且把 DBTypes$DBType.java的代码加入到 DBTypes.java中去以便顺利地编译。整个修改好的代码我用附件附上,大家可以参考一下。
  6. 改好后,我们进行编译并把它更新到idmclient.jar中去。

    1. javac -d . -cp /idm/WEB-INF/lib/idmclient.jar DBTypes.java
    2. cp /idm/WEB-INF/lib/idmclient.jar /idm/WEB-INF/lib/idmclient.jar.bak
    3. jar uvf /idm/WEB-INF/lib/idmclient.jar ./
    结果如下图:

    在IDM中管理Postgres数据库 - lsxblog - 欢迎光临我的博客

  7. 重新Deploy IDM应用并且启动。

    在IDM中管理Postgres数据库 - lsxblog - 欢迎光临我的博客

  8. 重新登陆到IDM看看是否已经加入Postgres的数据库管理资源。

    在IDM中管理Postgres数据库 - lsxblog - 欢迎光临我的博客

    至此,我们可以看到Postgres数据库已经在数据库管理资源里面,并且有一些预设的属性在各个文本框里。

  1. 现在我们来测试一下Postgres是否能和IDM顺利结合并且正常工作。我们选择使用 Solaris OS操作系统和Postgres数据库做统一管理的资源。
  1. 建立 Sun Blade 1500上的Postgres管理资源以及需要管理的表。

    在IDM中管理Postgres数据库 - lsxblog - 欢迎光临我的博客

  2. 选择之前建立的Usertest表.

    在IDM中管理Postgres数据库 - lsxblog - 欢迎光临我的博客

  3. 选择Name为Key Column, Password为Password Column, UID为Managed Columns.

    在IDM中管理Postgres数据库 - lsxblog - 欢迎光临我的博客

  4. 定义我们所需要管理的从 IDM到Postgres资源属性。

    在IDM中管理Postgres数据库 - lsxblog - 欢迎光临我的博客

  5. 其他的只需按默认值即可。
  6. 建立 Solaris系统的资源,在这里我们选择另一台X4200机器,同样是Solaris 10 U3的操作系统,IP为129.158.163.234。

    在IDM中管理Postgres数据库 - lsxblog - 欢迎光临我的博客

  7. 最后生成两个管理资源,结果如下:

    在IDM中管理Postgres数据库 - lsxblog - 欢迎光临我的博客

  8. 按照<<使用Sun Identity Manager 来实现多种系统上的统一用户身份管理>>文中步骤建立一个新的用户bennyluo, 密码也是bennyluo,并把它分配给已经建立好的 Postgres和Solaris OS资源。

    在IDM中管理Postgres数据库 - lsxblog - 欢迎光临我的博客

    在IDM中管理Postgres数据库 - lsxblog - 欢迎光临我的博客

  9. 我们可以看到生成的成功的结果。

    在IDM中管理Postgres数据库 - lsxblog - 欢迎光临我的博客

  10. 然后我们分别到Postgres数据库和Solaris操作系统检查帐户是否已经生成。

    在IDM中管理Postgres数据库 - lsxblog - 欢迎光临我的博客

    在IDM中管理Postgres数据库 - lsxblog - 欢迎光临我的博客

  11. 至此,整个实验顺利结束。

小结:

本文在对Sun Identity Manager基本的概念介绍和用法讲述的基础上,扩展了目前在Sun Identity Manager里面所没有列举和涉及到,但在生活中比较常见的一些资源管理。其实Sun Identity Manager简单来说就是用Java开发的应用程序, 只要我们用一些空闲时间去看里面的代码,相信大家都很快能够掌握 Sun Identity Manager, 并且柔韧自如地开发自己的IDM里面的Resource资源。

推荐资料:

Sun官方文档:

http://docs.sun.com/app/docs/prod/ident.mgr#hic

http://docs.sun.com/app/docs/prod/ident.mgr?l=zh#hic

文档资料:

http://developers.sun.com.cn/home/export/sites/default/home/ISVs/docs/docs/IdentityManager.html

http://developers.sun.com.cn/home/export/sites/default/home/ISVs/docs/docs/RBAC_Identity_Manager.html

  评论这张
 
阅读(677)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017