`
jacally
  • 浏览: 775897 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Novell ldap开发组件实例: ModifyAttrs.java

    博客分类:
  • JAVA
阅读更多
http://developer.novell.com/documentation/jldap/jldapenu/api/com/novell/ldap/LDAPModification.html

java 代码
  1. //Sample code file: var/ndk/webBuildengine/tmp/viewable_samples/f91a68eb-ad37-4526-92b1-b1938f37b871/ModifyAttrs.java  
  2. //Warning: This code has been marked up for HTML  
  3.   
  4. /******************************************************************************* 
  5.  * $Novell: ModifyAttrs.java,v 1.21 2003/08/21 11:35:10 $ 
  6.  * Copyright (C) 1999, 2000, 2001 Novell, Inc. All Rights Reserved. 
  7.  * 
  8.  * THIS WORK IS SUBJECT TO U.S. AND INTERNATIONAL COPYRIGHT LAWS AND 
  9.  * TREATIES. USE AND REDISTRIBUTION OF THIS WORK IS SUBJECT TO THE LICENSE 
  10.  * AGREEMENT ACCOMPANYING THE SOFTWARE DEVELOPMENT KIT (SDK) THAT CONTAINS 
  11.  * THIS WORK. PURSUANT TO THE SDK LICENSE AGREEMENT, NOVELL HEREBY GRANTS TO 
  12.  * DEVELOPER A ROYALTY-FREE, NON-EXCLUSIVE LICENSE TO INCLUDE NOVELL'S SAMPLE 
  13.  * CODE IN ITS PRODUCT. NOVELL GRANTS DEVELOPER WORLDWIDE DISTRIBUTION RIGHTS 
  14.  * TO MARKET, DISTRIBUTE, OR SELL NOVELL'S SAMPLE CODE AS A COMPONENT OF 
  15.  * DEVELOPER'S PRODUCTS. NOVELL SHALL HAVE NO OBLIGATIONS TO DEVELOPER OR 
  16.  * DEVELOPER'S CUSTOMERS WITH RESPECT TO THIS CODE. 
  17.  * 
  18.  * $name:         ModifyAttrs.java 
  19.  * 
  20.  * $description:  The ModifyAttrs example modifies the attributes of an entry. 
  21.  *                It also demonstrates the use of an ArrayList to store 
  22.  *                and indeterminate number of of modifications. 
  23.  ******************************************************************************/  
  24.   
  25. import com.novell.ldap.*;  
  26.   
  27. import java.util.Date;  
  28.   
  29. import java.util.ArrayList;  
  30.   
  31. import java.io.UnsupportedEncodingException;  
  32.   
  33.   
  34.   
  35. public class ModifyAttrs   
  36.   
  37. {  
  38.   
  39.     public static void main( String[] args )   
  40.   
  41.     {          
  42.   
  43.         int returnCode = 0;  
  44.   
  45.         if (args.length != 4) {  
  46.   
  47.             System.err.println("Usage:   java ModifyAttrs   
  48.   
  49.                              + ");  
  50.   
  51.             System.err.println("Example: java ModifyAttrs Acme.com "  
  52.   
  53.                              + "\"cn=Admin,o=Acme\" secret\n"  
  54.   
  55.                              + "         \"cn=JSmith,ou=Sales,o=Acme\"");  
  56.   
  57.             System.exit(1);  
  58.   
  59.         }  
  60.   
  61.   
  62.   
  63.         int ldapPort  = LDAPConnection.DEFAULT_PORT;  
  64.   
  65.         int ldapVersion  = LDAPConnection.LDAP_V3;          
  66.   
  67.         Date currentDate = new Date();  
  68.   
  69.         String ldapHost = args[0];  
  70.   
  71.         String loginDN  = args[1];  
  72.   
  73.         String password = args[2];  
  74.   
  75.         String dn = args[3];  
  76.   
  77.         LDAPConnection lc = new LDAPConnection();  
  78.   
  79.         ArrayList modList = new ArrayList();  
  80.   
  81.   
  82.   
  83.         /* To add a new value to an attribute (creates attribute if necessary) 
  84.          *     -- Specify the dn of the entry to modify 
  85.          *     -- Specify the attribute and value to add 
  86.          *     -- Specify the add modification type 
  87.          *     -- Add modification to the modification array 
  88.          *     -- Call LDAPConnection modify() method 
  89.         /* To replace values of an attribute (creates attribute if necessary) 
  90.          *     -- Specify the dn of the entry to modify 
  91.          *     -- Specify the attribute and new values to replace the old ones 
  92.          *     -- Specify the replace modification type 
  93.          *     -- Add modification to the modification array 
  94.          *     -- Call LDAPConnection modify() method 
  95.         /* To delete or modify a single attribute value 
  96.          *     -- Specify the dn of the entry to modify 
  97.          *     -- Specify the attribute and value to be modified 
  98.          *     -- Specify the delete modification type 
  99.          *     -- Add modification to the modification array 
  100.          * --  To add a new value in place of the one we just deleted 
  101.          *     -- Specify the same attribute and new its value 
  102.          *     -- Specify the add modification type 
  103.          *     -- Add modification to the modification array 
  104.          *     -- Call LDAPConnection modify() method 
  105.          */  
  106.   
  107.         String desc =  
  108.   
  109.             "This object was modified at " + new Date( currentDate.getTime());  
  110.   
  111.        // Add a new value to the description attribute  
  112.   
  113.   
  114.         LDAPAttribute attribute = new LDAPAttribute( "description", desc);  
  115.   
  116.         modList.add( new LDAPModification(LDAPModification.ADD, attribute));  
  117.   
  118.   
  119.   
  120.        // Replace all values the E-mail address with a new value  
  121.   
  122.   
  123.         String email = "James_Smith@Acme.com";  
  124.   
  125.         attribute = new LDAPAttribute( "mail", email);  
  126.   
  127.         modList.add( new LDAPModification(LDAPModification.REPLACE, attribute));  
  128.   
  129.   
  130.   
  131.        // Change the phone number  
  132.   
  133.   
  134.        //  First we delete the old phone number  
  135.   
  136.   
  137.         String phone1= "1 801 555 1212";  
  138.   
  139.         attribute= new LDAPAttribute( "telephoneNumber", phone1);  
  140.   
  141.         modList.add( new LDAPModification(LDAPModification.DELETE, attribute));  
  142.   
  143.   
  144.   
  145.        //  Now we add the new phone number  
  146.   
  147.   
  148.         String phone2 = "1 423 555 1212";  
  149.   
  150.         attribute= new LDAPAttribute( "telephoneNumber", phone2);  
  151.   
  152.         modList.add( new LDAPModification(LDAPModification.ADD, attribute));  
  153.   
  154.   
  155.   
  156.         LDAPModification[] mods = new LDAPModification[modList.size()];   
  157.   
  158.         mods = (LDAPModification[])modList.toArray(mods);  
  159.   
  160.         
  161.   
  162.         try {  
  163.   
  164.            // connect to the server  
  165.   
  166.   
  167.             lc.connect( ldapHost, ldapPort);  
  168.   
  169.            // bind to the server  
  170.   
  171.   
  172.             lc.bind( ldapVersion, loginDN, password.getBytes("UTF8") );  
  173.   
  174.               
  175.   
  176.            // Add a known phone number value so we have something to change  
  177.   
  178.   
  179.             lc.modify( dn, new LDAPModification(  
  180.   
  181.                     LDAPModification.ADD,  
  182.   
  183.                     new LDAPAttribute( "telephoneNumber""1 801 555 1212")));  
  184.   
  185.         } catch( LDAPException e1) {  
  186.   
  187.            // If phonenumber value already exists, just go on,  
  188.   
  189.   
  190.            //      otherwise it's an error  
  191.   
  192.   
  193.             if( e1.getResultCode() != LDAPException.ATTRIBUTE_OR_VALUE_EXISTS) {  
  194.   
  195.                 System.out.println("Cannot create attribute: " + e1.toString());  
  196.   
  197.                 System.exit(1);  
  198.   
  199.             }  
  200.   
  201.         }  
  202.   
  203.         catch( UnsupportedEncodingException e ) {  
  204.   
  205.             System.out.println( "Error: " + e.toString() );  
  206.   
  207.         }  
  208.   
  209.               
  210.   
  211.        // Note: All the above modifications will be performed as an atomic  
  212.   
  213.   
  214.        // unit, if all do not succeed, the operation fails and the  
  215.   
  216.   
  217.        // directory is unchanged by this operation.  
  218.   
  219.   
  220.         try {  
  221.   
  222.             lc.modify( dn, mods);  
  223.   
  224.             System.out.println(  
  225.   
  226.                         "Successfully modified the attributes of the entry." );  
  227.   
  228.         } catch( LDAPException e2 ) {  
  229.   
  230.            // Tell what happened  
  231.   
  232.   
  233.             System.err.println( "Error: " + e2.toString() );  
  234.   
  235.               
  236.   
  237.            // Indicate the operation failed  
  238.   
  239.   
  240.             returnCode = 1;  
  241.   
  242.               
  243.   
  244.            // Didn't change the directory, delete initial phone number value  
  245.   
  246.   
  247.             try {  
  248.   
  249.                 lc.modify( dn, new LDAPModification( LDAPModification.DELETE,  
  250.   
  251.                                new LDAPAttribute( "telephoneNumber", phone1)));  
  252.   
  253.             } catch( Exception e) {  
  254.   
  255.                // ignore  
  256.   
  257.   
  258.             }  
  259.   
  260.         } finally {  
  261.   
  262.             if( returnCode == 0) {  
  263.   
  264.                 try {  
  265.   
  266.                    // Cleanup - get rid of the updated description, mail,  
  267.   
  268.   
  269.                    //           and telephone attribute values  
  270.   
  271.   
  272.                    // We delete only those values that we added.  If the  
  273.   
  274.   
  275.                    // value deleted is the only value of the respective  
  276.   
  277.   
  278.                    // attribute, then the attribute is deleted.  
  279.   
  280.   
  281.                     modList.clear();  
  282.   
  283.                     modList.add(new LDAPModification( LDAPModification.DELETE,  
  284.   
  285.                                 new LDAPAttribute( "description", desc)));  
  286.   
  287.                     modList.add(new LDAPModification( LDAPModification.DELETE,  
  288.   
  289.                                 new LDAPAttribute( "mail", email)));  
  290.   
  291.                     modList.add(new LDAPModification( LDAPModification.DELETE,  
  292.   
  293.                                 new LDAPAttribute( "telephoneNumber", phone2)));  
  294.   
  295.                     mods = new LDAPModification[modList.size()];   
  296.   
  297.                     mods = (LDAPModification[])modList.toArray(mods);  
  298.   
  299.                     lc.modify( dn, mods);  
  300.   
  301.                 } catch( Exception e) {  
  302.   
  303.                    // ignore  
  304.   
  305.   
  306.                 }  
  307.   
  308.             }  
  309.   
  310.            // Always disconnect  
  311.   
  312.   
  313.             try {  
  314.   
  315.                 lc.disconnect();  
  316.   
  317.             } catch( Exception e) {  
  318.   
  319.                // ignore  
  320.   
  321.   
  322.             }  
  323.   
  324.         }   
  325.   
  326.         System.exit(returnCode);  
  327.   
  328.     }  
  329.   
  330. }  
分享到:
评论

相关推荐

    清华大学DeepSeek从入门到精通(视频课程+PDF)

    【清华大学】DeepSeek从入门到精通(视频课程+PDF)

    更新-“双高计划”专业群完整申报书与建设方案/中期评估报告

    自2019年以来,教育部启动实施“双高计划”,遴选确定首批“双高计划”建设单位197所,其中高水平学校建设单位56所,高水平专业群建设单位141所,河南省有黄河水利职业技术学院、河南工业职业技术学院等6所职业学校入选。2022年,教育部开展国家“双高计划”中期绩效评价,从评价结果看,国家“双高计划”任务进展顺利,建设成效突出,形成了一批先进经验做法和典型案例,在引领职业教育改革、服务国家战略和支撑区域发展方面形成示范势头。 今天,我们给大家分享一些“双高计划”专业群完整申报书与建设方案和中期评估报告。 ## 一、专业群完整申报书与建设方案 ## 二、“双高计划”中期报告 (100多份)

    电子商务平台秒杀系统减库存设计的核心逻辑与优化策略解析

    内容概要:本文详细探讨了电商平台上秒杀系统中减库存的设计逻辑和技术优化方法。首先,文中阐述了‘下单减库存’、‘付款减库存’和‘预扣库存’三种常见方式及其各自面临的问题和局限性,尤其是面对高并发流量冲击下的系统稳定性与数据准确性保障挑战。接着讨论了适用于大规模促销活动中快速而精准地扣除存货的方法,提出了诸如应用本地缓存(Local Cache)、引入高性能持久化键值存储(如Redis),甚至修改数据库引擎源代码(InnoDB 层面排队机制)等一系列先进解决方案来确保交易流程顺畅。此外,还提到了在极端情况发生(例如超卖)时如何借助补救措施挽回损失的具体实例。 适合人群:电商平台开发运维技术人员;有兴趣深入了解电商业务架构和技术优化的开发者和IT管理人员。 使用场景及目标:①帮助设计师理解不同减库存策略的应用时机及其利弊;②指导程序员针对特定业务需求选择最适合的技术路径进行项目构建;③提供给运维专家关于改善在线交易平台响应速度和服务质量的专业见解。 其他说明:本篇文章对于构建高效的电子商贸系统有着极高的参考价值,尤其是那些准备应对瞬息万变市场环境下的企业来说尤为重要。它不仅限于理论探讨层面,

    动态表单,VUE动态表单 基于vue+elementplus实现动态表单组件,通过拖拽组件到面板即可实现一个表单 支持各个组件的动态隐藏显示,动态表格弹窗式维护

    动态表单,VUE动态表单。基于vue+elementplus实现动态表单组件,通过拖拽组件到面板即可实现一个表单。支持各个组件的动态隐藏显示,动态表格弹窗式维护。

    【毕业设计】java-springboot-vue家居日用小百货交易网站实现源码(完整前后端+mysql+说明文档+LunW).zip

    【毕业设计】java-springboot-vue家居日用小百货交易网站实现源码(完整前后端+mysql+说明文档+LunW).zip

    【毕业设计】java-springboot+vue火锅店管理系统源码(完整前后端+mysql+说明文档+LunW).zip

    【毕业设计】java-springboot+vue火锅店管理系统源码(完整前后端+mysql+说明文档+LunW).zip

    基于springboot+vue的在线教育系统设计与实现(LW+PPT).zip

    随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本文介绍了微服务在线教育系统的开发全过程。通过分析微服务在线教育系统管理的不足,创建了一个计算机管理微服务在线教育系统的方案。文章介绍了微服务在线教育系统的系统分析部分,包括可行性分析等,系统设计部分主要介绍了系统功能设计和数据库设计。 本微服务在线教育系统有管理员,用户两个角色。管理员功能有个人中心,用户管理,课程信息管理,课程类型管理,学科管理,购买的课程管理,职业规划管理,视频点播管理,我的笔记管理,我的课程管理,消息通知管理,学习交流,试卷管理,留言板管理,试题管理,系统管理,考试管理。用户功能有个人中心,用户管理,购买的课程管理,我的笔记管理,我的课程管理,消息通知管理。因而具有一定的实用性。 本站是一个B/S模式系统,采用SSM框架,MYSQL数据库设计开发,充分保证系统的稳定性。系统具有界面清晰、操作简单,功能齐全的特点,使得微服务在线教育系统管理工作系统化、规范化。本系统的使用使管理人员从繁重的工作中解脱出来,实现无纸化办公,能够有效的提高微服务在线教育系统管理效率。 关键词:微服务在线教育系统;SSM框架;MYSQL数据库;Spring Boot

    基于Javascript实现,强化学习QLearning的一个贪吃蛇实例

    javascript 基于Javascript实现,强化学习QLearning的一个贪吃蛇实例.

    编程挑战_Chef卡牌游戏_学习资源_技能提升_1741399339.zip

    python教程学习

    基于springboot+vueIT技术交流和分享平台的设计与实现(LW).zip

    我国科学技术的不断发展,计算机的应用日渐成熟,其强大的功能给人们留下深刻的印象,它已经应用到了人类社会的各个层次的领域,发挥着重要的不可替换的作用。信息管理作为计算机应用的一部分,使用计算机进行管理,具有非常明显的优点,利用网络的优势特开发了本基于Spring Boot的IT技术交流和分享平台。 本IT技术交流和分享平台是基于Spring Boot框架,采用Java技术,MYSQL数据库进行开发的。系统具有灵活的一体化设计方式,圆满完成了整个系统的界面设计。本系统实现了用户功能模块和管理员功能模块两大部分,通过该系统用户可以快速进行IT技术交流和分享,管理员可登录系统后台对系统进行全面管理,确保系统正常稳定的运行。系统功能齐全,符合用户IT技术交流和分享的需求。 本文主要首先介绍了课题背景、设计原则和研究内容,系统采用的相关技术及开发平台,接着对本基于Spring Boot的IT技术交流和分享平台进行系统需求分析和设计,包括系统的功能模块,数据库的设计,系统结构以及系统界面设计等,最后对进行系统测试,完成本篇论文。 关键词:IT技术交流, Spring Boot框架, Java技术,MYSQL数据库

    疲劳检测yawn图片数据集

    疲劳检测yawn图片数据集

    JDK7通过java-jwt验证

    JDK7通过java-jwt验证

    【毕业设计】java-springboot+vue会议管理系统实现源码(完整前后端+mysql+说明文档+LunW).zip

    【毕业设计】java-springboot+vue会议管理系统实现源码(完整前后端+mysql+说明文档+LunW).zip

    sksalahuddin2828_Python_1741398999.zip

    python学习资源

    51CTO 1、技术解析篇-DeepSeek入门宝典 2、开发实战篇-DeepSeek入门宝典 3、行业应用篇-DeepSeek入门宝典 4、个人使用篇-DeepSeek入门宝典

    51CTO 1、技术解析篇-DeepSeek入门宝典 2、开发实战篇-DeepSeek入门宝典 3、行业应用篇-DeepSeek入门宝典 4、个人使用篇-DeepSeek入门宝典

    机器学习与模式识别领域的PRML习题解析手册

    内容概要:本文档是由高正奇编辑的针对模式识别和机器学习(PRML)教科书的一份详细的解答手册。文档覆盖了从基本概念如误差函数求导、贝叶斯定理应用到多元高斯分布计算、Gamma函数积分及其性质等一系列复杂问题的解决方案,以及涉及线性模型分类的基础练习题、条件概率和联合概率计算等入门级习题。每一题都经过细致推导,帮助学生加深对机器学习相关概念的理解并掌握具体的数学方法。 适合人群:主要适用于正在攻读机器学习、模式识别相关课程的学生,以及从事数据科学工作的专业人士作为深入理解和实践指南。 使用场景及目标:本手册旨在辅助教学过程中遇到的具体难题解析,在研究和实践中作为参考资料进行理论验证和技术难点突破,尤其有助于准备考试或者项目实施时需要巩固知识的应用场合。 其他说明:书中题目涵盖广泛,既有直观的概率论应用,也有复杂的积分变换技巧和最优化思路展示,对于希望提高自身计算能力和解决实际问题能力的学习者非常有价值。但要注意的是,部分内容较为深奥,可能不适合初学者自学使用,最好配合课堂讲解或其他教材一起学习效果更佳。

    编程语言_Python_入门之旅_教程_1741403040.zip

    python学习资源

    RFID-MATLAB的高等数学-CH06.rar

    RFID-MATLAB的高等数学-CH06.rar

    spaceX Ship Flight Test 8

    spaceX 动力学分析

    基于springboot+vue的美容院管理系统(LW).zip

    如今的信息时代,对信息的共享性,信息的流通性有着较高要求,因此传统管理方式就不适合。为了让美容院信息的管理模式进行升级,也为了更好的维护美容院信息,美容院管理系统的开发运用就显得很有必要。并且通过开发美容院管理系统,不仅可以让所学的SpringBoot框架得到实际运用,也可以掌握MySQL的使用方法,对自身编程能力也有一个检验和提升的过程。尤其是通过实践,可以对系统的开发流程加深印象,无论是前期的分析与设计,还是后期的编码测试等环节,都可以有一个深刻的了解。 美容院管理系统根据调研,确定其实现的功能主要包括美容用品管理,美容项目管理,美容部位管理,销量信息管理,订单管理,美容项目预约信息管理等功能。 借助于美容院管理系统这样的工具,让信息系统化,流程化,规范化是最终的发展结果,让其遵循实际操作流程的情况下,对美容院信息实施规范化处理,让美容院信息通过电子的方式进行保存,无论是管理人员检索美容院信息,维护美容院信息都可以便利化操作,真正缩短信息处理时间,节省人力和信息管理的成本。 关键字:美容院管理系统,SpringBoot框架,MySQL

Global site tag (gtag.js) - Google Analytics