JBoss.orgCommunity Documentation

Chapter 12. Artificer Server Configuration

12.1. Hibernate
12.2. Datasource
12.3. File Content
12.4. Hibernate Configuration
12.5. Running the Server and Web UI Separately
12.6. Remote Connections
12.7. WARNINGS

Out-of-the-box, Artificer provides a useful, default server configuration. However, if you’d like to mold it into an existing setup, here are a few areas that can be modified.

Out of the box, we provide a fairly standard set of Hibernate configuration defaults. However, for power users, note that any Hibernate property may be set, either in artificer.properties, environment variables, or System properties. More specifically, literally any property prefixed by hibernate. will be handed to Hibernate during Artificer startup. More specifics are below:

See the "Getting Started" section for information on Artificer’s provided DDL. We currently support Postgres, MySQL, Oracle, SQL Server, DB2/IBM, and H2.

By default, Artificer installs a simple, file-based H2 datasource (see $JBOSS_HOME/standalone/deployments/artificer-h2-ds.xml). However, any other WildFly/EAP datasource can be used. Just edit the following in artificer.properties:

...
hibernate.dialect = org.hibernate.dialect.H2Dialect
hibernate.connection.driver_class = org.h2.Driver
hibernate.connection.datasource = java:jboss/datasources/artificerH2
hibernate.connection.username = sa
hibernate.connection.password = sa
...

Note that a datasource is not required, although we typically recommend them. Plain JDBC connection URLs, including external instances, are also fully supported (use hibernate.connection.url, hibernate.connection.username, and hibernate.connection.password). If a connection URL is used, Artificer will automatically wrap it with HikariCP, a lightweight and extremely performant connection pool library.

Also note that, due to licensing, we only include the JDBC driver for H2. For all other supported databases, you’ll need to ensure that their JDBC driver JAR(s) are available on the classpath, typically through a WildFly/EAP module.

Artificer supports storing artifacts' file content on the filesystem or in JDBC Blobs. By default, we use the Blob approach. However, this is configurable at runtime. See the artificer.file.storage property in artificer.properties (values: blob or filesystem). If you use the filesystem, also include a path with the artificer.file.storage.filesystem.path property — all content will be stored there.

Although JDBC Blobs are the default (purely because they’re convenient), most databases have fairly restrictive size limits. Even more importantly, there are many vertical and horizontal performance considerations when dealing with larger files. For most use cases, we’d actually recommend using the filesystem.

For detailed information of what’s possible, please see the Hibernate docs themselves. However, a few things to highlight:

The Artificer server and web UI are purposefully separated into two WARs, allowing you to run each on separate app servers. If you do so, you’ll need to update the "artificer-ui.atom-api.endpoint" property in artificer-ui.properties. By default, it assumes co-location and "localhost".

If you’d like to allow remote, non-localhost connections to Artificer, you’ll need to change two items in standalone-full.xml: