From 85afa22b111e7d83da340a043e7ff23060f3b2f8 Mon Sep 17 00:00:00 2001 From: Chris Walker Date: Thu, 27 Aug 2020 10:53:26 -0500 Subject: [PATCH 01/10] First pass at renaming guides --- jetty-documentation/pom.xml | 6 +++--- .../configuring/chapter.adoc | 0 .../configuring/how-to-configure.adoc | 0 .../configuring/what-to-configure.adoc | 0 .../getting-started/chapter.adoc | 0 .../getting-started/jetty-common-configuration.adoc | 0 .../getting-started/jetty-deploying.adoc | 0 .../getting-started/jetty-installing.adoc | 0 .../getting-started/jetty-running.adoc | 0 .../Jetty_Configuration_File_Relationships.png | Bin .../index.adoc | 2 +- .../introduction/chapter.adoc | 0 .../introduction/jetty-coordinates.adoc | 0 .../introduction/jetty-javaee.adoc | 0 .../introduction/what-is-jetty.adoc | 6 +++--- .../introduction/what-version.adoc | 0 .../upgrading/chapter.adoc | 0 .../upgrading/sample.adoc | 0 .../upgrading/upgrading-9.3-to-9.4.adoc | 0 .../upgrading/upgrading-9.4-to.10.0.adoc | 0 .../alpn/alpn.adoc | 0 .../alpn/chapter.adoc | 0 .../annotations/chapter.adoc | 0 .../annotations/quick-annotations-setup.adoc | 0 .../annotations/using-annotations-embedded.adoc | 0 .../annotations/using-annotations.adoc | 0 .../connectors/chapter.adoc | 0 .../connectors/configuring-connectors.adoc | 0 .../connectors/configuring-ssl-distribution.adoc | 0 .../connectors/configuring-ssl.adoc | 0 .../contexts/chapter.adoc | 0 .../contexts/configuring-virtual-hosts.adoc | 0 .../contexts/custom-error-pages.adoc | 0 .../serving-webapp-from-particular-port.adoc | 0 .../contexts/setting-context-path.adoc | 0 .../contexts/setting-form-size.adoc | 0 .../contexts/temporary-directories.adoc | 0 .../deploying/anatomy-of-a-webapp.adoc | 0 .../deploying/automatic-webapp-deployment.adoc | 0 .../deploying/chapter.adoc | 0 .../configuring-specific-webapp-deployment.adoc | 0 .../deploying/deployment-architecture.adoc | 0 .../deploying/deployment-processing-webapps.adoc | 0 .../deploying/hot-deployment.adoc | 0 .../deploying/quickstart-webapp.adoc | 0 .../deploying/static-content-deployment.adoc | 0 .../extras/balancer-servlet.adoc | 0 .../extras/cgi-servlet.adoc | 0 .../extras/chapter.adoc | 0 .../extras/cross-origin-filter.adoc | 0 .../extras/debug-handler.adoc | 0 .../extras/default-handler.adoc | 0 .../extras/default-servlet.adoc | 0 .../extras/dos-filter.adoc | 0 .../extras/error-handler.adoc | 0 .../extras/gzip-filter.adoc | 0 .../extras/header-filter.adoc | 0 .../extras/inetaccess-handler.adoc | 0 .../extras/ipaccess-handler.adoc | 0 .../extras/moved-context-handler.adoc | 0 .../extras/proxy-servlet.adoc | 0 .../extras/qos-filter.adoc | 0 .../extras/resource-handler.adoc | 0 .../extras/rewrite-handler.adoc | 0 .../extras/shutdown-handler.adoc | 0 .../extras/statistics-handler.adoc | 0 .../fastcgi/chapter.adoc | 0 .../fastcgi/configuring-fastcgi.adoc | 0 .../fastcgi/fastcgi-intro.adoc | 0 .../http2/chapter.adoc | 0 .../http2/configuring-haproxy.adoc | 0 .../http2/configuring-http2.adoc | 0 .../http2/configuring-push.adoc | 0 .../http2/enabling-http2.adoc | 0 .../http2/introduction.adoc | 0 .../images/Jetty_DeployManager_AppLifeCycle-1.png | Bin ...ty_DeployManager_DefaultAppLifeCycleBindings.png | Bin .../Jetty_DeployManager_DeploymentManager_Roles.png | Bin .../images/SessionsHierarchy.png | Bin .../images/certificate-chain.png | Bin .../images/jconsole1.jpg | Bin .../images/jconsole2.jpg | Bin .../images/jconsole3.png | Bin .../images/jmc1.png | Bin .../images/jmc2.png | Bin .../images/jmc3.png | Bin .../images/modules-9.3-simplified.dot | 0 .../images/modules-9.3-simplified.png | Bin .../images/windows-service-jetty.png | Bin .../index.adoc | 0 .../jmx/chapter.adoc | 0 .../jmx/jetty-jconsole.adoc | 0 .../jmx/jetty-jmx-annotations.adoc | 0 .../jmx/using-jmx.adoc | 0 .../jndi/chapter.adoc | 0 .../jndi/jndi-configuration.adoc | 0 .../jndi/jndi-datasources.adoc | 0 .../jndi/jndi-embedded.adoc | 0 .../jndi/quick-jndi-setup.adoc | 0 .../jndi/using-jndi.adoc | 0 .../jsp/chapter.adoc | 0 .../jsp/configuring-jsp.adoc | 0 .../logging/chapter.adoc | 0 .../logging/configuring-jetty-logging.adoc | 0 .../logging/configuring-jetty-request-logs.adoc | 0 .../logging/configuring-logging-modules.adoc | 0 .../logging/default-logging-with-stderrlog.adoc | 0 .../logging/dump-tool.adoc | 0 .../logging/example-apache-log4j.adoc | 0 .../logging/example-java-util-logging-native.adoc | 0 .../logging/example-java-util-logging.adoc | 0 .../example-logback-centralized-logging.adoc | 0 .../logging/example-logback-sifting.adoc | 0 .../logging/example-logback.adoc | 0 .../logging/example-slf4j-multiple-loggers.adoc | 0 .../runner/chapter.adoc | 0 .../runner/jetty-runner.adoc | 0 .../security/authentication.adoc | 0 .../security/chapter.adoc | 0 .../security/configuring-form-size.adoc | 0 .../security/jaas-support.adoc | 0 .../security/jetty-home-and-jetty-base.adoc | 0 .../security/openid-support.adoc | 0 .../security/secure-passwords.adoc | 0 .../security/serving-aliased-files.adoc | 0 .../setting-port80-access-for-non-root-user.adoc | 0 .../security/spnego-support.adoc | 0 .../sessions/chapter.adoc | 0 .../legacy/session-clustering-gcloud-datastore.adoc | 0 .../legacy/session-clustering-infinispan.adoc | 0 .../sessions/legacy/session-clustering-jdbc.adoc | 0 .../sessions/legacy/session-clustering-mongodb.adoc | 0 .../legacy/setting-session-characteristics.adoc | 0 .../sessions/legacy/using-persistent-sessions.adoc | 0 .../sessions/session-configuration-file-system.adoc | 0 .../sessions/session-configuration-gcloud.adoc | 0 .../sessions/session-configuration-hazelcast.adoc | 0 .../sessions/session-configuration-housekeeper.adoc | 0 .../sessions/session-configuration-infinispan.adoc | 0 .../sessions/session-configuration-jdbc.adoc | 0 ...ion-configuration-memcachedsessiondatastore.adoc | 0 .../sessions/session-configuration-memory.adoc | 0 .../sessions/session-configuration-mongodb.adoc | 0 .../session-configuration-sessioncache.adoc | 0 .../sessions/session-hierarchy.adoc | 0 .../sessions/sessions-details.adoc | 0 .../sessions/sessions-usecases.adoc | 0 .../startup/chapter.adoc | 0 .../startup/custom-modules.adoc | 0 .../startup/screen-empty-base-listconfig.adoc | 0 .../startup/screen-empty-base.adoc | 0 .../screen-http-webapp-deploy-listconfig.adoc | 0 .../startup/screen-http-webapp-deploy.adoc | 0 .../startup/screen-list-logging-modules.adoc | 0 .../startup/screen-list-modules.adoc | 0 .../startup/start-jar.adoc | 0 .../startup/start-matrix.adoc | 0 .../startup/startup-base-vs-home.adoc | 0 .../startup/startup-classpath.adoc | 0 .../startup/startup-jpms.adoc | 0 .../startup/startup-modules.adoc | 0 .../startup/startup-overview.adoc | 0 .../startup/startup-troubleshooting.adoc | 0 .../startup/startup-unix-service.adoc | 0 .../startup/startup-windows-service.adoc | 0 .../startup/startup-xml-config.adoc | 0 .../tuning/chapter.adoc | 0 .../tuning/garbage-collection.adoc | 0 .../tuning/high-load.adoc | 0 .../tuning/limit-load.adoc | 0 .../.asciidoctorconfig | 0 .../arch-bean.adoc | 0 .../arch-io.adoc | 0 .../arch-jmx.adoc | 0 .../arch-listener.adoc | 0 .../{embedded-guide => programming-guide}/arch.adoc | 0 .../client/client-io-arch.adoc | 0 .../client/client.adoc | 0 .../client/http/client-http-api.adoc | 0 .../client/http/client-http-authentication.adoc | 0 .../client/http/client-http-configuration.adoc | 0 .../client/http/client-http-cookie.adoc | 0 .../client/http/client-http-intro.adoc | 0 .../client/http/client-http-proxy.adoc | 0 .../client/http/client-http-transport.adoc | 0 .../client/http/client-http.adoc | 0 .../client/http2/client-http2.adoc | 0 .../http2.adoc | 0 .../index.adoc | 0 .../maven/jetty-jspc-maven-plugin.adoc | 0 .../maven/jetty-maven-helloworld.adoc | 0 .../maven/jetty-maven-plugin.adoc | 0 .../maven/maven.adoc | 0 .../old_docs/ant/chapter.adoc | 0 .../old_docs/ant/jetty-ant.adoc | 0 .../old_docs/architecture/basic-architecture.adoc | 0 .../old_docs/architecture/chapter.adoc | 0 .../old_docs/architecture/jetty-classloading.adoc | 0 .../architecture/server-side-architecture.adoc | 0 .../old_docs/contributing/bugs.adoc | 0 .../old_docs/contributing/chapter.adoc | 0 .../old_docs/contributing/coding-standards.adoc | 0 .../old_docs/contributing/community.adoc | 0 .../old_docs/contributing/documentation.adoc | 0 .../old_docs/contributing/patches.adoc | 0 .../old_docs/contributing/release-testing.adoc | 0 .../old_docs/contributing/releasing-jetty.adoc | 0 .../old_docs/contributing/security.adoc | 0 .../old_docs/contributing/source-build.adoc | 0 .../old_docs/debugging/chapter.adoc | 0 .../old_docs/debugging/debugging-with-eclipse.adoc | 0 .../old_docs/debugging/debugging-with-intellij.adoc | 0 .../old_docs/debugging/enable-remote-debugging.adoc | 0 .../old_docs/embedding/chapter.adoc | 0 .../old_docs/embedding/embedded-examples.adoc | 0 .../old_docs/embedding/embedding-jetty.adoc | 0 .../embedding/examples/embedded-file-server.adoc | 0 .../examples/embedded-many-connectors.adoc | 0 .../examples/embedded-minimal-servlet.adoc | 0 .../embedding/examples/embedded-one-webapp.adoc | 0 .../examples/embedded-secured-hello-handler.adoc | 0 .../examples/embedded-split-file-server.adoc | 0 .../old_docs/embedding/jetty-helloworld.adoc | 0 .../old_docs/faq/chapter.adoc | 0 .../old_docs/frameworks/chapter.adoc | 0 .../old_docs/frameworks/metro.adoc | 0 .../old_docs/frameworks/osgi.adoc | 0 .../old_docs/frameworks/spring-usage.adoc | 0 .../old_docs/frameworks/weld.adoc | 0 .../old_docs/images/basic-architecture-handlers.png | Bin .../images/basic-architecture-nested-handlers.png | Bin .../old_docs/images/basic-architecture-patterns.png | Bin .../images/basic-architecture-servlet-handler.png | Bin .../images/basic-architecture-web-application.png | Bin .../old_docs/images/debug-eclipse-1.png | Bin .../old_docs/images/debug-eclipse-2.png | Bin .../old_docs/images/debug-eclipse-3.png | Bin .../old_docs/images/intellij_debug_view.png | Bin .../old_docs/images/intellij_new_remote_config.png | Bin .../old_docs/images/intellij_select_debug.png | Bin .../old_docs/images/intellij_set_breakpoint.png | Bin .../images/jetty-high-level-architecture.png | Bin .../old_docs/index.old | 0 .../old_docs/jetty-xml/chapter.adoc | 0 .../old_docs/jetty-xml/jetty-env-xml.adoc | 0 .../old_docs/jetty-xml/jetty-web-xml-config.adoc | 0 .../old_docs/jetty-xml/jetty-xml-config.adoc | 0 .../old_docs/jetty-xml/jetty-xml-syntax.adoc | 0 .../old_docs/jetty-xml/jetty-xml-usage.adoc | 0 .../old_docs/jetty-xml/override-web-xml.adoc | 0 .../old_docs/jetty-xml/webdefault-xml.adoc | 0 .../old_docs/maven/jetty-maven-scanning.adoc | 0 .../old_docs/platforms/chapter.adoc | 0 .../old_docs/platforms/cloudfoundry.adoc | 0 .../old_docs/platforms/elastic-beanstalk.adoc | 0 .../old_docs/platforms/fedora.adoc | 0 .../old_docs/platforms/jelastic.adoc | 0 .../old_docs/platforms/ubuntu.adoc | 0 .../old_docs/troubleshooting/chapter.adoc | 0 .../troubleshooting/preventing-memory-leaks.adoc | 0 .../old_docs/troubleshooting/security-reports.adoc | 0 .../old_docs/troubleshooting/slow-deployment.adoc | 0 .../troubleshooting-locked-files.adoc | 0 .../troubleshooting-zip-exceptions.adoc | 0 .../old_docs/troubleshooting/watchservice.adoc | 0 .../old_docs/websockets/intro/chapter.adoc | 0 .../old_docs/websockets/java/chapter.adoc | 0 .../websockets/java/java-websocket-client-api.adoc | 0 .../websockets/java/java-websocket-server-api.adoc | 0 .../old_docs/websockets/jetty/chapter.adoc | 0 .../jetty/jetty-websocket-api-adapter.adoc | 0 .../jetty/jetty-websocket-api-annotations.adoc | 0 .../jetty/jetty-websocket-api-events.adoc | 0 .../jetty/jetty-websocket-api-listener.adoc | 0 .../jetty/jetty-websocket-api-send-message.adoc | 0 .../jetty/jetty-websocket-api-session.adoc | 0 .../websockets/jetty/jetty-websocket-api.adoc | 0 .../jetty/jetty-websocket-client-api.adoc | 0 .../jetty/jetty-websocket-server-api.adoc | 0 .../server/http/server-http-application.adoc | 0 .../server/http/server-http-connector.adoc | 0 .../server/http/server-http-handler-implement.adoc | 0 .../server/http/server-http-handler-use.adoc | 0 .../server/http/server-http-handler.adoc | 0 .../server/http/server-http-security.adoc | 0 .../server/http/server-http.adoc | 0 .../server/http2/server-http2.adoc | 0 .../server/server-io-arch.adoc | 0 .../server/server.adoc | 0 .../server/websocket/server-websocket.adoc | 0 .../troubleshooting.adoc | 0 291 files changed, 7 insertions(+), 7 deletions(-) rename jetty-documentation/src/main/asciidoc/{quickstart-guide => gettingstarted-guide}/configuring/chapter.adoc (100%) rename jetty-documentation/src/main/asciidoc/{quickstart-guide => gettingstarted-guide}/configuring/how-to-configure.adoc (100%) rename jetty-documentation/src/main/asciidoc/{quickstart-guide => gettingstarted-guide}/configuring/what-to-configure.adoc (100%) rename jetty-documentation/src/main/asciidoc/{quickstart-guide => gettingstarted-guide}/getting-started/chapter.adoc (100%) rename jetty-documentation/src/main/asciidoc/{quickstart-guide => gettingstarted-guide}/getting-started/jetty-common-configuration.adoc (100%) rename jetty-documentation/src/main/asciidoc/{quickstart-guide => gettingstarted-guide}/getting-started/jetty-deploying.adoc (100%) rename jetty-documentation/src/main/asciidoc/{quickstart-guide => gettingstarted-guide}/getting-started/jetty-installing.adoc (100%) rename jetty-documentation/src/main/asciidoc/{quickstart-guide => gettingstarted-guide}/getting-started/jetty-running.adoc (100%) rename jetty-documentation/src/main/asciidoc/{quickstart-guide => gettingstarted-guide}/images/Jetty_Configuration_File_Relationships.png (100%) rename jetty-documentation/src/main/asciidoc/{quickstart-guide => gettingstarted-guide}/index.adoc (97%) rename jetty-documentation/src/main/asciidoc/{quickstart-guide => gettingstarted-guide}/introduction/chapter.adoc (100%) rename jetty-documentation/src/main/asciidoc/{quickstart-guide => gettingstarted-guide}/introduction/jetty-coordinates.adoc (100%) rename jetty-documentation/src/main/asciidoc/{quickstart-guide => gettingstarted-guide}/introduction/jetty-javaee.adoc (100%) rename jetty-documentation/src/main/asciidoc/{quickstart-guide => gettingstarted-guide}/introduction/what-is-jetty.adoc (87%) rename jetty-documentation/src/main/asciidoc/{quickstart-guide => gettingstarted-guide}/introduction/what-version.adoc (100%) rename jetty-documentation/src/main/asciidoc/{quickstart-guide => gettingstarted-guide}/upgrading/chapter.adoc (100%) rename jetty-documentation/src/main/asciidoc/{quickstart-guide => gettingstarted-guide}/upgrading/sample.adoc (100%) rename jetty-documentation/src/main/asciidoc/{quickstart-guide => gettingstarted-guide}/upgrading/upgrading-9.3-to-9.4.adoc (100%) rename jetty-documentation/src/main/asciidoc/{quickstart-guide => gettingstarted-guide}/upgrading/upgrading-9.4-to.10.0.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/alpn/alpn.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/alpn/chapter.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/annotations/chapter.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/annotations/quick-annotations-setup.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/annotations/using-annotations-embedded.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/annotations/using-annotations.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/connectors/chapter.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/connectors/configuring-connectors.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/connectors/configuring-ssl-distribution.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/connectors/configuring-ssl.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/contexts/chapter.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/contexts/configuring-virtual-hosts.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/contexts/custom-error-pages.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/contexts/serving-webapp-from-particular-port.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/contexts/setting-context-path.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/contexts/setting-form-size.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/contexts/temporary-directories.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/deploying/anatomy-of-a-webapp.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/deploying/automatic-webapp-deployment.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/deploying/chapter.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/deploying/configuring-specific-webapp-deployment.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/deploying/deployment-architecture.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/deploying/deployment-processing-webapps.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/deploying/hot-deployment.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/deploying/quickstart-webapp.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/deploying/static-content-deployment.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/extras/balancer-servlet.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/extras/cgi-servlet.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/extras/chapter.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/extras/cross-origin-filter.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/extras/debug-handler.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/extras/default-handler.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/extras/default-servlet.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/extras/dos-filter.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/extras/error-handler.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/extras/gzip-filter.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/extras/header-filter.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/extras/inetaccess-handler.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/extras/ipaccess-handler.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/extras/moved-context-handler.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/extras/proxy-servlet.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/extras/qos-filter.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/extras/resource-handler.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/extras/rewrite-handler.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/extras/shutdown-handler.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/extras/statistics-handler.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/fastcgi/chapter.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/fastcgi/configuring-fastcgi.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/fastcgi/fastcgi-intro.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/http2/chapter.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/http2/configuring-haproxy.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/http2/configuring-http2.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/http2/configuring-push.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/http2/enabling-http2.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/http2/introduction.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/images/Jetty_DeployManager_AppLifeCycle-1.png (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/images/Jetty_DeployManager_DefaultAppLifeCycleBindings.png (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/images/Jetty_DeployManager_DeploymentManager_Roles.png (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/images/SessionsHierarchy.png (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/images/certificate-chain.png (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/images/jconsole1.jpg (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/images/jconsole2.jpg (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/images/jconsole3.png (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/images/jmc1.png (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/images/jmc2.png (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/images/jmc3.png (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/images/modules-9.3-simplified.dot (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/images/modules-9.3-simplified.png (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/images/windows-service-jetty.png (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/index.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/jmx/chapter.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/jmx/jetty-jconsole.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/jmx/jetty-jmx-annotations.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/jmx/using-jmx.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/jndi/chapter.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/jndi/jndi-configuration.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/jndi/jndi-datasources.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/jndi/jndi-embedded.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/jndi/quick-jndi-setup.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/jndi/using-jndi.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/jsp/chapter.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/jsp/configuring-jsp.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/logging/chapter.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/logging/configuring-jetty-logging.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/logging/configuring-jetty-request-logs.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/logging/configuring-logging-modules.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/logging/default-logging-with-stderrlog.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/logging/dump-tool.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/logging/example-apache-log4j.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/logging/example-java-util-logging-native.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/logging/example-java-util-logging.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/logging/example-logback-centralized-logging.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/logging/example-logback-sifting.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/logging/example-logback.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/logging/example-slf4j-multiple-loggers.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/runner/chapter.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/runner/jetty-runner.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/security/authentication.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/security/chapter.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/security/configuring-form-size.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/security/jaas-support.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/security/jetty-home-and-jetty-base.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/security/openid-support.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/security/secure-passwords.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/security/serving-aliased-files.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/security/setting-port80-access-for-non-root-user.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/security/spnego-support.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/sessions/chapter.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/sessions/legacy/session-clustering-gcloud-datastore.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/sessions/legacy/session-clustering-infinispan.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/sessions/legacy/session-clustering-jdbc.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/sessions/legacy/session-clustering-mongodb.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/sessions/legacy/setting-session-characteristics.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/sessions/legacy/using-persistent-sessions.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/sessions/session-configuration-file-system.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/sessions/session-configuration-gcloud.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/sessions/session-configuration-hazelcast.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/sessions/session-configuration-housekeeper.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/sessions/session-configuration-infinispan.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/sessions/session-configuration-jdbc.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/sessions/session-configuration-memcachedsessiondatastore.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/sessions/session-configuration-memory.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/sessions/session-configuration-mongodb.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/sessions/session-configuration-sessioncache.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/sessions/session-hierarchy.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/sessions/sessions-details.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/sessions/sessions-usecases.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/startup/chapter.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/startup/custom-modules.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/startup/screen-empty-base-listconfig.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/startup/screen-empty-base.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/startup/screen-http-webapp-deploy-listconfig.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/startup/screen-http-webapp-deploy.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/startup/screen-list-logging-modules.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/startup/screen-list-modules.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/startup/start-jar.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/startup/start-matrix.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/startup/startup-base-vs-home.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/startup/startup-classpath.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/startup/startup-jpms.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/startup/startup-modules.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/startup/startup-overview.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/startup/startup-troubleshooting.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/startup/startup-unix-service.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/startup/startup-windows-service.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/startup/startup-xml-config.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/tuning/chapter.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/tuning/garbage-collection.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/tuning/high-load.adoc (100%) rename jetty-documentation/src/main/asciidoc/{distribution-guide => operation-guide}/tuning/limit-load.adoc (100%) rename jetty-documentation/src/main/asciidoc/{embedded-guide => programming-guide}/.asciidoctorconfig (100%) rename jetty-documentation/src/main/asciidoc/{embedded-guide => programming-guide}/arch-bean.adoc (100%) rename jetty-documentation/src/main/asciidoc/{embedded-guide => programming-guide}/arch-io.adoc (100%) rename jetty-documentation/src/main/asciidoc/{embedded-guide => programming-guide}/arch-jmx.adoc (100%) rename jetty-documentation/src/main/asciidoc/{embedded-guide => programming-guide}/arch-listener.adoc (100%) rename jetty-documentation/src/main/asciidoc/{embedded-guide => programming-guide}/arch.adoc (100%) rename jetty-documentation/src/main/asciidoc/{embedded-guide => programming-guide}/client/client-io-arch.adoc (100%) rename jetty-documentation/src/main/asciidoc/{embedded-guide => programming-guide}/client/client.adoc (100%) rename jetty-documentation/src/main/asciidoc/{embedded-guide => programming-guide}/client/http/client-http-api.adoc (100%) rename jetty-documentation/src/main/asciidoc/{embedded-guide => programming-guide}/client/http/client-http-authentication.adoc (100%) rename jetty-documentation/src/main/asciidoc/{embedded-guide => programming-guide}/client/http/client-http-configuration.adoc (100%) rename jetty-documentation/src/main/asciidoc/{embedded-guide => programming-guide}/client/http/client-http-cookie.adoc (100%) rename jetty-documentation/src/main/asciidoc/{embedded-guide => programming-guide}/client/http/client-http-intro.adoc (100%) rename jetty-documentation/src/main/asciidoc/{embedded-guide => programming-guide}/client/http/client-http-proxy.adoc (100%) rename jetty-documentation/src/main/asciidoc/{embedded-guide => programming-guide}/client/http/client-http-transport.adoc (100%) rename jetty-documentation/src/main/asciidoc/{embedded-guide => programming-guide}/client/http/client-http.adoc (100%) rename jetty-documentation/src/main/asciidoc/{embedded-guide => programming-guide}/client/http2/client-http2.adoc (100%) rename jetty-documentation/src/main/asciidoc/{embedded-guide => programming-guide}/http2.adoc (100%) rename jetty-documentation/src/main/asciidoc/{embedded-guide => programming-guide}/index.adoc (100%) rename jetty-documentation/src/main/asciidoc/{embedded-guide => programming-guide}/maven/jetty-jspc-maven-plugin.adoc (100%) rename jetty-documentation/src/main/asciidoc/{embedded-guide => programming-guide}/maven/jetty-maven-helloworld.adoc (100%) rename jetty-documentation/src/main/asciidoc/{embedded-guide => programming-guide}/maven/jetty-maven-plugin.adoc (100%) rename jetty-documentation/src/main/asciidoc/{embedded-guide => programming-guide}/maven/maven.adoc (100%) rename jetty-documentation/src/main/asciidoc/{embedded-guide => programming-guide}/old_docs/ant/chapter.adoc (100%) rename jetty-documentation/src/main/asciidoc/{embedded-guide => programming-guide}/old_docs/ant/jetty-ant.adoc (100%) rename jetty-documentation/src/main/asciidoc/{embedded-guide => programming-guide}/old_docs/architecture/basic-architecture.adoc (100%) rename jetty-documentation/src/main/asciidoc/{embedded-guide => programming-guide}/old_docs/architecture/chapter.adoc (100%) rename jetty-documentation/src/main/asciidoc/{embedded-guide => programming-guide}/old_docs/architecture/jetty-classloading.adoc (100%) rename jetty-documentation/src/main/asciidoc/{embedded-guide => programming-guide}/old_docs/architecture/server-side-architecture.adoc (100%) rename jetty-documentation/src/main/asciidoc/{embedded-guide => programming-guide}/old_docs/contributing/bugs.adoc (100%) rename jetty-documentation/src/main/asciidoc/{embedded-guide => programming-guide}/old_docs/contributing/chapter.adoc (100%) rename jetty-documentation/src/main/asciidoc/{embedded-guide => programming-guide}/old_docs/contributing/coding-standards.adoc (100%) rename jetty-documentation/src/main/asciidoc/{embedded-guide => programming-guide}/old_docs/contributing/community.adoc (100%) rename jetty-documentation/src/main/asciidoc/{embedded-guide => programming-guide}/old_docs/contributing/documentation.adoc (100%) rename jetty-documentation/src/main/asciidoc/{embedded-guide => programming-guide}/old_docs/contributing/patches.adoc (100%) rename jetty-documentation/src/main/asciidoc/{embedded-guide => programming-guide}/old_docs/contributing/release-testing.adoc (100%) rename jetty-documentation/src/main/asciidoc/{embedded-guide => programming-guide}/old_docs/contributing/releasing-jetty.adoc (100%) rename jetty-documentation/src/main/asciidoc/{embedded-guide => programming-guide}/old_docs/contributing/security.adoc (100%) rename jetty-documentation/src/main/asciidoc/{embedded-guide => programming-guide}/old_docs/contributing/source-build.adoc (100%) rename jetty-documentation/src/main/asciidoc/{embedded-guide => programming-guide}/old_docs/debugging/chapter.adoc (100%) rename jetty-documentation/src/main/asciidoc/{embedded-guide => programming-guide}/old_docs/debugging/debugging-with-eclipse.adoc (100%) rename jetty-documentation/src/main/asciidoc/{embedded-guide => programming-guide}/old_docs/debugging/debugging-with-intellij.adoc (100%) rename jetty-documentation/src/main/asciidoc/{embedded-guide => programming-guide}/old_docs/debugging/enable-remote-debugging.adoc (100%) rename jetty-documentation/src/main/asciidoc/{embedded-guide => programming-guide}/old_docs/embedding/chapter.adoc (100%) rename jetty-documentation/src/main/asciidoc/{embedded-guide => programming-guide}/old_docs/embedding/embedded-examples.adoc (100%) rename jetty-documentation/src/main/asciidoc/{embedded-guide => programming-guide}/old_docs/embedding/embedding-jetty.adoc (100%) rename jetty-documentation/src/main/asciidoc/{embedded-guide => programming-guide}/old_docs/embedding/examples/embedded-file-server.adoc (100%) rename jetty-documentation/src/main/asciidoc/{embedded-guide => programming-guide}/old_docs/embedding/examples/embedded-many-connectors.adoc (100%) rename jetty-documentation/src/main/asciidoc/{embedded-guide => programming-guide}/old_docs/embedding/examples/embedded-minimal-servlet.adoc (100%) rename jetty-documentation/src/main/asciidoc/{embedded-guide => programming-guide}/old_docs/embedding/examples/embedded-one-webapp.adoc (100%) rename jetty-documentation/src/main/asciidoc/{embedded-guide => programming-guide}/old_docs/embedding/examples/embedded-secured-hello-handler.adoc (100%) rename jetty-documentation/src/main/asciidoc/{embedded-guide => programming-guide}/old_docs/embedding/examples/embedded-split-file-server.adoc (100%) rename jetty-documentation/src/main/asciidoc/{embedded-guide => programming-guide}/old_docs/embedding/jetty-helloworld.adoc (100%) rename jetty-documentation/src/main/asciidoc/{embedded-guide => programming-guide}/old_docs/faq/chapter.adoc (100%) rename jetty-documentation/src/main/asciidoc/{embedded-guide => programming-guide}/old_docs/frameworks/chapter.adoc (100%) rename jetty-documentation/src/main/asciidoc/{embedded-guide => programming-guide}/old_docs/frameworks/metro.adoc (100%) rename jetty-documentation/src/main/asciidoc/{embedded-guide => programming-guide}/old_docs/frameworks/osgi.adoc (100%) rename jetty-documentation/src/main/asciidoc/{embedded-guide => programming-guide}/old_docs/frameworks/spring-usage.adoc (100%) rename jetty-documentation/src/main/asciidoc/{embedded-guide => programming-guide}/old_docs/frameworks/weld.adoc (100%) rename jetty-documentation/src/main/asciidoc/{embedded-guide => programming-guide}/old_docs/images/basic-architecture-handlers.png (100%) rename jetty-documentation/src/main/asciidoc/{embedded-guide => programming-guide}/old_docs/images/basic-architecture-nested-handlers.png (100%) rename jetty-documentation/src/main/asciidoc/{embedded-guide => programming-guide}/old_docs/images/basic-architecture-patterns.png (100%) rename jetty-documentation/src/main/asciidoc/{embedded-guide => programming-guide}/old_docs/images/basic-architecture-servlet-handler.png (100%) rename jetty-documentation/src/main/asciidoc/{embedded-guide => programming-guide}/old_docs/images/basic-architecture-web-application.png (100%) rename jetty-documentation/src/main/asciidoc/{embedded-guide => programming-guide}/old_docs/images/debug-eclipse-1.png (100%) rename jetty-documentation/src/main/asciidoc/{embedded-guide => programming-guide}/old_docs/images/debug-eclipse-2.png (100%) rename jetty-documentation/src/main/asciidoc/{embedded-guide => programming-guide}/old_docs/images/debug-eclipse-3.png (100%) rename jetty-documentation/src/main/asciidoc/{embedded-guide => programming-guide}/old_docs/images/intellij_debug_view.png (100%) rename jetty-documentation/src/main/asciidoc/{embedded-guide => programming-guide}/old_docs/images/intellij_new_remote_config.png (100%) rename jetty-documentation/src/main/asciidoc/{embedded-guide => programming-guide}/old_docs/images/intellij_select_debug.png (100%) rename jetty-documentation/src/main/asciidoc/{embedded-guide => programming-guide}/old_docs/images/intellij_set_breakpoint.png (100%) rename jetty-documentation/src/main/asciidoc/{embedded-guide => programming-guide}/old_docs/images/jetty-high-level-architecture.png (100%) rename jetty-documentation/src/main/asciidoc/{embedded-guide => programming-guide}/old_docs/index.old (100%) rename jetty-documentation/src/main/asciidoc/{embedded-guide => programming-guide}/old_docs/jetty-xml/chapter.adoc (100%) rename jetty-documentation/src/main/asciidoc/{embedded-guide => programming-guide}/old_docs/jetty-xml/jetty-env-xml.adoc (100%) rename jetty-documentation/src/main/asciidoc/{embedded-guide => programming-guide}/old_docs/jetty-xml/jetty-web-xml-config.adoc (100%) rename jetty-documentation/src/main/asciidoc/{embedded-guide => programming-guide}/old_docs/jetty-xml/jetty-xml-config.adoc (100%) rename jetty-documentation/src/main/asciidoc/{embedded-guide => programming-guide}/old_docs/jetty-xml/jetty-xml-syntax.adoc (100%) rename jetty-documentation/src/main/asciidoc/{embedded-guide => programming-guide}/old_docs/jetty-xml/jetty-xml-usage.adoc (100%) rename jetty-documentation/src/main/asciidoc/{embedded-guide => programming-guide}/old_docs/jetty-xml/override-web-xml.adoc (100%) rename jetty-documentation/src/main/asciidoc/{embedded-guide => programming-guide}/old_docs/jetty-xml/webdefault-xml.adoc (100%) rename jetty-documentation/src/main/asciidoc/{embedded-guide => programming-guide}/old_docs/maven/jetty-maven-scanning.adoc (100%) rename jetty-documentation/src/main/asciidoc/{embedded-guide => programming-guide}/old_docs/platforms/chapter.adoc (100%) rename jetty-documentation/src/main/asciidoc/{embedded-guide => programming-guide}/old_docs/platforms/cloudfoundry.adoc (100%) rename jetty-documentation/src/main/asciidoc/{embedded-guide => programming-guide}/old_docs/platforms/elastic-beanstalk.adoc (100%) rename jetty-documentation/src/main/asciidoc/{embedded-guide => programming-guide}/old_docs/platforms/fedora.adoc (100%) rename jetty-documentation/src/main/asciidoc/{embedded-guide => programming-guide}/old_docs/platforms/jelastic.adoc (100%) rename jetty-documentation/src/main/asciidoc/{embedded-guide => programming-guide}/old_docs/platforms/ubuntu.adoc (100%) rename jetty-documentation/src/main/asciidoc/{embedded-guide => programming-guide}/old_docs/troubleshooting/chapter.adoc (100%) rename jetty-documentation/src/main/asciidoc/{embedded-guide => programming-guide}/old_docs/troubleshooting/preventing-memory-leaks.adoc (100%) rename jetty-documentation/src/main/asciidoc/{embedded-guide => programming-guide}/old_docs/troubleshooting/security-reports.adoc (100%) rename jetty-documentation/src/main/asciidoc/{embedded-guide => programming-guide}/old_docs/troubleshooting/slow-deployment.adoc (100%) rename jetty-documentation/src/main/asciidoc/{embedded-guide => programming-guide}/old_docs/troubleshooting/troubleshooting-locked-files.adoc (100%) rename jetty-documentation/src/main/asciidoc/{embedded-guide => programming-guide}/old_docs/troubleshooting/troubleshooting-zip-exceptions.adoc (100%) rename jetty-documentation/src/main/asciidoc/{embedded-guide => programming-guide}/old_docs/troubleshooting/watchservice.adoc (100%) rename jetty-documentation/src/main/asciidoc/{embedded-guide => programming-guide}/old_docs/websockets/intro/chapter.adoc (100%) rename jetty-documentation/src/main/asciidoc/{embedded-guide => programming-guide}/old_docs/websockets/java/chapter.adoc (100%) rename jetty-documentation/src/main/asciidoc/{embedded-guide => programming-guide}/old_docs/websockets/java/java-websocket-client-api.adoc (100%) rename jetty-documentation/src/main/asciidoc/{embedded-guide => programming-guide}/old_docs/websockets/java/java-websocket-server-api.adoc (100%) rename jetty-documentation/src/main/asciidoc/{embedded-guide => programming-guide}/old_docs/websockets/jetty/chapter.adoc (100%) rename jetty-documentation/src/main/asciidoc/{embedded-guide => programming-guide}/old_docs/websockets/jetty/jetty-websocket-api-adapter.adoc (100%) rename jetty-documentation/src/main/asciidoc/{embedded-guide => programming-guide}/old_docs/websockets/jetty/jetty-websocket-api-annotations.adoc (100%) rename jetty-documentation/src/main/asciidoc/{embedded-guide => programming-guide}/old_docs/websockets/jetty/jetty-websocket-api-events.adoc (100%) rename jetty-documentation/src/main/asciidoc/{embedded-guide => programming-guide}/old_docs/websockets/jetty/jetty-websocket-api-listener.adoc (100%) rename jetty-documentation/src/main/asciidoc/{embedded-guide => programming-guide}/old_docs/websockets/jetty/jetty-websocket-api-send-message.adoc (100%) rename jetty-documentation/src/main/asciidoc/{embedded-guide => programming-guide}/old_docs/websockets/jetty/jetty-websocket-api-session.adoc (100%) rename jetty-documentation/src/main/asciidoc/{embedded-guide => programming-guide}/old_docs/websockets/jetty/jetty-websocket-api.adoc (100%) rename jetty-documentation/src/main/asciidoc/{embedded-guide => programming-guide}/old_docs/websockets/jetty/jetty-websocket-client-api.adoc (100%) rename jetty-documentation/src/main/asciidoc/{embedded-guide => programming-guide}/old_docs/websockets/jetty/jetty-websocket-server-api.adoc (100%) rename jetty-documentation/src/main/asciidoc/{embedded-guide => programming-guide}/server/http/server-http-application.adoc (100%) rename jetty-documentation/src/main/asciidoc/{embedded-guide => programming-guide}/server/http/server-http-connector.adoc (100%) rename jetty-documentation/src/main/asciidoc/{embedded-guide => programming-guide}/server/http/server-http-handler-implement.adoc (100%) rename jetty-documentation/src/main/asciidoc/{embedded-guide => programming-guide}/server/http/server-http-handler-use.adoc (100%) rename jetty-documentation/src/main/asciidoc/{embedded-guide => programming-guide}/server/http/server-http-handler.adoc (100%) rename jetty-documentation/src/main/asciidoc/{embedded-guide => programming-guide}/server/http/server-http-security.adoc (100%) rename jetty-documentation/src/main/asciidoc/{embedded-guide => programming-guide}/server/http/server-http.adoc (100%) rename jetty-documentation/src/main/asciidoc/{embedded-guide => programming-guide}/server/http2/server-http2.adoc (100%) rename jetty-documentation/src/main/asciidoc/{embedded-guide => programming-guide}/server/server-io-arch.adoc (100%) rename jetty-documentation/src/main/asciidoc/{embedded-guide => programming-guide}/server/server.adoc (100%) rename jetty-documentation/src/main/asciidoc/{embedded-guide => programming-guide}/server/websocket/server-websocket.adoc (100%) rename jetty-documentation/src/main/asciidoc/{embedded-guide => programming-guide}/troubleshooting.adoc (100%) diff --git a/jetty-documentation/pom.xml b/jetty-documentation/pom.xml index 21938da5bda..0f0ea5c365d 100644 --- a/jetty-documentation/pom.xml +++ b/jetty-documentation/pom.xml @@ -165,9 +165,9 @@ ${basedir}/.. https://github.com/eclipse/jetty.project/tree/master https://github.com/eclipse/jetty.project/tree/jetty-10.0.x-doc-refactor/jetty-documentation/src/main/asciidoc - ../distribution-guide/index.html - ../embedded-guide/index.html - ../quickstart-guide/index.html + ../operation-guide/index.html + ../programming-guide/index.html + ../gettingstarted-guide/index.html ../contribution-guide/index.html http://central.maven.org/maven2 ${project.version} diff --git a/jetty-documentation/src/main/asciidoc/quickstart-guide/configuring/chapter.adoc b/jetty-documentation/src/main/asciidoc/gettingstarted-guide/configuring/chapter.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/quickstart-guide/configuring/chapter.adoc rename to jetty-documentation/src/main/asciidoc/gettingstarted-guide/configuring/chapter.adoc diff --git a/jetty-documentation/src/main/asciidoc/quickstart-guide/configuring/how-to-configure.adoc b/jetty-documentation/src/main/asciidoc/gettingstarted-guide/configuring/how-to-configure.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/quickstart-guide/configuring/how-to-configure.adoc rename to jetty-documentation/src/main/asciidoc/gettingstarted-guide/configuring/how-to-configure.adoc diff --git a/jetty-documentation/src/main/asciidoc/quickstart-guide/configuring/what-to-configure.adoc b/jetty-documentation/src/main/asciidoc/gettingstarted-guide/configuring/what-to-configure.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/quickstart-guide/configuring/what-to-configure.adoc rename to jetty-documentation/src/main/asciidoc/gettingstarted-guide/configuring/what-to-configure.adoc diff --git a/jetty-documentation/src/main/asciidoc/quickstart-guide/getting-started/chapter.adoc b/jetty-documentation/src/main/asciidoc/gettingstarted-guide/getting-started/chapter.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/quickstart-guide/getting-started/chapter.adoc rename to jetty-documentation/src/main/asciidoc/gettingstarted-guide/getting-started/chapter.adoc diff --git a/jetty-documentation/src/main/asciidoc/quickstart-guide/getting-started/jetty-common-configuration.adoc b/jetty-documentation/src/main/asciidoc/gettingstarted-guide/getting-started/jetty-common-configuration.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/quickstart-guide/getting-started/jetty-common-configuration.adoc rename to jetty-documentation/src/main/asciidoc/gettingstarted-guide/getting-started/jetty-common-configuration.adoc diff --git a/jetty-documentation/src/main/asciidoc/quickstart-guide/getting-started/jetty-deploying.adoc b/jetty-documentation/src/main/asciidoc/gettingstarted-guide/getting-started/jetty-deploying.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/quickstart-guide/getting-started/jetty-deploying.adoc rename to jetty-documentation/src/main/asciidoc/gettingstarted-guide/getting-started/jetty-deploying.adoc diff --git a/jetty-documentation/src/main/asciidoc/quickstart-guide/getting-started/jetty-installing.adoc b/jetty-documentation/src/main/asciidoc/gettingstarted-guide/getting-started/jetty-installing.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/quickstart-guide/getting-started/jetty-installing.adoc rename to jetty-documentation/src/main/asciidoc/gettingstarted-guide/getting-started/jetty-installing.adoc diff --git a/jetty-documentation/src/main/asciidoc/quickstart-guide/getting-started/jetty-running.adoc b/jetty-documentation/src/main/asciidoc/gettingstarted-guide/getting-started/jetty-running.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/quickstart-guide/getting-started/jetty-running.adoc rename to jetty-documentation/src/main/asciidoc/gettingstarted-guide/getting-started/jetty-running.adoc diff --git a/jetty-documentation/src/main/asciidoc/quickstart-guide/images/Jetty_Configuration_File_Relationships.png b/jetty-documentation/src/main/asciidoc/gettingstarted-guide/images/Jetty_Configuration_File_Relationships.png similarity index 100% rename from jetty-documentation/src/main/asciidoc/quickstart-guide/images/Jetty_Configuration_File_Relationships.png rename to jetty-documentation/src/main/asciidoc/gettingstarted-guide/images/Jetty_Configuration_File_Relationships.png diff --git a/jetty-documentation/src/main/asciidoc/quickstart-guide/index.adoc b/jetty-documentation/src/main/asciidoc/gettingstarted-guide/index.adoc similarity index 97% rename from jetty-documentation/src/main/asciidoc/quickstart-guide/index.adoc rename to jetty-documentation/src/main/asciidoc/gettingstarted-guide/index.adoc index 0cbb0dd608c..ce56d956e15 100644 --- a/jetty-documentation/src/main/asciidoc/quickstart-guide/index.adoc +++ b/jetty-documentation/src/main/asciidoc/gettingstarted-guide/index.adoc @@ -54,4 +54,4 @@ endif::[] include::introduction/chapter.adoc[] include::getting-started/chapter.adoc[] -include::configuring/chapter.adoc[] + diff --git a/jetty-documentation/src/main/asciidoc/quickstart-guide/introduction/chapter.adoc b/jetty-documentation/src/main/asciidoc/gettingstarted-guide/introduction/chapter.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/quickstart-guide/introduction/chapter.adoc rename to jetty-documentation/src/main/asciidoc/gettingstarted-guide/introduction/chapter.adoc diff --git a/jetty-documentation/src/main/asciidoc/quickstart-guide/introduction/jetty-coordinates.adoc b/jetty-documentation/src/main/asciidoc/gettingstarted-guide/introduction/jetty-coordinates.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/quickstart-guide/introduction/jetty-coordinates.adoc rename to jetty-documentation/src/main/asciidoc/gettingstarted-guide/introduction/jetty-coordinates.adoc diff --git a/jetty-documentation/src/main/asciidoc/quickstart-guide/introduction/jetty-javaee.adoc b/jetty-documentation/src/main/asciidoc/gettingstarted-guide/introduction/jetty-javaee.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/quickstart-guide/introduction/jetty-javaee.adoc rename to jetty-documentation/src/main/asciidoc/gettingstarted-guide/introduction/jetty-javaee.adoc diff --git a/jetty-documentation/src/main/asciidoc/quickstart-guide/introduction/what-is-jetty.adoc b/jetty-documentation/src/main/asciidoc/gettingstarted-guide/introduction/what-is-jetty.adoc similarity index 87% rename from jetty-documentation/src/main/asciidoc/quickstart-guide/introduction/what-is-jetty.adoc rename to jetty-documentation/src/main/asciidoc/gettingstarted-guide/introduction/what-is-jetty.adoc index 78ff2bd84df..37631149edd 100644 --- a/jetty-documentation/src/main/asciidoc/quickstart-guide/introduction/what-is-jetty.adoc +++ b/jetty-documentation/src/main/asciidoc/gettingstarted-guide/introduction/what-is-jetty.adoc @@ -23,15 +23,15 @@ Eclipse Jetty is an open-source project providing an HTTP server, HTTP client, a The Jetty documentation is broken up in to four parts: -* The link:{QUICKGUIDE}[Quick Start Guide] emphasizes beginning to use Jetty. +* The link:{GSTARTEDGUIDE}[Getting Started Guide] emphasizes beginning to use Jetty. It provides information about what Jetty is and where you can download it, and where to find Jetty in repositories like Central Maven. It also provides a Quick Start guide on how to get Jetty up and running as well as an overview of how and what to configure in Jetty. -* The link:{DISTGUIDE}[Distribution Guide] details configuring Jetty as a distributed package at a more granular level. +* The link:{OPGUIDE}[Operation Guide] details configuring Jetty as a distributed package at a more granular level. From server startup to session management, logging, HTTP/2 support and Jetty optimization, these chapters will help administrators get the most out of their distributed Jetty server instances. This section also covers configuring many of the most common servlet container features such as JNDI and JMX. -* Aimed at advanced users of Jetty, the link:{EMBEDGUIDE}[Embedded Guide] focuses on Jetty development. +* Aimed at advanced users of Jetty, the link:{PROGGUIDE}[Programming Guide] focuses on Jetty development. A large portion of this section is focused on using Jetty as an embedded server in existing applications. It contains several examples and how-to guides for making the most out of the Jetty framework. This section also includes a guide on using the Jetty Maven plugin as well as information on debugging Jetty. diff --git a/jetty-documentation/src/main/asciidoc/quickstart-guide/introduction/what-version.adoc b/jetty-documentation/src/main/asciidoc/gettingstarted-guide/introduction/what-version.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/quickstart-guide/introduction/what-version.adoc rename to jetty-documentation/src/main/asciidoc/gettingstarted-guide/introduction/what-version.adoc diff --git a/jetty-documentation/src/main/asciidoc/quickstart-guide/upgrading/chapter.adoc b/jetty-documentation/src/main/asciidoc/gettingstarted-guide/upgrading/chapter.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/quickstart-guide/upgrading/chapter.adoc rename to jetty-documentation/src/main/asciidoc/gettingstarted-guide/upgrading/chapter.adoc diff --git a/jetty-documentation/src/main/asciidoc/quickstart-guide/upgrading/sample.adoc b/jetty-documentation/src/main/asciidoc/gettingstarted-guide/upgrading/sample.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/quickstart-guide/upgrading/sample.adoc rename to jetty-documentation/src/main/asciidoc/gettingstarted-guide/upgrading/sample.adoc diff --git a/jetty-documentation/src/main/asciidoc/quickstart-guide/upgrading/upgrading-9.3-to-9.4.adoc b/jetty-documentation/src/main/asciidoc/gettingstarted-guide/upgrading/upgrading-9.3-to-9.4.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/quickstart-guide/upgrading/upgrading-9.3-to-9.4.adoc rename to jetty-documentation/src/main/asciidoc/gettingstarted-guide/upgrading/upgrading-9.3-to-9.4.adoc diff --git a/jetty-documentation/src/main/asciidoc/quickstart-guide/upgrading/upgrading-9.4-to.10.0.adoc b/jetty-documentation/src/main/asciidoc/gettingstarted-guide/upgrading/upgrading-9.4-to.10.0.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/quickstart-guide/upgrading/upgrading-9.4-to.10.0.adoc rename to jetty-documentation/src/main/asciidoc/gettingstarted-guide/upgrading/upgrading-9.4-to.10.0.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/alpn/alpn.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/alpn/alpn.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/alpn/alpn.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/alpn/alpn.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/alpn/chapter.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/alpn/chapter.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/alpn/chapter.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/alpn/chapter.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/annotations/chapter.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/annotations/chapter.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/annotations/chapter.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/annotations/chapter.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/annotations/quick-annotations-setup.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/annotations/quick-annotations-setup.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/annotations/quick-annotations-setup.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/annotations/quick-annotations-setup.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/annotations/using-annotations-embedded.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/annotations/using-annotations-embedded.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/annotations/using-annotations-embedded.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/annotations/using-annotations-embedded.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/annotations/using-annotations.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/annotations/using-annotations.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/annotations/using-annotations.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/annotations/using-annotations.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/connectors/chapter.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/connectors/chapter.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/connectors/chapter.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/connectors/chapter.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/connectors/configuring-connectors.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/connectors/configuring-connectors.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/connectors/configuring-connectors.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/connectors/configuring-connectors.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/connectors/configuring-ssl-distribution.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/connectors/configuring-ssl-distribution.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/connectors/configuring-ssl-distribution.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/connectors/configuring-ssl-distribution.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/connectors/configuring-ssl.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/connectors/configuring-ssl.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/connectors/configuring-ssl.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/connectors/configuring-ssl.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/contexts/chapter.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/contexts/chapter.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/contexts/chapter.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/contexts/chapter.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/contexts/configuring-virtual-hosts.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/contexts/configuring-virtual-hosts.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/contexts/configuring-virtual-hosts.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/contexts/configuring-virtual-hosts.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/contexts/custom-error-pages.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/contexts/custom-error-pages.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/contexts/custom-error-pages.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/contexts/custom-error-pages.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/contexts/serving-webapp-from-particular-port.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/contexts/serving-webapp-from-particular-port.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/contexts/serving-webapp-from-particular-port.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/contexts/serving-webapp-from-particular-port.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/contexts/setting-context-path.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/contexts/setting-context-path.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/contexts/setting-context-path.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/contexts/setting-context-path.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/contexts/setting-form-size.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/contexts/setting-form-size.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/contexts/setting-form-size.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/contexts/setting-form-size.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/contexts/temporary-directories.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/contexts/temporary-directories.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/contexts/temporary-directories.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/contexts/temporary-directories.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/deploying/anatomy-of-a-webapp.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/deploying/anatomy-of-a-webapp.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/deploying/anatomy-of-a-webapp.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/deploying/anatomy-of-a-webapp.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/deploying/automatic-webapp-deployment.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/deploying/automatic-webapp-deployment.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/deploying/automatic-webapp-deployment.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/deploying/automatic-webapp-deployment.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/deploying/chapter.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/deploying/chapter.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/deploying/chapter.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/deploying/chapter.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/deploying/configuring-specific-webapp-deployment.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/deploying/configuring-specific-webapp-deployment.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/deploying/configuring-specific-webapp-deployment.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/deploying/configuring-specific-webapp-deployment.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/deploying/deployment-architecture.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/deploying/deployment-architecture.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/deploying/deployment-architecture.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/deploying/deployment-architecture.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/deploying/deployment-processing-webapps.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/deploying/deployment-processing-webapps.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/deploying/deployment-processing-webapps.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/deploying/deployment-processing-webapps.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/deploying/hot-deployment.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/deploying/hot-deployment.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/deploying/hot-deployment.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/deploying/hot-deployment.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/deploying/quickstart-webapp.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/deploying/quickstart-webapp.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/deploying/quickstart-webapp.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/deploying/quickstart-webapp.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/deploying/static-content-deployment.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/deploying/static-content-deployment.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/deploying/static-content-deployment.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/deploying/static-content-deployment.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/extras/balancer-servlet.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/extras/balancer-servlet.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/extras/balancer-servlet.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/extras/balancer-servlet.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/extras/cgi-servlet.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/extras/cgi-servlet.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/extras/cgi-servlet.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/extras/cgi-servlet.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/extras/chapter.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/extras/chapter.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/extras/chapter.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/extras/chapter.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/extras/cross-origin-filter.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/extras/cross-origin-filter.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/extras/cross-origin-filter.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/extras/cross-origin-filter.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/extras/debug-handler.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/extras/debug-handler.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/extras/debug-handler.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/extras/debug-handler.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/extras/default-handler.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/extras/default-handler.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/extras/default-handler.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/extras/default-handler.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/extras/default-servlet.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/extras/default-servlet.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/extras/default-servlet.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/extras/default-servlet.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/extras/dos-filter.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/extras/dos-filter.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/extras/dos-filter.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/extras/dos-filter.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/extras/error-handler.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/extras/error-handler.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/extras/error-handler.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/extras/error-handler.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/extras/gzip-filter.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/extras/gzip-filter.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/extras/gzip-filter.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/extras/gzip-filter.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/extras/header-filter.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/extras/header-filter.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/extras/header-filter.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/extras/header-filter.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/extras/inetaccess-handler.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/extras/inetaccess-handler.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/extras/inetaccess-handler.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/extras/inetaccess-handler.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/extras/ipaccess-handler.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/extras/ipaccess-handler.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/extras/ipaccess-handler.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/extras/ipaccess-handler.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/extras/moved-context-handler.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/extras/moved-context-handler.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/extras/moved-context-handler.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/extras/moved-context-handler.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/extras/proxy-servlet.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/extras/proxy-servlet.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/extras/proxy-servlet.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/extras/proxy-servlet.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/extras/qos-filter.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/extras/qos-filter.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/extras/qos-filter.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/extras/qos-filter.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/extras/resource-handler.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/extras/resource-handler.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/extras/resource-handler.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/extras/resource-handler.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/extras/rewrite-handler.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/extras/rewrite-handler.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/extras/rewrite-handler.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/extras/rewrite-handler.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/extras/shutdown-handler.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/extras/shutdown-handler.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/extras/shutdown-handler.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/extras/shutdown-handler.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/extras/statistics-handler.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/extras/statistics-handler.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/extras/statistics-handler.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/extras/statistics-handler.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/fastcgi/chapter.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/fastcgi/chapter.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/fastcgi/chapter.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/fastcgi/chapter.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/fastcgi/configuring-fastcgi.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/fastcgi/configuring-fastcgi.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/fastcgi/configuring-fastcgi.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/fastcgi/configuring-fastcgi.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/fastcgi/fastcgi-intro.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/fastcgi/fastcgi-intro.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/fastcgi/fastcgi-intro.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/fastcgi/fastcgi-intro.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/http2/chapter.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/http2/chapter.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/http2/chapter.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/http2/chapter.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/http2/configuring-haproxy.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/http2/configuring-haproxy.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/http2/configuring-haproxy.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/http2/configuring-haproxy.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/http2/configuring-http2.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/http2/configuring-http2.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/http2/configuring-http2.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/http2/configuring-http2.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/http2/configuring-push.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/http2/configuring-push.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/http2/configuring-push.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/http2/configuring-push.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/http2/enabling-http2.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/http2/enabling-http2.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/http2/enabling-http2.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/http2/enabling-http2.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/http2/introduction.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/http2/introduction.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/http2/introduction.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/http2/introduction.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/images/Jetty_DeployManager_AppLifeCycle-1.png b/jetty-documentation/src/main/asciidoc/operation-guide/images/Jetty_DeployManager_AppLifeCycle-1.png similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/images/Jetty_DeployManager_AppLifeCycle-1.png rename to jetty-documentation/src/main/asciidoc/operation-guide/images/Jetty_DeployManager_AppLifeCycle-1.png diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/images/Jetty_DeployManager_DefaultAppLifeCycleBindings.png b/jetty-documentation/src/main/asciidoc/operation-guide/images/Jetty_DeployManager_DefaultAppLifeCycleBindings.png similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/images/Jetty_DeployManager_DefaultAppLifeCycleBindings.png rename to jetty-documentation/src/main/asciidoc/operation-guide/images/Jetty_DeployManager_DefaultAppLifeCycleBindings.png diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/images/Jetty_DeployManager_DeploymentManager_Roles.png b/jetty-documentation/src/main/asciidoc/operation-guide/images/Jetty_DeployManager_DeploymentManager_Roles.png similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/images/Jetty_DeployManager_DeploymentManager_Roles.png rename to jetty-documentation/src/main/asciidoc/operation-guide/images/Jetty_DeployManager_DeploymentManager_Roles.png diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/images/SessionsHierarchy.png b/jetty-documentation/src/main/asciidoc/operation-guide/images/SessionsHierarchy.png similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/images/SessionsHierarchy.png rename to jetty-documentation/src/main/asciidoc/operation-guide/images/SessionsHierarchy.png diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/images/certificate-chain.png b/jetty-documentation/src/main/asciidoc/operation-guide/images/certificate-chain.png similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/images/certificate-chain.png rename to jetty-documentation/src/main/asciidoc/operation-guide/images/certificate-chain.png diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/images/jconsole1.jpg b/jetty-documentation/src/main/asciidoc/operation-guide/images/jconsole1.jpg similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/images/jconsole1.jpg rename to jetty-documentation/src/main/asciidoc/operation-guide/images/jconsole1.jpg diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/images/jconsole2.jpg b/jetty-documentation/src/main/asciidoc/operation-guide/images/jconsole2.jpg similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/images/jconsole2.jpg rename to jetty-documentation/src/main/asciidoc/operation-guide/images/jconsole2.jpg diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/images/jconsole3.png b/jetty-documentation/src/main/asciidoc/operation-guide/images/jconsole3.png similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/images/jconsole3.png rename to jetty-documentation/src/main/asciidoc/operation-guide/images/jconsole3.png diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/images/jmc1.png b/jetty-documentation/src/main/asciidoc/operation-guide/images/jmc1.png similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/images/jmc1.png rename to jetty-documentation/src/main/asciidoc/operation-guide/images/jmc1.png diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/images/jmc2.png b/jetty-documentation/src/main/asciidoc/operation-guide/images/jmc2.png similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/images/jmc2.png rename to jetty-documentation/src/main/asciidoc/operation-guide/images/jmc2.png diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/images/jmc3.png b/jetty-documentation/src/main/asciidoc/operation-guide/images/jmc3.png similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/images/jmc3.png rename to jetty-documentation/src/main/asciidoc/operation-guide/images/jmc3.png diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/images/modules-9.3-simplified.dot b/jetty-documentation/src/main/asciidoc/operation-guide/images/modules-9.3-simplified.dot similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/images/modules-9.3-simplified.dot rename to jetty-documentation/src/main/asciidoc/operation-guide/images/modules-9.3-simplified.dot diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/images/modules-9.3-simplified.png b/jetty-documentation/src/main/asciidoc/operation-guide/images/modules-9.3-simplified.png similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/images/modules-9.3-simplified.png rename to jetty-documentation/src/main/asciidoc/operation-guide/images/modules-9.3-simplified.png diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/images/windows-service-jetty.png b/jetty-documentation/src/main/asciidoc/operation-guide/images/windows-service-jetty.png similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/images/windows-service-jetty.png rename to jetty-documentation/src/main/asciidoc/operation-guide/images/windows-service-jetty.png diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/index.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/index.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/index.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/index.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/jmx/chapter.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/jmx/chapter.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/jmx/chapter.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/jmx/chapter.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/jmx/jetty-jconsole.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/jmx/jetty-jconsole.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/jmx/jetty-jconsole.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/jmx/jetty-jconsole.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/jmx/jetty-jmx-annotations.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/jmx/jetty-jmx-annotations.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/jmx/jetty-jmx-annotations.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/jmx/jetty-jmx-annotations.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/jmx/using-jmx.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/jmx/using-jmx.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/jmx/using-jmx.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/jmx/using-jmx.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/jndi/chapter.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/jndi/chapter.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/jndi/chapter.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/jndi/chapter.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/jndi/jndi-configuration.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/jndi/jndi-configuration.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/jndi/jndi-configuration.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/jndi/jndi-configuration.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/jndi/jndi-datasources.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/jndi/jndi-datasources.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/jndi/jndi-datasources.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/jndi/jndi-datasources.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/jndi/jndi-embedded.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/jndi/jndi-embedded.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/jndi/jndi-embedded.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/jndi/jndi-embedded.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/jndi/quick-jndi-setup.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/jndi/quick-jndi-setup.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/jndi/quick-jndi-setup.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/jndi/quick-jndi-setup.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/jndi/using-jndi.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/jndi/using-jndi.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/jndi/using-jndi.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/jndi/using-jndi.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/jsp/chapter.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/jsp/chapter.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/jsp/chapter.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/jsp/chapter.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/jsp/configuring-jsp.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/jsp/configuring-jsp.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/jsp/configuring-jsp.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/jsp/configuring-jsp.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/logging/chapter.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/logging/chapter.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/logging/chapter.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/logging/chapter.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/logging/configuring-jetty-logging.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/logging/configuring-jetty-logging.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/logging/configuring-jetty-logging.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/logging/configuring-jetty-logging.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/logging/configuring-jetty-request-logs.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/logging/configuring-jetty-request-logs.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/logging/configuring-jetty-request-logs.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/logging/configuring-jetty-request-logs.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/logging/configuring-logging-modules.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/logging/configuring-logging-modules.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/logging/configuring-logging-modules.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/logging/configuring-logging-modules.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/logging/default-logging-with-stderrlog.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/logging/default-logging-with-stderrlog.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/logging/default-logging-with-stderrlog.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/logging/default-logging-with-stderrlog.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/logging/dump-tool.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/logging/dump-tool.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/logging/dump-tool.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/logging/dump-tool.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/logging/example-apache-log4j.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/logging/example-apache-log4j.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/logging/example-apache-log4j.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/logging/example-apache-log4j.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/logging/example-java-util-logging-native.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/logging/example-java-util-logging-native.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/logging/example-java-util-logging-native.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/logging/example-java-util-logging-native.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/logging/example-java-util-logging.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/logging/example-java-util-logging.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/logging/example-java-util-logging.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/logging/example-java-util-logging.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/logging/example-logback-centralized-logging.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/logging/example-logback-centralized-logging.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/logging/example-logback-centralized-logging.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/logging/example-logback-centralized-logging.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/logging/example-logback-sifting.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/logging/example-logback-sifting.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/logging/example-logback-sifting.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/logging/example-logback-sifting.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/logging/example-logback.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/logging/example-logback.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/logging/example-logback.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/logging/example-logback.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/logging/example-slf4j-multiple-loggers.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/logging/example-slf4j-multiple-loggers.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/logging/example-slf4j-multiple-loggers.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/logging/example-slf4j-multiple-loggers.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/runner/chapter.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/runner/chapter.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/runner/chapter.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/runner/chapter.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/runner/jetty-runner.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/runner/jetty-runner.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/runner/jetty-runner.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/runner/jetty-runner.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/security/authentication.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/security/authentication.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/security/authentication.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/security/authentication.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/security/chapter.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/security/chapter.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/security/chapter.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/security/chapter.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/security/configuring-form-size.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/security/configuring-form-size.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/security/configuring-form-size.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/security/configuring-form-size.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/security/jaas-support.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/security/jaas-support.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/security/jaas-support.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/security/jaas-support.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/security/jetty-home-and-jetty-base.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/security/jetty-home-and-jetty-base.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/security/jetty-home-and-jetty-base.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/security/jetty-home-and-jetty-base.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/security/openid-support.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/security/openid-support.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/security/openid-support.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/security/openid-support.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/security/secure-passwords.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/security/secure-passwords.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/security/secure-passwords.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/security/secure-passwords.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/security/serving-aliased-files.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/security/serving-aliased-files.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/security/serving-aliased-files.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/security/serving-aliased-files.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/security/setting-port80-access-for-non-root-user.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/security/setting-port80-access-for-non-root-user.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/security/setting-port80-access-for-non-root-user.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/security/setting-port80-access-for-non-root-user.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/security/spnego-support.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/security/spnego-support.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/security/spnego-support.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/security/spnego-support.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/sessions/chapter.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/sessions/chapter.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/sessions/chapter.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/sessions/chapter.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/sessions/legacy/session-clustering-gcloud-datastore.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/sessions/legacy/session-clustering-gcloud-datastore.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/sessions/legacy/session-clustering-gcloud-datastore.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/sessions/legacy/session-clustering-gcloud-datastore.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/sessions/legacy/session-clustering-infinispan.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/sessions/legacy/session-clustering-infinispan.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/sessions/legacy/session-clustering-infinispan.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/sessions/legacy/session-clustering-infinispan.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/sessions/legacy/session-clustering-jdbc.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/sessions/legacy/session-clustering-jdbc.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/sessions/legacy/session-clustering-jdbc.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/sessions/legacy/session-clustering-jdbc.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/sessions/legacy/session-clustering-mongodb.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/sessions/legacy/session-clustering-mongodb.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/sessions/legacy/session-clustering-mongodb.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/sessions/legacy/session-clustering-mongodb.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/sessions/legacy/setting-session-characteristics.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/sessions/legacy/setting-session-characteristics.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/sessions/legacy/setting-session-characteristics.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/sessions/legacy/setting-session-characteristics.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/sessions/legacy/using-persistent-sessions.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/sessions/legacy/using-persistent-sessions.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/sessions/legacy/using-persistent-sessions.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/sessions/legacy/using-persistent-sessions.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/sessions/session-configuration-file-system.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/sessions/session-configuration-file-system.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/sessions/session-configuration-file-system.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/sessions/session-configuration-file-system.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/sessions/session-configuration-gcloud.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/sessions/session-configuration-gcloud.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/sessions/session-configuration-gcloud.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/sessions/session-configuration-gcloud.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/sessions/session-configuration-hazelcast.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/sessions/session-configuration-hazelcast.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/sessions/session-configuration-hazelcast.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/sessions/session-configuration-hazelcast.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/sessions/session-configuration-housekeeper.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/sessions/session-configuration-housekeeper.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/sessions/session-configuration-housekeeper.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/sessions/session-configuration-housekeeper.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/sessions/session-configuration-infinispan.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/sessions/session-configuration-infinispan.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/sessions/session-configuration-infinispan.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/sessions/session-configuration-infinispan.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/sessions/session-configuration-jdbc.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/sessions/session-configuration-jdbc.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/sessions/session-configuration-jdbc.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/sessions/session-configuration-jdbc.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/sessions/session-configuration-memcachedsessiondatastore.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/sessions/session-configuration-memcachedsessiondatastore.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/sessions/session-configuration-memcachedsessiondatastore.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/sessions/session-configuration-memcachedsessiondatastore.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/sessions/session-configuration-memory.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/sessions/session-configuration-memory.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/sessions/session-configuration-memory.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/sessions/session-configuration-memory.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/sessions/session-configuration-mongodb.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/sessions/session-configuration-mongodb.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/sessions/session-configuration-mongodb.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/sessions/session-configuration-mongodb.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/sessions/session-configuration-sessioncache.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/sessions/session-configuration-sessioncache.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/sessions/session-configuration-sessioncache.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/sessions/session-configuration-sessioncache.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/sessions/session-hierarchy.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/sessions/session-hierarchy.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/sessions/session-hierarchy.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/sessions/session-hierarchy.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/sessions/sessions-details.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/sessions/sessions-details.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/sessions/sessions-details.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/sessions/sessions-details.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/sessions/sessions-usecases.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/sessions/sessions-usecases.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/sessions/sessions-usecases.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/sessions/sessions-usecases.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/startup/chapter.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/startup/chapter.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/startup/chapter.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/startup/chapter.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/startup/custom-modules.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/startup/custom-modules.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/startup/custom-modules.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/startup/custom-modules.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/startup/screen-empty-base-listconfig.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/startup/screen-empty-base-listconfig.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/startup/screen-empty-base-listconfig.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/startup/screen-empty-base-listconfig.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/startup/screen-empty-base.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/startup/screen-empty-base.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/startup/screen-empty-base.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/startup/screen-empty-base.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/startup/screen-http-webapp-deploy-listconfig.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/startup/screen-http-webapp-deploy-listconfig.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/startup/screen-http-webapp-deploy-listconfig.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/startup/screen-http-webapp-deploy-listconfig.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/startup/screen-http-webapp-deploy.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/startup/screen-http-webapp-deploy.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/startup/screen-http-webapp-deploy.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/startup/screen-http-webapp-deploy.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/startup/screen-list-logging-modules.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/startup/screen-list-logging-modules.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/startup/screen-list-logging-modules.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/startup/screen-list-logging-modules.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/startup/screen-list-modules.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/startup/screen-list-modules.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/startup/screen-list-modules.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/startup/screen-list-modules.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/startup/start-jar.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/startup/start-jar.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/startup/start-jar.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/startup/start-jar.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/startup/start-matrix.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/startup/start-matrix.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/startup/start-matrix.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/startup/start-matrix.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/startup/startup-base-vs-home.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/startup/startup-base-vs-home.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/startup/startup-base-vs-home.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/startup/startup-base-vs-home.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/startup/startup-classpath.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/startup/startup-classpath.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/startup/startup-classpath.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/startup/startup-classpath.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/startup/startup-jpms.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/startup/startup-jpms.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/startup/startup-jpms.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/startup/startup-jpms.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/startup/startup-modules.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/startup/startup-modules.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/startup/startup-modules.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/startup/startup-modules.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/startup/startup-overview.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/startup/startup-overview.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/startup/startup-overview.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/startup/startup-overview.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/startup/startup-troubleshooting.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/startup/startup-troubleshooting.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/startup/startup-troubleshooting.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/startup/startup-troubleshooting.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/startup/startup-unix-service.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/startup/startup-unix-service.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/startup/startup-unix-service.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/startup/startup-unix-service.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/startup/startup-windows-service.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/startup/startup-windows-service.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/startup/startup-windows-service.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/startup/startup-windows-service.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/startup/startup-xml-config.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/startup/startup-xml-config.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/startup/startup-xml-config.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/startup/startup-xml-config.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/tuning/chapter.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/tuning/chapter.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/tuning/chapter.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/tuning/chapter.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/tuning/garbage-collection.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/tuning/garbage-collection.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/tuning/garbage-collection.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/tuning/garbage-collection.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/tuning/high-load.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/tuning/high-load.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/tuning/high-load.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/tuning/high-load.adoc diff --git a/jetty-documentation/src/main/asciidoc/distribution-guide/tuning/limit-load.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/tuning/limit-load.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/distribution-guide/tuning/limit-load.adoc rename to jetty-documentation/src/main/asciidoc/operation-guide/tuning/limit-load.adoc diff --git a/jetty-documentation/src/main/asciidoc/embedded-guide/.asciidoctorconfig b/jetty-documentation/src/main/asciidoc/programming-guide/.asciidoctorconfig similarity index 100% rename from jetty-documentation/src/main/asciidoc/embedded-guide/.asciidoctorconfig rename to jetty-documentation/src/main/asciidoc/programming-guide/.asciidoctorconfig diff --git a/jetty-documentation/src/main/asciidoc/embedded-guide/arch-bean.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/arch-bean.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/embedded-guide/arch-bean.adoc rename to jetty-documentation/src/main/asciidoc/programming-guide/arch-bean.adoc diff --git a/jetty-documentation/src/main/asciidoc/embedded-guide/arch-io.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/arch-io.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/embedded-guide/arch-io.adoc rename to jetty-documentation/src/main/asciidoc/programming-guide/arch-io.adoc diff --git a/jetty-documentation/src/main/asciidoc/embedded-guide/arch-jmx.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/arch-jmx.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/embedded-guide/arch-jmx.adoc rename to jetty-documentation/src/main/asciidoc/programming-guide/arch-jmx.adoc diff --git a/jetty-documentation/src/main/asciidoc/embedded-guide/arch-listener.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/arch-listener.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/embedded-guide/arch-listener.adoc rename to jetty-documentation/src/main/asciidoc/programming-guide/arch-listener.adoc diff --git a/jetty-documentation/src/main/asciidoc/embedded-guide/arch.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/arch.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/embedded-guide/arch.adoc rename to jetty-documentation/src/main/asciidoc/programming-guide/arch.adoc diff --git a/jetty-documentation/src/main/asciidoc/embedded-guide/client/client-io-arch.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/client/client-io-arch.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/embedded-guide/client/client-io-arch.adoc rename to jetty-documentation/src/main/asciidoc/programming-guide/client/client-io-arch.adoc diff --git a/jetty-documentation/src/main/asciidoc/embedded-guide/client/client.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/client/client.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/embedded-guide/client/client.adoc rename to jetty-documentation/src/main/asciidoc/programming-guide/client/client.adoc diff --git a/jetty-documentation/src/main/asciidoc/embedded-guide/client/http/client-http-api.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/client/http/client-http-api.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/embedded-guide/client/http/client-http-api.adoc rename to jetty-documentation/src/main/asciidoc/programming-guide/client/http/client-http-api.adoc diff --git a/jetty-documentation/src/main/asciidoc/embedded-guide/client/http/client-http-authentication.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/client/http/client-http-authentication.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/embedded-guide/client/http/client-http-authentication.adoc rename to jetty-documentation/src/main/asciidoc/programming-guide/client/http/client-http-authentication.adoc diff --git a/jetty-documentation/src/main/asciidoc/embedded-guide/client/http/client-http-configuration.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/client/http/client-http-configuration.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/embedded-guide/client/http/client-http-configuration.adoc rename to jetty-documentation/src/main/asciidoc/programming-guide/client/http/client-http-configuration.adoc diff --git a/jetty-documentation/src/main/asciidoc/embedded-guide/client/http/client-http-cookie.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/client/http/client-http-cookie.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/embedded-guide/client/http/client-http-cookie.adoc rename to jetty-documentation/src/main/asciidoc/programming-guide/client/http/client-http-cookie.adoc diff --git a/jetty-documentation/src/main/asciidoc/embedded-guide/client/http/client-http-intro.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/client/http/client-http-intro.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/embedded-guide/client/http/client-http-intro.adoc rename to jetty-documentation/src/main/asciidoc/programming-guide/client/http/client-http-intro.adoc diff --git a/jetty-documentation/src/main/asciidoc/embedded-guide/client/http/client-http-proxy.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/client/http/client-http-proxy.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/embedded-guide/client/http/client-http-proxy.adoc rename to jetty-documentation/src/main/asciidoc/programming-guide/client/http/client-http-proxy.adoc diff --git a/jetty-documentation/src/main/asciidoc/embedded-guide/client/http/client-http-transport.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/client/http/client-http-transport.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/embedded-guide/client/http/client-http-transport.adoc rename to jetty-documentation/src/main/asciidoc/programming-guide/client/http/client-http-transport.adoc diff --git a/jetty-documentation/src/main/asciidoc/embedded-guide/client/http/client-http.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/client/http/client-http.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/embedded-guide/client/http/client-http.adoc rename to jetty-documentation/src/main/asciidoc/programming-guide/client/http/client-http.adoc diff --git a/jetty-documentation/src/main/asciidoc/embedded-guide/client/http2/client-http2.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/client/http2/client-http2.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/embedded-guide/client/http2/client-http2.adoc rename to jetty-documentation/src/main/asciidoc/programming-guide/client/http2/client-http2.adoc diff --git a/jetty-documentation/src/main/asciidoc/embedded-guide/http2.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/http2.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/embedded-guide/http2.adoc rename to jetty-documentation/src/main/asciidoc/programming-guide/http2.adoc diff --git a/jetty-documentation/src/main/asciidoc/embedded-guide/index.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/index.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/embedded-guide/index.adoc rename to jetty-documentation/src/main/asciidoc/programming-guide/index.adoc diff --git a/jetty-documentation/src/main/asciidoc/embedded-guide/maven/jetty-jspc-maven-plugin.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/maven/jetty-jspc-maven-plugin.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/embedded-guide/maven/jetty-jspc-maven-plugin.adoc rename to jetty-documentation/src/main/asciidoc/programming-guide/maven/jetty-jspc-maven-plugin.adoc diff --git a/jetty-documentation/src/main/asciidoc/embedded-guide/maven/jetty-maven-helloworld.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/maven/jetty-maven-helloworld.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/embedded-guide/maven/jetty-maven-helloworld.adoc rename to jetty-documentation/src/main/asciidoc/programming-guide/maven/jetty-maven-helloworld.adoc diff --git a/jetty-documentation/src/main/asciidoc/embedded-guide/maven/jetty-maven-plugin.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/maven/jetty-maven-plugin.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/embedded-guide/maven/jetty-maven-plugin.adoc rename to jetty-documentation/src/main/asciidoc/programming-guide/maven/jetty-maven-plugin.adoc diff --git a/jetty-documentation/src/main/asciidoc/embedded-guide/maven/maven.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/maven/maven.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/embedded-guide/maven/maven.adoc rename to jetty-documentation/src/main/asciidoc/programming-guide/maven/maven.adoc diff --git a/jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/ant/chapter.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/old_docs/ant/chapter.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/ant/chapter.adoc rename to jetty-documentation/src/main/asciidoc/programming-guide/old_docs/ant/chapter.adoc diff --git a/jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/ant/jetty-ant.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/old_docs/ant/jetty-ant.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/ant/jetty-ant.adoc rename to jetty-documentation/src/main/asciidoc/programming-guide/old_docs/ant/jetty-ant.adoc diff --git a/jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/architecture/basic-architecture.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/old_docs/architecture/basic-architecture.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/architecture/basic-architecture.adoc rename to jetty-documentation/src/main/asciidoc/programming-guide/old_docs/architecture/basic-architecture.adoc diff --git a/jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/architecture/chapter.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/old_docs/architecture/chapter.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/architecture/chapter.adoc rename to jetty-documentation/src/main/asciidoc/programming-guide/old_docs/architecture/chapter.adoc diff --git a/jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/architecture/jetty-classloading.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/old_docs/architecture/jetty-classloading.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/architecture/jetty-classloading.adoc rename to jetty-documentation/src/main/asciidoc/programming-guide/old_docs/architecture/jetty-classloading.adoc diff --git a/jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/architecture/server-side-architecture.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/old_docs/architecture/server-side-architecture.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/architecture/server-side-architecture.adoc rename to jetty-documentation/src/main/asciidoc/programming-guide/old_docs/architecture/server-side-architecture.adoc diff --git a/jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/contributing/bugs.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/old_docs/contributing/bugs.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/contributing/bugs.adoc rename to jetty-documentation/src/main/asciidoc/programming-guide/old_docs/contributing/bugs.adoc diff --git a/jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/contributing/chapter.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/old_docs/contributing/chapter.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/contributing/chapter.adoc rename to jetty-documentation/src/main/asciidoc/programming-guide/old_docs/contributing/chapter.adoc diff --git a/jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/contributing/coding-standards.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/old_docs/contributing/coding-standards.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/contributing/coding-standards.adoc rename to jetty-documentation/src/main/asciidoc/programming-guide/old_docs/contributing/coding-standards.adoc diff --git a/jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/contributing/community.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/old_docs/contributing/community.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/contributing/community.adoc rename to jetty-documentation/src/main/asciidoc/programming-guide/old_docs/contributing/community.adoc diff --git a/jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/contributing/documentation.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/old_docs/contributing/documentation.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/contributing/documentation.adoc rename to jetty-documentation/src/main/asciidoc/programming-guide/old_docs/contributing/documentation.adoc diff --git a/jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/contributing/patches.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/old_docs/contributing/patches.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/contributing/patches.adoc rename to jetty-documentation/src/main/asciidoc/programming-guide/old_docs/contributing/patches.adoc diff --git a/jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/contributing/release-testing.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/old_docs/contributing/release-testing.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/contributing/release-testing.adoc rename to jetty-documentation/src/main/asciidoc/programming-guide/old_docs/contributing/release-testing.adoc diff --git a/jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/contributing/releasing-jetty.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/old_docs/contributing/releasing-jetty.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/contributing/releasing-jetty.adoc rename to jetty-documentation/src/main/asciidoc/programming-guide/old_docs/contributing/releasing-jetty.adoc diff --git a/jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/contributing/security.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/old_docs/contributing/security.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/contributing/security.adoc rename to jetty-documentation/src/main/asciidoc/programming-guide/old_docs/contributing/security.adoc diff --git a/jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/contributing/source-build.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/old_docs/contributing/source-build.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/contributing/source-build.adoc rename to jetty-documentation/src/main/asciidoc/programming-guide/old_docs/contributing/source-build.adoc diff --git a/jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/debugging/chapter.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/old_docs/debugging/chapter.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/debugging/chapter.adoc rename to jetty-documentation/src/main/asciidoc/programming-guide/old_docs/debugging/chapter.adoc diff --git a/jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/debugging/debugging-with-eclipse.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/old_docs/debugging/debugging-with-eclipse.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/debugging/debugging-with-eclipse.adoc rename to jetty-documentation/src/main/asciidoc/programming-guide/old_docs/debugging/debugging-with-eclipse.adoc diff --git a/jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/debugging/debugging-with-intellij.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/old_docs/debugging/debugging-with-intellij.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/debugging/debugging-with-intellij.adoc rename to jetty-documentation/src/main/asciidoc/programming-guide/old_docs/debugging/debugging-with-intellij.adoc diff --git a/jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/debugging/enable-remote-debugging.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/old_docs/debugging/enable-remote-debugging.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/debugging/enable-remote-debugging.adoc rename to jetty-documentation/src/main/asciidoc/programming-guide/old_docs/debugging/enable-remote-debugging.adoc diff --git a/jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/embedding/chapter.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/old_docs/embedding/chapter.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/embedding/chapter.adoc rename to jetty-documentation/src/main/asciidoc/programming-guide/old_docs/embedding/chapter.adoc diff --git a/jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/embedding/embedded-examples.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/old_docs/embedding/embedded-examples.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/embedding/embedded-examples.adoc rename to jetty-documentation/src/main/asciidoc/programming-guide/old_docs/embedding/embedded-examples.adoc diff --git a/jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/embedding/embedding-jetty.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/old_docs/embedding/embedding-jetty.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/embedding/embedding-jetty.adoc rename to jetty-documentation/src/main/asciidoc/programming-guide/old_docs/embedding/embedding-jetty.adoc diff --git a/jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/embedding/examples/embedded-file-server.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/old_docs/embedding/examples/embedded-file-server.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/embedding/examples/embedded-file-server.adoc rename to jetty-documentation/src/main/asciidoc/programming-guide/old_docs/embedding/examples/embedded-file-server.adoc diff --git a/jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/embedding/examples/embedded-many-connectors.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/old_docs/embedding/examples/embedded-many-connectors.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/embedding/examples/embedded-many-connectors.adoc rename to jetty-documentation/src/main/asciidoc/programming-guide/old_docs/embedding/examples/embedded-many-connectors.adoc diff --git a/jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/embedding/examples/embedded-minimal-servlet.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/old_docs/embedding/examples/embedded-minimal-servlet.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/embedding/examples/embedded-minimal-servlet.adoc rename to jetty-documentation/src/main/asciidoc/programming-guide/old_docs/embedding/examples/embedded-minimal-servlet.adoc diff --git a/jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/embedding/examples/embedded-one-webapp.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/old_docs/embedding/examples/embedded-one-webapp.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/embedding/examples/embedded-one-webapp.adoc rename to jetty-documentation/src/main/asciidoc/programming-guide/old_docs/embedding/examples/embedded-one-webapp.adoc diff --git a/jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/embedding/examples/embedded-secured-hello-handler.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/old_docs/embedding/examples/embedded-secured-hello-handler.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/embedding/examples/embedded-secured-hello-handler.adoc rename to jetty-documentation/src/main/asciidoc/programming-guide/old_docs/embedding/examples/embedded-secured-hello-handler.adoc diff --git a/jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/embedding/examples/embedded-split-file-server.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/old_docs/embedding/examples/embedded-split-file-server.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/embedding/examples/embedded-split-file-server.adoc rename to jetty-documentation/src/main/asciidoc/programming-guide/old_docs/embedding/examples/embedded-split-file-server.adoc diff --git a/jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/embedding/jetty-helloworld.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/old_docs/embedding/jetty-helloworld.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/embedding/jetty-helloworld.adoc rename to jetty-documentation/src/main/asciidoc/programming-guide/old_docs/embedding/jetty-helloworld.adoc diff --git a/jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/faq/chapter.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/old_docs/faq/chapter.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/faq/chapter.adoc rename to jetty-documentation/src/main/asciidoc/programming-guide/old_docs/faq/chapter.adoc diff --git a/jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/frameworks/chapter.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/old_docs/frameworks/chapter.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/frameworks/chapter.adoc rename to jetty-documentation/src/main/asciidoc/programming-guide/old_docs/frameworks/chapter.adoc diff --git a/jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/frameworks/metro.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/old_docs/frameworks/metro.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/frameworks/metro.adoc rename to jetty-documentation/src/main/asciidoc/programming-guide/old_docs/frameworks/metro.adoc diff --git a/jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/frameworks/osgi.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/old_docs/frameworks/osgi.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/frameworks/osgi.adoc rename to jetty-documentation/src/main/asciidoc/programming-guide/old_docs/frameworks/osgi.adoc diff --git a/jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/frameworks/spring-usage.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/old_docs/frameworks/spring-usage.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/frameworks/spring-usage.adoc rename to jetty-documentation/src/main/asciidoc/programming-guide/old_docs/frameworks/spring-usage.adoc diff --git a/jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/frameworks/weld.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/old_docs/frameworks/weld.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/frameworks/weld.adoc rename to jetty-documentation/src/main/asciidoc/programming-guide/old_docs/frameworks/weld.adoc diff --git a/jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/images/basic-architecture-handlers.png b/jetty-documentation/src/main/asciidoc/programming-guide/old_docs/images/basic-architecture-handlers.png similarity index 100% rename from jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/images/basic-architecture-handlers.png rename to jetty-documentation/src/main/asciidoc/programming-guide/old_docs/images/basic-architecture-handlers.png diff --git a/jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/images/basic-architecture-nested-handlers.png b/jetty-documentation/src/main/asciidoc/programming-guide/old_docs/images/basic-architecture-nested-handlers.png similarity index 100% rename from jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/images/basic-architecture-nested-handlers.png rename to jetty-documentation/src/main/asciidoc/programming-guide/old_docs/images/basic-architecture-nested-handlers.png diff --git a/jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/images/basic-architecture-patterns.png b/jetty-documentation/src/main/asciidoc/programming-guide/old_docs/images/basic-architecture-patterns.png similarity index 100% rename from jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/images/basic-architecture-patterns.png rename to jetty-documentation/src/main/asciidoc/programming-guide/old_docs/images/basic-architecture-patterns.png diff --git a/jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/images/basic-architecture-servlet-handler.png b/jetty-documentation/src/main/asciidoc/programming-guide/old_docs/images/basic-architecture-servlet-handler.png similarity index 100% rename from jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/images/basic-architecture-servlet-handler.png rename to jetty-documentation/src/main/asciidoc/programming-guide/old_docs/images/basic-architecture-servlet-handler.png diff --git a/jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/images/basic-architecture-web-application.png b/jetty-documentation/src/main/asciidoc/programming-guide/old_docs/images/basic-architecture-web-application.png similarity index 100% rename from jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/images/basic-architecture-web-application.png rename to jetty-documentation/src/main/asciidoc/programming-guide/old_docs/images/basic-architecture-web-application.png diff --git a/jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/images/debug-eclipse-1.png b/jetty-documentation/src/main/asciidoc/programming-guide/old_docs/images/debug-eclipse-1.png similarity index 100% rename from jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/images/debug-eclipse-1.png rename to jetty-documentation/src/main/asciidoc/programming-guide/old_docs/images/debug-eclipse-1.png diff --git a/jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/images/debug-eclipse-2.png b/jetty-documentation/src/main/asciidoc/programming-guide/old_docs/images/debug-eclipse-2.png similarity index 100% rename from jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/images/debug-eclipse-2.png rename to jetty-documentation/src/main/asciidoc/programming-guide/old_docs/images/debug-eclipse-2.png diff --git a/jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/images/debug-eclipse-3.png b/jetty-documentation/src/main/asciidoc/programming-guide/old_docs/images/debug-eclipse-3.png similarity index 100% rename from jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/images/debug-eclipse-3.png rename to jetty-documentation/src/main/asciidoc/programming-guide/old_docs/images/debug-eclipse-3.png diff --git a/jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/images/intellij_debug_view.png b/jetty-documentation/src/main/asciidoc/programming-guide/old_docs/images/intellij_debug_view.png similarity index 100% rename from jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/images/intellij_debug_view.png rename to jetty-documentation/src/main/asciidoc/programming-guide/old_docs/images/intellij_debug_view.png diff --git a/jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/images/intellij_new_remote_config.png b/jetty-documentation/src/main/asciidoc/programming-guide/old_docs/images/intellij_new_remote_config.png similarity index 100% rename from jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/images/intellij_new_remote_config.png rename to jetty-documentation/src/main/asciidoc/programming-guide/old_docs/images/intellij_new_remote_config.png diff --git a/jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/images/intellij_select_debug.png b/jetty-documentation/src/main/asciidoc/programming-guide/old_docs/images/intellij_select_debug.png similarity index 100% rename from jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/images/intellij_select_debug.png rename to jetty-documentation/src/main/asciidoc/programming-guide/old_docs/images/intellij_select_debug.png diff --git a/jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/images/intellij_set_breakpoint.png b/jetty-documentation/src/main/asciidoc/programming-guide/old_docs/images/intellij_set_breakpoint.png similarity index 100% rename from jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/images/intellij_set_breakpoint.png rename to jetty-documentation/src/main/asciidoc/programming-guide/old_docs/images/intellij_set_breakpoint.png diff --git a/jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/images/jetty-high-level-architecture.png b/jetty-documentation/src/main/asciidoc/programming-guide/old_docs/images/jetty-high-level-architecture.png similarity index 100% rename from jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/images/jetty-high-level-architecture.png rename to jetty-documentation/src/main/asciidoc/programming-guide/old_docs/images/jetty-high-level-architecture.png diff --git a/jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/index.old b/jetty-documentation/src/main/asciidoc/programming-guide/old_docs/index.old similarity index 100% rename from jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/index.old rename to jetty-documentation/src/main/asciidoc/programming-guide/old_docs/index.old diff --git a/jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/jetty-xml/chapter.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/old_docs/jetty-xml/chapter.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/jetty-xml/chapter.adoc rename to jetty-documentation/src/main/asciidoc/programming-guide/old_docs/jetty-xml/chapter.adoc diff --git a/jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/jetty-xml/jetty-env-xml.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/old_docs/jetty-xml/jetty-env-xml.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/jetty-xml/jetty-env-xml.adoc rename to jetty-documentation/src/main/asciidoc/programming-guide/old_docs/jetty-xml/jetty-env-xml.adoc diff --git a/jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/jetty-xml/jetty-web-xml-config.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/old_docs/jetty-xml/jetty-web-xml-config.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/jetty-xml/jetty-web-xml-config.adoc rename to jetty-documentation/src/main/asciidoc/programming-guide/old_docs/jetty-xml/jetty-web-xml-config.adoc diff --git a/jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/jetty-xml/jetty-xml-config.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/old_docs/jetty-xml/jetty-xml-config.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/jetty-xml/jetty-xml-config.adoc rename to jetty-documentation/src/main/asciidoc/programming-guide/old_docs/jetty-xml/jetty-xml-config.adoc diff --git a/jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/jetty-xml/jetty-xml-syntax.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/old_docs/jetty-xml/jetty-xml-syntax.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/jetty-xml/jetty-xml-syntax.adoc rename to jetty-documentation/src/main/asciidoc/programming-guide/old_docs/jetty-xml/jetty-xml-syntax.adoc diff --git a/jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/jetty-xml/jetty-xml-usage.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/old_docs/jetty-xml/jetty-xml-usage.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/jetty-xml/jetty-xml-usage.adoc rename to jetty-documentation/src/main/asciidoc/programming-guide/old_docs/jetty-xml/jetty-xml-usage.adoc diff --git a/jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/jetty-xml/override-web-xml.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/old_docs/jetty-xml/override-web-xml.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/jetty-xml/override-web-xml.adoc rename to jetty-documentation/src/main/asciidoc/programming-guide/old_docs/jetty-xml/override-web-xml.adoc diff --git a/jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/jetty-xml/webdefault-xml.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/old_docs/jetty-xml/webdefault-xml.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/jetty-xml/webdefault-xml.adoc rename to jetty-documentation/src/main/asciidoc/programming-guide/old_docs/jetty-xml/webdefault-xml.adoc diff --git a/jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/maven/jetty-maven-scanning.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/old_docs/maven/jetty-maven-scanning.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/maven/jetty-maven-scanning.adoc rename to jetty-documentation/src/main/asciidoc/programming-guide/old_docs/maven/jetty-maven-scanning.adoc diff --git a/jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/platforms/chapter.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/old_docs/platforms/chapter.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/platforms/chapter.adoc rename to jetty-documentation/src/main/asciidoc/programming-guide/old_docs/platforms/chapter.adoc diff --git a/jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/platforms/cloudfoundry.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/old_docs/platforms/cloudfoundry.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/platforms/cloudfoundry.adoc rename to jetty-documentation/src/main/asciidoc/programming-guide/old_docs/platforms/cloudfoundry.adoc diff --git a/jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/platforms/elastic-beanstalk.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/old_docs/platforms/elastic-beanstalk.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/platforms/elastic-beanstalk.adoc rename to jetty-documentation/src/main/asciidoc/programming-guide/old_docs/platforms/elastic-beanstalk.adoc diff --git a/jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/platforms/fedora.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/old_docs/platforms/fedora.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/platforms/fedora.adoc rename to jetty-documentation/src/main/asciidoc/programming-guide/old_docs/platforms/fedora.adoc diff --git a/jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/platforms/jelastic.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/old_docs/platforms/jelastic.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/platforms/jelastic.adoc rename to jetty-documentation/src/main/asciidoc/programming-guide/old_docs/platforms/jelastic.adoc diff --git a/jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/platforms/ubuntu.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/old_docs/platforms/ubuntu.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/platforms/ubuntu.adoc rename to jetty-documentation/src/main/asciidoc/programming-guide/old_docs/platforms/ubuntu.adoc diff --git a/jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/troubleshooting/chapter.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/old_docs/troubleshooting/chapter.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/troubleshooting/chapter.adoc rename to jetty-documentation/src/main/asciidoc/programming-guide/old_docs/troubleshooting/chapter.adoc diff --git a/jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/troubleshooting/preventing-memory-leaks.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/old_docs/troubleshooting/preventing-memory-leaks.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/troubleshooting/preventing-memory-leaks.adoc rename to jetty-documentation/src/main/asciidoc/programming-guide/old_docs/troubleshooting/preventing-memory-leaks.adoc diff --git a/jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/troubleshooting/security-reports.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/old_docs/troubleshooting/security-reports.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/troubleshooting/security-reports.adoc rename to jetty-documentation/src/main/asciidoc/programming-guide/old_docs/troubleshooting/security-reports.adoc diff --git a/jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/troubleshooting/slow-deployment.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/old_docs/troubleshooting/slow-deployment.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/troubleshooting/slow-deployment.adoc rename to jetty-documentation/src/main/asciidoc/programming-guide/old_docs/troubleshooting/slow-deployment.adoc diff --git a/jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/troubleshooting/troubleshooting-locked-files.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/old_docs/troubleshooting/troubleshooting-locked-files.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/troubleshooting/troubleshooting-locked-files.adoc rename to jetty-documentation/src/main/asciidoc/programming-guide/old_docs/troubleshooting/troubleshooting-locked-files.adoc diff --git a/jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/troubleshooting/troubleshooting-zip-exceptions.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/old_docs/troubleshooting/troubleshooting-zip-exceptions.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/troubleshooting/troubleshooting-zip-exceptions.adoc rename to jetty-documentation/src/main/asciidoc/programming-guide/old_docs/troubleshooting/troubleshooting-zip-exceptions.adoc diff --git a/jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/troubleshooting/watchservice.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/old_docs/troubleshooting/watchservice.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/troubleshooting/watchservice.adoc rename to jetty-documentation/src/main/asciidoc/programming-guide/old_docs/troubleshooting/watchservice.adoc diff --git a/jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/websockets/intro/chapter.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/old_docs/websockets/intro/chapter.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/websockets/intro/chapter.adoc rename to jetty-documentation/src/main/asciidoc/programming-guide/old_docs/websockets/intro/chapter.adoc diff --git a/jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/websockets/java/chapter.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/old_docs/websockets/java/chapter.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/websockets/java/chapter.adoc rename to jetty-documentation/src/main/asciidoc/programming-guide/old_docs/websockets/java/chapter.adoc diff --git a/jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/websockets/java/java-websocket-client-api.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/old_docs/websockets/java/java-websocket-client-api.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/websockets/java/java-websocket-client-api.adoc rename to jetty-documentation/src/main/asciidoc/programming-guide/old_docs/websockets/java/java-websocket-client-api.adoc diff --git a/jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/websockets/java/java-websocket-server-api.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/old_docs/websockets/java/java-websocket-server-api.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/websockets/java/java-websocket-server-api.adoc rename to jetty-documentation/src/main/asciidoc/programming-guide/old_docs/websockets/java/java-websocket-server-api.adoc diff --git a/jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/websockets/jetty/chapter.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/old_docs/websockets/jetty/chapter.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/websockets/jetty/chapter.adoc rename to jetty-documentation/src/main/asciidoc/programming-guide/old_docs/websockets/jetty/chapter.adoc diff --git a/jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/websockets/jetty/jetty-websocket-api-adapter.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/old_docs/websockets/jetty/jetty-websocket-api-adapter.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/websockets/jetty/jetty-websocket-api-adapter.adoc rename to jetty-documentation/src/main/asciidoc/programming-guide/old_docs/websockets/jetty/jetty-websocket-api-adapter.adoc diff --git a/jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/websockets/jetty/jetty-websocket-api-annotations.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/old_docs/websockets/jetty/jetty-websocket-api-annotations.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/websockets/jetty/jetty-websocket-api-annotations.adoc rename to jetty-documentation/src/main/asciidoc/programming-guide/old_docs/websockets/jetty/jetty-websocket-api-annotations.adoc diff --git a/jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/websockets/jetty/jetty-websocket-api-events.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/old_docs/websockets/jetty/jetty-websocket-api-events.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/websockets/jetty/jetty-websocket-api-events.adoc rename to jetty-documentation/src/main/asciidoc/programming-guide/old_docs/websockets/jetty/jetty-websocket-api-events.adoc diff --git a/jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/websockets/jetty/jetty-websocket-api-listener.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/old_docs/websockets/jetty/jetty-websocket-api-listener.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/websockets/jetty/jetty-websocket-api-listener.adoc rename to jetty-documentation/src/main/asciidoc/programming-guide/old_docs/websockets/jetty/jetty-websocket-api-listener.adoc diff --git a/jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/websockets/jetty/jetty-websocket-api-send-message.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/old_docs/websockets/jetty/jetty-websocket-api-send-message.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/websockets/jetty/jetty-websocket-api-send-message.adoc rename to jetty-documentation/src/main/asciidoc/programming-guide/old_docs/websockets/jetty/jetty-websocket-api-send-message.adoc diff --git a/jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/websockets/jetty/jetty-websocket-api-session.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/old_docs/websockets/jetty/jetty-websocket-api-session.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/websockets/jetty/jetty-websocket-api-session.adoc rename to jetty-documentation/src/main/asciidoc/programming-guide/old_docs/websockets/jetty/jetty-websocket-api-session.adoc diff --git a/jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/websockets/jetty/jetty-websocket-api.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/old_docs/websockets/jetty/jetty-websocket-api.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/websockets/jetty/jetty-websocket-api.adoc rename to jetty-documentation/src/main/asciidoc/programming-guide/old_docs/websockets/jetty/jetty-websocket-api.adoc diff --git a/jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/websockets/jetty/jetty-websocket-client-api.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/old_docs/websockets/jetty/jetty-websocket-client-api.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/websockets/jetty/jetty-websocket-client-api.adoc rename to jetty-documentation/src/main/asciidoc/programming-guide/old_docs/websockets/jetty/jetty-websocket-client-api.adoc diff --git a/jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/websockets/jetty/jetty-websocket-server-api.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/old_docs/websockets/jetty/jetty-websocket-server-api.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/embedded-guide/old_docs/websockets/jetty/jetty-websocket-server-api.adoc rename to jetty-documentation/src/main/asciidoc/programming-guide/old_docs/websockets/jetty/jetty-websocket-server-api.adoc diff --git a/jetty-documentation/src/main/asciidoc/embedded-guide/server/http/server-http-application.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/server/http/server-http-application.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/embedded-guide/server/http/server-http-application.adoc rename to jetty-documentation/src/main/asciidoc/programming-guide/server/http/server-http-application.adoc diff --git a/jetty-documentation/src/main/asciidoc/embedded-guide/server/http/server-http-connector.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/server/http/server-http-connector.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/embedded-guide/server/http/server-http-connector.adoc rename to jetty-documentation/src/main/asciidoc/programming-guide/server/http/server-http-connector.adoc diff --git a/jetty-documentation/src/main/asciidoc/embedded-guide/server/http/server-http-handler-implement.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/server/http/server-http-handler-implement.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/embedded-guide/server/http/server-http-handler-implement.adoc rename to jetty-documentation/src/main/asciidoc/programming-guide/server/http/server-http-handler-implement.adoc diff --git a/jetty-documentation/src/main/asciidoc/embedded-guide/server/http/server-http-handler-use.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/server/http/server-http-handler-use.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/embedded-guide/server/http/server-http-handler-use.adoc rename to jetty-documentation/src/main/asciidoc/programming-guide/server/http/server-http-handler-use.adoc diff --git a/jetty-documentation/src/main/asciidoc/embedded-guide/server/http/server-http-handler.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/server/http/server-http-handler.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/embedded-guide/server/http/server-http-handler.adoc rename to jetty-documentation/src/main/asciidoc/programming-guide/server/http/server-http-handler.adoc diff --git a/jetty-documentation/src/main/asciidoc/embedded-guide/server/http/server-http-security.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/server/http/server-http-security.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/embedded-guide/server/http/server-http-security.adoc rename to jetty-documentation/src/main/asciidoc/programming-guide/server/http/server-http-security.adoc diff --git a/jetty-documentation/src/main/asciidoc/embedded-guide/server/http/server-http.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/server/http/server-http.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/embedded-guide/server/http/server-http.adoc rename to jetty-documentation/src/main/asciidoc/programming-guide/server/http/server-http.adoc diff --git a/jetty-documentation/src/main/asciidoc/embedded-guide/server/http2/server-http2.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/server/http2/server-http2.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/embedded-guide/server/http2/server-http2.adoc rename to jetty-documentation/src/main/asciidoc/programming-guide/server/http2/server-http2.adoc diff --git a/jetty-documentation/src/main/asciidoc/embedded-guide/server/server-io-arch.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/server/server-io-arch.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/embedded-guide/server/server-io-arch.adoc rename to jetty-documentation/src/main/asciidoc/programming-guide/server/server-io-arch.adoc diff --git a/jetty-documentation/src/main/asciidoc/embedded-guide/server/server.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/server/server.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/embedded-guide/server/server.adoc rename to jetty-documentation/src/main/asciidoc/programming-guide/server/server.adoc diff --git a/jetty-documentation/src/main/asciidoc/embedded-guide/server/websocket/server-websocket.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/server/websocket/server-websocket.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/embedded-guide/server/websocket/server-websocket.adoc rename to jetty-documentation/src/main/asciidoc/programming-guide/server/websocket/server-websocket.adoc diff --git a/jetty-documentation/src/main/asciidoc/embedded-guide/troubleshooting.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/troubleshooting.adoc similarity index 100% rename from jetty-documentation/src/main/asciidoc/embedded-guide/troubleshooting.adoc rename to jetty-documentation/src/main/asciidoc/programming-guide/troubleshooting.adoc From 6ebbdaebf6bb332c1f428f2e91665b6df1e4f076 Mon Sep 17 00:00:00 2001 From: Chris Walker Date: Thu, 27 Aug 2020 11:02:12 -0500 Subject: [PATCH 02/10] Fixed headers, TOC and pom --- jetty-documentation/pom.xml | 18 +++++++++--------- .../asciidoc/gettingstarted-guide/index.adoc | 6 +++--- .../main/asciidoc/operation-guide/index.adoc | 6 +++--- .../main/asciidoc/programming-guide/index.adoc | 6 +++--- 4 files changed, 18 insertions(+), 18 deletions(-) diff --git a/jetty-documentation/pom.xml b/jetty-documentation/pom.xml index 0f0ea5c365d..53d087a54c3 100644 --- a/jetty-documentation/pom.xml +++ b/jetty-documentation/pom.xml @@ -176,7 +176,7 @@ - quickstart-guide + gettingstarted-guide generate-resources process-asciidoc @@ -184,13 +184,13 @@ html5 ${web.resources.directory}/asciidoc/slim-template - ${basedir}/src/main/asciidoc/quickstart-guide + ${basedir}/src/main/asciidoc/gettingstarted-guide index.adoc - ${project.build.directory}/html/quickstart-guide + ${project.build.directory}/html/gettingstarted-guide - distribution-guide + operation-guide generate-resources process-asciidoc @@ -198,9 +198,9 @@ html5 ${web.resources.directory}/asciidoc/slim-template - ${basedir}/src/main/asciidoc/distribution-guide + ${basedir}/src/main/asciidoc/operation-guide index.adoc - ${project.build.directory}/html/distribution-guide + ${project.build.directory}/html/operation-guide @@ -219,7 +219,7 @@ - embedded-guide + programming-guide prepare-package process-asciidoc @@ -227,9 +227,9 @@ html5 ${web.resources.directory}/asciidoc/slim-template - ${basedir}/src/main/asciidoc/embedded-guide + ${basedir}/src/main/asciidoc/programming-guide index.adoc - ${project.build.directory}/html/embedded-guide + ${project.build.directory}/html/programming-guide coderay asciidoctor-diagram diff --git a/jetty-documentation/src/main/asciidoc/gettingstarted-guide/index.adoc b/jetty-documentation/src/main/asciidoc/gettingstarted-guide/index.adoc index ce56d956e15..e41aca702e5 100644 --- a/jetty-documentation/src/main/asciidoc/gettingstarted-guide/index.adoc +++ b/jetty-documentation/src/main/asciidoc/gettingstarted-guide/index.adoc @@ -16,20 +16,20 @@ // ======================================================================== // -:doctitle: Eclipse Jetty: Quickstart Guide +:doctitle: Eclipse Jetty: Getting Started Guide :author: Jetty Developers :email: jetty-dev@eclipse.org :revnumber: 1.0 :revdate: {TIMESTAMP} :toc: left -:toc-title: Quickstart Guide +:toc-title: Getting Started Guide :toc-style: :header-style: eclipse-thin :breadcrumb-style: eclipse-thin :footer-style: default -:breadcrumb: Home:../index.html | Quickstart Guide:./index.html +:breadcrumb: Home:../index.html | Getting Started Guide:./index.html // html specific directives ifdef::backend-html5[] diff --git a/jetty-documentation/src/main/asciidoc/operation-guide/index.adoc b/jetty-documentation/src/main/asciidoc/operation-guide/index.adoc index 130c16ce985..20e201f6491 100644 --- a/jetty-documentation/src/main/asciidoc/operation-guide/index.adoc +++ b/jetty-documentation/src/main/asciidoc/operation-guide/index.adoc @@ -16,19 +16,19 @@ // ======================================================================== // -:doctitle: Eclipse Jetty: Distribution Guide +:doctitle: Eclipse Jetty: Operation Guide :author: Jetty Developers :email: jetty-dev@eclipse.org :revnumber: 1.0 :revdate: {TIMESTAMP} :toc: left -:toc-title: Distribution Guide +:toc-title: Operation Guide :toc-style: :header-style: eclipse-thin :breadcrumb-style: eclipse-thin :footer-style: default -:breadcrumb: Home:../index.html | Distribution Guide:./index.html +:breadcrumb: Home:../index.html | Operation Guide:./index.html // docinfo lets you pull in shared content and/or influence via render type //:docinfodir: {DOCINFODIR}/documentation diff --git a/jetty-documentation/src/main/asciidoc/programming-guide/index.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/index.adoc index 70542715a52..239117fe5b5 100644 --- a/jetty-documentation/src/main/asciidoc/programming-guide/index.adoc +++ b/jetty-documentation/src/main/asciidoc/programming-guide/index.adoc @@ -16,20 +16,20 @@ // ======================================================================== // -:doctitle: Eclipse Jetty: Embedded Guide +:doctitle: Eclipse Jetty: Programming Guide :author: Jetty Developers :email: jetty-dev@eclipse.org :revnumber: 1.0 :revdate: {TIMESTAMP} :toc: left -:toc-title: Embedded Guide +:toc-title: Programming Guide :toc-style: :header-style: eclipse-thin :breadcrumb-style: eclipse-thin :footer-style: default -:breadcrumb: Home:../index.html | Embedded Guide:./index.html +:breadcrumb: Home:../index.html | Programming Guide:./index.html // docinfo lets you pull in shared content and/or influence via render type //:docinfodir: {DOCINFODIR}/documentation From a8ae3f94769fcbd6db39adb9f6bffac260ad6a39 Mon Sep 17 00:00:00 2001 From: Joakim Erdfelt Date: Mon, 24 Aug 2020 09:50:50 -0500 Subject: [PATCH 03/10] Issue #5185 - Add DoSFilter Listener to allow extensible behavior + Currently there's no way to respond to rejected/throttled/delayed requests that the DoSFilter impacts. A Listener has been added to allow for any behaviors needed by a user of the DoSFilter on requests that have been impacted by the DoSFilter. + Introducing OverLimit and RateType to DoSFilter internals Signed-off-by: Joakim Erdfelt --- .../org/eclipse/jetty/servlets/DoSFilter.java | 376 +++++++++++++----- .../eclipse/jetty/servlets/DoSFilterTest.java | 4 +- 2 files changed, 278 insertions(+), 102 deletions(-) diff --git a/jetty-servlets/src/main/java/org/eclipse/jetty/servlets/DoSFilter.java b/jetty-servlets/src/main/java/org/eclipse/jetty/servlets/DoSFilter.java index d1ee5261212..2ba7bd32008 100644 --- a/jetty-servlets/src/main/java/org/eclipse/jetty/servlets/DoSFilter.java +++ b/jetty-servlets/src/main/java/org/eclipse/jetty/servlets/DoSFilter.java @@ -20,9 +20,13 @@ package org.eclipse.jetty.servlets; import java.io.IOException; import java.io.Serializable; +import java.time.Duration; import java.util.ArrayList; +import java.util.HashMap; import java.util.Iterator; import java.util.List; +import java.util.Map; +import java.util.Objects; import java.util.Queue; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentLinkedQueue; @@ -161,10 +165,13 @@ public class DoSFilter implements Filter static final String ENABLED_INIT_PARAM = "enabled"; static final String TOO_MANY_CODE = "tooManyCode"; - private static final int USER_AUTH = 2; - private static final int USER_SESSION = 2; - private static final int USER_IP = 1; - private static final int USER_UNKNOWN = 0; + public enum RateType + { + AUTH, + SESSION, + IP, + UNKNOWN + } private final String _suspended = "DoSFilter@" + Integer.toHexString(hashCode()) + ".SUSPENDED"; private final String _resumed = "DoSFilter@" + Integer.toHexString(hashCode()) + ".RESUMED"; @@ -181,23 +188,22 @@ public class DoSFilter implements Filter private volatile boolean _remotePort; private volatile boolean _enabled; private volatile String _name; + private DoSFilter.Listener _listener = new Listener(); private Semaphore _passes; private volatile int _throttledRequests; private volatile int _maxRequestsPerSec; - private Queue[] _queues; - private AsyncListener[] _listeners; + private Map> _queues = new HashMap<>(); + private Map _listeners = new HashMap<>(); private Scheduler _scheduler; private ServletContext _context; @Override public void init(FilterConfig filterConfig) throws ServletException { - _queues = new Queue[getMaxPriority() + 1]; - _listeners = new AsyncListener[_queues.length]; - for (int p = 0; p < _queues.length; p++) + for (RateType rateType : RateType.values()) { - _queues[p] = new ConcurrentLinkedQueue<>(); - _listeners[p] = new DoSAsyncListener(p); + _queues.put(rateType, new ConcurrentLinkedQueue<>()); + _listeners.put(rateType, new DoSAsyncListener(rateType)); } _rateTrackers.clear(); @@ -305,67 +311,76 @@ public class DoSFilter implements Filter // Look for the rate tracker for this request. RateTracker tracker = (RateTracker)request.getAttribute(__TRACKER); - if (tracker == null) + if (tracker != null) { - // This is the first time we have seen this request. - if (LOG.isDebugEnabled()) - LOG.debug("Filtering {}", request); - - // Get a rate tracker associated with this request, and record one hit. - tracker = getRateTracker(request); - - // Calculate the rate and check if it is over the allowed limit - final boolean overRateLimit = tracker.isRateExceeded(System.currentTimeMillis()); - - // Pass it through if we are not currently over the rate limit. - if (!overRateLimit) - { - if (LOG.isDebugEnabled()) - LOG.debug("Allowing {}", request); - doFilterChain(filterChain, request, response); - return; - } - - // We are over the limit. - - // So either reject it, delay it or throttle it. - long delayMs = getDelayMs(); - boolean insertHeaders = isInsertHeaders(); - switch ((int)delayMs) - { - case -1: - { - // Reject this request. - LOG.warn("DOS ALERT: Request rejected ip={}, session={}, user={}", request.getRemoteAddr(), request.getRequestedSessionId(), request.getUserPrincipal()); - if (insertHeaders) - response.addHeader("DoSFilter", "unavailable"); - response.sendError(getTooManyCode()); - return; - } - case 0: - { - // Fall through to throttle the request. - LOG.warn("DOS ALERT: Request throttled ip={}, session={}, user={}", request.getRemoteAddr(), request.getRequestedSessionId(), request.getUserPrincipal()); - request.setAttribute(__TRACKER, tracker); - break; - } - default: - { - // Insert a delay before throttling the request, - // using the suspend+timeout mechanism of AsyncContext. - LOG.warn("DOS ALERT: Request delayed={}ms, ip={}, session={}, user={}", delayMs, request.getRemoteAddr(), request.getRequestedSessionId(), request.getUserPrincipal()); - if (insertHeaders) - response.addHeader("DoSFilter", "delayed"); - request.setAttribute(__TRACKER, tracker); - AsyncContext asyncContext = request.startAsync(); - if (delayMs > 0) - asyncContext.setTimeout(delayMs); - asyncContext.addListener(new DoSTimeoutAsyncListener()); - return; - } - } + // Redispatched, RateTracker present in request attributes. + throttleRequest(request, response, filterChain, tracker); + return; } + // This is the first time we have seen this request. + if (LOG.isDebugEnabled()) + LOG.debug("Filtering {}", request); + + // Get a rate tracker associated with this request, and record one hit. + tracker = getRateTracker(request); + + // Calculate the rate and check if it is over the allowed limit + final OverLimit overLimit = tracker.isRateExceeded(System.currentTimeMillis()); + + // Pass it through if we are not currently over the rate limit. + if (overLimit == null) + { + if (LOG.isDebugEnabled()) + LOG.debug("Allowing {}", request); + doFilterChain(filterChain, request, response); + return; + } + + // We are over the limit. + + // Ask listener what to perform. + Action action = _listener.onRequestOverLimit(request, overLimit, this); + + // Perform action + long delayMs = getDelayMs(); + boolean insertHeaders = isInsertHeaders(); + switch (action) + { + case NO_ACTION: + if (LOG.isDebugEnabled()) + LOG.debug("Allowing over-limit request {}", request); + doFilterChain(filterChain, request, response); + break; + case ABORT: + if (LOG.isDebugEnabled()) + LOG.debug("Aborting over-limit request {}", request); + response.sendError(-1); + return; + case REJECT: + if (insertHeaders) + response.addHeader("DoSFilter", "unavailable"); + response.sendError(getTooManyCode()); + return; + case DELAY: + // Insert a delay before throttling the request, + // using the suspend+timeout mechanism of AsyncContext. + if (insertHeaders) + response.addHeader("DoSFilter", "delayed"); + request.setAttribute(__TRACKER, tracker); + AsyncContext asyncContext = request.startAsync(); + if (delayMs > 0) + asyncContext.setTimeout(delayMs); + asyncContext.addListener(new DoSTimeoutAsyncListener()); + break; + case THROTTLE: + throttleRequest(request, response, filterChain, tracker); + break; + } + } + + private void throttleRequest(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain, RateTracker tracker) throws IOException, ServletException + { if (LOG.isDebugEnabled()) LOG.debug("Throttling {}", request); @@ -383,15 +398,15 @@ public class DoSFilter implements Filter long throttleMs = getThrottleMs(); if (!Boolean.TRUE.equals(throttled) && throttleMs > 0) { - int priority = getPriority(request, tracker); + RateType priority = getPriority(request, tracker); request.setAttribute(__THROTTLED, Boolean.TRUE); if (isInsertHeaders()) response.addHeader("DoSFilter", "throttled"); AsyncContext asyncContext = request.startAsync(); request.setAttribute(_suspended, Boolean.TRUE); asyncContext.setTimeout(throttleMs); - asyncContext.addListener(_listeners[priority]); - _queues[priority].add(asyncContext); + asyncContext.addListener(_listeners.get(priority)); + _queues.get(priority).add(asyncContext); if (LOG.isDebugEnabled()) LOG.debug("Throttled {}, {}ms", request, throttleMs); return; @@ -436,9 +451,9 @@ public class DoSFilter implements Filter try { // Wake up the next highest priority request. - for (int p = _queues.length - 1; p >= 0; --p) + for (RateType rateType : RateType.values()) { - AsyncContext asyncContext = _queues[p].poll(); + AsyncContext asyncContext = _queues.get(rateType).poll(); if (asyncContext != null) { ServletRequest candidate = asyncContext.getRequest(); @@ -530,21 +545,31 @@ public class DoSFilter implements Filter * @param tracker the rate tracker for this request * @return the priority for this request */ - private int getPriority(HttpServletRequest request, RateTracker tracker) + private RateType getPriority(HttpServletRequest request, RateTracker tracker) { if (extractUserId(request) != null) - return USER_AUTH; + return RateType.AUTH; if (tracker != null) return tracker.getType(); - return USER_UNKNOWN; + return RateType.UNKNOWN; } /** * @return the maximum priority that we can assign to a request */ - protected int getMaxPriority() + protected RateType getMaxPriority() { - return USER_AUTH; + return RateType.AUTH; + } + + public void setListener(DoSFilter.Listener listener) + { + _listener = Objects.requireNonNull(listener, "Listener may not be null"); + } + + public DoSFilter.Listener getListener() + { + return _listener; } private void schedule(RateTracker tracker) @@ -573,22 +598,22 @@ public class DoSFilter implements Filter HttpSession session = ((HttpServletRequest)request).getSession(false); String loadId = extractUserId(request); - final int type; + final RateType type; if (loadId != null) { - type = USER_AUTH; + type = RateType.AUTH; } else { if (isTrackSessions() && session != null && !session.isNew()) { loadId = session.getId(); - type = USER_SESSION; + type = RateType.SESSION; } else { loadId = isRemotePort() ? createRemotePortId(request) : request.getRemoteAddr(); - type = USER_IP; + type = RateType.IP; } } @@ -605,7 +630,7 @@ public class DoSFilter implements Filter if (existing != null) tracker = existing; - if (type == USER_IP) + if (type == RateType.IP) { // USER_IP expiration from _rateTrackers is handled by the _scheduler _scheduler.schedule(tracker, getMaxIdleTrackerMs(), TimeUnit.MILLISECONDS); @@ -1062,6 +1087,11 @@ public class DoSFilter implements Filter _enabled = enabled; } + /** + * Status code for Rejected for too many requests. + * + * @return the configured status code (default: 429 - Too Many Requests) + */ public int getTooManyCode() { return _tooManyCode; @@ -1150,6 +1180,13 @@ public class DoSFilter implements Filter return _whitelist.remove(address); } + private String createRemotePortId(ServletRequest request) + { + String addr = request.getRemoteAddr(); + int port = request.getRemotePort(); + return addr + ":" + port; + } + /** * A RateTracker is associated with a connection, and stores request rate * data. @@ -1161,17 +1198,19 @@ public class DoSFilter implements Filter protected final String _filterName; protected transient ServletContext _context; protected final String _id; - protected final int _type; + protected final RateType _type; + protected final int _maxRequestsPerSecond; protected final long[] _timestamps; protected int _next; - public RateTracker(ServletContext context, String filterName, String id, int type, int maxRequestsPerSecond) + public RateTracker(ServletContext context, String filterName, String id, RateType type, int maxRequestsPerSecond) { _context = context; _filterName = filterName; _id = id; _type = type; + _maxRequestsPerSecond = maxRequestsPerSecond; _timestamps = new long[maxRequestsPerSecond]; _next = 0; } @@ -1180,7 +1219,7 @@ public class DoSFilter implements Filter * @param now the time now (in milliseconds) * @return the current calculated request rate over the last second */ - public boolean isRateExceeded(long now) + public OverLimit isRateExceeded(long now) { final long last; synchronized (this) @@ -1190,7 +1229,17 @@ public class DoSFilter implements Filter _next = (_next + 1) % _timestamps.length; } - return last != 0 && (now - last) < 1000L; + if (last == 0) + { + return null; + } + + long rate = (now - last); + if (rate < 1000L) + { + return new Overage(Duration.ofMillis(rate), _maxRequestsPerSecond); + } + return null; } public String getId() @@ -1198,7 +1247,7 @@ public class DoSFilter implements Filter return _id; } - public int getType() + public RateType getType() { return _type; } @@ -1271,7 +1320,7 @@ public class DoSFilter implements Filter { if (_context == null) { - LOG.warn("Unknkown context for rate tracker {}", this); + LOG.warn("Unknown context for rate tracker {}", this); return; } @@ -1297,17 +1346,66 @@ public class DoSFilter implements Filter { return "RateTracker/" + _id + "/" + _type; } + + public class Overage implements OverLimit + { + private final Duration duration; + private final long count; + + public Overage(Duration dur, long count) + { + this.duration = dur; + this.count = count; + } + + @Override + public RateType getRateType() + { + return _type; + } + + @Override + public String getRateId() + { + return _id; + } + + @Override + public Duration getDuration() + { + return duration; + } + + @Override + public long getCount() + { + return count; + } + + @Override + public String toString() + { + final StringBuilder sb = new StringBuilder(OverLimit.class.getSimpleName()); + sb.append('@').append(Integer.toHexString(hashCode())); + sb.append("[type=").append(getRateType()); + sb.append(", id=").append(getRateId()); + sb.append(", duration=").append(duration); + sb.append(", count=").append(count); + sb.append(']'); + return sb.toString(); + } + } } private static class FixedRateTracker extends RateTracker { - public FixedRateTracker(ServletContext context, String filterName, String id, int type, int numRecentRequestsTracked) + public FixedRateTracker(ServletContext context, String filterName, String id, RateType type, int numRecentRequestsTracked) { super(context, filterName, id, type, numRecentRequestsTracked); } @Override - public boolean isRateExceeded(long now) + public OverLimit isRateExceeded(long now) { // rate limit is never exceeded, but we keep track of the request timestamps // so that we know whether there was recent activity on this tracker @@ -1318,7 +1416,7 @@ public class DoSFilter implements Filter _next = (_next + 1) % _timestamps.length; } - return false; + return null; } @Override @@ -1354,9 +1452,9 @@ public class DoSFilter implements Filter private class DoSAsyncListener extends DoSTimeoutAsyncListener { - private final int priority; + private final RateType priority; - public DoSAsyncListener(int priority) + public DoSAsyncListener(RateType priority) { this.priority = priority; } @@ -1364,15 +1462,93 @@ public class DoSFilter implements Filter @Override public void onTimeout(AsyncEvent event) throws IOException { - _queues[priority].remove(event.getAsyncContext()); + _queues.get(priority).remove(event.getAsyncContext()); super.onTimeout(event); } } - private String createRemotePortId(ServletRequest request) + public enum Action { - String addr = request.getRemoteAddr(); - int port = request.getRemotePort(); - return addr + ":" + port; + /** + * No action is taken against the Request, it is allowed to be processed normally. + */ + NO_ACTION, + /** + * The request and response is aborted, no response is sent. + */ + ABORT, + /** + * The request is rejected by sending an error based on {@link DoSFilter#getTooManyCode()} + */ + REJECT, + /** + * The request is delayed based on {@link DoSFilter#getDelayMs()} + */ + DELAY, + /** + * The request is throttled. + */ + THROTTLE; + + /** + * Obtain the Action based on configured {@link DoSFilter#getDelayMs()} + * + * @param delayMs the delay in milliseconds. + * @return the Action proposed. + */ + public static Action fromDelay(long delayMs) + { + if (delayMs < 0) + return Action.REJECT; + + if (delayMs == 0) + return Action.THROTTLE; + + return Action.DELAY; + } + } + + public interface OverLimit + { + RateType getRateType(); + + String getRateId(); + + Duration getDuration(); + + long getCount(); + } + + /** + * Listener for actions taken against specific requests. + */ + public static class Listener + { + /** + * Process the onRequestOverLimit() behavior. + * + * @param request the request that is over the limit + * @param dosFilter the {@link DoSFilter} that this event occurred on + * @return the action to actually perform. + */ + public Action onRequestOverLimit(HttpServletRequest request, OverLimit overlimit, DoSFilter dosFilter) + { + Action action = Action.fromDelay(dosFilter.getDelayMs()); + + switch (action) + { + case REJECT: + LOG.warn("DOS ALERT: Request rejected ip={}, overlimit={}, session={}, user={}", request.getRemoteAddr(), overlimit, request.getRequestedSessionId(), request.getUserPrincipal()); + break; + case DELAY: + LOG.warn("DOS ALERT: Request delayed={}ms, ip={}, overlimit={}, session={}, user={}", dosFilter.getDelayMs(), request.getRemoteAddr(), overlimit, request.getRequestedSessionId(), request.getUserPrincipal()); + break; + case THROTTLE: + LOG.warn("DOS ALERT: Request throttled ip={}, overlimit={}, session={}, user={}", request.getRemoteAddr(), overlimit, request.getRequestedSessionId(), request.getUserPrincipal()); + break; + } + + return action; + } } } diff --git a/jetty-servlets/src/test/java/org/eclipse/jetty/servlets/DoSFilterTest.java b/jetty-servlets/src/test/java/org/eclipse/jetty/servlets/DoSFilterTest.java index 56d2f2aa504..953e208a0d9 100644 --- a/jetty-servlets/src/test/java/org/eclipse/jetty/servlets/DoSFilterTest.java +++ b/jetty-servlets/src/test/java/org/eclipse/jetty/servlets/DoSFilterTest.java @@ -174,12 +174,12 @@ public class DoSFilterTest extends AbstractDoSFilterTest { boolean exceeded = false; ServletContext context = new ContextHandler.StaticContext(); - RateTracker rateTracker = new RateTracker(context, doSFilter.getName(), "test2", 0, 4); + RateTracker rateTracker = new RateTracker(context, doSFilter.getName(), "test2", DoSFilter.RateType.UNKNOWN, 4); for (int i = 0; i < 5; i++) { Thread.sleep(sleep); - if (rateTracker.isRateExceeded(TimeUnit.NANOSECONDS.toMillis(System.nanoTime()))) + if (rateTracker.isRateExceeded(TimeUnit.NANOSECONDS.toMillis(System.nanoTime())) != null) exceeded = true; } return exceeded; From cd0bf1cf5a103e5647f3b20f08d380379c96f173 Mon Sep 17 00:00:00 2001 From: Simone Bordet Date: Thu, 3 Sep 2020 10:47:38 +0200 Subject: [PATCH 04/10] Improvements to the Jetty documentation. Added introduction to the programming guide. Signed-off-by: Simone Bordet --- .../programming-guide/client/client.adoc | 7 +++-- .../asciidoc/programming-guide/index.adoc | 1 + .../programming-guide/introduction.adoc | 29 +++++++++++++++++++ 3 files changed, 34 insertions(+), 3 deletions(-) create mode 100644 jetty-documentation/src/main/asciidoc/programming-guide/introduction.adoc diff --git a/jetty-documentation/src/main/asciidoc/programming-guide/client/client.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/client/client.adoc index 3b6145f9ab8..e9a70398d36 100644 --- a/jetty-documentation/src/main/asciidoc/programming-guide/client/client.adoc +++ b/jetty-documentation/src/main/asciidoc/programming-guide/client/client.adoc @@ -19,11 +19,12 @@ [[eg-client]] == Client Libraries -The Eclipse Jetty Project provides also provides client-side libraries that allow you to embed a client in your applications. +The Eclipse Jetty Project provides client-side libraries that allow you to embed a client in your applications. A typical example is a client application that needs to contact a third party service via HTTP (for example a REST service). -Another example is a proxy application that receives HTTP requests and forwards them as FCGI requests to a PHP application such as WordPress, or receives HTTP/1.1 requests and converts them to HTTP/2. Yet another example is a client application that needs to received events from a WebSocket server. +Another example is a proxy application that receives HTTP requests and forwards them as FCGI requests to a PHP application such as WordPress, or receives HTTP/1.1 requests and converts them to HTTP/2. +Yet another example is a client application that needs to receive events from a WebSocket server. -The client libraries are designed to be non-blocking and offer both synchronous and asynchronous APIs and come with a large number of configuration options. +The client libraries are designed to be non-blocking and offer both synchronous and asynchronous APIs and come with many configuration options. These are the available client libraries: diff --git a/jetty-documentation/src/main/asciidoc/programming-guide/index.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/index.adoc index 239117fe5b5..16e51eda846 100644 --- a/jetty-documentation/src/main/asciidoc/programming-guide/index.adoc +++ b/jetty-documentation/src/main/asciidoc/programming-guide/index.adoc @@ -57,6 +57,7 @@ endif::[] :sectids!: include::.asciidoctorconfig[] +include::introduction.adoc[] include::client/client.adoc[] include::server/server.adoc[] include::maven/maven.adoc[] diff --git a/jetty-documentation/src/main/asciidoc/programming-guide/introduction.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/introduction.adoc new file mode 100644 index 00000000000..a69ccd777db --- /dev/null +++ b/jetty-documentation/src/main/asciidoc/programming-guide/introduction.adoc @@ -0,0 +1,29 @@ +// +// ======================================================================== +// Copyright (c) 1995-2020 Mort Bay Consulting Pty Ltd and others. +// +// This program and the accompanying materials are made available under +// the terms of the Eclipse Public License 2.0 which is available at +// https://www.eclipse.org/legal/epl-2.0 +// +// This Source Code may also be made available under the following +// Secondary Licenses when the conditions for such availability set +// forth in the Eclipse Public License, v. 2.0 are satisfied: +// the Apache License v2.0 which is available at +// https://www.apache.org/licenses/LICENSE-2.0 +// +// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 +// ======================================================================== +// + +== Eclipse Jetty Programming Guide + +The Eclipse Jetty Programming Guide targets developers that want to use the Eclipse Jetty libraries in their applications. + +The Eclipse Jetty libraries provide the client-side and server-side APIs to work with various web protocols such as HTTP/1.1, HTTP/2, WebSocket and FastCGI. + +You may use the xref:eg-client[Eclipse Jetty client-side library] in your application to make calls to third party REST services, or to other REST microservices in your system. + +Likewise, you may use the xref:eg-server[Eclipse Jetty server-side library] to quickly create an HTTP or REST service without having to create a web application archive file (a `*.war` file) and deploy it to server that you have to download and install. + +This guide will walk you through the design of the Eclipse Jetty and how to use its classes to write your applications. From af5f11710ed369912e81e18cae6f8438a4fc94c9 Mon Sep 17 00:00:00 2001 From: Simone Bordet Date: Thu, 3 Sep 2020 10:50:49 +0200 Subject: [PATCH 05/10] Improvements to the Jetty documentation. Renamed section ids from "eg-" (embedded guide) to "pg-" (programming guide). Signed-off-by: Simone Bordet --- .../asciidoc/programming-guide/arch-bean.adoc | 20 ++++---- .../asciidoc/programming-guide/arch-io.adoc | 20 ++++---- .../asciidoc/programming-guide/arch-jmx.adoc | 20 ++++---- .../programming-guide/arch-listener.adoc | 10 ++-- .../main/asciidoc/programming-guide/arch.adoc | 2 +- .../client/client-io-arch.adoc | 12 ++--- .../programming-guide/client/client.adoc | 10 ++-- .../client/http/client-http-api.adoc | 12 ++--- .../http/client-http-authentication.adoc | 4 +- .../http/client-http-configuration.adoc | 10 ++-- .../client/http/client-http-cookie.adoc | 2 +- .../client/http/client-http-intro.adoc | 26 +++++------ .../client/http/client-http-proxy.adoc | 8 ++-- .../client/http/client-http-transport.adoc | 16 +++---- .../client/http/client-http.adoc | 2 +- .../client/http2/client-http2.adoc | 28 +++++------ .../client/websocket/client-websocket.adoc | 22 +++++++++ .../programming-guide/introduction.adoc | 4 +- .../server/http/server-http-application.adoc | 6 +-- .../server/http/server-http-connector.adoc | 18 ++++---- .../http/server-http-handler-implement.adoc | 6 +-- .../server/http/server-http-handler-use.adoc | 46 +++++++++---------- .../server/http/server-http-handler.adoc | 6 +-- .../server/http/server-http-security.adoc | 2 +- .../server/http/server-http.adoc | 12 ++--- .../server/http2/server-http2.adoc | 24 +++++----- .../server/server-io-arch.adoc | 4 +- .../programming-guide/server/server.adoc | 12 ++--- .../server/websocket/server-websocket.adoc | 2 +- .../programming-guide/troubleshooting.adoc | 16 +++---- 30 files changed, 202 insertions(+), 180 deletions(-) create mode 100644 jetty-documentation/src/main/asciidoc/programming-guide/client/websocket/client-websocket.adoc diff --git a/jetty-documentation/src/main/asciidoc/programming-guide/arch-bean.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/arch-bean.adoc index 7aaf13699e6..6767253a112 100644 --- a/jetty-documentation/src/main/asciidoc/programming-guide/arch-bean.adoc +++ b/jetty-documentation/src/main/asciidoc/programming-guide/arch-bean.adoc @@ -16,7 +16,7 @@ // ======================================================================== // -[[eg-arch-bean]] +[[pg-arch-bean]] === Jetty Component Architecture Applications that use the Jetty libraries (both client and server) create objects from Jetty classes and compose them together to obtain the desired functionalities. @@ -31,11 +31,11 @@ The end result is that an application based on the Jetty libraries is a _tree_ o In server application the root of the component tree is a `Server` instance, while in client applications the root of the component tree is an `HttpClient` instance. Having all the Jetty components in a tree is beneficial in a number of use cases. -It makes possible to register the components in the tree as xref:eg-arch-jmx[JMX MBeans] so that a JMX console can look at the internal state of the components. -It also makes possible to xref:eg-troubleshooting-component-dump[dump the component tree] (and therefore each component's internal state) to a log file or to the console for xref:eg-troubleshooting[troubleshooting purposes]. +It makes possible to register the components in the tree as xref:pg-arch-jmx[JMX MBeans] so that a JMX console can look at the internal state of the components. +It also makes possible to xref:pg-troubleshooting-component-dump[dump the component tree] (and therefore each component's internal state) to a log file or to the console for xref:pg-troubleshooting[troubleshooting purposes]. // TODO: add a section on Dumpable? -[[eg-arch-bean-lifecycle]] +[[pg-arch-bean-lifecycle]] ==== Jetty Component Lifecycle Jetty components typically have a life cycle: they can be started and stopped. @@ -110,11 +110,11 @@ The component tree should be used for long-lived or medium-lived components such It is not recommended adding to, and removing from, the component tree short-lived objects such as HTTP requests or TCP connections, for performance reasons. -If you need component tree features such as automatic xref:eg-arch-jmx[export to JMX] or xref:eg-troubleshooting-component-dump[dump capabilities] for short-lived objects, consider having a long-lived container in the component tree instead. +If you need component tree features such as automatic xref:pg-arch-jmx[export to JMX] or xref:pg-troubleshooting-component-dump[dump capabilities] for short-lived objects, consider having a long-lived container in the component tree instead. You can make the long-lived container efficient at adding/removing the short-lived components using a data structure that is not part of the component tree, and make the long-lived container handle the JMX and dump features for the short-lived components. ==== -[[eg-arch-bean-listener]] +[[pg-arch-bean-listener]] ==== Jetty Component Listeners A component that extends `AbstractLifeCycle` inherits the possibility to add/remove event _listeners_ for various events emitted by components. @@ -123,7 +123,7 @@ A component that implements `java.util.EventListener` that is added to a `Contai The following sections describe in details the various listeners available in the Jetty component architecture. -[[eg-arch-bean-listener-lifecycle]] +[[pg-arch-bean-listener-lifecycle]] ===== LifeCycle.Listener A `LifeCycle.Listener` emits events for life cycle events such as starting, stopping and failures: @@ -135,7 +135,7 @@ include::{doc_code}/embedded/ComponentDocs.java[tags=lifecycleListener] For example, a life cycle listener attached to a `Server` instance could be used to create (for the _started_ event) and delete (for the _stopped_ event) a file containing the process ID of the JVM that runs the `Server`. -[[eg-arch-bean-listener-container]] +[[pg-arch-bean-listener-container]] ===== Container.Listener A component that implements `Container` is a container for other components and `ContainerLifeCycle` is the typical implementation. @@ -154,13 +154,13 @@ A `Container.Listener` added as a bean will also be registered as a listener: include::{doc_code}/embedded/ComponentDocs.java[tags=containerSiblings] ---- -[[eg-arch-bean-listener-inherited]] +[[pg-arch-bean-listener-inherited]] ===== Container.InheritedListener A `Container.InheritedListener` is a listener that will be added to all descendants that are also ``Container``s. Listeners of this type may be added to the component tree root only, but will be notified of every descendant component that is added to or removed from the component tree (not only first level children). -The primary use of `Container.InheritedListener` within the Jetty Libraries is `MBeanContainer` from the xref:eg-arch-jmx[Jetty JMX support]. +The primary use of `Container.InheritedListener` within the Jetty Libraries is `MBeanContainer` from the xref:pg-arch-jmx[Jetty JMX support]. `MBeanContainer` listens for every component added to the tree, converts it to an MBean and registers it to the MBeanServer; for every component removed from the tree, it unregisters the corresponding MBean from the MBeanServer. diff --git a/jetty-documentation/src/main/asciidoc/programming-guide/arch-io.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/arch-io.adoc index f5a342afbab..09ccb8eb2d4 100644 --- a/jetty-documentation/src/main/asciidoc/programming-guide/arch-io.adoc +++ b/jetty-documentation/src/main/asciidoc/programming-guide/arch-io.adoc @@ -16,12 +16,12 @@ // ======================================================================== // -[[eg-arch-io]] +[[pg-arch-io]] === Jetty I/O Architecture Jetty libraries (both client and server) use Java NIO to handle I/O, so that at its core Jetty I/O is completely non-blocking. -[[eg-arch-io-selector-manager]] +[[pg-arch-io-selector-manager]] ==== Jetty I/O: `SelectorManager` The core class of Jetty I/O is link:{JDURL}/org/eclipse/jetty/io/SelectorManager.html[`SelectorManager`]. @@ -50,7 +50,7 @@ This example shows how a server accepts a client connection: include::{doc_code}/embedded/SelectorManagerDocs.java[tags=accept] ---- -[[eg-arch-io-endpoint-connection]] +[[pg-arch-io-endpoint-connection]] ==== Jetty I/O: `EndPoint` and `Connection` ``SocketChannel``s that are passed to `SelectorManager` are wrapped into two related components: an link:{JDURL}/org/eclipse/jetty/io/EndPoint.html[`EndPoint`] and a link:{JDURL}/org/eclipse/jetty/io/Connection.html[`Connection`]. @@ -80,11 +80,11 @@ NOTE: TODO: add a section on `UpgradeFrom` and `UpgradeTo`? Creating `Connection` instances is performed on the server-side by link:{JDURL}/org/eclipse/jetty/server/ConnectionFactory.html[`ConnectionFactory`]s and on the client-side by link:{JDURL}/org/eclipse/jetty/io/ClientConnectionFactory.html[`ClientConnectionFactory`]s -On the server-side, the component that aggregates a `SelectorManager` with a set of ``ConnectionFactory``s is link:{JDURL}/org/eclipse/jetty/server/ServerConnector.html[`ServerConnector`]s, see xref:eg-server-io-arch[]. +On the server-side, the component that aggregates a `SelectorManager` with a set of ``ConnectionFactory``s is link:{JDURL}/org/eclipse/jetty/server/ServerConnector.html[`ServerConnector`]s, see xref:pg-server-io-arch[]. -On the client-side, the components that aggregates a `SelectorManager` with a set of ``ClientConnectionFactory``s are link:{JDURL}/org/eclipse/jetty/client/HttpClientTransport.html[`HttpClientTransport`] subclasses, see xref:eg-client-io-arch[]. +On the client-side, the components that aggregates a `SelectorManager` with a set of ``ClientConnectionFactory``s are link:{JDURL}/org/eclipse/jetty/client/HttpClientTransport.html[`HttpClientTransport`] subclasses, see xref:pg-client-io-arch[]. -[[eg-arch-io-endpoint]] +[[pg-arch-io-endpoint]] ==== Jetty I/O: `EndPoint` The Jetty I/O library use Java NIO to handle I/O, so that I/O is non-blocking. @@ -99,9 +99,9 @@ In order to be notified when a `SocketChannel` uncongests and it is therefore wr In the Jetty I/O library, you can call `EndPoint.write(Callback, ByteBuffer...)` to write the ``ByteBuffer``s and the `Callback` parameter is the object that is notified when the whole write is finished (i.e. _all_ ``ByteBuffer``s have been fully written, even if they are delayed by TCP congestion/uncongestion). The `EndPoint` APIs abstract out the Java NIO details by providing non-blocking APIs based on `Callback` objects for I/O operations. -The `EndPoint` APIs are typically called by `Connection` implementations, see xref:eg-arch-io-connection[this section]. +The `EndPoint` APIs are typically called by `Connection` implementations, see xref:pg-arch-io-connection[this section]. -[[eg-arch-io-connection]] +[[pg-arch-io-connection]] ==== Jetty I/O: `Connection` `Connection` is the abstraction that deserializes incoming bytes into objects, for example a HTTP request object or a WebSocket frame object, that can be used by more abstract layers. @@ -122,12 +122,12 @@ The example below shows a typical implementation that extends `AbstractConnectio include::{doc_code}/embedded/SelectorManagerDocs.java[tags=connection] ---- -[[eg-arch-io-connection-listener]] +[[pg-arch-io-connection-listener]] ===== Jetty I/O: `Connection.Listener` // TODO: Introduce Connection.Listener -[[eg-arch-io-echo]] +[[pg-arch-io-echo]] ==== Jetty I/O: Network Echo With the concepts above it is now possible to write a simple, fully non-blocking, `Connection` implementation that simply echoes the bytes that it reads back to the other peer. diff --git a/jetty-documentation/src/main/asciidoc/programming-guide/arch-jmx.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/arch-jmx.adoc index d99a4c82e7c..25f2c161d7c 100644 --- a/jetty-documentation/src/main/asciidoc/programming-guide/arch-jmx.adoc +++ b/jetty-documentation/src/main/asciidoc/programming-guide/arch-jmx.adoc @@ -16,18 +16,18 @@ // ======================================================================== // -[[eg-arch-jmx]] +[[pg-arch-jmx]] == Jetty JMX Support The Java Management Extensions (JMX) APIs are standard API for managing and monitoring resources such as applications, devices, services, and the Java Virtual Machine itself. The JMX API includes remote access, so a remote management console such as link:https://openjdk.java.net/projects/jmc/[Java Mission Control] can interact with a running application for these purposes. -Jetty architecture is based on xref:eg-arch-bean[components] organized in a tree. Every time a component is added to or removed from the component tree, an event is emitted, and xref:eg-arch-bean-listener-container[Container.Listener] implementations can listen to those events and perform additional actions. +Jetty architecture is based on xref:pg-arch-bean[components] organized in a tree. Every time a component is added to or removed from the component tree, an event is emitted, and xref:pg-arch-bean-listener-container[Container.Listener] implementations can listen to those events and perform additional actions. `org.eclipse.jetty.jmx.MBeanContainer` listens to those events and registers/unregisters the Jetty components as MBeans into the platform MBeanServer. -The Jetty components are annotated with xref:eg-arch-jmx-annotation[Jetty JMX annotations] so that they can provide specific JMX metadata such as attributes and operations that should be exposed via JMX. +The Jetty components are annotated with xref:pg-arch-jmx-annotation[Jetty JMX annotations] so that they can provide specific JMX metadata such as attributes and operations that should be exposed via JMX. Therefore, when a component is added to the component tree, `MBeanContainer` is notified, it creates the MBean from the component POJO and registers it to the `MBeanServer`. Similarly, when a component is removed from the tree, `MBeanContainer` is notified, and unregisters the MBean from the `MBeanServer`. @@ -66,12 +66,12 @@ include::{doc_code}/embedded/JMXDocs.java[tags=client] The MBeans exported to the platform MBeanServer can only be accessed locally (from the same machine), not from remote machines. This means that this configuration is enough for development, where you have easy access (with graphical user interface) to the machine where Jetty runs, but it is typically not enough when the machine where Jetty runs is remote, or only accessible via SSH or otherwise without graphical user interface support. -In these cases, you have to enable xref:eg-arch-jmx-remote[JMX Remote Access]. +In these cases, you have to enable xref:pg-arch-jmx-remote[JMX Remote Access]. ==== // TODO: add a section about how to expose logging once #4830 is fixed. -[[eg-arch-jmx-remote]] +[[pg-arch-jmx-remote]] === Enabling JMX Remote Access There are two ways of enabling remote connectivity so that JMC can connect to the remote JVM to visualize MBeans. @@ -106,7 +106,7 @@ rmi_registry_port = 1099 ---- With the default configuration, only clients that are local to the server machine can connect to the RMI registry and RMI server - this is done for security reasons. -With this configuration it would still be possible to access the MBeans from remote using a xref:eg-arch-jmx-remote-ssh-tunnel[SSH tunnel]. +With this configuration it would still be possible to access the MBeans from remote using a xref:pg-arch-jmx-remote-ssh-tunnel[SSH tunnel]. By specifying an appropriate `JMXServiceURL`, you can fine tune the network interfaces the RMI registry and the RMI server bind to, and the ports that the RMI registry and the RMI server listen to. The RMI server and RMI registry hosts and ports can be the same (as in the default configuration) because RMI is able to multiplex traffic arriving to a port to multiple RMI objects. @@ -142,7 +142,7 @@ When `ConnectorServer` is started, its RMI stub is exported to the RMI registry. The RMI stub contains the IP address and port to connect to the RMI object, but the IP address is typically the machine host name, not the host specified in the `JMXServiceURL`. To control the IP address stored in the RMI stub you need to set the system property `java.rmi.server.hostname` with the desired value. -This is especially important when binding the RMI server host to the loopback address for security reasons. See also xref:eg-arch-jmx-remote-ssh-tunnel[JMX Remote Access via SSH Tunnel.] +This is especially important when binding the RMI server host to the loopback address for security reasons. See also xref:pg-arch-jmx-remote-ssh-tunnel[JMX Remote Access via SSH Tunnel.] ==== To allow JMX remote access, create and configure a `ConnectorServer`: @@ -152,7 +152,7 @@ To allow JMX remote access, create and configure a `ConnectorServer`: include::{doc_code}/embedded/JMXDocs.java[tags=remote] ---- -[[eg-arch-jmx-remote-authorization]] +[[pg-arch-jmx-remote-authorization]] ==== JMX Remote Access Authorization The standard `JMXConnectorServer` provides several options to authorize access, for example via JAAS or via configuration files. @@ -226,7 +226,7 @@ $ jmc -vmargs -Djavax.net.ssl.trustStore=/path/to/trustStore -Djavax.net.ssl.tru IMPORTANT: These system properties are required when launching the `ConnectorServer` too, on the server, because it acts as an RMI client with respect to the RMI registry. -[[eg-arch-jmx-remote-ssh-tunnel]] +[[pg-arch-jmx-remote-ssh-tunnel]] ===== JMX Remote Access with Port Forwarding via SSH Tunnel You can access JMX MBeans on a remote machine when the RMI ports are not open, for example because of firewall policies, but you have SSH access to the machine using local port forwarding via an SSH tunnel. @@ -246,7 +246,7 @@ The traffic will be forwarded to `machine_host` and when there, SSH will forward When you configure `ConnectorServer` in this way, you must set the system property `-Djava.rmi.server.hostname=localhost`, on the server. This is required because when the RMI server is exported, its address and port are stored in the RMI stub. You want the address in the RMI stub to be `localhost` so that when the RMI stub is downloaded to the remote client, the RMI communication will go through the SSH tunnel. -[[eg-arch-jmx-annotation]] +[[pg-arch-jmx-annotation]] === Jetty JMX Annotations The Jetty JMX support, and in particular `MBeanContainer`, is notified every time a bean is added to the component tree. diff --git a/jetty-documentation/src/main/asciidoc/programming-guide/arch-listener.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/arch-listener.adoc index 43b63bbbc08..bbbe4db55c4 100644 --- a/jetty-documentation/src/main/asciidoc/programming-guide/arch-listener.adoc +++ b/jetty-documentation/src/main/asciidoc/programming-guide/arch-listener.adoc @@ -16,10 +16,10 @@ // ======================================================================== // -[[eg-arch-listener]] +[[pg-arch-listener]] === Jetty Listeners -The Jetty architecture is based on xref:eg-arch-bean[components], typically organized in a component tree. +The Jetty architecture is based on xref:pg-arch-bean[components], typically organized in a component tree. These components have an internal state that varies with the component life cycle (that is, whether the component is started or stopped), as well as with the component use at runtime. The typical example is a thread pool, whose internal state -- such as the number of pooled threads or the job queue size -- changes as the thread pool is used by the running client or server. @@ -28,6 +28,6 @@ Applications can register listeners to these components to be notified of the ev This section lists the listeners available in the Jetty components, but the events and listener APIs are discussed in the component specific sections. -* xref:eg-arch-bean-listener[] -* xref:eg-arch-io-connection-listener[] -* xref:eg-server-http-channel-events[] +* xref:pg-arch-bean-listener[] +* xref:pg-arch-io-connection-listener[] +* xref:pg-server-http-channel-events[] diff --git a/jetty-documentation/src/main/asciidoc/programming-guide/arch.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/arch.adoc index 11548f54359..65e949c3671 100644 --- a/jetty-documentation/src/main/asciidoc/programming-guide/arch.adoc +++ b/jetty-documentation/src/main/asciidoc/programming-guide/arch.adoc @@ -17,7 +17,7 @@ // [appendix] -[[eg-arch]] +[[pg-arch]] == Jetty Architecture include::arch-bean.adoc[] diff --git a/jetty-documentation/src/main/asciidoc/programming-guide/client/client-io-arch.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/client/client-io-arch.adoc index 8d0c1039920..70519569154 100644 --- a/jetty-documentation/src/main/asciidoc/programming-guide/client/client-io-arch.adoc +++ b/jetty-documentation/src/main/asciidoc/programming-guide/client/client-io-arch.adoc @@ -16,19 +16,19 @@ // ======================================================================== // -[[eg-client-io-arch]] +[[pg-client-io-arch]] === Client Libraries I/O Architecture The Jetty client libraries provide the basic components and APIs to implement a network client. -They build on the common xref:eg-arch-io[Jetty I/O Architecture] and provide client specific concepts (such as establishing a connection to a server). +They build on the common xref:pg-arch-io[Jetty I/O Architecture] and provide client specific concepts (such as establishing a connection to a server). There are conceptually two layers that compose the Jetty client libraries: -. xref:eg-client-io-arch-network[The network layer], that handles the low level I/O and deals with buffers, threads, etc. -. xref:eg-client-io-arch-protocol[The protocol layer], that handles the parsing of bytes read from the network and the generation of bytes to write to the network. +. xref:pg-client-io-arch-network[The network layer], that handles the low level I/O and deals with buffers, threads, etc. +. xref:pg-client-io-arch-protocol[The protocol layer], that handles the parsing of bytes read from the network and the generation of bytes to write to the network. -[[eg-client-io-arch-network]] +[[pg-client-io-arch-network]] ==== Client Libraries Network Layer The Jetty client libraries use the common I/O design described in link:#eg-arch-io[this section]. @@ -83,7 +83,7 @@ This time includes the DNS lookup time _and_ the TCP connect time. Please refer to the `ClientConnector` link:{JDURL}/org/eclipse/jetty/io/ClientConnector.html[javadocs] for the complete list of configurable parameters. -[[eg-client-io-arch-protocol]] +[[pg-client-io-arch-protocol]] ==== Client Libraries Protocol Layer The protocol layer builds on top of the network layer to generate the bytes to be written to the network and to parse the bytes read from the network. diff --git a/jetty-documentation/src/main/asciidoc/programming-guide/client/client.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/client/client.adoc index e9a70398d36..6d8de1a4981 100644 --- a/jetty-documentation/src/main/asciidoc/programming-guide/client/client.adoc +++ b/jetty-documentation/src/main/asciidoc/programming-guide/client/client.adoc @@ -16,7 +16,7 @@ // ======================================================================== // -[[eg-client]] +[[pg-client]] == Client Libraries The Eclipse Jetty Project provides client-side libraries that allow you to embed a client in your applications. @@ -28,11 +28,11 @@ The client libraries are designed to be non-blocking and offer both synchronous These are the available client libraries: -* xref:eg-client-http[The HTTP Client Library] -* xref:eg-client-http2[The HTTP/2 Client Library] -* xref:eg-client-websocket[The WebSocket client library] +* xref:pg-client-http[The HTTP Client Library] +* xref:pg-client-http2[The HTTP/2 Client Library] +* xref:pg-client-websocket[The WebSocket client library] -If you are interested in the low-level details of how the Eclipse Jetty client libraries work, or are interested in writing a custom protocol, look at the xref:eg-client-io-arch[Client I/O Architecture]. +If you are interested in the low-level details of how the Eclipse Jetty client libraries work, or are interested in writing a custom protocol, look at the xref:pg-client-io-arch[Client I/O Architecture]. include::http/client-http.adoc[] include::http2/client-http2.adoc[] diff --git a/jetty-documentation/src/main/asciidoc/programming-guide/client/http/client-http-api.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/client/http/client-http-api.adoc index e8a6e19c000..b04d9675610 100644 --- a/jetty-documentation/src/main/asciidoc/programming-guide/client/http/client-http-api.adoc +++ b/jetty-documentation/src/main/asciidoc/programming-guide/client/http/client-http-api.adoc @@ -16,12 +16,12 @@ // ======================================================================== // -[[eg-client-http-api]] +[[pg-client-http-api]] === HttpClient API Usage `HttpClient` provides two types of APIs: a blocking API and a non-blocking API. -[[eg-client-http-blocking]] +[[pg-client-http-blocking]] ==== HttpClient Blocking APIs The simpler way to perform a HTTP request is the following: @@ -81,7 +81,7 @@ include::../../{doc_code}/embedded/client/http/HTTPClientDocs.java[tags=totalTim In the example above, when the 5 seconds expire, the request is aborted and a `java.util.concurrent.TimeoutException` is thrown. -[[eg-client-http-non-blocking]] +[[pg-client-http-non-blocking]] ==== HttpClient Non-Blocking APIs So far we have shown how to use Jetty HTTP client in a blocking style - that is, the thread that issues the request blocks until the request/response conversation is complete. @@ -139,10 +139,10 @@ This makes Jetty HTTP client suitable for HTTP load testing because, for example Have a look at the link:{JDURL}/org/eclipse/jetty/client/api/Request.Listener.html[`Request.Listener`] class to know about request events, and to the link:{JDURL}/org/eclipse/jetty/client/api/Response.Listener.html[`Response.Listener`] class to know about response events. -[[eg-client-http-content]] +[[pg-client-http-content]] ==== HttpClient Content Handling -[[eg-client-http-content-request]] +[[pg-client-http-content-request]] ===== Request Content Handling Jetty's `HttpClient` provides a number of utility classes off the shelf to handle request content. @@ -189,7 +189,7 @@ Another way to provide request content is by using an `OutputStreamRequestConten include::../../{doc_code}/embedded/client/http/HTTPClientDocs.java[tags=outputStreamRequestContent] ---- -[[eg-client-http-content-response]] +[[pg-client-http-content-response]] ===== Response Content Handling Jetty's `HttpClient` allows applications to handle response content in different ways. diff --git a/jetty-documentation/src/main/asciidoc/programming-guide/client/http/client-http-authentication.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/client/http/client-http-authentication.adoc index ba31f99ce4e..0ca8aa84542 100644 --- a/jetty-documentation/src/main/asciidoc/programming-guide/client/http/client-http-authentication.adoc +++ b/jetty-documentation/src/main/asciidoc/programming-guide/client/http/client-http-authentication.adoc @@ -16,7 +16,7 @@ // ======================================================================== // -[[eg-client-http-authentication]] +[[pg-client-http-authentication]] === HttpClient Authentication Support Jetty's `HttpClient` supports the `BASIC` and `DIGEST` authentication mechanisms defined by link:https://tools.ietf.org/html/rfc7235[RFC 7235], as well as the SPNEGO authentication mechanism defined in link:https://tools.ietf.org/html/rfc4559[RFC 4559]. @@ -78,4 +78,4 @@ It is also possible to preempt the authentication for a single request only, in include::../../{doc_code}/embedded/client/http/HTTPClientDocs.java[tag=requestPreemptedResult] ---- -See also the xref:eg-client-http-proxy-authentication[proxy authentication section] for further information about how authentication works with HTTP proxies. +See also the xref:pg-client-http-proxy-authentication[proxy authentication section] for further information about how authentication works with HTTP proxies. diff --git a/jetty-documentation/src/main/asciidoc/programming-guide/client/http/client-http-configuration.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/client/http/client-http-configuration.adoc index f20c0bf6160..039250f6eb6 100644 --- a/jetty-documentation/src/main/asciidoc/programming-guide/client/http/client-http-configuration.adoc +++ b/jetty-documentation/src/main/asciidoc/programming-guide/client/http/client-http-configuration.adoc @@ -16,7 +16,7 @@ // ======================================================================== // -[[eg-client-http-configuration]] +[[pg-client-http-configuration]] === HttpClient Configuration `HttpClient` has a quite large number of configuration parameters. @@ -24,13 +24,13 @@ Please refer to the `HttpClient` link:{JDURL}/org/eclipse/jetty/client/HttpClien The most common parameters are: -* `HttpClient.idleTimeout`: same as `ClientConnector.idleTimeout` described in xref:eg-client-io-arch-network[this section]. -* `HttpClient.connectBlocking`: same as `ClientConnector.connectBlocking` described in xref:eg-client-io-arch-network[this section]. -* `HttpClient.connectTimeout`: same as `ClientConnector.connectTimeout` described in xref:eg-client-io-arch-network[this section]. +* `HttpClient.idleTimeout`: same as `ClientConnector.idleTimeout` described in xref:pg-client-io-arch-network[this section]. +* `HttpClient.connectBlocking`: same as `ClientConnector.connectBlocking` described in xref:pg-client-io-arch-network[this section]. +* `HttpClient.connectTimeout`: same as `ClientConnector.connectTimeout` described in xref:pg-client-io-arch-network[this section]. * `HttpClient.maxConnectionsPerDestination`: the max number of TCP connections that are opened for a particular destination (defaults to 64). * `HttpClient.maxRequestsQueuedPerDestination`: the max number of requests queued (defaults to 1024). -[[eg-client-http-configuration-tls]] +[[pg-client-http-configuration-tls]] ==== HttpClient TLS Configuration `HttpClient` supports HTTPS requests out-of-the-box like a browser does. diff --git a/jetty-documentation/src/main/asciidoc/programming-guide/client/http/client-http-cookie.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/client/http/client-http-cookie.adoc index 8a42bf0b3e9..abf9449a890 100644 --- a/jetty-documentation/src/main/asciidoc/programming-guide/client/http/client-http-cookie.adoc +++ b/jetty-documentation/src/main/asciidoc/programming-guide/client/http/client-http-cookie.adoc @@ -16,7 +16,7 @@ // ======================================================================== // -[[eg-client-http-cookie]] +[[pg-client-http-cookie]] === HttpClient Cookie Support Jetty's `HttpClient` supports cookies out of the box. diff --git a/jetty-documentation/src/main/asciidoc/programming-guide/client/http/client-http-intro.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/client/http/client-http-intro.adoc index 4fc9670d698..dabfe1e2817 100644 --- a/jetty-documentation/src/main/asciidoc/programming-guide/client/http/client-http-intro.adoc +++ b/jetty-documentation/src/main/asciidoc/programming-guide/client/http/client-http-intro.adoc @@ -16,7 +16,7 @@ // ======================================================================== // -[[eg-client-http-intro]] +[[pg-client-http-intro]] === HttpClient Introduction The Jetty HTTP client module provides easy-to-use APIs and utility classes to perform HTTP (or HTTPS) requests. @@ -40,7 +40,7 @@ Out of the box features that you get with the Jetty HTTP client include: * Authentication support - HTTP "Basic" and "Digest" authentications are supported, others are pluggable. * Forward proxy support - HTTP proxying and SOCKS4 proxying. -[[eg-client-http-start]] +[[pg-client-http-start]] ==== Starting HttpClient The Jetty artifact that provides the main HTTP client implementation is `jetty-client`. @@ -75,9 +75,9 @@ There are several reasons for having multiple `HttpClient` instances including, * You want to use link:#eg-client-http-transport[different transports]. Like browsers, HTTPS requests are supported out-of-the-box, as long as the server provides a valid certificate. -In case the server does not provide a valid certificate (or in case it is self-signed) you want to customize ``HttpClient``'s TLS configuration as described in xref:eg-client-http-configuration-tls[this section]. +In case the server does not provide a valid certificate (or in case it is self-signed) you want to customize ``HttpClient``'s TLS configuration as described in xref:pg-client-http-configuration-tls[this section]. -[[eg-client-http-stop]] +[[pg-client-http-stop]] ==== Stopping HttpClient It is recommended that when your application stops, you also stop the `HttpClient` instance (or instances) that you are using. @@ -89,17 +89,17 @@ include::../../{doc_code}/embedded/client/http/HTTPClientDocs.java[tags=stop] Stopping `HttpClient` makes sure that the memory it holds (for example, authentication credentials, cookies, etc.) is released, and that the thread pool and scheduler are properly stopped allowing all threads used by `HttpClient` to exit. -[[eg-client-http-arch]] +[[pg-client-http-arch]] ==== HttpClient Architecture A `HttpClient` instance can be thought as a browser instance, and it manages the following components: -* a `CookieStore` (see xref:eg-client-http-cookie[this section]). -* a `AuthenticationStore` (see xref:eg-client-http-authentication[this section]). -* a `ProxyConfiguration` (see xref:eg-client-http-proxy[this section]). +* a `CookieStore` (see xref:pg-client-http-cookie[this section]). +* a `AuthenticationStore` (see xref:pg-client-http-authentication[this section]). +* a `ProxyConfiguration` (see xref:pg-client-http-proxy[this section]). * a set of _destinations_. -A _destination_ is the client-side component that represent an _origin_ on a server, and manages a queue of requests for that origin, and a xref:eg-client-http-connection-pool[pool of connections] to that origin. +A _destination_ is the client-side component that represent an _origin_ on a server, and manages a queue of requests for that origin, and a xref:pg-client-http-connection-pool[pool of connections] to that origin. An _origin_ may be simply thought as the tuple `(scheme, host, port)` and it is where the client connects to in order to communicate with the server. However, this is not enough. @@ -118,7 +118,7 @@ Two origins with the same `(scheme, host, port)` but different `protocol` create Therefore an origin is identified by the tuple `(scheme, host, port, tag, protocol)`. -[[eg-client-http-connection-pool]] +[[pg-client-http-connection-pool]] ==== HttpClient Connection Pooling A destination manages a `org.eclipse.jetty.client.ConnectionPool`, where connections to a particular origin are pooled for performance reasons: @@ -146,7 +146,7 @@ The `ConnectionPool` implementation can be customized for each destination in by include::../../{doc_code}/embedded/client/http/HTTPClientDocs.java[tags=setConnectionPool] ---- -[[eg-client-http-request-processing]] +[[pg-client-http-request-processing]] ==== HttpClient Request Processing [plantuml] @@ -184,7 +184,7 @@ Once the destination has obtained the connection, it dequeues the request and se The first request to a destination triggers the opening of the first connection. A second request with the same origin sent _after_ the first request/response cycle is completed will reuse the same connection. A second request with the same origin sent _concurrently_ with the first request will cause the opening of a second connection. -The configuration parameter `HttpClient.maxConnectionsPerDestination` (see also the xref:eg-client-http-configuration[configuration section]) controls the max number of connections that can be opened for a destination. +The configuration parameter `HttpClient.maxConnectionsPerDestination` (see also the xref:pg-client-http-configuration[configuration section]) controls the max number of connections that can be opened for a destination. NOTE: If opening connections to a given origin takes a long time, then requests for that origin will queue up in the corresponding destination. @@ -194,4 +194,4 @@ For HTTP/2 this number is determined by the server `max_concurrent_stream` setti When a destination has maxed out its number of connections, and all connections have maxed out their number of outstanding requests, more requests sent to that destination will be queued. When the request queue is full, the request will be failed. -The configuration parameter `HttpClient.maxRequestsQueuedPerDestination` (see also the xref:eg-client-http-configuration[configuration section]) controls the max number of requests that can be queued for a destination. +The configuration parameter `HttpClient.maxRequestsQueuedPerDestination` (see also the xref:pg-client-http-configuration[configuration section]) controls the max number of requests that can be queued for a destination. diff --git a/jetty-documentation/src/main/asciidoc/programming-guide/client/http/client-http-proxy.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/client/http/client-http-proxy.adoc index 6231cee2a77..437000cd5d8 100644 --- a/jetty-documentation/src/main/asciidoc/programming-guide/client/http/client-http-proxy.adoc +++ b/jetty-documentation/src/main/asciidoc/programming-guide/client/http/client-http-proxy.adoc @@ -16,7 +16,7 @@ // ======================================================================== // -[[eg-client-http-proxy]] +[[pg-client-http-proxy]] === HttpClient Proxy Support Jetty's `HttpClient` can be configured to use proxies to connect to destinations. @@ -37,10 +37,10 @@ Configured in this way, `HttpClient` makes requests to the HTTP proxy (for plain Proxying is supported for both HTTP/1.1 and HTTP/2. -[[eg-client-http-proxy-authentication]] +[[pg-client-http-proxy-authentication]] ==== Proxy Authentication Support -Jetty's `HttpClient` supports proxy authentication in the same way it supports xref:eg-client-http-authentication[server authentication]. +Jetty's `HttpClient` supports proxy authentication in the same way it supports xref:pg-client-http-authentication[server authentication]. In the example below, the proxy requires `BASIC` authentication, but the server requires `DIGEST` authentication, and therefore: @@ -77,4 +77,4 @@ HttpClient -> Application : 200 OK The application does not receive events related to the responses with code 407 and 401 since they are handled internally by `HttpClient`. -Similarly to the xref:eg-client-http-authentication[authentication section], the proxy authentication result and the server authentication result can be preempted to avoid, respectively, the 407 and 401 roundtrips. +Similarly to the xref:pg-client-http-authentication[authentication section], the proxy authentication result and the server authentication result can be preempted to avoid, respectively, the 407 and 401 roundtrips. diff --git a/jetty-documentation/src/main/asciidoc/programming-guide/client/http/client-http-transport.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/client/http/client-http-transport.adoc index 3f5fa985b52..becd0810f1d 100644 --- a/jetty-documentation/src/main/asciidoc/programming-guide/client/http/client-http-transport.adoc +++ b/jetty-documentation/src/main/asciidoc/programming-guide/client/http/client-http-transport.adoc @@ -16,7 +16,7 @@ // ======================================================================== // -[[eg-client-http-transport]] +[[pg-client-http-transport]] === HttpClient Pluggable Transports Jetty's `HttpClient` can be configured to use different transports to carry the semantic of HTTP requests and responses. @@ -54,14 +54,14 @@ Similarly, HTTP/2 is a binary protocol that transports the same information in a A protocol may be _negotiated_ between client and server. A request for a resource may be sent using one protocol (for example, HTTP/1.1), but the response may arrive in a different protocol (for example, HTTP/2). -`HttpClient` supports 3 static transports, each speaking only one protocol: xref:eg-client-http-transport-http11[HTTP/1.1], xref:eg-client-http-transport-http2[HTTP/2] and xref:eg-client-http-transport-fcgi[FastCGI], all of them with 2 variants: clear-text and TLS encrypted. +`HttpClient` supports 3 static transports, each speaking only one protocol: xref:pg-client-http-transport-http11[HTTP/1.1], xref:pg-client-http-transport-http2[HTTP/2] and xref:pg-client-http-transport-fcgi[FastCGI], all of them with 2 variants: clear-text and TLS encrypted. -`HttpClient` also supports one xref:eg-client-http-transport-dynamic[dynamic transport], that can speak different protocols and can select the right protocol by negotiating it with the server or by explicit indication from applications. +`HttpClient` also supports one xref:pg-client-http-transport-dynamic[dynamic transport], that can speak different protocols and can select the right protocol by negotiating it with the server or by explicit indication from applications. Applications are typically not aware of the actual protocol being used. This allows them to write their logic against a high-level API that hides the details of the specific protocol being used over the network. -[[eg-client-http-transport-http11]] +[[pg-client-http-transport-http11]] ==== HTTP/1.1 Transport HTTP/1.1 is the default transport. @@ -78,7 +78,7 @@ If you want to customize the HTTP/1.1 transport, you can explicitly configure it include::../../{doc_code}/embedded/client/http/HTTPClientDocs.java[tag=http11Transport] ---- -[[eg-client-http-transport-http2]] +[[pg-client-http-transport-http2]] ==== HTTP/2 Transport The HTTP/2 transport can be configured in this way: @@ -88,11 +88,11 @@ The HTTP/2 transport can be configured in this way: include::../../{doc_code}/embedded/client/http/HTTPClientDocs.java[tag=http2Transport] ---- -`HTTP2Client` is the lower-level client that provides an API based on HTTP/2 concepts such as _sessions_, _streams_ and _frames_ that are specific to HTTP/2. See xref:eg-client-http2[the HTTP/2 client section] for more information. +`HTTP2Client` is the lower-level client that provides an API based on HTTP/2 concepts such as _sessions_, _streams_ and _frames_ that are specific to HTTP/2. See xref:pg-client-http2[the HTTP/2 client section] for more information. `HttpClientTransportOverHTTP2` uses `HTTP2Client` to format high-level semantic HTTP requests (like "GET resource /index.html") into the HTTP/2 specific format. -[[eg-client-http-transport-fcgi]] +[[pg-client-http-transport-fcgi]] ==== FastCGI Transport The FastCGI transport can be configured in this way: @@ -106,7 +106,7 @@ In order to make requests using the FastCGI transport, you need to have a FastCG The FastCGI transport is primarily used by Jetty's link:#fastcgi[FastCGI support] to serve PHP pages (WordPress for example). -[[eg-client-http-transport-dynamic]] +[[pg-client-http-transport-dynamic]] ==== Dynamic Transport The static transports work well if you know in advance the protocol you want to speak with the server, or if the server only supports one protocol (such as FastCGI). diff --git a/jetty-documentation/src/main/asciidoc/programming-guide/client/http/client-http.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/client/http/client-http.adoc index 25821e403c1..39d343a3a5b 100644 --- a/jetty-documentation/src/main/asciidoc/programming-guide/client/http/client-http.adoc +++ b/jetty-documentation/src/main/asciidoc/programming-guide/client/http/client-http.adoc @@ -16,7 +16,7 @@ // ======================================================================== // -[[eg-client-http]] +[[pg-client-http]] === HTTP Client include::client-http-intro.adoc[] diff --git a/jetty-documentation/src/main/asciidoc/programming-guide/client/http2/client-http2.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/client/http2/client-http2.adoc index 900d45ff295..ccaaa1456af 100644 --- a/jetty-documentation/src/main/asciidoc/programming-guide/client/http2/client-http2.adoc +++ b/jetty-documentation/src/main/asciidoc/programming-guide/client/http2/client-http2.adoc @@ -16,18 +16,18 @@ // ======================================================================== // -[[eg-client-http2]] +[[pg-client-http2]] === HTTP/2 Client Library -In the vast majority of cases, client applications should use the generic, high-level, xref:eg-client-http[HTTP client library] that also provides HTTP/2 support via the pluggable xref:eg-client-http-transport-http2[HTTP/2 transport] or the xref:eg-client-http-transport-dynamic[dynamic transport]. +In the vast majority of cases, client applications should use the generic, high-level, xref:pg-client-http[HTTP client library] that also provides HTTP/2 support via the pluggable xref:pg-client-http-transport-http2[HTTP/2 transport] or the xref:pg-client-http-transport-dynamic[dynamic transport]. The high-level HTTP library supports cookies, authentication, redirection, connection pooling and a number of other features that are absent in the low-level HTTP/2 library. The HTTP/2 client library has been designed for those applications that need low-level access to HTTP/2 features such as _sessions_, _streams_ and _frames_, and this is quite a rare use case. -See also the correspondent xref:eg-server-http2[HTTP/2 server library]. +See also the correspondent xref:pg-server-http2[HTTP/2 server library]. -[[eg-client-http2-intro]] +[[pg-client-http2-intro]] ==== Introducing HTTP2Client The Maven artifact coordinates for the HTTP/2 client library are the following: @@ -61,14 +61,14 @@ A _session_ typically has a long life - once the TCP connection is established, include::../../http2.adoc[tag=multiplex] -[[eg-client-http2-flow-control]] +[[pg-client-http2-flow-control]] ===== HTTP/2 Flow Control include::../../http2.adoc[tag=flowControl] -How a client application should handle HTTP/2 flow control is discussed in details in xref:eg-client-http2-response[this section]. +How a client application should handle HTTP/2 flow control is discussed in details in xref:pg-client-http2-response[this section]. -[[eg-client-http2-connect]] +[[pg-client-http2-connect]] ==== Connecting to the Server The first thing an application should do is to connect to the server and obtain a `Session`. @@ -88,7 +88,7 @@ include::../../{doc_code}/embedded/client/http2/HTTP2ClientDocs.java[tags=encryp IMPORTANT: Applications must know in advance whether they want to connect to a clear-text or encrypted port, and pass the `SslContextFactory` parameter accordingly to the `connect(...)` method. -[[eg-client-http2-configure]] +[[pg-client-http2-configure]] ===== Configuring the Session The `connect(...)` method takes a `Session.Listener` parameter. @@ -105,7 +105,7 @@ Please refer to the `Session.Listener` link:{JDURL}/org/eclipse/jetty/http2/api/ Once a `Session` has been established, the communication with the server happens by exchanging _frames_, as specified in the link:https://tools.ietf.org/html/rfc7540#section-4[HTTP/2 specification]. -[[eg-client-http2-request]] +[[pg-client-http2-request]] ==== Sending a Request Sending an HTTP request to the server, and receiving a response, creates a _stream_ that encapsulates the exchange of HTTP/2 frames that compose the request and the response. @@ -120,7 +120,7 @@ include::../../{doc_code}/embedded/client/http2/HTTP2ClientDocs.java[tags=newStr ---- Note how `Session.newStream(...)` takes a `Stream.Listener` parameter. -This listener is notified of stream events originated by the server such as receiving `HEADERS` or `DATA` frames that are part of the response, discussed in more details in the xref:eg-client-http2-response[section below]. +This listener is notified of stream events originated by the server such as receiving `HEADERS` or `DATA` frames that are part of the response, discussed in more details in the xref:pg-client-http2-response[section below]. Please refer to the `Stream.Listener` link:{JDURL}/org/eclipse/jetty/http2/api/Stream.Listener.html[javadocs] for the complete list of events. HTTP requests may have content, which is sent using the `Stream` APIs: @@ -133,7 +133,7 @@ include::../../{doc_code}/embedded/client/http2/HTTP2ClientDocs.java[tags=newStr IMPORTANT: When sending two `DATA` frames consecutively, the second call to `Stream.data(...)` must be done only when the first is completed, or a `WritePendingException` will be thrown. Use the `Callback` APIs or `CompletableFuture` APIs to ensure that the second `Stream.data(...)` call is performed when the first completed successfully. -[[eg-client-http2-response]] +[[pg-client-http2-response]] ==== Receiving a Response Response events are delivered to the `Stream.Listener` passed to `Session.newStream(...)`. @@ -151,7 +151,7 @@ include::../../{doc_code}/embedded/client/http2/HTTP2ClientDocs.java[tags=respon include::../../http2.adoc[tag=apiFlowControl] -[[eg-client-http2-reset]] +[[pg-client-http2-reset]] ==== Resetting a Request or Response In HTTP/2, clients and servers have the ability to tell to the other peer that they are not interested anymore in either the request or the response, using a `RST_STREAM` frame. @@ -163,13 +163,13 @@ The `HTTP2Client` APIs allow client applications to send and receive this "reset include::../../{doc_code}/embedded/client/http2/HTTP2ClientDocs.java[tags=reset] ---- -[[eg-client-http2-push]] +[[pg-client-http2-push]] ==== Receiving HTTP/2 Pushes HTTP/2 servers have the ability to push resources related to a primary resource. When an HTTP/2 server pushes a resource, it sends to the client a `PUSH_PROMISE` frame that contains the request URI and headers that a client would use to request explicitly that resource. -Client applications can be configured to tell the server to never push resources, see xref:eg-client-http2-configure[this section]. +Client applications can be configured to tell the server to never push resources, see xref:pg-client-http2-configure[this section]. Client applications can listen to the push events, and act accordingly: diff --git a/jetty-documentation/src/main/asciidoc/programming-guide/client/websocket/client-websocket.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/client/websocket/client-websocket.adoc new file mode 100644 index 00000000000..858491e7d0c --- /dev/null +++ b/jetty-documentation/src/main/asciidoc/programming-guide/client/websocket/client-websocket.adoc @@ -0,0 +1,22 @@ +// +// ======================================================================== +// Copyright (c) 1995-2020 Mort Bay Consulting Pty Ltd and others. +// +// This program and the accompanying materials are made available under +// the terms of the Eclipse Public License 2.0 which is available at +// https://www.eclipse.org/legal/epl-2.0 +// +// This Source Code may also be made available under the following +// Secondary Licenses when the conditions for such availability set +// forth in the Eclipse Public License, v. 2.0 are satisfied: +// the Apache License v2.0 which is available at +// https://www.apache.org/licenses/LICENSE-2.0 +// +// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 +// ======================================================================== +// + +[[pg-client-websocket]] +=== WebSocket Client Libraries + +TODO diff --git a/jetty-documentation/src/main/asciidoc/programming-guide/introduction.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/introduction.adoc index a69ccd777db..694f6e31ae5 100644 --- a/jetty-documentation/src/main/asciidoc/programming-guide/introduction.adoc +++ b/jetty-documentation/src/main/asciidoc/programming-guide/introduction.adoc @@ -22,8 +22,8 @@ The Eclipse Jetty Programming Guide targets developers that want to use the Ecli The Eclipse Jetty libraries provide the client-side and server-side APIs to work with various web protocols such as HTTP/1.1, HTTP/2, WebSocket and FastCGI. -You may use the xref:eg-client[Eclipse Jetty client-side library] in your application to make calls to third party REST services, or to other REST microservices in your system. +You may use the xref:pg-client[Eclipse Jetty client-side library] in your application to make calls to third party REST services, or to other REST microservices in your system. -Likewise, you may use the xref:eg-server[Eclipse Jetty server-side library] to quickly create an HTTP or REST service without having to create a web application archive file (a `*.war` file) and deploy it to server that you have to download and install. +Likewise, you may use the xref:pg-server[Eclipse Jetty server-side library] to quickly create an HTTP or REST service without having to create a web application archive file (a `*.war` file) and deploy it to server that you have to download and install. This guide will walk you through the design of the Eclipse Jetty and how to use its classes to write your applications. diff --git a/jetty-documentation/src/main/asciidoc/programming-guide/server/http/server-http-application.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/server/http/server-http-application.adoc index c1bbb90189b..505b1d5fd9c 100644 --- a/jetty-documentation/src/main/asciidoc/programming-guide/server/http/server-http-application.adoc +++ b/jetty-documentation/src/main/asciidoc/programming-guide/server/http/server-http-application.adoc @@ -16,19 +16,19 @@ // ======================================================================== // -[[eg-server-http-application]] +[[pg-server-http-application]] === Writing HTTP Server Applications Writing HTTP applications is typically simple, especially when using blocking APIs. However, there are subtle cases where it is worth clarifying what a server application should do to obtain the desired results when run by Jetty. -[[eg-server-http-application-1xx]] +[[pg-server-http-application-1xx]] ==== Sending 1xx Responses The link:https://tools.ietf.org/html/rfc7231#section-5.1.1[HTTP/1.1 RFC] allows for `1xx` informational responses to be sent before a real content response. Unfortunately the servlet specification does not provide a way for these to be sent, so Jetty has had to provide non-standard handling of these headers. -[[eg-server-http-application-100]] +[[pg-server-http-application-100]] ===== 100 Continue The `100 Continue` response should be sent by the server when a client sends a request with an `Expect: 100-continue` header, as the client will not send the body of the request until the `100 Continue` response has been sent. diff --git a/jetty-documentation/src/main/asciidoc/programming-guide/server/http/server-http-connector.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/server/http/server-http-connector.adoc index 73aa19ae680..3dbd0ff2f9d 100644 --- a/jetty-documentation/src/main/asciidoc/programming-guide/server/http/server-http-connector.adoc +++ b/jetty-documentation/src/main/asciidoc/programming-guide/server/http/server-http-connector.adoc @@ -16,7 +16,7 @@ // ======================================================================== // -[[eg-server-http-connector]] +[[pg-server-http-connector]] === Server Connectors A `Connector` is the component that handles incoming requests from clients, and works in conjunction with `ConnectionFactory` instances. @@ -32,13 +32,13 @@ include::../../{doc_code}/embedded/server/http/HTTPServerDocs.java[tags=configur ---- The _acceptors_ are threads (typically only one) that compete to accept TCP connections on the listening port. -When a connection is accepted, `ServerConnector` wraps the accepted `SocketChannel` and passes it to the xref:eg-arch-io-selector-manager[`SelectorManager`]. +When a connection is accepted, `ServerConnector` wraps the accepted `SocketChannel` and passes it to the xref:pg-arch-io-selector-manager[`SelectorManager`]. Therefore, there is a little moment where the acceptor thread is not accepting new connections because it is busy wrapping the just accepted connection to pass it to the `SelectorManager`. Connections that are ready to be accepted but are not accepted yet are queued in a bounded queue (at the OS level) whose capacity can be configured with the `ServerConnector.acceptQueueSize` parameter. If your application must withstand a very high rate of connections opened, configuring more than one acceptor thread may be beneficial: when one acceptor thread accepts one connection, another acceptor thread can take over accepting connections. -The _selectors_ are components that manage a set of connected sockets, implemented by xref:eg-arch-io-selector-manager[`ManagedSelector`]. +The _selectors_ are components that manage a set of connected sockets, implemented by xref:pg-arch-io-selector-manager[`ManagedSelector`]. Each selector requires one thread and uses the Java NIO mechanism to efficiently handle a set of connected sockets. As a rule of thumb, a single selector can easily manage up to 1000-5000 sockets, although the number may vary greatly depending on the application. @@ -54,15 +54,15 @@ It is possible to configure more than one `ServerConnector`, each listening on a include::../../{doc_code}/embedded/server/http/HTTPServerDocs.java[tags=configureConnectors] ---- -[[eg-server-http-connector-protocol]] +[[pg-server-http-connector-protocol]] ==== Configuring Protocols -For each accepted TCP connection, `ServerConnector` asks a `ConnectionFactory` to create a `Connection` object that handles the network traffic on that TCP connection, parsing and generating bytes for a specific protocol (see xref:eg-arch-io[this section] for more details about `Connection` objects). +For each accepted TCP connection, `ServerConnector` asks a `ConnectionFactory` to create a `Connection` object that handles the network traffic on that TCP connection, parsing and generating bytes for a specific protocol (see xref:pg-arch-io[this section] for more details about `Connection` objects). A `ServerConnector` can be configured with one or more ``ConnectionFactory``s. If no `ConnectionFactory` is specified then `HttpConnectionFactory` is implicitly configured. -[[eg-server-http-connector-protocol-http11]] +[[pg-server-http-connector-protocol-http11]] ===== Configuring HTTP/1.1 `HttpConnectionFactory` creates `HttpConnection` objects that parse bytes and generate bytes for the HTTP/1.1 protocol. @@ -81,7 +81,7 @@ Supporting encrypted HTTP/1.1 (that is, requests with the HTTPS scheme)is suppor include::../../{doc_code}/embedded/server/http/HTTPServerDocs.java[tags=tlsHttp11] ---- -[[eg-server-http-connector-protocol-proxy-http11]] +[[pg-server-http-connector-protocol-proxy-http11]] ===== Configuring Jetty behind a Load Balancer It is often the case that Jetty receives connections from a load balancer configured to distribute the load among many Jetty backend servers. @@ -103,7 +103,7 @@ Note also how the PROXY `ConnectionFactory` needs to know its _next_ protocol (i Each `ConnectionFactory` is asked to create a `Connection` object for each accepted TCP connection; the `Connection` objects will be chained together to handle the bytes, each for its own protocol. Therefore the `ProxyConnection` will handle the PROXY protocol bytes and `HttpConnection` will handle the HTTP/1.1 bytes producing a request object and response object that will be processed by ``Handler``s. -[[eg-server-http-connector-protocol-http2]] +[[pg-server-http-connector-protocol-http2]] ===== Configuring HTTP/2 It is well known that the HTTP ports are `80` (for clear-text HTTP) and `443` for encrypted HTTP. @@ -124,7 +124,7 @@ Note how the ``ConnectionFactory``s passed to `ServerConnector` are in order: fi This is necessary to support both protocols on the same port: Jetty will start parsing the incoming bytes as HTTP/1.1, but then realize that they are HTTP/2 bytes and will therefore _upgrade_ from HTTP/1.1 to HTTP/2. This configuration is also typical when Jetty is installed in backend servers behind a load balancer that also takes care of offloading TLS. -When Jetty is behind a load balancer, you can always prepend the PROXY protocol as described in xref:eg-server-http-connector-protocol-proxy-http11[this section]. +When Jetty is behind a load balancer, you can always prepend the PROXY protocol as described in xref:pg-server-http-connector-protocol-proxy-http11[this section]. When using encrypted HTTP/2, the unencrypted protocol is negotiated by client and server using an extension to the TLS protocol called ALPN. diff --git a/jetty-documentation/src/main/asciidoc/programming-guide/server/http/server-http-handler-implement.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/server/http/server-http-handler-implement.adoc index f65127edc12..fc76f104422 100644 --- a/jetty-documentation/src/main/asciidoc/programming-guide/server/http/server-http-handler-implement.adoc +++ b/jetty-documentation/src/main/asciidoc/programming-guide/server/http/server-http-handler-implement.adoc @@ -16,7 +16,7 @@ // ======================================================================== // -[[eg-server-http-handler-implement]] +[[pg-server-http-handler-implement]] ==== Implementing Handler The `Handler` API consist fundamentally of just one method: @@ -33,7 +33,7 @@ However, a request could be forwarded to either a named resource, in which case Applications may wrap the request or response (or both) and forward the wrapped request or response to a different URI (which may be possibly handled by a different `Handler`). This is the reason why there are two request parameters in the `Handler` APIs: the first is the unwrapped, original, request while the second is the application-wrapped request. -[[eg-server-http-handler-impl-hello]] +[[pg-server-http-handler-impl-hello]] ===== Hello World Handler A simple "Hello World" `Handler` is the following: @@ -45,7 +45,7 @@ include::../../{doc_code}/embedded/server/http/HTTPServerDocs.java[tags=handlerH Such a simple `Handler` extends from `AbstractHandler` and can access the request and response main features, such as reading request headers and content, or writing response headers and content. -[[eg-server-http-handler-impl-filter]] +[[pg-server-http-handler-impl-filter]] ===== Filtering Handler A filtering `Handler` is a handler that perform some modification to the request or response, and then either forwards the request to another `Handler` or produces an error response: diff --git a/jetty-documentation/src/main/asciidoc/programming-guide/server/http/server-http-handler-use.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/server/http/server-http-handler-use.adoc index 7c01051cb81..7548bd04674 100644 --- a/jetty-documentation/src/main/asciidoc/programming-guide/server/http/server-http-handler-use.adoc +++ b/jetty-documentation/src/main/asciidoc/programming-guide/server/http/server-http-handler-use.adoc @@ -16,7 +16,7 @@ // ======================================================================== // -[[eg-server-http-handler-use]] +[[pg-server-http-handler-use]] ==== Using Provided Handlers Web applications are the unit of deployment in an HTTP server or Servlet container such as Jetty. @@ -42,15 +42,15 @@ Many __context__s can be deployed together to enrich the web application offerin Web applications can be written using exclusively the Servlet APIs, since developers know well the Servlet API and because they guarantee better portability across Servlet container implementations. -Embedded web applications based on the Servlet APIs are described in xref:eg-server-http-handler-use-servlet[this section]. +Embedded web applications based on the Servlet APIs are described in xref:pg-server-http-handler-use-servlet[this section]. Embedded web applications may also require additional features such as access to Jetty specific APIs, or utility features such as redirection from HTTP to HTTPS, support for `gzip` content compression, etc. -The Jetty Server Libraries provides a number of out-of-the-box __Handler__s that implement the most common functionalities and are described in xref:eg-server-http-handler-use-util[this section]. +The Jetty Server Libraries provides a number of out-of-the-box __Handler__s that implement the most common functionalities and are described in xref:pg-server-http-handler-use-util[this section]. -[[eg-server-http-handler-use-util]] +[[pg-server-http-handler-use-util]] ==== Custom and Utility Handlers -[[eg-server-http-handler-use-util-context]] +[[pg-server-http-handler-use-util-context]] ===== ContextHandler `ContextHandler` is a `Handler` that represents a _context_ for a web application. @@ -73,18 +73,18 @@ Server └── ShopHandler ---- -[[eg-server-http-handler-use-util-context-collection]] +[[pg-server-http-handler-use-util-context-collection]] ===== ContextHandlerCollection Server applications may need to deploy to Jetty more than one web application. -Recall from the xref:eg-server-http-handler[introduction] that Jetty offers `HandlerCollection` and `HandlerList` that may contain a sequence of children ``Handler``s. +Recall from the xref:pg-server-http-handler[introduction] that Jetty offers `HandlerCollection` and `HandlerList` that may contain a sequence of children ``Handler``s. However, both of these have no knowledge of the concept of _context_ and just iterate through the sequence of ``Handler``s. A better choice for multiple web application is `ContextHandlerCollection`, that matches a _context_ from either its _context path_ or _virtual host_, without iterating through the ``Handler``s. If `ContextHandlerCollection` does not find a match, it just returns. -What happens next depends on the `Handler` tree structure: other ``Handler``s may be invoked after `ContextHandlerCollection`, for example `DefaultHandler` (see xref:eg-server-http-handler-use-util-default-handler[this section]). +What happens next depends on the `Handler` tree structure: other ``Handler``s may be invoked after `ContextHandlerCollection`, for example `DefaultHandler` (see xref:pg-server-http-handler-use-util-default-handler[this section]). Eventually, if `Request.setHandled(true)` is not called, Jetty returns an HTTP `404` response to the client. [source,java,indent=0] @@ -104,7 +104,7 @@ Server └── RESTHandler ---- -[[eg-server-http-handler-use-util-resource-handler]] +[[pg-server-http-handler-use-util-resource-handler]] ===== ResourceHandler -- Static Content Static content such as images or files (HTML, JavaScript, CSS) can be sent by Jetty very efficiently because Jetty can write the content asynchronously, using direct ``ByteBuffer``s to minimize data copy, and using a memory cache for faster access to the data to send. @@ -124,7 +124,7 @@ Therefore, the traditional architecture where Nginx/Apache was the front-end ser This leads to simpler systems (less components to configure and manage) and more performance (no need to proxy dynamic requests from front-end servers to back-end servers). NOTE: It is common to use Nginx/Apache as load balancers, or as rewrite/redirect servers. -We typically recommend link:https://haproxy.org[HAProxy] as load balancer, and Jetty has xref:eg-server-http-handler-use-util-rewrite-handler[rewrite/redirect features] as well. +We typically recommend link:https://haproxy.org[HAProxy] as load balancer, and Jetty has xref:pg-server-http-handler-use-util-rewrite-handler[rewrite/redirect features] as well. This is how you configure a `ResourceHandler` to create a simple file server: @@ -141,9 +141,9 @@ include::../../{doc_code}/embedded/server/http/HTTPServerDocs.java[tags=multiple ---- If the resource is not found, `ResourceHandler` will not call `Request.setHandled(true)` so what happens next depends on the `Handler` tree structure. -See also xref:eg-server-http-handler-use-util-default-handler[how to use] `DefaultHandler`. +See also xref:pg-server-http-handler-use-util-default-handler[how to use] `DefaultHandler`. -[[eg-server-http-handler-use-util-gzip-handler]] +[[pg-server-http-handler-use-util-gzip-handler]] ===== GzipHandler `GzipHandler` provides supports for automatic decompression of compressed request content and automatic compression of response content. @@ -193,7 +193,7 @@ Server // TODO: does ServletContextHandler really need a special configuration? -[[eg-server-http-handler-use-util-rewrite-handler]] +[[pg-server-http-handler-use-util-rewrite-handler]] ===== RewriteHandler `RewriteHandler` provides support for URL rewriting, very similarly to link:https://httpd.apache.org/docs/current/mod/mod_rewrite.html[Apache's mod_rewrite] or link:https://nginx.org/en/docs/http/ngx_http_rewrite_module.html[Nginx rewrite module]. @@ -234,7 +234,7 @@ Server └── ContextHandler N ---- -[[eg-server-http-handler-use-util-stats-handler]] +[[pg-server-http-handler-use-util-stats-handler]] ===== StatisticsHandler `StatisticsHandler` gathers and exposes a number of statistic values related to request processing such as: @@ -245,7 +245,7 @@ Server * Number of responses grouped by HTTP code (i.e. how many `2xx` responses, how many `3xx` responses, etc.) * Total response content bytes -Server applications can read these values and use them internally, or expose them via some service, or xref:eg-arch-jmx[export them to JMX]. +Server applications can read these values and use them internally, or expose them via some service, or xref:pg-arch-jmx[export them to JMX]. `StatisticsHandler` can be configured at the server level or at the context level. @@ -266,7 +266,7 @@ Server └── ContextHandler N ---- -[[eg-server-http-handler-use-util-secure-handler]] +[[pg-server-http-handler-use-util-secure-handler]] ===== SecuredRedirectHandler -- Redirect from HTTP to HTTPS `SecuredRedirectHandler` allows to redirect requests made with the `http` scheme (and therefore to the clear-text port) to the `https` scheme (and therefore to the encrypted port). @@ -282,7 +282,7 @@ Server applications must configure a `HttpConfiguration` object with the secure include::../../{doc_code}/embedded/server/http/HTTPServerDocs.java[tags=securedHandler] ---- -[[eg-server-http-handler-use-util-default-handler]] +[[pg-server-http-handler-use-util-default-handler]] ===== DefaultHandler `DefaultHandler` is a terminal `Handler` that always calls `Request.setHandled(true)` and performs the following: @@ -316,10 +316,10 @@ In the example above, `ContextHandlerCollection` will try to match a request to NOTE: `DefaultHandler` just sends a nicer HTTP `404` response in case of wrong requests from clients. Jetty will send an HTTP `404` response anyway if `DefaultHandler` is not used. -[[eg-server-http-handler-use-servlet]] +[[pg-server-http-handler-use-servlet]] ==== Servlet API Handlers -[[eg-server-http-handler-use-servlet-context]] +[[pg-server-http-handler-use-servlet-context]] ===== ServletContextHandler ``Handler``s are easy to write, but often web applications have already been written using the Servlet APIs, using ``Servlet``s and ``Filter``s. @@ -364,7 +364,7 @@ Server applications must be careful when creating the `Handler` tree to put ``Se // TODO: revise what above, as ServletContextHandler is not a terminal handler. // TODO: introduce the fact that ServletContextHandler can have a class loader that may be used to "isolate" web application classes. -[[eg-server-http-handler-use-webapp-context]] +[[pg-server-http-handler-use-webapp-context]] ===== WebAppContext `WebAppContext` is a `ServletContextHandler` that auto configures itself by reading a `web.xml` Servlet configuration file. @@ -378,7 +378,7 @@ Where server applications using `ServletContextHandler` must manually invoke met include::../../{doc_code}/embedded/server/http/HTTPServerDocs.java[tags=webAppContextHandler] ---- -[[eg-server-http-handler-use-webapp-context-class-loading]] +[[pg-server-http-handler-use-webapp-context-class-loading]] ====== WebAppContext Class Loading The Servlet specification requires that a web application class loader must load the web application classes from `WEB-INF/classes` and `WEB_INF/lib`. @@ -408,10 +408,10 @@ However, Jetty picks good defaults and allows server applications to customize _ // TODO: add a section on Configuration (system/server classes) // TODO: add a section about how to setup JSP support -[[eg-server-http-handler-use-default-servlet]] +[[pg-server-http-handler-use-default-servlet]] ===== DefaultServlet -- Static Content for Servlets -If you have a xref:eg-server-http-handler-use-servlet-context[Servlet web application], you may want to use a `DefaultServlet` instead of `ResourceHandler`. +If you have a xref:pg-server-http-handler-use-servlet-context[Servlet web application], you may want to use a `DefaultServlet` instead of `ResourceHandler`. The features are similar, but `DefaultServlet` is more commonly used to serve static files for Servlet web applications. [source,java,indent=0] diff --git a/jetty-documentation/src/main/asciidoc/programming-guide/server/http/server-http-handler.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/server/http/server-http-handler.adoc index 61f17cf3ec0..8f1a01a0e75 100644 --- a/jetty-documentation/src/main/asciidoc/programming-guide/server/http/server-http-handler.adoc +++ b/jetty-documentation/src/main/asciidoc/programming-guide/server/http/server-http-handler.adoc @@ -16,7 +16,7 @@ // ======================================================================== // -[[eg-server-http-handler]] +[[pg-server-http-handler]] === Server Handlers An `org.eclipse.jetty.server.Handler` is the component that processes incoming HTTP requests and eventually produces HTTP responses. @@ -55,11 +55,11 @@ HandlerCollection ---- Server applications should rarely write custom ``Handler``s, preferring instead to use existing ``Handler``s provided by the Jetty Server Libraries for managing web application contexts, security, HTTP sessions and Servlet support. -Refer to xref:eg-server-http-handler-use[this section] for more information about how to use the ``Handler``s provided by the Jetty Server Libraries. +Refer to xref:pg-server-http-handler-use[this section] for more information about how to use the ``Handler``s provided by the Jetty Server Libraries. However, in some cases the additional features are not required, or additional constraints on memory footprint, or performance, or just simplicity must be met. In these cases, implementing your own `Handler` may be a better solution. -Refer to xref:eg-server-http-handler-implement[this section] for more information about how to write your own ``Handler``s. +Refer to xref:pg-server-http-handler-implement[this section] for more information about how to write your own ``Handler``s. // TODO: document ScopedHandler? Is this really necessary or just an implementation detail that application will never worry about? diff --git a/jetty-documentation/src/main/asciidoc/programming-guide/server/http/server-http-security.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/server/http/server-http-security.adoc index 2aa0f00cd5c..730a908618e 100644 --- a/jetty-documentation/src/main/asciidoc/programming-guide/server/http/server-http-security.adoc +++ b/jetty-documentation/src/main/asciidoc/programming-guide/server/http/server-http-security.adoc @@ -16,7 +16,7 @@ // ======================================================================== // -[[eg-server-http-security]] +[[pg-server-http-security]] ==== Securing HTTP Server Applications // TODO: ConstraintSecurityHandler and Authenticators and LoginServices diff --git a/jetty-documentation/src/main/asciidoc/programming-guide/server/http/server-http.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/server/http/server-http.adoc index fe9a8d27066..c06b4eec50f 100644 --- a/jetty-documentation/src/main/asciidoc/programming-guide/server/http/server-http.adoc +++ b/jetty-documentation/src/main/asciidoc/programming-guide/server/http/server-http.adoc @@ -16,7 +16,7 @@ // ======================================================================== // -[[eg-server-http]] +[[pg-server-http]] === HTTP Server Libraries The Eclipse Jetty Project has historically provided libraries to embed an HTTP server and a Servlet Container. @@ -67,11 +67,11 @@ The example above shows the simplest HTTP/1.1 server; it has no support for HTTP All these features are provided by the Jetty Server Libraries, and server applications only need to put the required components together to provide all the required features. The ``Handler``s provided by the Jetty Server Libraries allow writing server applications that have functionalities similar to Apache HTTPD or Nginx (for example: URL redirection, URL rewriting, serving static content, reverse proxying, etc.), as well as generating content dynamically by processing incoming requests. -Read xref:eg-server-http-handler[this section] for further details. +Read xref:pg-server-http-handler[this section] for further details. -If you are interested in writing your server application based on the Servlet APIs, jump to xref:eg-server-http-handler-use-servlet[this section]. +If you are interested in writing your server application based on the Servlet APIs, jump to xref:pg-server-http-handler-use-servlet[this section]. -[[eg-server-http-request-processing]] +[[pg-server-http-request-processing]] ==== Server Request Processing The Jetty HTTP request processing is outlined below in the diagram below. @@ -114,7 +114,7 @@ that in turn are converted into method calls to `HttpChannel`. When enough of the HTTP request is arrived, the `Connection` calls `HttpChannel.handle()` that calls the `Handler` chain, that eventually calls the server application code. -[[eg-server-http-channel-events]] +[[pg-server-http-channel-events]] ===== HttpChannel Events The central component processing HTTP requests is `HttpChannel`. @@ -146,7 +146,7 @@ Currently, the following events are available: Please refer to the `HttpChannel.Listener` link:{JDURL}/org/eclipse/jetty/server/HttpChannel.Listener.html[javadocs] for the complete list of events. -Server applications can register `HttpChannel.Listener` by adding them as xref:eg-arch-bean[beans] to the `Connector`: +Server applications can register `HttpChannel.Listener` by adding them as xref:pg-arch-bean[beans] to the `Connector`: [source,java,indent=0] ---- diff --git a/jetty-documentation/src/main/asciidoc/programming-guide/server/http2/server-http2.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/server/http2/server-http2.adoc index e7977dbecf8..fbc90d58da1 100644 --- a/jetty-documentation/src/main/asciidoc/programming-guide/server/http2/server-http2.adoc +++ b/jetty-documentation/src/main/asciidoc/programming-guide/server/http2/server-http2.adoc @@ -16,16 +16,16 @@ // ======================================================================== // -[[eg-server-http2]] +[[pg-server-http2]] === HTTP/2 Server Library -In the vast majority of cases, server applications should use the generic, high-level, xref:eg-server-http[HTTP server library] that also provides HTTP/2 support via the HTTP/2 ``ConnectionFactory``s as described in details xref:eg-server-http-connector-protocol-http2[here]. +In the vast majority of cases, server applications should use the generic, high-level, xref:pg-server-http[HTTP server library] that also provides HTTP/2 support via the HTTP/2 ``ConnectionFactory``s as described in details xref:pg-server-http-connector-protocol-http2[here]. The low-level HTTP/2 server library has been designed for those applications that need low-level access to HTTP/2 features such as _sessions_, _streams_ and _frames_, and this is quite a rare use case. -See also the correspondent xref:eg-client-http2[HTTP/2 client library]. +See also the correspondent xref:pg-client-http2[HTTP/2 client library]. -[[eg-server-http2-intro]] +[[pg-server-http2-intro]] ==== Introduction The Maven artifact coordinates for the HTTP/2 client library are the following: @@ -41,14 +41,14 @@ The Maven artifact coordinates for the HTTP/2 client library are the following: include::../../http2.adoc[tag=multiplex] -[[eg-server-http2-flow-control]] +[[pg-server-http2-flow-control]] ===== HTTP/2 Flow Control include::../../http2.adoc[tag=flowControl] -How a server application should handle HTTP/2 flow control is discussed in details in xref:eg-server-http2-request[this section]. +How a server application should handle HTTP/2 flow control is discussed in details in xref:pg-server-http2-request[this section]. -[[eg-server-http2-setup]] +[[pg-server-http2-setup]] ==== Server Setup The low-level HTTP/2 support is provided by `org.eclipse.jetty.http2.server.RawHTTP2ServerConnectionFactory` and `org.eclipse.jetty.http2.api.server.ServerSessionListener`: @@ -58,7 +58,7 @@ The low-level HTTP/2 support is provided by `org.eclipse.jetty.http2.server.RawH include::../../{doc_code}/embedded/server/http2/HTTP2ServerDocs.java[tags=setup] ---- -Where server applications using the xref:eg-server-http[high-level server library] deal with HTTP requests and responses in ``Handler``s, server applications using the low-level HTTP/2 server library deal directly with HTTP/2 __session__s, __stream__s and __frame__s in a `ServerSessionListener` implementation. +Where server applications using the xref:pg-server-http[high-level server library] deal with HTTP requests and responses in ``Handler``s, server applications using the low-level HTTP/2 server library deal directly with HTTP/2 __session__s, __stream__s and __frame__s in a `ServerSessionListener` implementation. The `ServerSessionListener` interface defines a number of methods that are invoked by the implementation upon the occurrence of HTTP/2 events, and that server applications can override to react to those events. @@ -80,7 +80,7 @@ This is where server applications can customize the connection settings by retur include::../../{doc_code}/embedded/server/http2/HTTP2ServerDocs.java[tags=preface] ---- -[[eg-server-http2-request]] +[[pg-server-http2-request]] ==== Receiving a Request Receiving an HTTP request from the client, and sending a response, creates a _stream_ that encapsulates the exchange of HTTP/2 frames that compose the request and the response. @@ -105,7 +105,7 @@ include::../../{doc_code}/embedded/server/http2/HTTP2ServerDocs.java[tags=reques include::../../http2.adoc[tag=apiFlowControl] -[[eg-server-http2-response]] +[[pg-server-http2-response]] ==== Sending a Response After receiving an HTTP request, a server application must send an HTTP response. @@ -121,7 +121,7 @@ A server application can send a response in this way: include::../../{doc_code}/embedded/server/http2/HTTP2ServerDocs.java[tags=response;!exclude] ---- -[[eg-server-http2-reset]] +[[pg-server-http2-reset]] ==== Resetting a Request A server application may decide that it does not want to accept the request. @@ -134,7 +134,7 @@ A request can be reset in this way: include::../../{doc_code}/embedded/server/http2/HTTP2ServerDocs.java[tags=reset;!exclude] ---- -[[eg-server-http2-push]] +[[pg-server-http2-push]] ==== HTTP/2 Push of Resources A server application may _push_ secondary resources related to a primary resource. diff --git a/jetty-documentation/src/main/asciidoc/programming-guide/server/server-io-arch.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/server/server-io-arch.adoc index c04763c51aa..c0100f1166c 100644 --- a/jetty-documentation/src/main/asciidoc/programming-guide/server/server-io-arch.adoc +++ b/jetty-documentation/src/main/asciidoc/programming-guide/server/server-io-arch.adoc @@ -16,12 +16,12 @@ // ======================================================================== // -[[eg-server-io-arch]] +[[pg-server-io-arch]] === Server Libraries I/O Architecture The Jetty server libraries provide the basic components and APIs to implement a network server. -They build on the common xref:eg-arch-io[Jetty I/O Architecture] and provide server specific concepts. +They build on the common xref:pg-arch-io[Jetty I/O Architecture] and provide server specific concepts. The main I/O server-side class is `org.eclipse.jetty.server.ServerConnector`. diff --git a/jetty-documentation/src/main/asciidoc/programming-guide/server/server.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/server/server.adoc index 04321e604f9..254af9a9edd 100644 --- a/jetty-documentation/src/main/asciidoc/programming-guide/server/server.adoc +++ b/jetty-documentation/src/main/asciidoc/programming-guide/server/server.adoc @@ -16,22 +16,22 @@ // ======================================================================== // -[[eg-server]] +[[pg-server]] == Server Libraries The Eclipse Jetty Project provides server-side libraries that allow you to embed an HTTP or WebSocket server in your applications. A typical example is a HTTP server that needs to expose a REST endpoint. -Another example is a proxy application that receives HTTP requests and forwards them to third party services possibly using also the Jetty xref:eg-client[client libraries]. +Another example is a proxy application that receives HTTP requests and forwards them to third party services possibly using also the Jetty xref:pg-client[client libraries]. While historically Jetty is an HTTP server, it is possible to use the Jetty server-side libraries to write a generic network server that interprets any network protocol (not only HTTP). -If you are interested in the low-level details of how the Eclipse Jetty server libraries work, or are interested in writing a custom protocol, look at the xref:eg-server-io-arch[Server I/O Architecture]. +If you are interested in the low-level details of how the Eclipse Jetty server libraries work, or are interested in writing a custom protocol, look at the xref:pg-server-io-arch[Server I/O Architecture]. The Jetty server-side libraries provide: -* HTTP support for HTTP/1.0, HTTP/1.1, HTTP/2, clear-text or encrypted, for applications that want to embed Jetty as a generic HTTP server or proxy, via the xref:eg-server-http[HTTP libraries] -* HTTP/2 low-level support, for applications that want to explicitly handle low-level HTTP/2 _sessions_, _streams_ and _frames_, via the xref:eg-server-http2[HTTP/2 libraries] -* WebSocket support, for applications that want to embed a WebSocket server, via the xref:eg-server-websocket[WebSocket libraries] +* HTTP support for HTTP/1.0, HTTP/1.1, HTTP/2, clear-text or encrypted, for applications that want to embed Jetty as a generic HTTP server or proxy, via the xref:pg-server-http[HTTP libraries] +* HTTP/2 low-level support, for applications that want to explicitly handle low-level HTTP/2 _sessions_, _streams_ and _frames_, via the xref:pg-server-http2[HTTP/2 libraries] +* WebSocket support, for applications that want to embed a WebSocket server, via the xref:pg-server-websocket[WebSocket libraries] include::http/server-http.adoc[] include::http2/server-http2.adoc[] diff --git a/jetty-documentation/src/main/asciidoc/programming-guide/server/websocket/server-websocket.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/server/websocket/server-websocket.adoc index 0ea9473f72b..a7c1f1f2738 100644 --- a/jetty-documentation/src/main/asciidoc/programming-guide/server/websocket/server-websocket.adoc +++ b/jetty-documentation/src/main/asciidoc/programming-guide/server/websocket/server-websocket.adoc @@ -16,7 +16,7 @@ // ======================================================================== // -[[eg-server-websocket]] +[[pg-server-websocket]] === WebSocket Server Libraries TODO diff --git a/jetty-documentation/src/main/asciidoc/programming-guide/troubleshooting.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/troubleshooting.adoc index 1390f30b1fc..cf945d00b8e 100644 --- a/jetty-documentation/src/main/asciidoc/programming-guide/troubleshooting.adoc +++ b/jetty-documentation/src/main/asciidoc/programming-guide/troubleshooting.adoc @@ -17,7 +17,7 @@ // [appendix] -[[eg-troubleshooting]] +[[pg-troubleshooting]] == Troubleshooting Jetty TODO: introduction @@ -27,7 +27,7 @@ TODO: introduction // TODO: #3 take jvm/component dumps // TODO: #4 enable debug logging if you can -[[eg-troubleshooting-logging]] +[[pg-troubleshooting-logging]] === Logging The Jetty libraries (both client and server) use link:http://slf4j.org/[SLF4J] as logging APIs. @@ -73,28 +73,28 @@ If you want to enable DEBUG logging but only for the HTTP/2 classes: java -Dorg.eclipse.jetty.http2.LEVEL=DEBUG --class-path ... ---- -[[eg-troubleshooting-thread-dump]] +[[pg-troubleshooting-thread-dump]] === JVM Thread Dump TODO -[[eg-troubleshooting-component-dump]] +[[pg-troubleshooting-component-dump]] === Jetty Component Tree Dump -Jetty components are organized in a xref:eg-arch-bean[component tree]. +Jetty components are organized in a xref:pg-arch-bean[component tree]. At the root of the component tree there is typically a `ContainerLifeCycle` instance -- typically a `Server` instance on the server and an `HttpClient` instance on the client. -`ContainerLifeCycle` has built-in _dump_ APIs that can be invoked either directly or xref:eg-arch-jmx[via JMX]. +`ContainerLifeCycle` has built-in _dump_ APIs that can be invoked either directly or xref:pg-arch-jmx[via JMX]. // TODO: images from JMC? // TODO: Command line JMX will be in JMX section. TIP: You can get more details from a Jetty's `QueuedThreadPool` dump by enabling detailed dumps via `queuedThreadPool.setDetailedDump(true)`. -[[eg-troubleshooting-debugging]] +[[pg-troubleshooting-debugging]] === Debugging -Sometimes, in order to figure out a problem, enabling xref:eg-troubleshooting-logging[DEBUG logging] is not enough and you really need to debug the code with a debugger. +Sometimes, in order to figure out a problem, enabling xref:pg-troubleshooting-logging[DEBUG logging] is not enough and you really need to debug the code with a debugger. Debugging an embedded Jetty application is most easily done from your preferred IDE, so refer to your IDE instruction for how to debug Java applications. From 642b80d51d95adb5dc36f7b5220b3ec41d378604 Mon Sep 17 00:00:00 2001 From: Simone Bordet Date: Thu, 3 Sep 2020 11:53:56 +0200 Subject: [PATCH 06/10] Improvements to the Jetty client documentation. Fixed wrong xrefs after section ID renaming. Added TODOs for sections that needs to be expanded. Signed-off-by: Simone Bordet --- .../client/client-io-arch.adoc | 4 ++-- .../client/http/client-http-api.adoc | 21 +++++++++--------- .../http/client-http-authentication.adoc | 4 ++++ .../http/client-http-configuration.adoc | 8 +++++++ .../client/http/client-http-cookie.adoc | 5 +++-- .../client/http/client-http-intro.adoc | 22 +++++++++---------- .../client/http/client-http-transport.adoc | 6 ++--- 7 files changed, 42 insertions(+), 28 deletions(-) diff --git a/jetty-documentation/src/main/asciidoc/programming-guide/client/client-io-arch.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/client/client-io-arch.adoc index 70519569154..44794dd81c1 100644 --- a/jetty-documentation/src/main/asciidoc/programming-guide/client/client-io-arch.adoc +++ b/jetty-documentation/src/main/asciidoc/programming-guide/client/client-io-arch.adoc @@ -31,7 +31,7 @@ There are conceptually two layers that compose the Jetty client libraries: [[pg-client-io-arch-network]] ==== Client Libraries Network Layer -The Jetty client libraries use the common I/O design described in link:#eg-arch-io[this section]. +The Jetty client libraries use the common I/O design described in xref:pg-arch-io[this section]. The main client-side component is the link:{JDURL}/org/eclipse/jetty/io/ClientConnector.html[`ClientConnector`]. The `ClientConnector` primarily wraps the link:{JDURL}/org/eclipse/jetty/io/SelectorManager.html[`SelectorManager`] and aggregates other four components: @@ -88,7 +88,7 @@ Please refer to the `ClientConnector` link:{JDURL}/org/eclipse/jetty/io/ClientCo The protocol layer builds on top of the network layer to generate the bytes to be written to the network and to parse the bytes read from the network. -Recall from link:#eg-arch-io-connection[this section] that Jetty uses the `Connection` abstraction to produce and interpret the network bytes. +Recall from xref:pg-arch-io-connection[this section] that Jetty uses the `Connection` abstraction to produce and interpret the network bytes. On the client side, a `ClientConnectionFactory` implementation is the component that creates `Connection` instances based on the protocol that the client wants to "speak" with the server. diff --git a/jetty-documentation/src/main/asciidoc/programming-guide/client/http/client-http-api.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/client/http/client-http-api.adoc index b04d9675610..4a40764c393 100644 --- a/jetty-documentation/src/main/asciidoc/programming-guide/client/http/client-http-api.adoc +++ b/jetty-documentation/src/main/asciidoc/programming-guide/client/http/client-http-api.adoc @@ -34,7 +34,7 @@ include::../../{doc_code}/embedded/client/http/HTTPClientDocs.java[tags=simpleBl The method `HttpClient.GET(...)` performs a HTTP `GET` request to the given URI and returns a `ContentResponse` when the request/response conversation completes successfully. The `ContentResponse` object contains the HTTP response information: status code, headers and possibly content. -The content length is limited by default to 2 MiB; for larger content see xref:client-http-content-response[]. +The content length is limited by default to 2 MiB; for larger content see xref:pg-client-http-content-response[the section on response content handling]. If you want to customize the request, for example by issuing a `HEAD` request instead of a `GET`, and simulating a browser user agent, you can do it in this way: @@ -62,7 +62,7 @@ include::../../{doc_code}/embedded/client/http/HTTPClientDocs.java[tags=postFlue The `POST` parameter values added via the `param()` method are automatically URL-encoded. -Jetty's `HttpClient` automatically follows redirects, so it handles the typical web pattern http://en.wikipedia.org/wiki/Post/Redirect/Get[POST/Redirect/GET], and the response object contains the content of the response of the `GET` request. +Jetty's `HttpClient` automatically follows redirects, so it handles the typical web pattern link:http://en.wikipedia.org/wiki/Post/Redirect/Get[POST/Redirect/GET], and the response object contains the content of the response of the `GET` request. Following redirects is a feature that you can enable/disable on a per-request basis or globally. File uploads also require one line, and make use of `java.nio.file` classes: @@ -79,7 +79,7 @@ It is possible to impose a total timeout for the request/response conversation u include::../../{doc_code}/embedded/client/http/HTTPClientDocs.java[tags=totalTimeout] ---- -In the example above, when the 5 seconds expire, the request is aborted and a `java.util.concurrent.TimeoutException` is thrown. +In the example above, when the 5 seconds expire, the request/response cycle is aborted and a `java.util.concurrent.TimeoutException` is thrown. [[pg-client-http-non-blocking]] ==== HttpClient Non-Blocking APIs @@ -97,18 +97,19 @@ If you need to execute application code that takes long time inside a listener, Request and response processing are executed by two different threads and therefore may happen concurrently. A typical example of this concurrent processing is an echo server, where a large upload may be concurrent with the large download echoed back. -As a side note, remember that responses may be processed and completed _before_ requests; a typical example is a large upload that triggers a quick response - for example an error - by the server: the response may arrive and be completed while the request content is still being uploaded. -The application thread that calls `Request.send(Response.CompleteListener)` performs the processing of the request until either the request is fully processed or until it would block on I/O, then it returns (and therefore never blocks). +NOTE: Remember that responses may be processed and completed _before_ requests; a typical example is a large upload that triggers a quick response - for example an error - by the server: the response may arrive and be completed while the request content is still being uploaded. + +The application thread that calls `Request.send(Response.CompleteListener)` performs the xref:pg-client-http-request-processing[processing of the request] until either the request is fully sent over the network or until it would block on I/O, then it returns (and therefore never blocks). If it would block on I/O, the thread asks the I/O system to emit an event when the I/O will be ready to continue, then returns. When such an event is fired, a thread taken from the `HttpClient` thread pool will resume the processing of the request. -Response are processed from the I/O thread that fires the event that bytes are ready to be read. +Response are processed from the I/O thread taken from the `HttpClient` thread pool that processes the event that bytes are ready to be read. Response processing continues until either the response is fully processed or until it would block for I/O. If it would block for I/O, the thread asks the I/O system to emit an event when the I/O will be ready to continue, then returns. -When such an event is fired, a thread taken from the `HttpClient` thread pool will resume the processing of the response. +When such an event is fired, a (possibly different) thread taken from the `HttpClient` thread pool will resume the processing of the response. -When the request and the response are both fully processed, the thread that finished the last processing (usually the thread that processes the response, but may also be the thread that processes the request - if the request takes more time than the response to be processed) is used to dequeue the next request for the same destination and processes it. +When the request and the response are both fully processed, the thread that finished the last processing (usually the thread that processes the response, but may also be the thread that processes the request - if the request takes more time than the response to be processed) is used to dequeue the next request for the same destination and to process it. A simple non-blocking `GET` request that discards the response content can be written in this way: @@ -194,7 +195,7 @@ include::../../{doc_code}/embedded/client/http/HTTPClientDocs.java[tags=outputSt Jetty's `HttpClient` allows applications to handle response content in different ways. -You can buffer the response content in memory; this is done when using the xref:client-http-blocking[blocking APIs] and the content is buffered within a `ContentResponse` up to 2 MiB. +You can buffer the response content in memory; this is done when using the xref:pg-client-http-blocking[blocking APIs] and the content is buffered within a `ContentResponse` up to 2 MiB. If you want to control the length of the response content (for example limiting to values smaller than the default of 2 MiB), then you can use a `org.eclipse.jetty.client.util.FutureResponseListener` in this way: @@ -205,7 +206,7 @@ include::../../{doc_code}/embedded/client/http/HTTPClientDocs.java[tags=futureRe If the response content length is exceeded, the response will be aborted, and an exception will be thrown by method `get(...)`. -You can buffer the response content in memory also using the xref:client-http-non-blocking[non-blocking APIs], via the `BufferingResponseListener` utility class: +You can buffer the response content in memory also using the xref:pg-client-http-non-blocking[non-blocking APIs], via the `BufferingResponseListener` utility class: [source,java,indent=0] ---- diff --git a/jetty-documentation/src/main/asciidoc/programming-guide/client/http/client-http-authentication.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/client/http/client-http-authentication.adoc index 0ca8aa84542..652fa00bb78 100644 --- a/jetty-documentation/src/main/asciidoc/programming-guide/client/http/client-http-authentication.adoc +++ b/jetty-documentation/src/main/asciidoc/programming-guide/client/http/client-http-authentication.adoc @@ -79,3 +79,7 @@ include::../../{doc_code}/embedded/client/http/HTTPClientDocs.java[tag=requestPr ---- See also the xref:pg-client-http-proxy-authentication[proxy authentication section] for further information about how authentication works with HTTP proxies. + +[[pg-client-http-authentication-spnego]] +=== HttpClient SPNEGO Authentication Support +TODO diff --git a/jetty-documentation/src/main/asciidoc/programming-guide/client/http/client-http-configuration.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/client/http/client-http-configuration.adoc index 039250f6eb6..6a8d47e09a7 100644 --- a/jetty-documentation/src/main/asciidoc/programming-guide/client/http/client-http-configuration.adoc +++ b/jetty-documentation/src/main/asciidoc/programming-guide/client/http/client-http-configuration.adoc @@ -67,3 +67,11 @@ include::../../{doc_code}/embedded/client/http/HTTPClientDocs.java[tags=tlsAppVa ---- Please refer to the `SslContextFactory.Client` link:{JDURL}/org/eclipse/jetty/util/ssl/SslContextFactory.Client.html[javadocs] for the complete list of configurable parameters. + +[[pg-client-http-configuration-tls-truststore]] +==== HttpClient TLS TrustStore Configuration +TODO + +[[pg-client-http-configuration-tls-client-certs]] +==== HttpClient TLS Client Certificates Configuration +TODO diff --git a/jetty-documentation/src/main/asciidoc/programming-guide/client/http/client-http-cookie.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/client/http/client-http-cookie.adoc index abf9449a890..c3291d3fde5 100644 --- a/jetty-documentation/src/main/asciidoc/programming-guide/client/http/client-http-cookie.adoc +++ b/jetty-documentation/src/main/asciidoc/programming-guide/client/http/client-http-cookie.adoc @@ -20,6 +20,7 @@ === HttpClient Cookie Support Jetty's `HttpClient` supports cookies out of the box. + The `HttpClient` instance receives cookies from HTTP responses and stores them in a `java.net.CookieStore`, a class that is part of the JDK. When new requests are made, the cookie store is consulted and if there are matching cookies (that is, cookies that are not expired and that match domain and path of the request) then they are added to the requests. @@ -73,7 +74,7 @@ The example above will retain only cookies that come from the `google.com` domai Jetty is compliant with link:https://tools.ietf.org/html/rfc6265[RFC6265], and as such care must be taken when setting a cookie value that includes special characters such as `;`. -Previously, Version=1 cookies defined in link:https://tools.ietf.org/html/rfc2109[RFC2109] (and continued in link:https://tools.ietf.org/html/rfc2965[RFC2965]) allowed for special/reserved characters to be enclosed within double quotes when declared in a `Set-Cookie` response header: +Previously, `Version=1` cookies defined in link:https://tools.ietf.org/html/rfc2109[RFC2109] (and continued in link:https://tools.ietf.org/html/rfc2965[RFC2965]) allowed for special/reserved characters to be enclosed within double quotes when declared in a `Set-Cookie` response header: [source,screen] ---- @@ -87,7 +88,7 @@ This was added to the HTTP Response as follows: protected void service(HttpServletRequest request, HttpServletResponse response) { javax.servlet.http.Cookie cookie = new Cookie("foo", "bar;baz"); - cookie.setPath("/secur"); + cookie.setPath("/secure"); response.addCookie(cookie); } ---- diff --git a/jetty-documentation/src/main/asciidoc/programming-guide/client/http/client-http-intro.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/client/http/client-http-intro.adoc index dabfe1e2817..cfb3020b964 100644 --- a/jetty-documentation/src/main/asciidoc/programming-guide/client/http/client-http-intro.adoc +++ b/jetty-documentation/src/main/asciidoc/programming-guide/client/http/client-http-intro.adoc @@ -26,18 +26,18 @@ It offers an asynchronous API that never blocks for I/O, making it very efficien However, when all you need to do is to perform a `GET` request to a resource, Jetty's HTTP client offers also a synchronous API; a programming interface where the thread that issued the request blocks until the request/response conversation is complete. -Jetty's HTTP client supports xref:#eg-client-http-transport[different transports]: HTTP/1.1, FastCGI and HTTP/2. This means that the semantic of a HTTP request (that is, " `GET` me the resource `/index.html` ") can be carried over the network in different formats. +Jetty's HTTP client supports xref:pg-client-http-transport[different transports]: HTTP/1.1, FastCGI and HTTP/2. This means that the semantic of an HTTP request: " ``GET`` the resource ``/index.html`` " can be carried over the network in different formats. The most common and default format is HTTP/1.1. That said, Jetty's HTTP client can carry the same request using the FastCGI format or the HTTP/2 format. -The FastCGI transport is heavily used in Jetty's link:#fastcgi[FastCGI support] that allows Jetty to work as a reverse proxy to PHP (exactly like Apache or Nginx do) and therefore be able to serve - for example - WordPress websites. +The xref:pg-client-http-transport-fcgi[FastCGI transport] is heavily used in Jetty's xref:fastcgi[FastCGI support] that allows Jetty to work as a reverse proxy to PHP (exactly like Apache or Nginx do) and therefore be able to serve - for example - WordPress websites. -The HTTP/2 transport allows Jetty's HTTP client to perform requests using HTTP/2 to HTTP/2 enabled web sites, see also Jetty's link:#http2[HTTP/2 support]. +The HTTP/2 transport allows Jetty's HTTP client to perform requests using HTTP/2 to HTTP/2 enabled web sites, see also Jetty's xref:pg-client-http2[HTTP/2 support]. Out of the box features that you get with the Jetty HTTP client include: * Redirect support - redirect codes such as 302 or 303 are automatically followed. * Cookies support - cookies sent by servers are stored and sent back to servers in matching requests. -* Authentication support - HTTP "Basic" and "Digest" authentications are supported, others are pluggable. +* Authentication support - HTTP "Basic", "Digest" and "SPNEGO" authentications are supported, others are pluggable. * Forward proxy support - HTTP proxying and SOCKS4 proxying. [[pg-client-http-start]] @@ -72,9 +72,9 @@ There are several reasons for having multiple `HttpClient` instances including, * You want to specify different configuration parameters (for example, one instance is configured with a forward proxy while another is not). * You want the two instances to behave like two different browsers and hence have different cookies, different authentication credentials, etc. -* You want to use link:#eg-client-http-transport[different transports]. +* You want to use xref:pg-client-http-transport[different transports]. -Like browsers, HTTPS requests are supported out-of-the-box, as long as the server provides a valid certificate. +Like browsers, HTTPS requests are supported out-of-the-box (see xref:pg-client-http-configuration-tls[this section] for the TLS configuration), as long as the server provides a valid certificate. In case the server does not provide a valid certificate (or in case it is self-signed) you want to customize ``HttpClient``'s TLS configuration as described in xref:pg-client-http-configuration-tls[this section]. [[pg-client-http-stop]] @@ -99,7 +99,7 @@ A `HttpClient` instance can be thought as a browser instance, and it manages the * a `ProxyConfiguration` (see xref:pg-client-http-proxy[this section]). * a set of _destinations_. -A _destination_ is the client-side component that represent an _origin_ on a server, and manages a queue of requests for that origin, and a xref:pg-client-http-connection-pool[pool of connections] to that origin. +A _destination_ is the client-side component that represents an _origin_ server, and manages a queue of requests for that origin, and a xref:pg-client-http-connection-pool[pool of TCP connections] to that origin. An _origin_ may be simply thought as the tuple `(scheme, host, port)` and it is where the client connects to in order to communicate with the server. However, this is not enough. @@ -111,7 +111,7 @@ Instead, you want to use different connections for different clients and this ca Two origins with the same `(scheme, host, port)` but different `tag` create two different destinations and therefore two different connection pools. However, also this is not enough. -It is possible that a server speaks different protocols on the same `port`. +It is possible for a server to speak different protocols on the same `port`. A connection may start by speaking one protocol, for example HTTP/1.1, but then be upgraded to speak a different protocol, for example HTTP/2. After a connection has been upgraded to a second protocol, it cannot speak the first protocol anymore, so it can only be used to communicate using the second protocol. Two origins with the same `(scheme, host, port)` but different `protocol` create two different destinations and therefore two different connection pools. @@ -182,11 +182,11 @@ If a connection is available, it is returned, otherwise a new connection is crea Once the destination has obtained the connection, it dequeues the request and sends it over the connection. The first request to a destination triggers the opening of the first connection. -A second request with the same origin sent _after_ the first request/response cycle is completed will reuse the same connection. -A second request with the same origin sent _concurrently_ with the first request will cause the opening of a second connection. +A second request with the same origin sent _after_ the first request/response cycle is completed may reuse the same connection, depending on the connection pool implementation. +A second request with the same origin sent _concurrently_ with the first request will likely cause the opening of a second connection, depending on the connection pool implementation. The configuration parameter `HttpClient.maxConnectionsPerDestination` (see also the xref:pg-client-http-configuration[configuration section]) controls the max number of connections that can be opened for a destination. -NOTE: If opening connections to a given origin takes a long time, then requests for that origin will queue up in the corresponding destination. +NOTE: If opening connections to a given origin takes a long time, then requests for that origin will queue up in the corresponding destination until the connections are established. Each connection can handle a limited number of concurrent requests. For HTTP/1.1, this number is always `1`: there can only be one outstanding request for each connection. diff --git a/jetty-documentation/src/main/asciidoc/programming-guide/client/http/client-http-transport.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/client/http/client-http-transport.adoc index becd0810f1d..32a8ef6224a 100644 --- a/jetty-documentation/src/main/asciidoc/programming-guide/client/http/client-http-transport.adoc +++ b/jetty-documentation/src/main/asciidoc/programming-guide/client/http/client-http-transport.adoc @@ -23,7 +23,7 @@ Jetty's `HttpClient` can be configured to use different transports to carry the This means that the intention of a client to request resource `/index.html` using the `GET` method can be carried over the network in different formats. -A `HttpClient` transport is the component that is in charge of converting a high-level, semantic, HTTP requests such as "`GET` resource ``/index.html``" into the specific format understood by the server (for example, HTTP/2), and to convert the server response from the specific format (HTTP/2) into high-level, semantic objects that can be used by applications. +A `HttpClient` transport is the component that is in charge of converting a high-level, semantic, HTTP requests such as "``GET`` resource ``/index.html``" into the specific format understood by the server (for example, HTTP/2), and to convert the server response from the specific format (HTTP/2) into high-level, semantic objects that can be used by applications. The most common protocol format is HTTP/1.1, a textual protocol with lines separated by `\r\n`: @@ -104,7 +104,7 @@ include::../../{doc_code}/embedded/client/http/HTTPClientDocs.java[tag=fcgiTrans In order to make requests using the FastCGI transport, you need to have a FastCGI server such as https://en.wikipedia.org/wiki/PHP#PHPFPM[PHP-FPM] (see also http://php.net/manual/en/install.fpm.php). -The FastCGI transport is primarily used by Jetty's link:#fastcgi[FastCGI support] to serve PHP pages (WordPress for example). +The FastCGI transport is primarily used by Jetty's xref:fastcgi[FastCGI support] to serve PHP pages (WordPress for example). [[pg-client-http-transport-dynamic]] ==== Dynamic Transport @@ -116,7 +116,7 @@ With the advent of HTTP/2, however, servers are now able to support multiple pro The HTTP/2 protocol is typically negotiated between client and server. This negotiation can happen via ALPN, a TLS extension that allows the client to tell the server the list of protocol that the client supports, so that the server can pick one of the client supported protocols that also the server supports; or via HTTP/1.1 upgrade by means of the `Upgrade` header. -Applications can configure the dynamic transport with one or more _application_ protocols such as HTTP/1.1 or HTTP/2. The implementation will take care of using TLS for HTTPS URIs, using ALPN, negotiating protocols, upgrading from one protocol to another, etc. +Applications can configure the dynamic transport with one or more _application_ protocols such as HTTP/1.1 or HTTP/2. The implementation will take care of using TLS for HTTPS URIs, using ALPN if necessary, negotiating protocols, upgrading from one protocol to another, etc. By default, the dynamic transport only speaks HTTP/1.1: From 40248e9f23d60162854b3fb4d4712c5fdf6fbfab Mon Sep 17 00:00:00 2001 From: Simone Bordet Date: Thu, 3 Sep 2020 12:22:16 +0200 Subject: [PATCH 07/10] Improvements to the Jetty documentation. Removed old basic-architecture.adoc since all its content has been ported to the new documentation. Signed-off-by: Simone Bordet --- .../architecture/basic-architecture.adoc | 178 ------------------ .../old_docs/architecture/chapter.adoc | 1 - .../programming-guide/server/server.adoc | 1 - 3 files changed, 180 deletions(-) delete mode 100644 jetty-documentation/src/main/asciidoc/programming-guide/old_docs/architecture/basic-architecture.adoc diff --git a/jetty-documentation/src/main/asciidoc/programming-guide/old_docs/architecture/basic-architecture.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/old_docs/architecture/basic-architecture.adoc deleted file mode 100644 index 4965ccbdd19..00000000000 --- a/jetty-documentation/src/main/asciidoc/programming-guide/old_docs/architecture/basic-architecture.adoc +++ /dev/null @@ -1,178 +0,0 @@ -// -// ======================================================================== -// Copyright (c) 1995-2020 Mort Bay Consulting Pty Ltd and others. -// -// This program and the accompanying materials are made available under -// the terms of the Eclipse Public License 2.0 which is available at -// https://www.eclipse.org/legal/epl-2.0 -// -// This Source Code may also be made available under the following -// Secondary Licenses when the conditions for such availability set -// forth in the Eclipse Public License, v. 2.0 are satisfied: -// the Apache License v2.0 which is available at -// https://www.apache.org/licenses/LICENSE-2.0 -// -// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 -// ======================================================================== -// - -[[basic-architecture]] -=== Jetty Architecture - -==== View from 20,000 feet - -The Jetty link:{JDURL}/org/eclipse/jetty/server/Server.html[Server] is the plumbing between -a collection of `Connector`s that accept connections and a collection of `Handler`s that -service requests from the connections and produce responses, with threads from a thread pool doing the work. - -image:jetty-high-level-architecture.png[image,width=576] - -While the Jetty request/responses are derived from the Servlet API, the full features of the Servlet API -are only available if you configure the appropriate handlers. -For example, the session API on the request is inactive unless the request has been passed to a `SessionHandler`. -The concept of a Servlet itself is implemented by a `ServletHandler`. -If Servlets are not required, there is very little overhead in the use of the servlet request/response APIs. -Thus you can build a Jetty server using only connectors and handlers, without using Servlets. - -The job of configuring Jetty is building a tree of connectors and handlers and providing their individual configurations. -As Jetty components are simply Plain Old Java Objects (POJOs), you can accomplish this assembly -and configuration of components by a variety of techniques: - -* In code, see the examples in the Jetty Source XRef. -* Using Jetty XML, a dependency injection style in XML format. -* With your dependency injection framework of choice, Spring or XBean. -* Using Jetty WebApp and Context Deployers. - -==== Patterns - -The implementation of Jetty follows some fairly standard patterns. -Most abstract concepts such as `Connector`s and `Handler`s are captured by interfaces. -Generic handling for those interfaces is then provided in an abstract implementation -such as `AbstractConnector` and `AbstractHandler`. - -image:basic-architecture-patterns.png[image,width=576] - -The JSR77 inspired life cycle of most Jetty components is represented by the `LifeCycle` -interface and the `AbstractLifeCycle` implementation used as the base of many Jetty components. - -==== Connectors - -A `Connector` is the component that accepts TCP connections. -For each accepted TCP connection, the `Connector` asks a `ConnectionFactory` to create -a `Connection` object that handles the network traffic on that TCP connection, parsing -and generating bytes for a specific protocol. - -A `ServerConnector` can therefore be configured with one or more `ConnectionFactory`. - -The simplest case is a single `ConnectionFactory` such as `HttpConnectionFactory`, that -creates `HttpConnection` objects that parse and generate bytes for the HTTP/1.1 protocol. - -A more complex case can be a `ServerConnector` configured with three factories: -`ProxyConnectionFactory`, `SslConnectionFactory` and `HttpConnectionFactory`. -Such connector will be able to handle PROXY protocol bytes coming from a load balancer -such as HAProxy (with the `ProxyConnectionFactory`), then handle TLS bytes (with -`SslConnectionFactory`) and therefore decrypting/encrypting the bytes from/to a remote -client, and finally handling HTTP/1.1 bytes (with `HttpConnectionFactory`). -Each `ConnectionFactory` is asked to create a `Connection` object for each TCP connection; -the `Connection` objects will be chained together to handle the bytes, each for its -own protocol. -Therefore the `ProxyConnection` will handle the PROXY protocol bytes, `SslConnection` -will handle the encryption/decryption of the bytes, and `HttpConnection` will handle -the HTTP/1.1 bytes producing a request and response object that will be processed by -applications. - -Advanced usages of Jetty will allow users to write their own `ConnectionFactory` to -handle custom protocols that are not implemented directly by the Jetty project, -therefore using Jetty as a generic network server. - -==== Handlers - -A `Handler` is the component that deals with HTTP requests and responses. -The core API of a handler is the handle method: - -image:basic-architecture-handlers.png[image,width=576] - -[source, java, subs="{sub-order}"] ----- -public void handle(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException ----- - -Parameters: - -* `target` – the target of the request, either a URI or a name. -* `baseRequest` – the original unwrapped request object. -* `request` – the request object, either as the `baseRequest` object or a wrapper of `baseRequest`. -You can use the HttpConnection.getCurrentConnection() method to access the Request object if required. -* response – the response object, either unwrapped as `Response` or a wrapper of that response. -You can use the HttpConnection.getCurrentConnection() method to access the `Response` object if required. - -An implementation of this method can handle the request, pass the request onto another handler (or servlet) -or it might modify and/or wrap the request and then pass it on. -This gives three styles of Handler: - -* Coordinating handlers – handlers that route requests to other handlers (`HandlerCollection`, `ContextHandlerCollection`) -* Filtering handlers – handlers that augment a request and pass it on to other handlers (`HandlerWrapper`, `ContextHandler`, `SessionHandler`) -* Generating handlers – handlers that produce content (`ResourceHandler` and `ServletHandler`) - -===== Nested Handlers and Handlers Called Sequentially - -You can combine handlers to handle different aspects of a request by nesting them, -calling them in sequence, or by combining the two models. - -image:basic-architecture-nested-handlers.png[image,width=576] - -Handlers called in sequence perform actions that do not depend on the next invocation, nor on the handler order. -They handle a request and generate the response without interacting with other handlers. -The main class for this model is `HandlerCollection`. - -Nested handlers are called according to a before/invokeNext/after pattern. -The main class for nested handlers is `HandlerWrapper`. -Nested handlers are much more common than those called in sequence. - -See also xref:writing-custom-handlers[]. - -===== Servlet Handler - -The `ServletHandler` is a `Handler` that generates content by passing the request to any -configured Servlet Filters and then to a Servlet mapped by a URI pattern. - -image:basic-architecture-servlet-handler.png[image,width=576] - -A `ServletHandler` is normally deployed within the scope of a `ServletContext`, which is a -`ContextHandler` that provides convenience methods for mapping URIs to servlets. - -Filters and Servlets can also use a `RequestDispatcher` to reroute a request to another context -or another Servlet in the current context. - -[[what-is-a-context]] -==== Contexts - -Contexts are handlers that group other handlers below a particular URI context path or a virtual host. -Typically a context can have: - -* A context path that defines which requests are handled by the context (e.g. `/myapp`) -* A resource base for static content (a document root) -* A class loader to obtain classes specific to the context (typically from `/WEB-INF/classes` and `/WEB-INF/lib`) -* Virtual host names - -Contexts implementations include: - -* `ContextHandler` -* `ServletContextHandler` -* `WebAppContext` - -A web application context combines handlers for security, session and servlets in a single unit -that you can configure with a `web.xml` descriptor. - -==== Web Application - -A `WebAppContext` is a derivation of `ServletContextHandler` that supports the standardized layout -of a web application and configuration of session, security, listeners, filter, servlets, and JSP -via a `web.xml` descriptor normally found in the `/WEB-INF` directory of a web application. - -image:basic-architecture-web-application.png[image,width=576] - -Essentially `WebAppContext` is a convenience class that assists the construction and configuration -of other handlers to achieve a standard web application configuration. -Configuration is actually done by pluggable implementations of the Configuration class and the -prime among these is `WebXmlConfiguration.` diff --git a/jetty-documentation/src/main/asciidoc/programming-guide/old_docs/architecture/chapter.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/old_docs/architecture/chapter.adoc index 833ba3f384b..91252472893 100644 --- a/jetty-documentation/src/main/asciidoc/programming-guide/old_docs/architecture/chapter.adoc +++ b/jetty-documentation/src/main/asciidoc/programming-guide/old_docs/architecture/chapter.adoc @@ -21,6 +21,5 @@ General items related to the architecture of jetty and how it deals with certain design decisions. -include::basic-architecture.adoc[] include::jetty-classloading.adoc[] include::server-side-architecture.adoc[] diff --git a/jetty-documentation/src/main/asciidoc/programming-guide/server/server.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/server/server.adoc index 254af9a9edd..7e1b7dd8adc 100644 --- a/jetty-documentation/src/main/asciidoc/programming-guide/server/server.adoc +++ b/jetty-documentation/src/main/asciidoc/programming-guide/server/server.adoc @@ -37,4 +37,3 @@ include::http/server-http.adoc[] include::http2/server-http2.adoc[] include::websocket/server-websocket.adoc[] include::server-io-arch.adoc[] -include::../old_docs/server.adoc[] From c6cbc588435b45863c5b6eb80a76d5512f85d148 Mon Sep 17 00:00:00 2001 From: Simone Bordet Date: Thu, 3 Sep 2020 12:27:31 +0200 Subject: [PATCH 08/10] Improvements to the Jetty client documentation. Deleted FAQ because it has always been empty. Signed-off-by: Simone Bordet --- .../programming-guide/client/client.adoc | 4 ++-- .../old_docs/faq/chapter.adoc | 21 ------------------- 2 files changed, 2 insertions(+), 23 deletions(-) delete mode 100644 jetty-documentation/src/main/asciidoc/programming-guide/old_docs/faq/chapter.adoc diff --git a/jetty-documentation/src/main/asciidoc/programming-guide/client/client.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/client/client.adoc index 6d8de1a4981..6b3c3b4a67b 100644 --- a/jetty-documentation/src/main/asciidoc/programming-guide/client/client.adoc +++ b/jetty-documentation/src/main/asciidoc/programming-guide/client/client.adoc @@ -28,8 +28,8 @@ The client libraries are designed to be non-blocking and offer both synchronous These are the available client libraries: -* xref:pg-client-http[The HTTP Client Library] -* xref:pg-client-http2[The HTTP/2 Client Library] +* xref:pg-client-http[The High-Level HTTP Client Library] for HTTP/1.1, HTTP/2 and FastCGI +* xref:pg-client-http2[The Low-Level HTTP/2 Client Library] for low-level HTTP/2 * xref:pg-client-websocket[The WebSocket client library] If you are interested in the low-level details of how the Eclipse Jetty client libraries work, or are interested in writing a custom protocol, look at the xref:pg-client-io-arch[Client I/O Architecture]. diff --git a/jetty-documentation/src/main/asciidoc/programming-guide/old_docs/faq/chapter.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/old_docs/faq/chapter.adoc deleted file mode 100644 index 54e6237ac98..00000000000 --- a/jetty-documentation/src/main/asciidoc/programming-guide/old_docs/faq/chapter.adoc +++ /dev/null @@ -1,21 +0,0 @@ -// -// ======================================================================== -// Copyright (c) 1995-2020 Mort Bay Consulting Pty Ltd and others. -// -// This program and the accompanying materials are made available under -// the terms of the Eclipse Public License 2.0 which is available at -// https://www.eclipse.org/legal/epl-2.0 -// -// This Source Code may also be made available under the following -// Secondary Licenses when the conditions for such availability set -// forth in the Eclipse Public License, v. 2.0 are satisfied: -// the Apache License v2.0 which is available at -// https://www.apache.org/licenses/LICENSE-2.0 -// -// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 -// ======================================================================== -// - -[[faq]] -== Frequently Asked Questions - From 63e7880b9f170c9f690e3383e38c9670a82888b3 Mon Sep 17 00:00:00 2001 From: Simone Bordet Date: Thu, 3 Sep 2020 13:07:53 +0200 Subject: [PATCH 09/10] Improvements to the Jetty documentation. Removed old writing-custom-handlers.adoc since all its content has been ported to the new documentation. Signed-off-by: Simone Bordet --- .../handlers/writing-custom-handlers.adoc | 195 ------------------ 1 file changed, 195 deletions(-) delete mode 100644 jetty-documentation/src/main/asciidoc/programming-guide/old_docs/handlers/writing-custom-handlers.adoc diff --git a/jetty-documentation/src/main/asciidoc/programming-guide/old_docs/handlers/writing-custom-handlers.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/old_docs/handlers/writing-custom-handlers.adoc deleted file mode 100644 index a794af6fb68..00000000000 --- a/jetty-documentation/src/main/asciidoc/programming-guide/old_docs/handlers/writing-custom-handlers.adoc +++ /dev/null @@ -1,195 +0,0 @@ -// -// ======================================================================== -// Copyright (c) 1995-2020 Mort Bay Consulting Pty Ltd and others. -// -// This program and the accompanying materials are made available under -// the terms of the Eclipse Public License 2.0 which is available at -// https://www.eclipse.org/legal/epl-2.0 -// -// This Source Code may also be made available under the following -// Secondary Licenses when the conditions for such availability set -// forth in the Eclipse Public License, v. 2.0 are satisfied: -// the Apache License v2.0 which is available at -// https://www.apache.org/licenses/LICENSE-2.0 -// -// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 -// ======================================================================== -// - -[[writing-custom-handlers]] -=== Writing Custom Handlers - -The Handler is the Jetty component that deals with received requests. - -Many users of Jetty never need to write a Jetty Handler, but instead use the link:{JDURL}/org/eclipse/jetty/servlet/package-summary.html[Servlet API.] -You can reuse the existing Jetty handlers for context, security, sessions and servlets without the need for extension. -However, some users might have special requirements or footprint concerns that prohibit the use of the full servlet API. -For them implementing a Jetty handler is a straight forward way to provide dynamic web content with a minimum of fuss. - -See the section on xref:basic-architecture[] to understand more about Handlers vs. Servlets. - -[[handler-api]] -==== The Handler API - -The link:{JDURL}/org/eclipse/jetty/server/Handler.html[Handler] interface provides Jetty's core of content generation or manipulation. -Classes that implement this interface are used to coordinate requests, filter requests and generate content. - -The core API of the Handler interface is: - -[source, java, subs="{sub-order}"] ----- -public void handle(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response) - throws IOException, ServletException ----- - -An implementation of this method can handle a request and pass the request onto another handler (or servlet), or it can modify and/or wrap the request before passing it on. -This gives three styles of handler: - -* Coordinating Handlers - Handlers that route requests to other handlers (`HandlerCollection`, `ContextHandlerCollection`) -* Filtering Handlers - Handlers that augment a request and pass it on to other handlers (`HandlerWrapper`, `ContextHandler`, `SessionHandler`) -* Generating Handlers - Handlers that produce content (`ResourceHandler` and `ServletHandler`) - -[[target]] -===== The Target - -The target of a handler is an identifier for the resource that should handle the passed request. -This is normally the URI that is parsed from an HTTP Request. -However, in two key circumstances the target may differ from the URI of the passed request: - -* If the request has been dispatched to a named resource, such as a named servlet, the target is the name of that resource. -* If the request is being made by a call to link:http://docs.oracle.com/javaee/7/api/javax/servlet/RequestDispatcher.html[`RequestDispatcher`], the target is the URI of the included resource and is different to the URI of the actual request. - -[[request-and-response]] -===== The Request and Response - -The request and response objects used in the signature of the handle method are -link:http://docs.oracle.com/javaee/7/api/javax/servlet/ServletRequest.html[`ServletRequest`] and link:http://docs.oracle.com/javaee/7/api/javax/servlet/ServletResponse.html[`ServletResponse`]. -These are the standard APIs and are moderately restricted in what they can do to the request and response. -More often than not, access to the Jetty implementations of these classes is required: link:{JDURL}/org/eclipse/jetty/server/Request.html[`Request`] and link:{JDURL}/org/eclipse/jetty/server/Response.html[`Response`]. -However, as the request and response may be wrapped by handlers, filters and servlets, it is not possible to pass the implementation directly. -The following mantra retrieves the core implementation objects from under any wrappers: - -[source, java, subs="{sub-order}"] ----- -Request base_request = request instanceof Request ? (Request)request : HttpConnection.getCurrentConnection().getHttpChannel().getRequest(); -Response base_response = response instanceof Response ? (Response)response : HttpConnection.getCurrentConnection().getHttpChannel().getResponse(); ----- - -Notice that if the handler passes the request on to another handler, it should use the Request/Response objects passed in, and not the base objects. -This is to preserve any wrapping done by up stream handlers. - -[[dispatch]] -===== The Dispatch - -The dispatch argument indicates the state of the handling of the call and may be: - -* `REQUEST == 1` - An original request received from a connector. -* `FORWARD == 2` - A request being forwarded by a RequestDispatcher. -* `INCLUDE == 4` - A request being included by a RequestDispatcher. -* `ERROR == 8` - A request being forwarded to a error handler by the container. - -These mostly have significance for servlet and related handlers. -For example, the security handler only applies authentication and authorization to REQUEST dispatches. - -[[handling-requests]] -==== Handling Requests - -A Handler may handle a request by: - -* xref:generating-response[] -* xref:filtering-request-or-response[] -* xref:passing-request-and-response[] - -[[generating-response]] -===== Generating a Response - -The link:{JDURL}/org/eclipse/jetty/embedded/OneHandler.html[`OneHandler`] embedded example shows how a simple handler can generate a response. - -You can use the standard servlet response API, which will typically set some status, content headers and then write out the content: - -[source, java, subs="{sub-order}"] ----- - response.setContentType("text/html"); - response.setStatus(HttpServletResponse.SC_OK); - response.getWriter().println("

Hello OneHandler

"); ----- - -It is also very important that a handler indicate that it has completed handling the request and that the request should not be passed to other handlers: - -[source, java, subs="{sub-order}"] ----- - Request base_request = (request instanceof Request) ? (Request)request:HttpConnection.getCurrentConnection().getHttpChannel().getRequest(); - base_request.setHandled(true); ----- - -[[filtering-request-or-response]] -===== Filtering the Request and/or Response - -Once the base request or response object is obtained, you can modify it. -Typically you would make modifications to accomplish: - -* Breaking the URI into contextPath, servletPath and pathInfo components. -* Associating a resource base with a request for static content. -* Associating a session with a request. -* Associating a security principal with a request. -* Changing the URI and paths during a request dispatch forward to another resource. - -You can also update the context of the request: - -* Setting the current threads context classloader. -* Setting thread locals to identify the current `ServletContext`. - -Typically Jetty passes a modified request to another handler and undoes modifications in a finally block afterwards: - -[source, java, subs="{sub-order}"] ----- - try - { - base_request.setSession(a_session); - next_handler.handle(target,request,response,dispatch); - } - finally - { - base_request.setSession(old_session); - } ----- - -The classes that implement the link:{JDURL}/org/eclipse/jetty/server/handler/HandlerWrapper.html[`HandlerWrapper`] class are typically handler filters of this style. - -[[passing-request-and-response]] -===== Passing the Request and Response to Another Handler - -A handler might simply inspect the request and use the target, request URI or other information to select another handler to pass the request to. -These handlers typically implement the link:{JDURL}/org/eclipse/jetty/server/HandlerContainer.html[`HandlerContainer`] interface. - -Examples include: - -* link:{JDURL}/org/eclipse/jetty/server/handler/HandlerCollection.html[Class `HandlerCollection`] - -A collection of handlers, where each handler is called regardless of the state of the request. -This is typically used to pass a request to a link:{JDURL}/org/eclipse/jetty/server/handler/ContextHandlerCollection.html[`ContextHandlerCollection`,] and then the link:{JDURL}/org/eclipse/jetty/server/handler/RequestLogHandler.html[`RequestLogHandler`.] -* link:{JDURL}/org/eclipse/jetty/server/handler/HandlerList.html[`HandlerList`] - A list of handlers that are called in turn until the request state is set as handled. -* link:{JDURL}/org/eclipse/jetty/server/handler/ContextHandlerCollection.html[`ContextHandlerCollection`] - A collection of Handlers, of which one is selected by best match for the context path. - -[[injecting-handlers]] -==== Injecting Handlers - -The `Handler` needs to be added to the server classpath as described in xref:startup-classpath[]. -Then it can be added to the server, either by overriding some existing XML configuration files such as `jetty.xml` as shown below, or by defining a custom module as described in xref:custom-modules[]. - -[source, xml] ----- - - - - - - - - - ----- - -[[more-about-handlers]] -==== More About Handlers - -See the link:{JDURL}/[latest Jetty JavaDoc] for detailed information on each Jetty handler. From 7b348f5a29db677f508f0a75f59ff1fe19cf9ef2 Mon Sep 17 00:00:00 2001 From: Simone Bordet Date: Thu, 3 Sep 2020 13:40:41 +0200 Subject: [PATCH 10/10] Improvements to the Jetty server documentation. Signed-off-by: Simone Bordet --- .../server/http/server-http-handler-implement.adoc | 2 +- .../programming-guide/server/http/server-http.adoc | 9 +++++++-- .../main/asciidoc/programming-guide/server/server.adoc | 5 ++--- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/jetty-documentation/src/main/asciidoc/programming-guide/server/http/server-http-handler-implement.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/server/http/server-http-handler-implement.adoc index fc76f104422..6ff6d17a8b9 100644 --- a/jetty-documentation/src/main/asciidoc/programming-guide/server/http/server-http-handler-implement.adoc +++ b/jetty-documentation/src/main/asciidoc/programming-guide/server/http/server-http-handler-implement.adoc @@ -31,7 +31,7 @@ This is normally the URI that is parsed from an HTTP request. However, a request could be forwarded to either a named resource, in which case `target` will be the name of the resource, or to a different URI, in which case `target` will be the new URI. Applications may wrap the request or response (or both) and forward the wrapped request or response to a different URI (which may be possibly handled by a different `Handler`). -This is the reason why there are two request parameters in the `Handler` APIs: the first is the unwrapped, original, request while the second is the application-wrapped request. +This is the reason why there are two request parameters in the `Handler` APIs: the first is the unwrapped, original, request that also gives access to Jetty-specific APIs, while the second is the application-wrapped Servlet request. [[pg-server-http-handler-impl-hello]] ===== Hello World Handler diff --git a/jetty-documentation/src/main/asciidoc/programming-guide/server/http/server-http.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/server/http/server-http.adoc index c06b4eec50f..f6d0ff14c28 100644 --- a/jetty-documentation/src/main/asciidoc/programming-guide/server/http/server-http.adoc +++ b/jetty-documentation/src/main/asciidoc/programming-guide/server/http/server-http.adoc @@ -19,7 +19,11 @@ [[pg-server-http]] === HTTP Server Libraries -The Eclipse Jetty Project has historically provided libraries to embed an HTTP server and a Servlet Container. +Web application development typically involves writing your web applications, packaging them into a web application archive, the `*.war` file, and then deploy the `*.war` file into a standalone Servlet Container that you have previously installed. + +The Eclipse Jetty server libraries allow you to write web applications components using either the Jetty APIs (by writing xref:pg-server-http-handler[Jetty ``Handler``s]) or using the standard xref:pg-server-http-handler-use-servlet[Servlet APIs] (by writing ``Servlet``s and Servlet ``Filter``s). +These components can them be programmatically assembled together, without the need of creating a `+*.war+` file, added to a Jetty ``Server`` instance that is then started. +This result in your web applications to be available to HTTP clients as if you deployed your `+*.war+` files in a standalone Jetty server. The Maven artifact coordinates are: @@ -67,7 +71,7 @@ The example above shows the simplest HTTP/1.1 server; it has no support for HTTP All these features are provided by the Jetty Server Libraries, and server applications only need to put the required components together to provide all the required features. The ``Handler``s provided by the Jetty Server Libraries allow writing server applications that have functionalities similar to Apache HTTPD or Nginx (for example: URL redirection, URL rewriting, serving static content, reverse proxying, etc.), as well as generating content dynamically by processing incoming requests. -Read xref:pg-server-http-handler[this section] for further details. +Read xref:pg-server-http-handler[this section] for further details about ``Handler``s. If you are interested in writing your server application based on the Servlet APIs, jump to xref:pg-server-http-handler-use-servlet[this section]. @@ -75,6 +79,7 @@ If you are interested in writing your server application based on the Servlet AP ==== Server Request Processing The Jetty HTTP request processing is outlined below in the diagram below. +You may want to refer to the xref:pg-arch-io[Jetty I/O architecture] for additional information about the classes mentioned below. Request handing is slightly different for each protocol; in HTTP/2 Jetty takes into account multiplexing, something that is not present in HTTP/1.1. diff --git a/jetty-documentation/src/main/asciidoc/programming-guide/server/server.adoc b/jetty-documentation/src/main/asciidoc/programming-guide/server/server.adoc index 7e1b7dd8adc..68d36d3646a 100644 --- a/jetty-documentation/src/main/asciidoc/programming-guide/server/server.adoc +++ b/jetty-documentation/src/main/asciidoc/programming-guide/server/server.adoc @@ -19,12 +19,11 @@ [[pg-server]] == Server Libraries -The Eclipse Jetty Project provides server-side libraries that allow you to embed an HTTP or WebSocket server in your applications. +The Eclipse Jetty Project provides server-side libraries that allow you to configure and start programmatically an HTTP or WebSocket server from a main class, or embed it in your existing application. A typical example is a HTTP server that needs to expose a REST endpoint. -Another example is a proxy application that receives HTTP requests and forwards them to third party services possibly using also the Jetty xref:pg-client[client libraries]. +Another example is a proxy application that receives HTTP requests, processes them, and then forwards them to third party services, for example using the Jetty xref:pg-client[client libraries]. While historically Jetty is an HTTP server, it is possible to use the Jetty server-side libraries to write a generic network server that interprets any network protocol (not only HTTP). - If you are interested in the low-level details of how the Eclipse Jetty server libraries work, or are interested in writing a custom protocol, look at the xref:pg-server-io-arch[Server I/O Architecture]. The Jetty server-side libraries provide: