fat jar – inte endast för Spring

fat jar – inte endast för Spring
november 6, 2015 Ola Petersson

Under vårt senaste hackathon var en av de mest positiva verktygen Spring Boot. Att slippa all typ av miljö-krabb (krabb är blekingska för krångel/problem) och kunna ägna sin tid åt det man verkligen ville göra var ovärderligt inom den korta tidsram vi hade. Tidigare har jag fått lita på javscript-serverimplementationer om jag velat slänga upp t.ex. mockade backendservrar. På mitt uppdrag sitter jag dock med JavaEE-standarden och för att kunna göra snabba ”proof-of-concepts” kände jag att något liknande Spring Boot var precis vad jag behövde. Efter lite research har jag nu hittat Wildfly Swarm som har släppts i alpha, så låt oss ta en titt på hur enkelt det kan vara att slänga upp en backend med ett enkelt REST-api.

Prerequirements
Maven 3.2.5 eller högre

Sätta upp projektet
Ok, så målet är att vi så snabbt som möjligt ska komma upp på banan. Sedan förra årets SqueedBrew använder jag Adam Biens archetypes när jag påbörjar ett nytt projekt. Ta tag i din närmsta terminal och kör

mvn archetype:generate -Dfilter=com.airhacks:javaee7-essentials-archetype

Följ guiden step-by-stepen och du slutar upp med ett projekt med en pom som inkluderar javaee7-api:t. Denna ska vi nu utöka med wildfly-swarm. Det vi lägger till är en dependency-tag för att få in wildfly-swarm samt ett plugin i vår build för att kunna starta igång vår appserver från maven

pom.xml

    <dependencies>
        ...
        <dependency>
            <groupId>org.wildfly.swarm</groupId>
            <artifactId>wildfly-swarm-jaxrs</artifactId>
            <version>1.0.0.Alpha5</version>
        </dependency>
        ...
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.wildfly.swarm</groupId>
                <artifactId>wildfly-swarm-plugin</artifactId>
                <version>1.0.0.Alpha5</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>package</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
        <finalName>squeed-swarm-example</finalName>
    </build>

Om du genererade ditt projekt genom archetypen har du redan fått en klass på köpet, JAXRSConfiguration. Notera att jag ändrade min ApplicationPath till api.
JAXRSConfiguration.java

package se.olapetersson.swarm;

import javax.ws.rs.ApplicationPath;
import javax.ws.rs.core.Application;

@ApplicationPath("api")
public class JAXRSConfiguration extends Application {

}

Och så behöver vi självklart vår REST-endpoint
Squeed.java

package se.olapetersson.swarm.rest;

import javax.ws.rs.GET;
import javax.ws.rs.Path;

@Path("/squeed")
public class Squeed {

    @GET
    public String getSqueed(){
        return "Squeed!";
    }
}

…då kör vi!
…och det är så enkelt som att köra

mvn wildfly-swarm:run

Originalport för wildfly-swarm är 8080 så om du nu surfar till localhost:8080/api/squeed kan du åtnjuta den vackra åsynen av strängen Squeed 🙂

0 Kommentarer

Lämna ett svar

E-postadressen publiceras inte. Obligatoriska fält är märkta *

*

Denna webbplats använder Akismet för att förhindra skräppost. Läs mer om hur dina kommentarsuppgifter behandlas.