ZCML File
configure.zcml

<configure
    xmlns="http://namespaces.zope.org/zope"
    xmlns:apidoc="http://namespaces.zope.org/apidoc"
    xmlns:browser="http://namespaces.zope.org/browser"
    xmlns:zcml="http://namespaces.zope.org/zcml"
    i18n_domain="zope"
    >
<adapter
    factory=".session.ClientId"
    permission="zope.Public"
    />
<adapter
    factory=".session.Session"
    provides=".interfaces.ISession"
    permission="zope.Public"
    />
<adapter
    factory=".session.Session"
    provides="zope.traversing.interfaces.IPathAdapter"
    name="session"
    />
<class
    class=".session.Session"
    >
<allow
    interface=".interfaces.ISession"
    />
</class>
<class
    class=".http.CookieClientIdManager"
    >
<require
    permission="zope.Public"
    interface=".http.ICookieClientIdManager"
    />
<require
    permission="zope.ManageServices"
    set_schema=".http.ICookieClientIdManager"
    />
<require
    permission="zope.Public"
    interface="zope.location.ILocation"
    />
<require
    permission="zope.ManageServices"
    set_schema="zope.location.ILocation"
    />
</class>
<class
    class=".session.PersistentSessionDataContainer"
    >
<require
    permission="zope.Public"
    interface=".interfaces.ISessionDataContainer"
    />
<require
    permission="zope.ManageServices"
    set_schema=".interfaces.ISessionDataContainer"
    />
<require
    permission="zope.Public"
    interface="zope.location.ILocation"
    />
<require
    permission="zope.ManageServices"
    set_schema="zope.location.ILocation"
    />
</class>
<class
    class=".session.RAMSessionDataContainer"
    >
<require
    permission="zope.Public"
    interface=".interfaces.ISessionDataContainer"
    />
<require
    permission="zope.ManageServices"
    set_schema=".interfaces.ISessionDataContainer"
    />
<require
    permission="zope.Public"
    interface="zope.location.ILocation"
    />
<require
    permission="zope.ManageServices"
    set_schema="zope.location.ILocation"
    />
</class>
<class
    class=".session.SessionData"
    >
<allow
    interface=".interfaces.ISessionData"
    />
</class>
<class
    class=".session.SessionPkgData"
    >
<allow
    interface=".interfaces.ISessionPkgData"
    />
</class>
<subscriber
    handler=".bootstrap.bootStrapSubscriber"
    for="zope.app.appsetup.IDatabaseOpenedEvent"
    />
<subscriber
    handler=".http.notifyVirtualHostChanged"
    for="zope.publisher.interfaces.http.IHTTPVirtualHostChangedEvent"
    />
<configure
    zcml:condition="have apidoc"
    >
<apidoc:bookchapter
    id="session"
    title="Sessions"
    doc_path="design.txt"
    />
<apidoc:bookchapter
    id="api"
    title="API"
    doc_path="api.txt"
    parent="session"
    />
</configure>
</configure>