`
mwxx
  • 浏览: 12192 次
  • 性别: Icon_minigender_1
  • 来自: 山东
社区版块
存档分类
最新评论

Spring LDAP框架 从LDAP反向生成实体类SchemaToJava

阅读更多

如果还没有Spring LDAP 2.0的jar包,可以参考我的上一篇文章,自己编译Spring LDAP的jar包或直接用上篇文章附件中编译好的jar包。http://mwxx.iteye.com/blog/1997282

 

Spring LDAP支持以注解的方式声明实体类与LDAP节点的关系,并且提供了相关的示例项目。

像下面的Person类就是用注解方式声明的实体,本文中省略了import和get/set方法。

package org.springframework.ldap.samples.plain.domain;

import ...;

import javax.naming.Name;

/**
 * Simple class representing a single person.
 *
 * @author Mattias Hellborg Arthursson
 * @author Ulrik Sandberg
 */
@Entry(objectClasses = {"inetOrgPerson", "organizationalPerson", "person", "top"})
public class Person {
    @Id
    private Name dn;

    @Attribute(name = "cn")
    @DnAttribute(value = "cn", index = 2)
    private String fullName;

    @Attribute(name = "sn")
    private String lastName;

    @Attribute(name = "description")
    private String description;

    @Transient
    @DnAttribute(value = "c", index = 0)
    private String country;

    @Transient
    @DnAttribute(value = "ou", index = 1)
    private String company;

    @Attribute(name = "telephoneNumber")
    private String phone;

    getMethod...
    setMethod...

    public boolean equals(Object obj) {
        return EqualsBuilder.reflectionEquals(
                this, obj);
    }

    public int hashCode() {
        return HashCodeBuilder
                .reflectionHashCode(this);
    }

    public String toString() {
        return ToStringBuilder.reflectionToString(
                this, ToStringStyle.MULTI_LINE_STYLE);
    }
}

 

 

如果基于LDAP的应用有很多对象类型,并且每个对象类型又含有很多属性,难道就要一个一个的去创建实体类并增加属性和注解吗?

 

其实Spring LDAP框架已经给我们提供了一种便捷的方法。就是org.springframework.ldap.odm.tools包下的SchemaToJava.java类。

 

org.springframework.ldap.odm.tools包没有包含到Spring LDAP编译生成的jar包里,笔者是从Spring LDAP的源码中直接拿到自己项目里使用的。

 

这个包已经上传到附件了,下载解压把org目录复制到项目src下即可。

再把附件中的freemarker-2.3.19.jar以及commons-cli-1.2.jar两个jar包下载下来引用到项目中。

 

先在D盘创建ldap文件夹。

笔者自己写了一个工具类,配置好参数就可以调用SchemaToJava批量从LDAP反向生成Java实体类。

package com.mwxx.ldap.sample.prepare;

import java.util.ArrayList;
import java.util.List;

import org.springframework.ldap.odm.tools.SchemaToJava;

/**
 * 这个工具可以把LDAP中的各个节点转换成使用Spring-LDAP注解的实体类
 * 
 * @author MwXx
 * @version 1.0
 * @date 2013-12-30 13:51:34
 */
public class MwXxSchemaToJava {
	/** LDAP连接地址URL */
	private static final String url = "ldap://127.0.0.1:389";
	/** LDAP管理用户 */
	private static final String username = "cn=Directory Manager";
	/** LDAP管理用户的密码 */
	private static final String password = "password";
	/** 生成类的基础包路径 */
	private static final String basePackage = "com.mwxx.ldap.sample.module.";

	public static void main(String[] args) {
		List<String[]> list = new ArrayList<String[]>();
		// 主帐号
		list.add(new String[] { basePackage + "user.vo", "UserVo", "inetOrgPerson,organizationalPerson,person,top" });
		// 组织机构
		list.add(new String[] { basePackage + "organization.vo", "OrganizationVo", "organization,top" });
		// 用户组
		list.add(new String[] { basePackage + "group.vo", "GroupVo", "mwxx-group,top" });

		String tempDir = "D:\\ldap\\";

		for (String[] item : list) {
			String[] flags = new String[] {
					// 连接LDAP的URL
					"--url", url,
					// LDAP管理用户
					"--username", username,
					// LDAP管理用户的密码
					"--password", password,
					// 需要反向生成实体类的ObjectClass对象类型,多个可以用英文 ","号分割
					"--objectclasses", item[2],
					// 生成的实体类名
					"--class", item[1],
					// 生成的实体类包路径
					"--package", item[0],
					// 反向生成的输出目录
					"--outputdir", tempDir };
			SchemaToJava.main(flags);
		}
	}
}

 

执行完上面的代码后,D:\\ldap\\目录下就有生成的实体类了。

把D:\\ldap\\里的文件复制到项目src里面就可以使用啦!

 

参考文档:http://docs.spring.io/spring-ldap/docs/2.0.0.CI-SNAPSHOT/apidocs/

分享到:
评论

相关推荐

    RESTful-API后台系统架构设计(Java).doc

    在展现层,系统利用Spring MVC作为MVC框架,Java Server Pages (JSP)生成视图,ExtJS作为JavaScript UI组件库,Spring Security提供安全框架,Jackson负责JSON的生成和解析,而Jersey实现了JAX-RS 2.0规范,用于构建...

    从无到有搭建中小型互联网公司后台服务架构与运维架构

    - **Spring LDAP**: 用于与LDAP服务器交互的Spring模块。 - **Spring Data JPA**: 一种简化JPA(Java Persistence API)使用的Spring模块。 2. **项目管理工具** - **Maven**: 一个项目管理和综合工具,用于构建...

    从无到有搭建中小型互联网公司后台服务架构和运维架构

    - **Spring LDAP**:提供了一种简单的方式来访问LDAP目录服务器中的信息。 - **Spring Data JPA**:简化了基于JPA(Java Persistence API)的数据访问层。 2. **项目管理工具** - **Maven**:自动化构建工具,可...

    单点登录分析报告.pdf

    2. 100% Java实现,基于Spring框架,易于集成和扩展,并且可以与acegi(Spring权限控制)配合使用。 3. CAS Server作为一个独立部署的Web应用,负责用户认证。 4. CAS Client支持多种客户端,包括Java、.Net、PHP、...

    net.rar_Java企业门户网

    这些功能可能通过Spring框架实现业务逻辑,使用Hibernate或MyBatis进行数据持久化操作,而前端界面则可能由Struts2、JSF或Spring MVC等MVC模式的框架处理。除此之外,为了提升用户体验,可能会用到Ajax异步请求和...

    基于java语言开发的cas单点登录系统

    开发者需要具备扎实的Java基础,熟悉Spring Boot、Spring Cloud等相关框架,并对网络安全和系统运维有一定的了解。通过这样的系统,可以有效提升企业内部或面向公众的在线服务的安全性和便捷性。

    Linux下的学生选课管理系统

    后端通常使用如Python的Django或Flask框架,或者Java的Spring Boot等,这些框架支持快速开发并提供丰富的库和功能。服务器端处理HTTP请求,执行业务逻辑,并与数据库交互。 4. **数据库管理**: 数据存储通常使用...

    nexus2artifactory:NexusToArtifactory - 旨在简化从 Sonatype Nexus 迁移到 JFrog Artifactory 的工具

    LDAP 配置 请注意,由于 Artifactory OSS 中 REST API 的限制,此工具只能迁移到获得许可的 Artifactory 发行版(Pro、Enterprise 等)。 它不适用于免费发行版(OSS、CE 等)。 安装 该工具通过从磁盘读取 Nexus ...

    单点登入--CAS3.0

    - **登录**:用户在CAS服务器上输入凭证,如果验证成功,CAS服务器生成服务票据(ST)。 - **服务验证**:用户被重定向回应用A,并携带服务票据。应用A向CAS服务器发送服务票据进行验证。 - **授权**:CAS服务器...

    icinga2:Icinga2的Ansible部署

    在Ansible部署过程中,需要确保Nginx或Apache等Web服务器安装并配置为反向代理,指向Icinga2的API端点。此外,还需要设置正确的认证机制,如使用HTTP Basic Auth或LDAP集成。 五、持续监控与优化 部署完成后,你...

Global site tag (gtag.js) - Google Analytics