Here is an example, I did it with RC3 here are the steps (as far as I could
recollect)
- Download apacheds1.0-RC3
- create a custom schema file myschema.schema
#================= begin myschema.schema =============================
# define myschemaOrgPerson -- extends InetOrgPerson
# define myschemaOrganizationalUnit -- extends organizationalUnit
#================================================================
# myschema 94555
# AttributeTypes 94555.2.1
# Object Classes 94555.2.2
#
attributetype ( 94555.2.1.1
NAME 'dateCreated'
DESC 'dateCreated'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
attributetype ( 94555.2.1.2
NAME 'dateModified'
DESC 'dateModified'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
attributetype ( 94555.2.1.3
NAME 'dateCodeGenerated'
DESC 'dateCodeGenerated'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
attributetype ( 94555.2.1.4
NAME 'dateActivated'
DESC 'dateActivated'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
attributetype ( 94555.2.1.5
NAME 'codeFlag'
DESC 'codeFlag'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
attributetype ( 94555.2.1.6
NAME 'activeFlag'
DESC 'activeFlag'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
attributetype ( 94555.2.1.7
NAME 'employeeType'
DESC 'employeeType'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
attributetype ( 94555.2.1.8
NAME 'companyURL'
DESC 'companyURL'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
attributetype ( 94555.2.1.9
NAME 'selfRegAllowed'
DESC 'selfRegAllowed'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
attributetype ( 94555.2.1.10
NAME 'protected'
DESC 'protected'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
attributetype ( 94555.2.1.11
NAME 'serviceType'
DESC 'serviceType'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
attributetype ( 94555.2.1.12
NAME 'domainKey'
DESC 'domainKey'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
attributetype ( 94555.2.1.13
NAME 'autoActivationAllowed'
DESC 'autoActivationAllowed'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
attributetype ( 94555.2.1.14
NAME 'companyName'
DESC 'companyName'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
attributetype ( 94555.2.1.15
NAME 'city'
DESC 'city'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
attributetype ( 94555.2.1.16
NAME 'state'
DESC 'state'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
attributetype ( 94555.2.1.17
NAME 'countryname'
DESC 'countryname'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
# myschemaOrgPerson
# The inetOrgPerson represents people who are associated with an
# organization in some way. It is a structural class and is derived
# from the organizationalPerson which is defined in X.521 [X521].
objectclass ( 94555.2.2.1
NAME 'myschemaOrgPerson'
DESC 'myschema Organizational Person'
SUP inetOrgPerson
STRUCTURAL
MAY (
dateCreated $ dateCodeGenerated $ employeeType $ dateModified $
activeFlag $ codeFlag )
)
objectclass ( 94555.2.2.2 NAME 'myschemaOrganizationalUnit'
DESC 'myschemaOrganizationalUnit'
SUP organizationalUnit STRUCTURAL
MAY ( dateCreated $ dateModified $ dateActivated $ dateCodeGenerated $
activeFlag $ codeFlag $
selfRegAllowed $ protected $ serviceType $ domainKey $
autoActivationAllowed $
companyName $ companyURL $ state $ city $ countryname )
)
#================= end myschema.schema =============================
- put this file in E:\Program Files\apacheds-
1.0-RC3\src\core\src\main\schema folder
- install maven 2
- open command shell and cd to E:\Program Files\apacheds-1.0-RC3\src\core
- run "mvn process-resources" to generate the myschema schema sources
- generated source files will be found in E:\Program Files\apacheds-
1.0-RC3\src\core\target\generated-sources\org\apache\directory\server\core\schema\bootstrap
- create a patch dir somewhere
- copy the generated Myschema* files into patch dir
- build the patch myschema.jar by placing apacheds libraries in classath...
a simple javac inside ant will work
- this myschema.jar has to be placed in E:\Program Files\apacheds-
1.0-RC3\lib\ext folder
- configure the E:\Program Files\apacheds-1.0-RC3\conf\server.xml
#=============== add this to server.xml =============================
myschema
dc=myschema,dc=com
dc
ou
objectClass
krb5PrincipalName
uid
objectClass: top
objectClass: domain
objectClass: extensibleObject
dc: myschema
On 8/23/06, Craig L. Ching wrote:
>
> Great, thanks for the info! BTW, I'm going to be using an embedded
> server, once this is built, will it include my new schema in the embeddable
> server?
>
> As for the project, it's a commercial product called Q Pasa! We monitor
> and manage middleware software (e.g. IBM WebSphere MQ, IBM WebSphere App
> Server, and tons of other stuff). We are planning on using ApacheDS to do
> our default authentication/authorization to begin with (replacing a legacy,
> home-grown solution), but we're going to be adding in the capability to find
> other installations of our software so that disparate installations can be
> integrated (sort of hard to explain the latter use). I'm sure if this is
> successful we'll find lots of other uses for it. I am evaluating ADS
> because it is 100% pure java and it is embeddable, not to mention that it's
> the Apache organization ;-)
>
> Again, thanks for the help, I'll let you all know how I progress.
>
> Cheers,
> Craig
>
> ------------------------------
> *From:* Emmanuel Lecharny [mailto:elecharny@gmail.com]
> *Sent:* Wednesday, August 23, 2006 10:24 AM
> *To:* Apache Directory Developers List
> *Subject:* Re: Adding an objectClass to ApacheDS
>
> Great !
>
> Don't worry to much about the mailing list, we don't use
> user@directory.apache.org atm. So this is the right place to post.
>
> Extending the schema is a little bit complicated in this version, but it
> does not mean it's complicated.
>
> Here are the steps :
> 1) create your schema using OpenLdap syntax (which is RFC syntax, btw)
> 2) put it in apacheds/core/src/main/schema, beside the other schemas
> 3) go into apacheds/core and modify the pom.xml file :
> ...
>
> src/main/schema
>
>
> apache
>
> system
>
>
>
> apachedns
>
> system
> core
>
>
> ...
> here, you just add your schema, with its dependencies.
> 4) now, go back to the root project and compile the project :
> mvn install
> (it will take around 3 minutes)
> 5) build the binaries :
> cd apacheds/server-installers
> mvn install
>
> now, you can install the server with the installer that has been
> generated.
>
> If you are lost, here is a link to a page which explains the build process
> :
> http://docs.safehaus.org/display/APACHEDS/Building
>
> I think there is something sompler, but I don't know it. Anybody on the
> list ?
>
> However, if you have any pb, just push a mail. We will help you as fast as
> we can.
>
> btw, which kind of project are you working on, if it's not secret ?
>
> Emmanuel lécharny
>
> On 8/23/06, Craig L. Ching < cching@mqsoftware.com> wrote:
> >
> > Hi!
> >
> > I realize this is the developer's list and that it's a bit early for
> > ApacheDS, but I'm evaluating it for use in our products. I'm trying to
> > figure out how to extend the schema (I need to add a new objectClass),
> > can anyone point me in the right direction? I'm fine with reading some
> > code to understand it.
> >
> > Cheers,
> > Craig
> >
>
>
>
> --
> Cordialement,
> Emmanuel Lécharny
>