| [//]: # " Copyright (c) 2015, 2020 Oracle and/or its affiliates. All rights reserved. " | |
| [//]: # " " | |
| [//]: # " This program and the accompanying materials are made available under the " | |
| [//]: # " terms of the Eclipse Distribution License v. 1.0, which is available at " | |
| [//]: # " http://www.eclipse.org/org/documents/edl-v10.php. " | |
| [//]: # " " | |
| [//]: # " SPDX-License-Identifier: BSD-3-Clause " | |
| Resource Configuration Reload Example | |
| ===================================== | |
| This example demonstrates how to create a simple Jersey application with | |
| resource reloading capability using | |
| [Grizzly HTTP Server container](https://projects.eclipse.org/projects/ee4j.grizzly). | |
| Contents | |
| -------- | |
| The mapping of the URI path space is presented in the following table: | |
| URI path | Resource class | Content | HTTP methods | |
| --------------------------- | --------------------------------------------------------- | ------------------------------------------------ | -------------- | |
| **_/flights/arrivals_** | org.glassfish.jersey.examples.reload.ArrivalsResource | Dummy Arrivals Information | GET | |
| **_/flights/departures_** | org.glassfish.jersey.examples.reload.DeparturesResource | Dummy Departures Information | GET | |
| **_/flights/stats_** | org.glassfish.jersey.examples.reload.StatsResource | Statistics on application resource utilization | GET | |
| The application gets configured via a plain text file named `resources`. | |
| The file contains a list of resource classes to be published by the | |
| application. After the application gets started, it watches the file system | |
| and reloads the application as file updates are being detected. | |
| Changes in JAX-RS resource source files and updates of the above mentioned resources file | |
| are being detected. Java code re-compilation is done as required. | |
| Running the Example | |
| ------------------- | |
| Run the example as follows: | |
| > mvn clean compile exec:java | |
| This deploys current example using[Grizzly | |
| container](https://projects.eclipse.org/projects/ee4j.grizzly). StatsResource should be available | |
| at <http://localhost:8080/flights/stats> | |
| You may want to check the other resources as well: | |
| - <http://localhost:8080/flights/departures> | |
| - <http://localhost:8080/flights/arrivals> | |
| Updated information on number of hits should be available at | |
| <http://localhost:8080/flights/stats>. | |
| Now you can try to edit the `resources` file and comment the stats | |
| resource out by using the `#` prefix. The point is you leave the | |
| application running while editing the file. The changes wil get picked | |
| up automatically. No need to manually restart the application. The | |
| `resource` file content should now look like follows: | |
| org.glassfish.jersey.examples.reload.DeparturesResource | |
| org.glassfish.jersey.examples.reload.ArrivalsResource | |
| #org.glassfish.jersey.examples.reload.StatsResource | |
| Once you save the change, the stats resource should not be available, | |
| but the other, departures/arrivals, resources should remain functional. | |
| Now you can revert the change back and check the stats resource is back | |
| providing actual statistics information. | |
| You can also try to change the JAX-RS resources source code. These changes | |
| will be also picked up automatically. |