Thorntail addon for JBoss Forge
Features
- Thorntail Project type
-
If you are creating a new project, you can choose the
thorntail
project type directly
[tmp]$ project-new --named demo --type thorntail --stack JAVA_EE_7
***SUCCESS*** Project named 'demo' has been created.
***SUCCESS*** Stack 'Java EE 7' installed in project
***SUCCESS*** Thorntail is now set up! Enjoy!
- Setup command
-
If you’re working in an existing project (or you forgot to choose
thorntail
in the command above) just typewildfly-swarm-setup
if you’re in shell. It should read Thorntail: Setup if you’re in a GUI environment:thorntail-setup
And that’s it! The
thorntail-maven-plugin
will be installed. - Add Fraction
-
You can install Thorntail Fractions by using the command
thorntail-add-fraction
:[demo]$ thorntail-add-fraction --fractions asciidoctorj fluentd jaxrs-validator keycloak-server microprofile-opentracing spring batch-jberet flyway jca logging microprofile-restclient swagger bean-validation full jdr logstash mod_cluster swagger-webapp cassandra hibernate-search jgroups mail mongodb topology-consul cdi hibernate-validator jmx management monitor topology-jgroups cdi-config hystrix jolokia management-console mvc topology-openshift cdi-jaxrsapi infinispan jose messaging neo4j topology-webapp cli jaeger jpa microprofile opentracing transactions datasources javafx jpa-eclipselink microprofile-config orientdb undertow drools-server jaxrs jpa-spatial microprofile-fault-tolerance remoting vertx ee-security jaxrs-jaxb jsf microprofile-health resource-adapters web ejb jaxrs-jsonb jsonb microprofile-jwt ribbon webservices ejb-remote jaxrs-jsonp jsonp microprofile-metrics ribbon-secured zipkin-jaxrs elytron jaxrs-multipart keycloak microprofile-openapi ribbon-secured-client
You can choose any fraction you want to install. Installed fractions are not listed.
- Detect Fractions
-
This will run a fraction analyzer algorithm and list the missing fractions. You can add them to your project by specifying the
--depend
parameter
[demo]$ rest-new-endpoint --named MyEndpoint
***SUCCESS*** JAX-RS has been installed.
***SUCCESS*** REST org.demo.rest.MyEndpoint was created
[MyEndpoint.java]$ thorntail-detect-fractions --depend --build
- List Fractions
-
This will list all the available fractions
[MyEndpoint.java]$ thorntail-list-fractions
asciidoctorj: AsciidoctorJ (AsciidoctorJ is the official library for running Asciidoctor on the JVM. Using AsciidoctorJ, you can convert AsciiDoc content or analyze the structure of a parsed AsciiDoc document from Java and other JVM languages.)
batch-jberet: Batch (Java EE Batch with JBeret)
bean-validation: Bean Validation (Define constraints on object models with annotations)
cassandra: Cassandra (Cassandra integration)
cdi: CDI (CDI with Weld)
cdi-config: CDI Configuration (CDI Configuration)
cdi-jaxrsapi: CDI JAX-RS API Enhancements (Generates implementation of external service from interface which can then be injected to call that service.)
cli: JBoss CLI (JBoss CLI)
datasources: Datasources (Datasources for installing database drivers, etc)
drools-server: Drools Server (Drools Server)
ee-security: EE Security (EE Security API support)
ejb: EJB (Use EJBs in your application)
ejb-remote: EJB Remote (Access EJBs in remote containers)
elytron: Elytron (Elytron)
fluentd: Fluentd (Write log entries to Fluentd)
flyway: Flyway (Evolve your Database Schema easily and reliably across all your instances)
full: Full (Equivalent to Full Platform)
hibernate-search: Hibernate Search (Hibernate Search transparently indexes your objects and offers fast regular, full-text and geolocation search. Ease of use and easy clustering are core.)
hibernate-validator: Hibernate Validator (Validation annotations going beyond Bean Validation)
hystrix: Hystrix (Latency and Fault Tolerance, such as Circuit Breaker, with Hystrix from Netflix OSS)
infinispan: Infinispan (Distributed in-memory key/value store)
jaeger: Jaeger (Jaeger integration, including the OpenTracing fraction)
javafx: JavaFX (For using JavaFX classes in your application.)
jaxrs: JAX-RS (RESTful Web Services with RESTEasy)
jaxrs-jaxb: JAX-RS with JAXB (Add JAXB binding support for RESTful services)
jaxrs-jsonb: JAX-RS with JSON-B (Enable JSON-B interchange format for RESTful services)
jaxrs-jsonp: JAX-RS with JSON-P (Enable JSON-P interchange format for RESTful services)
jaxrs-multipart: JAX-RS with Multipart (Multipart support for RESTful services)
jaxrs-validator: JAX-RS with Validation (Validation support for RESTful services)
jca: JCA (Java EE Connector Architecture)
jdr: JBoss Diagnostic Reporting (Enables the gathering of diagnostic data for use in remote analysis of error conditions. Although the data is in a simple format and could be useful to anyone, primarily useful for JBoss EAP subscribers who would provide the data to Red Hat when requesting support)
jgroups: JGroups (Reliable messaging for creating a cluster)
jmx: JMX (Expose resources as MBeans)
jolokia: Jolokia (Deploys the jolokia.war to activate JMX-HTTP bridge as an alternative to JSR-160 connectors)
jose: JOSE Signing and Encryption Support (Supports JWS signing and JWE encryption)
jpa: JPA (Java Persistence API with Hibernate and H2 datasource)
jpa-eclipselink: JPA EclipseLink (Java Persistence API with EclipseLink)
jpa-spatial: JPA Spatial Extensions (Java Persistence API with Spatial Extensions)
jsf: JSF (Java Server Faces for developing UIs)
jsonb: JSON-B (JSON-B)
jsonp: JSON-P (JSON-P)
keycloak: Keycloak (Securing your RESTful services)
keycloak-server: Keycloak Server (Running Keycloak in an uber jar)
logging: Logging (Customizing the Logging for WildFly)
logstash: Logstash (Write log entries to Logstash for use in ELK stack)
mail: Mail (Java Mail API for messaging)
management: Management (Enables WildFly management capabilities)
management-console: Management Console (UI to manage a running WildFly/Swarm server)
messaging: Messaging (JMS Messaging with ActiveMQ)
microprofile: MicroProfile (Implementation of MicroProfile.io)
microprofile-config: MicroProfile Config (WildFly: Swarm Fraction for Eclipse MicroProfile Config)
microprofile-fault-tolerance: MicroProfile Fault Tolerance (WildFly: Swarm Fraction for Eclipse MicroProfile Fault Tolerance)
microprofile-health: MicroProfile Health (Health endpoints for your application)
microprofile-jwt: MicroProfile JWT RBAC Auth (An implementation of the MP-JWT authentication and authorization)
microprofile-metrics: MicroProfile Metrics (Metrics export for MicroProfile)
microprofile-openapi: MicroProfile OpenAPI (An implementation of the MP-OpenAPI specification first introduced in MP 1.3)
microprofile-opentracing: MicroProfile OpenTracing (OpenTracing integration for Microprofile)
microprofile-restclient: MicroProfile Rest Client (Build Parent to bring in required dependencies)
mod_cluster: Modcluster (Modcluster support)
mongodb: MongoDB (MongoDB integration)
monitor: Monitor (Health endpoints for your application)
mvc: MVC (MVC 1.0 with Ozark for developing Web UIs)
neo4j: Neo4j (Neo4j integration)
opentracing: OpenTracing (OpenTracing integration via TraceResolver and GlobalTracer)
orientdb: OrientDB (OrientDB integration)
remoting: Remoting (Connecting to remote containers)
resource-adapters: Resource Adapters (Resource Adapters deployed with .rar files)
ribbon: Ribbon (Client side load balancing with Netflix Ribbon)
ribbon-secured: Ribbon Secured (Provides security token propagation across invocations when using Netflix Ribbon and Keycloak)
ribbon-secured-client: Ribbon Secured Client (Ribbon Secured Client)
spring: Spring WebMVC (RESTful services with Spring WebMVC)
swagger: Swagger (Generate swagger.json for all JAX-RS endpoints in your application)
swagger-webapp: Swagger Webapp (UI for Swagger to visualize the generated swagger.json)
topology-consul: Hashicorp Consul (Service Discovery with Hashicorp Consul)
topology-jgroups: JGroups Topology (Utilizes JGroups as a Service Registry that is discoverable)
topology-openshift: OpenShift (Service Discovery with OpenShift)
topology-webapp: Topology UI (Server-Sent Events of instances being added/removed from cluster)
transactions: Transactions (JTA distributed transactions with Narayana)
undertow: Undertow (Servlet Container with Undertow)
vertx: Vert.x (Deploys the Vert.x JCA Adapter)
web: Web (Equivalent to Web Profile)
webservices: Web Services (Web Services with CXF)
zipkin-jaxrs: Zipkin - JAXRS Support (Enables the zipkin instrumentation for JAX-RS resources)
- Change Version
-
Changes the Thorntail version in the addon. Subsequent project creation using the
project-new
command would use the version specified by this command instead. Thepermanent
flag will add athorntail.version
property in your~/.forge/config.properties
file and will use that version permanently.
Important
|
This command does not perform any change to the current project. |
- Create Test Class
-
Creates a Java Test Class and adds Arquillian Thorntail dependency. This test uses the
@DefaultDeployment
deployment approach and in case of specifying the flagasClient
it also enriches your test with current URL.
thorntail-new-test --target-package org.example.rest --named HelloWorldEndpointTest
***SUCCESS*** Test Class org.example.rest.HelloWorldEndpointTest was created
[HelloSwarm]$ cd src/test/java/org/example/rest/HelloWorldEndpointTest.java
[HelloWorldEndpointTest.java]$ cat -c .
package org.example.rest;
import org.junit.runner.RunWith;
import org.jboss.arquillian.junit.Arquillian;
import org.wildfly.swarm.arquillian.DefaultDeployment;
import org.junit.Test;
@RunWith(Arquillian.class)
@DefaultDeployment
public class HelloWorldEndpointTest {
@Test
public void should_start_service() {
}
}
- Run
-
Builds and executes the current project (in command line mode only so far) and will block the UI until Ctrl+C is pressed.
[Main.java]$ thorntail-run