Aanmaken en configureren van Jetty 9 Server in Java

1. Overzicht

In dit artikel zullen we het hebben over het programmatisch maken en configureren van een Jetty-instantie.

Jetty is een HTTP-server en servletcontainer die is ontworpen om licht van gewicht te zijn en gemakkelijk in te bouwen. We zullen bekijken hoe u een of meer instances van de server instelt en configureert.

2. Maven afhankelijkheden

Om te beginnen willen we Jetty 9 met de volgende Maven-afhankelijkheden toevoegen aan onze pom.xml:

 org.eclipse.jetty steiger-server 9.4.8.v20171121 org.eclipse.jetty steiger-webapp 9.4.8.v20171121 

3. Een basisserver maken

Een embedded server opstarten met Jetty is net zo eenvoudig als schrijven:

Server server = nieuwe server (); server.start ();

Het afsluiten is net zo eenvoudig:

server.stop ();

4. Afhandelaars

Nu onze server actief is, moeten we hem instructies geven over wat te doen met de inkomende verzoeken. Dit kan worden gedaan met behulp van de Handler koppel.

We zouden er zelf een kunnen maken, maar Jetty biedt al een reeks implementaties voor de meest voorkomende gebruiksscenario's. Laten we er twee eens bekijken.

4.1. WebAppContext

De WebAppContext class stelt u in staat de afhandeling van verzoeken te delegeren aan een bestaande webtoepassing. De applicatie kan worden geleverd als een WAR-bestandspad of als een webapp-mappad.

Als we een applicatie willen tonen onder de "myApp" -context, schrijven we:

Handler webAppHandler = nieuwe WebAppContext (webAppPath, "/ myApp"); server.setHandler (webAppHandler);

4.2. HandlerCollection

Voor complexe toepassingen kunnen we zelfs meer dan één handler specificeren met behulp van de HandlerCollection klasse.

Stel dat we twee aangepaste handlers hebben geïmplementeerd. De eerste voert alleen logboekbewerkingen uit, terwijl de tweede een daadwerkelijke reactie creëert en terugstuurt naar de gebruiker. We willen elk binnenkomend verzoek met beide in deze volgorde verwerken.

Hier is hoe het te doen:

Handler-handlers = nieuwe HandlerCollection (); handlers.addHandler (loggingRequestHandler); handlers.addHandler (customRequestHandler); server.setHandler (handlers);

5. Connectoren

Het volgende dat we willen doen, is configureren op welke adressen en poorten de server luistert en een time-out voor inactiviteit toevoegen.

De Server class declareert twee gemaksconstructors die kunnen worden gebruikt om te binden aan een specifieke poort of adres.

Hoewel dit ok kan zijn bij kleine applicaties, is het niet voldoende als we meerdere verbindingen op verschillende sockets willen openen.

In deze situatie biedt Jetty de Connector interface en meer specifiek de ServerConnector klasse waarmee verschillende verbindingsconfiguratieparameters kunnen worden gedefinieerd:

ServerConnector connector = nieuwe ServerConnector (server); connector.setPort (80); connector.setHost ("169.20.45.12"); connector.setIdleTimeout (30000); server.addConnector (connector);

Met deze configuratie luistert de server op 169.20.45.12:80. Elke verbinding die op dit adres tot stand wordt gebracht, heeft een time-out van 30 seconden.

Als we andere sockets moeten configureren, kunnen we andere connectoren toevoegen.

6. Conclusie

In deze korte tutorial hebben we ons gericht op het opzetten van een embedded server met Jetty. We hebben ook gezien hoe we verdere configuraties kunnen uitvoeren met Handlers en Connectoren.

Zoals altijd is alle code die hier wordt gebruikt, te vinden op GitHub.


$config[zx-auto] not found$config[zx-overlay] not found