A .env implementation with convenience functions for IBM i
This is a thin wrapper around the well-designed dotenv-java project.
The objectives of this library are:
- Make it easier to do cross-platform activities with a single codebase (for instance, write/debug on your local PC, deploy to IBM i)
- Unify best practices for acquiring connections to the IBM i system
- Avoid storage of authentication data in source code
Maven Users
add the following to your pom.xml file (substitute version number to the latest available):
<dependency>
<groupId>io.github.theprez</groupId>
<artifactId>dotenv-java-ibmi</artifactId>
<version>0.0.2</version>
</dependency>Non-Maven Users
Download the -with-dependencies.jar file from Maven Central and
add to your classpath.
Access of .env data is done through use of the Dotenv object. The Dotenv
class is provided by the underlying implementation,
but, but instances should be acquired through the IBMiDotEnv.getDotEnv() helper function for
consistent behavior with the IBM i helper functions in this library.
IBMiDotEnv.getDotEnv();This assumes a .env file exists in your current working directory. The .env file is in the
common KEY=VALUE format.
Note: values can also be specified in environment variables.
Currently, this library provides two convenience functions:
getNewSystemConnection(), which will return a newAS400object. The object will not be cachedgetCachedSystemConnection(), which will return a cachedAS400object if one is available. If a cached object is not available, a new one will be constructed and cached.
The above convenience functions are implemented assuming the following values in your .env file:
IBMI_HOSTNAMEIBMI_USERNAMEIBMI_PASSWORD
These functions take a single parameter (_starCurrentIfPossible). When this parameter is set to
true, the API will return an AS400 object with the username and password set to *CURRENT if:
- running on IBM i
- a username and password are not explicitly provided
// Function to get a JDBC Connection object
private Connection getConnection() throws SQLException, IOException, AS400SecurityException {
final AS400 as400 = IBMiDotEnv.getCachedSystemConnection(true);
AS400JDBCDataSource ds = new AS400JDBCDataSource(as400);
return ds.getConnection();
}