li.moskito:inkstand-ms

Inkstand Microservice API.

License

License

GroupId

GroupId

li.moskito
ArtifactId

ArtifactId

inkstand-ms
Last Version

Last Version

0.1.0
Release Date

Release Date

Type

Type

jar
Description

Description

li.moskito:inkstand-ms
Inkstand Microservice API.
Project URL

Project URL

https://github.com/moskitoli/inkstand/wiki/inkstand-ms

Download inkstand-ms

How to add to project

<!-- https://jarcasting.com/artifacts/li.moskito/inkstand-ms/ -->
<dependency>
    <groupId>li.moskito</groupId>
    <artifactId>inkstand-ms</artifactId>
    <version>0.1.0</version>
</dependency>
// https://jarcasting.com/artifacts/li.moskito/inkstand-ms/
implementation 'li.moskito:inkstand-ms:0.1.0'
// https://jarcasting.com/artifacts/li.moskito/inkstand-ms/
implementation ("li.moskito:inkstand-ms:0.1.0")
'li.moskito:inkstand-ms:jar:0.1.0'
<dependency org="li.moskito" name="inkstand-ms" rev="0.1.0">
  <artifact name="inkstand-ms" type="jar" />
</dependency>
@Grapes(
@Grab(group='li.moskito', module='inkstand-ms', version='0.1.0')
)
libraryDependencies += "li.moskito" % "inkstand-ms" % "0.1.0"
[li.moskito/inkstand-ms "0.1.0"]

Dependencies

compile (6)

Group / Artifact Type Version
javax : javaee-api jar 7.0
org.jboss.weld.se : weld-se jar 2.2.6.Final
org.slf4j : slf4j-api jar 1.7.6
org.apache.logging.log4j : log4j-slf4j-impl jar 2.0-rc1
org.apache.logging.log4j : log4j-api jar 2.0-rc1
org.apache.logging.log4j : log4j-core jar 2.0-rc1

provided (1)

Group / Artifact Type Version
org.jacoco : jacoco-maven-plugin jar 0.7.2.201409121644

test (2)

Group / Artifact Type Version
junit : junit jar 4.11
org.mockito : mockito-all jar 1.9.5

Project Modules

There are no modules declared in this project.

Build Status

Inkstand

Inkstand, a lightweight integration of RestEasy, Undertow, and Weld, based on Hammock by John Ament.

In comparison to the original hammock project, Inkstand provides the following features:

  • default configuration, overridable with properties or JVM parameters
  • separation of webserver and application configuration
  • automatic Resource and Provider discovery per default
  • exchangeable / injectable HTTP container
  • exchangeable Resteasy deployment (CDI extension)
  • injectable JCR support (Jackrabbit 2)
  • global alternative support (CDI extension)
  • NO support for management resources

Configuration

Beyond Hammock, Inkstand provides a default configuration for the HTTP server (localhost:80) which can easily be overriden - either by providing JVM parameters -Dinkstand.http.port= -Dinkstand.http.listenaddress= or by providing a properties file by implementing org.apache.deltaspike.core.api.config.PropertyFileConfig containing the very same parameters. Alternatively, the parameters can be set by implementing the WebServerConfiguration interface.

Resources and Providers

Per default, inkstand scans the classpath for Path resources an Providers which are automatically published as REST services. The default contextRoot can be overridden by defining the property inkstand.rest.contextRoot (see above) or by implementing and injecting an implementation of ApplicationConfiguration.

HTTP Container and Rest Implementation

Inkstand allows to replace the http container (default: undertow) by providing an Alternative an the Rest implementation (default: Resteasy without security).

JCR support

For application integration, Inkstand provides injectable access to a Jackrabbit based JCR repository (OAK is planned).

Global Alternatives

One of the more important feature is the CDI Extention GlobalAlternativeSelector. The selector allows to define an alternative class or stereotype in an application jar's beans.xml, which are injectable as alternative in other bean deployment archive as long as they are annotation with @Priority. The default CDI 1.1 spec only supports the @Priority annotation, but does not allow to select a global alternative in a beans.xml. The feature was required for JCR Repository providers to be injected in REST service JARs, that are defined in another jar than the actual application. Example:

  • jar1: inkstand-jcr-jackrabbit (@Produces Repository)
  • jar2: my-rest-services (@Inject Repository)
  • jar3: standalone (depends: inkstand, inkstand-jcr-jackrabbit, my-rest-services, defines global alternative in beans.xml)

Versions

Version
0.1.0
0.0.2
0.0.1