Skip to content

AmayaFramework/amaya-jetty

Repository files navigation

amaya-jetty amaya-jetty

The amaya-server implementation is based on jetty-server.

Getting Started

To install it, you will need:

  • Java 17+
  • Maven/Gradle

Features

  • Full implementation of amaya-server
  • Convenient interfaces for http request handling
  • Full access to jetty configuration

Installing

Gradle dependency

dependencies {
    implementation group: 'io.github.amayaframework', name: 'amaya-jetty', version: '1.1.1-12'
    // For alpn support (for ssl + http2, optionally)
    implementation group: 'org.eclipse.jetty', name: 'jetty-alpn-server', version: '12.0.22'
    implementation group: 'org.eclipse.jetty', name: 'jetty-alpn-java-server', version: '12.0.22'
    // For http2 support (optionally)
    implementation group: 'org.eclipse.jetty.http2', name: 'jetty-http2-server', version: '12.0.22'
    // For http3 support (optionally)
    implementation group: 'org.eclipse.jetty.http3', name: 'jetty-http3-server', version: '12.0.22'
}

Maven dependency

<dependencies>
    <dependency>
        <groupId>io.github.amayaframework</groupId>
        <artifactId>amaya-jetty</artifactId>
        <version>1.1.1-12</version>
    </dependency>

    <!-- For ALPN support (for SSL + HTTP/2, optionally) -->
    <dependency>
        <groupId>org.eclipse.jetty</groupId>
        <artifactId>jetty-alpn-server</artifactId>
        <version>12.0.22</version>
    </dependency>
    <dependency>
        <groupId>org.eclipse.jetty</groupId>
        <artifactId>jetty-alpn-java-server</artifactId>
        <version>12.0.22</version>
    </dependency>

    <!-- For HTTP/2 support (optionally) -->
    <dependency>
        <groupId>org.eclipse.jetty.http2</groupId>
        <artifactId>jetty-http2-server</artifactId>
        <version>12.0.22</version>
    </dependency>

    <!-- For HTTP/3 support (optionally) -->
    <dependency>
        <groupId>org.eclipse.jetty.http3</groupId>
        <artifactId>jetty-http3-server</artifactId>
        <version>12.0.22</version>
    </dependency>

Examples

Hello world

import io.github.amayaframework.jetty.JettyServerFactory;

public class Main {
    public static void main(String[] args) throws Throwable {
        var factory = new JettyServerFactory();
        var server = factory.create();
        server.setHandler(ctx -> {
            var req = ctx.getRequest();
            var rsp = ctx.getResponse();
            rsp.getWriter().write("Hello, " + req.getQueryParameter("user"));
        });
        server.bind(8080);
        server.start();
    }
}

Custom thread pool (virtual threads)

import io.github.amayaframework.jetty.JettyServerFactory;
import org.eclipse.jetty.util.thread.QueuedThreadPool;

import java.util.concurrent.Executors;

public class Main {
    public static void main(String[] args) throws Throwable {
        var factory = new JettyServerFactory(() -> {
            var ret = new QueuedThreadPool();
            ret.setVirtualThreadsExecutor(Executors.newVirtualThreadPerTaskExecutor());
            return ret;
        });
        var server = factory.create();
        server.setHandler(ctx -> {
            var req = ctx.getRequest();
            var rsp = ctx.getResponse();
            rsp.getWriter().write("Hello, " + req.getQueryParameter("user"));
        });
        server.bind(8080);
        server.start();
    }
}

Custom jetty server instance

import io.github.amayaframework.jetty.JettyFactory;
import io.github.amayaframework.jetty.JettyServerFactory;
import io.github.amayaframework.options.OptionSet;
import org.eclipse.jetty.server.Server;

public class Main {
    public static void main(String[] args) throws Throwable {
        var factory = new JettyServerFactory(v -> new Server());
        var server = factory.create();
        server.setHandler(ctx -> {
            var req = ctx.getRequest();
            var rsp = ctx.getResponse();
            rsp.getWriter().write("Hello, " + req.getQueryParameter("user"));
        });
        server.bind(8080);
        server.start();
    }
}

Built With

Authors

See also the list of contributors who participated in this project.

License

This project is licensed under the Apache License 2.0 - see the LICENSE file for details

About

The amaya-server implementation is based on jetty-server.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages