Skip to content

Deployment

Ignacio del Valle Alles edited this page Mar 1, 2016 · 6 revisions

Brutusin-RPC applications can be packaged as jar or war artifacts. There are maven archetypes available for each one.

External web container

War can be deployed to a Servlet 3.0, Websocket 1.1 compliant JEE web container.

Embedded runtimes

Both types of packaging support having a runtime-scoped (maven) dependency of a server provider in order to allow standalone testing and execution. The default server provider is rpc-tomcat but others can be implemented.

All configuration is done via system properties, ideal scenario for scaling applications in cloud providers like Heroku.

Building an uber jar

Sometimes you might need and uber (AKA "shaded" or "fat") jar. Just add the following plugin execution to the pom.xml of the project jar:

  <build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-shade-plugin</artifactId>
            <version>2.4.3</version>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>shade</goal>
                    </goals>
                    <configuration>
                        <transformers>
                            <transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>
                            <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                                <mainClass>org.brutusin.rpc.Main</mainClass>
                            </transformer>
                        </transformers>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>