Advanced Configuration
Obsidian requires some initial configuration parameters for database connection information and desired authentication mechanisms. The installer takes care of configuring these as provided. For your reference should you wish to manually create/edit these, note the details below.
Configuration Details
# Comment out the native authenticator setup #com.carfey.suite.security.Authenticator=com.carfey.suite.security.DBAuthenticator #Set your LDAP info here com.carfey.suite.security.Authenticator=com.carfey.suite.security.LdapAuthenticator # As of Obsidian 2.1.1, you can specify the attribute type used in building up the distinguished name (dn). If unspecified, defaults to cn com.carfey.suite.security.LdapAuthenticator.dn.attribute=uid com.carfey.suite.security.LdapAuthenticator.dn.base=ou=people,o=MyOrgHere com.carfey.suite.security.LdapAuthenticator.url=ldap://localhost:10389 # As of Obsidian 2.1.1, you can specify the SECURITY_AUTHENTICATION. Defaults to simple. com.carfey.suite.security.LdapAuthenticator.securityAuthentication=simple # Any necessary additional information such as Provider, Principal and Host will need to be handled in your custom class extending LdapAuthenticator. # Configure who may access the web app, based on LDAP group membership com.carfey.suite.security.LdapAuthenticator.accessDN=cn=SchedulerAccess,ou=groups,o=MyOrgHere # Configure the Write role used in the admin web app, based on LDAP group membership (by default, users may only read) com.carfey.suite.security.LdapAuthenticator.role.write.dn=cn=SchedulerWrite,ou=groups,o=MyOrgHere # No need to alter this com.carfey.suite.security.LdapAuthenticator.role.write.roleName=Write # Configure the Admin role used in the admin web app, based on LDAP group membership (users may configure system parameters, etc). com.carfey.suite.security.LdapAuthenticator.role.admin.dn=cn=SchedulerAdmin,ou=groups,o=MyOrgHere # No need to alter this com.carfey.suite.security.LdapAuthenticator.role.admin.roleName=Admin # Configure the LimitedRead role used in the admin web app, based on LDAP group membership (by default, users may only read) com.carfey.suite.security.LdapAuthenticator.role.limitedRead.dn=cn=SchedulerLimitedRead,ou=groups,o=MyOrgHere # No need to alter this com.carfey.suite.security.LdapAuthenticator.role.limitedRead.roleName=LimitedRead # Configure the APIrole used by the REST API, based on LDAP group membership com.carfey.suite.security.LdapAuthenticator.role.api.dn=cn=SchedulerAPI,ou=groups,o=MyOrgHere # No need to alter this com.carfey.suite.security.LdapAuthenticator.role.api.roleName=API # Email configuration for notifications, if desired #for straight up open relay, just specify the host using mail.smtp.host=smtp.myopenrelayhost.com mail.smtp.port=port #(standard ports are 25, 465 for SSL, 587 for TLS) #for using TLS and SSL, provide these as necessary mail.smtp.socketFactory.port=port mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory mail.smtp.auth=true [email protected] mail.smtp.password=PASSWORD # As of Obsidian 2.5.0, we support JNDI lookups for email sessions. All other email properties can be excluded. mail.session.jndi.path=java:comp/env/mail/session # Database configuration com.carfey.obsidian.db.url=jdbc:mysql://localhost/obsidian com.carfey.obsidian.db.userId=user com.carfey.obsidian.db.password=pass # As of Obsidian 2.5.0, we support JNDI lookups for database connectivity. com.carfey.obsidian.db.url=java:comp/env/jdbc/obsidian com.carfey.obsidian.db.jndiType=mysql #com.carfey.obsidian.db.jndiType=mysql is also used for MariaDB #com.carfey.obsidian.db.jndiType=oracle #com.carfey.obsidian.db.jndiType=postgresql #com.carfey.obsidian.db.jndiType=h2 # Table prefix may be used to add a prefix to tables and related database objects. It must be 6 or fewer characters and can contain letters or underscores. Available as of version 2.0. com.carfey.obsidian.db.tablePrefix=OBSDN_ # For Oracle databases, when Obsidian's tables exist in a different schema from the user specified above, or if the user does not default to the schema matching its name, specify the target schema here. Available as of version 2.1. # For details on the required privileges to run with an alternate user, see http://obsidianscheduler.com/wiki/Obsidian_Tables#Oracle_Privileges # This same configuration item can be used to configure the Postgresql schema. If unspecified, the default is public. Available as of Obsidian 2.1.1. # If using JNDI and Oracle/Postgresql, we recommend you set this value to ensure best performance. com.carfey.obsidian.db.schema=obsidian com.carfey.obsidian.db.maxConnections=50 #default max connections per pool if not specified is 50 com.carfey.obsidian.db.connectionTimeout=2000 #default millis timeout to retrieve available connection from pool if not specified is 2000 # If you wish to change the tokens used to reference global parameters in your job configuration, use the following two values: global.param.start.token={{ global.param.end.token=}} # As of 2.8.0, if you have issues with classloading (e.g. in Grails), this flag enables usage of the context classloader . com.carfey.jdk.useContextClassLoader=true # As of 2.9.0, you can set the scheduler host designator name multiple times in the same JVM by using this parameter: com.carfey.obsidian.schedulerDesignation=obsidian-dev # As of 3.0.0, Job Forking can be enabled and configured per node com.carfey.obsidian.jvmJobForkingEnabledOnThisNode=true # This property is the location of the fork scripts. Obsidian is bundled with obsidianForkedJob.bat and obsidianForkedJob.sh. These are the expected script names. com.carfey.obsidian.forkedJobScriptLocation=/Obsidian-3.0.0 Use the following optional property if you need to override the default classpath that is built using the contents of the standalone directory. This allows for job forking support in embedded and even webapp deployments. Use the classpath format supported by your operating system. #com.carfey.obsidian.forkedJobscriptClasspathOverride= # If you wish to include database configuration parameters as arguments passed to the forking scripts and the target forked Obsidian class, use the following property. For example, you may need to do this if your configuration is done via System Property overrides or programmmatically in your embedded Obsidian instance. #com.carfey.obsidian.jvmJobForkingIncludeDbSysParms=true
Table Prefixes
As shown in full configuration reference, a table name prefix may be specified to create Obsidian tables with names beginning with a specified string.
# Table prefix may be used to add a prefix to tables and related database objects. It must be 6 or fewer characters and can contain letters or underscores. Available as of version 2.0. com.carfey.obsidian.db.tablePrefix=OBSDN_
Notifications Configuration
Sending notifications requires SMTP configuration to be defined in the Obsidian properties file. The properties file reference at the beginning of this page includes SMTP configuration details.
In addition to the properties file, you can configure some Notifications settings to tweak how your emails are sent. These values are configurable under the Dispatch category of the System tab. Defaults are provided, but you can update them appropriately for your needs.
Properties File
The above configuration must reside in a properties file named com.carfey.properties found according to the rules of ClassLoader.getResource. Some possibilities include WEB-INF/classes/com.carfey.properties, a com.carfey.properties file in a directory with that directory explicitly added to the classpath or inside a jar as is done in obsidian-props.jar for standalone deployments.
As of Obsidian 1.5, to make use of our external property file override support, use the System property carfey.properties.file. Between the default properties and the override, all expected properties must be specified. Any properties found in both files will use the override file's values. Usage: -Dcarfey.properties.file=/home/obsidian/obsidian.properties.
As of Obsidian 2.1, you may also use a programmatic properties override. Simply call com.carfey.jdk.sys.Configurator.setOverride(Properties props) as early as possible in the application startup. To quote the javadoc of this method, For use as a programmatic properties override. This must be called before any classes are accessed either through invocation or class initialization that may require access to configuration done through properties. Best if done as early as possible in code, perhaps first in an entry point class that does little else and then hands-off to existing entry point.
Dependent Libraries
Obsidian Scheduler requires a number of third party libraries, both for the web administration application and the scheduler itself. Below is information on these libraries and how they are used. Unless otherwise noted, they are mandatory.
As of Obsidian 2.5.0, our installer supports selective conflict management.
- activation-1.1.jar, mail-1.4.jar. Used for email notifications.
- dom4j-1.6.1.jar. XML utilities.
- obsidian.jar. Core Obsidian lib.
- log4j-1.2.9.jar. Obsidian logging uses log4j.
- gson-2.2.2.jar (gson-1.5.jar before 1.5). Supports REST API and web administration.
- jstl.jar, standard.jar. Web utilities. Only required in web administration.
- jxl-2.6.12.jar. Excel file format utilities. Only required in web administration.
- bsh-2.0b4.jar. Support for our Bean Shell script execution. (http://www.beanshell.org). Only required for BeanShellJob usage.
- groovy-all-2.1.8.jar. Support for Groovy script execution (http://groovy.codehaus.org). Only required for GroovyJob usage.
- jython-standalone-2.5.3.jar. Support for Python script execution (http://www.jython.org). Only required for PythonJob usage.
- jmustache-1.8.jar (2.0 and later). Provides email templating.
- jtds-1.2.jar. SQLServer jdbc driver. Only required for running SQLServer.
- mariadb-java-client-1.1.5.jar. MySQL jdbc driver. Only required for running against MySQL or MariaDB.
- h2-1.3.154. H2 database and jdbc driver. Only required for running H2.
- ojdbc6-11.2.0.3.jar (ojdbc14.jar before 2.1). Oracle jdbc driver. Only required for running Oracle.
- postgresql-9.0-801.jdbc4.jar. PostgreSQL jdbc driver. Only required for running PostgreSQL.
Prior to Obsidian 2.9.1, the following redundant library was in included in the Obsidian packaging.
- smtp.jar. Used for email notifications.
Prior to Obsidian 2.2.0, the following older libraries were in use.
- groovy-all-1.7.6.jar
- jython.jar (version 2.5.2rc2)
Prior to Obsidian 2.1.1, the following libraries were also included.
- carfey-date-1.2.jar or carfey-date-1.1.jar. Date math/manipulation.
- jdk-gen.jar, jdk.jar, suite-gen.jar, suite.jar. Core Obsidian libs.
Required Libraries for Embedded API
To use the Embedded API, the following resources should be imported. If you have newer versions of the same JARs in your application, feel free to use the newer version. The JAR files below can generally be found in the standalone directory if your installation. The com.carfey.properties file can be extracted from the obsidian-props.jar in the standalone directory, or from an Obsidian WAR file under WEB-INF/classes.
- com.carfey.properties (configuration file), or obsidian-props.jar, which contains the same file
- dom4j-1.6.1.jar
- obsidian.jar
- log4j-1.2.9.jar
- gson-2.2.2.jar
- Appropriate JDBC JAR (e.g. mariadb-java-client-1.1.5.jar for MySQL or MariaDB)
In addition, the following resources should be included if you wish to have notification support enabled when using the API:
- activation-1.1.jar
- mail-1.4.jar
- jmustache-1.8.jar
Finally, if you need to configure scripting jobs from the API, you will need to include any applicable JARs from the following list:
- bsh-2.0b4.jar
- groovy-all-2.1.8.jar
- jython-standalone-2.5.3.jar
Disabling Job Execution & Scheduling in the Web Application
See the instructions within the Getting Started Guide.
Disabling Automatic Database Updates
See the instructions within the Getting Started Guide.
