Building and Deploying Scripted Extensions
              
                The UnboundID Server SDK provides support for writing and deploying certain kinds
                of extensions using a dynamic scripting language as an alternative to compiled
                Java code.  The primary benefit that this offers is that it is possible to deploy
                extensions without the need to compile or package them into jar files.  It is also
                possible to deploy new or updated extensions without the need to restart the
                server (as long as those extensions do not require adding or updating any
                third-party libraries provided in jar files).  Using a dynamic scripting language
                rather than compiled Java code may incur a penalty in performance, but in many
                cases the actual impact to server performance is minimal.
               
              
                At the present time, only the Groovy
                language may be used for scripted extensions.  Groovy provides the benefit of
                nearly perfect Java compatibility, although it does offer additional features
                and conveniences that Java by itself does not provide.  When writing scripted
                extensions with Groovy, you may choose to either stick to only Java-compatible
                syntax, or use the full capabilities offered by Groovy.
               
              
                You can deploy Groovy-scripted extensions as either individual script files or
                bundled in jar files (in which the jar files merely contain the Groovy scripts in
                the appropriate directory hierarchy).  To deploy an extension using individual
                script files, the process is as follows:
               
              
                - 
                  If the extension depends on any third-party libraries (other than the UnboundID
                  Server SDK or UnboundID LDAP SDK for Java), you must first stop the server,
                  place the jar files for those libraries in the lib/extensions directory
                  below the server root, and re-start the server.  If the extension does not have
                  any requirements on any third-party libraries, then this step is not required.
                  
  
                 
                - 
                  Create an appropriate directory hierarchy for any package(s) used by the script
                  files below the lib/groovy‑scripted‑extensions directory
                  and copy the script files into those directories as appropriate.
                  
  
                 
                - 
                  Use the dsconfig tool or the web-based administration console to create
                  configuration objects for your extension as needed.  Use the
                  "groovy‑scripted" type for the extension, and supply the fully-qualified
                  name of the Groovy class providing the logic for the extension in the
                  script‑class property.  If your extension requires any
                  arguments, then specify them as values to the script‑argument
                  property.  Each argument should be provided as a separate property value in the
                  form "name=value".
                  
  
                 
               
              
                If your scripted extensions are to be deployed in a jar file, then the process is
                the same, except that the jar file containing the Groovy scripts should be placed
                directly in the lib/groovy‑scripted‑extensions directory
                without the need to create any subordinate directory structure.  Note, however,
                that if you use jar files (or a mix of jar files and individual scripts), you must
                be careful to ensure that you do not install conflicting versions of the same
                scripts.
               
              
                In order to deploy an updated version of an existing scripted extension, the
                process is as follows:
               
              
                - 
                  Use dsconfig or the administration console to disable the existing
                  configuration objects for the scripted extension types to be updated.
                  
  
                 
                - 
                  If the extension depends on any third-party libraries and the new version of the
                  extension requires new versions of those libraries, then you must stop the
                  server, delete the files for the old versions of those libraries from the
                  lib/extensions directory, copy the new versions of those libraries into
                  that directory, and start the server.  If your extension does not depend on any
                  third-party libraries, or if you do not need to update the versions of the
                  libraries that it does use, then this step is not required.
                  
  
                 
                - 
                  Remove the files for the existing version of the extensions (whether the
                  individual script files or jar files containing the scripts) and deploy the
                  updated versions of those files.
                  
  
                 
                - 
                  Use dsconfig or the administration console to re-enable the
                  configuration objects for the updated extensions.  If the updated
                  version requires any argument changes, then you can make those argument
                  changes in the configuration objects at this time.
                  
  
                 
               
              
                A few extensions cannot be disabled.  The above procedure could be followed
                by deleting and re-adding the extension in place of disabling it and re-enabling
                it.  Alternatively, the offline mode of dsconfig can be used as follows:
               
              
                - 
                  Stop the server.
                  
  
                 
                - 
                  Replace the extension script file(s) or jar file(s) as detailed above.
                  
  
                 
                - 
                  Using dsconfig in offline mode, make any necessary configuration changes
                  (e.g., by updating the set of extension arguments as necessary).  Do this with
                  care as it will bypass validation of the arguments by the extension.
                  
  
                 
                - 
                  Start the server and look for warnings related to the extension's new arguments.
                  
  
                 
               
             |