Skip to content

Commit

Permalink
Fixing up standalone/deferred-deployment example
Browse files Browse the repository at this point in the history
  • Loading branch information
joakime committed Jun 26, 2024
1 parent b8e492f commit 9cfa40d
Show file tree
Hide file tree
Showing 8 changed files with 209 additions and 170 deletions.
80 changes: 76 additions & 4 deletions standalone/deferred-deployment/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,84 @@ The webapps in use on this jetty.base

## New Modules

There is a new `deploy-late` module present in this jetty.base in the `modules/deploy-late.mod`.
There are 4 new modules present in this jetty.base in the `modules/` directory.

This `deploy-late` module:
* `core-deploy-late` - a deployment app provider for `core` environment applications (based on default `core-deploy` module)
* `ee10-deploy-late` - a deployment app provider for `ee10` environment applications (based on default `ee10-deploy` module)
* `ee9-deploy-late` - a deployment app provider for `ee9` environment applications (based on default `ee9-deploy` module)
* `ee8-deploy-late` - a deployment app provider for `ee8` environment applications (based on default `ee8-deploy` module)

* provides a Jetty Deployment AppProvider that monitors for deployable
We are going to use only one of these modules for purposes of this example.

This `ee10-deploy-late` module:

* provides a Jetty Deployment AppProvider that monitors for deployable `ee10`
content in the `${jetty.base}/webapps-late/` directory.
* has `deferInitialDeploy` configuration set to `true`

This module is enabled via the `start.d/deploy-late.ini`.
This module is enabled via the `start.d/ee10-deploy-late.ini` file.


## Testing Deployment

You can make requests to 2 different URLs and look at the output.

``` shell
$ curl -vvv http://localhost:8080/appB/
* Trying 127.0.0.1:8080...
* Connected to localhost (127.0.0.1) port 8080 (#0)
> GET /appB/ HTTP/1.1
> Host: localhost:8080
> User-Agent: curl/7.81.0
> Accept: */*
>
* Mark bundle as not supporting multiuse
< HTTP/1.1 200 OK
< Server: Jetty(12.0.10)
< Last-Modified: Wed, 26 Jun 2024 15:27:42 GMT
< Content-Type: text/html
< Accept-Ranges: bytes
< Content-Length: 173
<
<html>
<head>
<title>Webapp B</title>
<link rel="stylesheet" href="dyncss/main.css"/>
</head>
<body>
<h1>WebApp B</h1>
<p>You've reached WebApp B</p>
</body>
</html>
* Connection #0 to host localhost left intact
```
This shows that `/appB/` is responding with the `index.html`
Now lets request `/appB/dyncss/main.css` ...
``` shell
$ curl -vvv http://localhost:8080/appB/dyncss/main.css
* Trying 127.0.0.1:8080...
* Connected to localhost (127.0.0.1) port 8080 (#0)
> GET /appB/dyncss/main.css HTTP/1.1
> Host: localhost:8080
> User-Agent: curl/7.81.0
> Accept: */*
>
* Mark bundle as not supporting multiuse
< HTTP/1.1 200 OK
< Server: Jetty(12.0.10)
< Content-Type: text/css;charset=utf-8
< Content-Length: 82
<
// This is the main.css from Web Application A
body {
text-style: sans-serif;
}
* Connection #0 to host localhost left intact
```
We can see that requesting content from `/appB/` is instead showing content from `/appA/`
that was requested by `appB` during the startup of that webapp.
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
<Set name="monitoredDirName">
<Call name="resolvePath" class="org.eclipse.jetty.xml.XmlConfiguration">
<Arg><Property name="jetty.base"/></Arg>
<Arg><Property name="jetty.deploy.late.monitoredDir" default="webapps-late" /></Arg>
<Arg><Property name="jetty.deploy.late.monitoredDir" default="webapps-late" /></Arg>
</Call>
</Set>
<Set name="deferInitialScan">true</Set>
Expand Down
97 changes: 43 additions & 54 deletions standalone/deferred-deployment/etc/jetty-ee10-deploy-late.xml
Original file line number Diff line number Diff line change
@@ -1,59 +1,48 @@
<?xml version="1.0"?>
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "https://www.eclipse.org/jetty/configure_10_0.dtd">

<Configure id="Server" class="org.eclipse.jetty.server.Server">
<Call id="DeploymentManager" name="getBean">
<Arg><Call class="java.lang.Class" name="forName"><Arg>org.eclipse.jetty.deploy.DeploymentManager</Arg></Call></Arg>
</Call>
<Ref refid="Environment">
<Call name="setAttribute">
<Arg>contextHandlerClass</Arg>
<Arg><Property name="contextHandlerClass"/></Arg>
</Call>
</Ref>
<Ref refid="DeploymentManager">
<Call name="addAppProvider">
<Arg>
<New id="corelate-provider" class="org.eclipse.jetty.deploy.providers.ContextProvider">
<Set name="EnvironmentName">ee10</Set>
<Set name="monitoredDirName">
<Call name="resolvePath" class="org.eclipse.jetty.xml.XmlConfiguration">
<Arg><Property name="jetty.base"/></Arg>
<Arg><Property name="jetty.deploy.late.monitoredDir" default="webapps-late" /></Arg>
</Call>
</Set>
<Set name="defaultsDescriptor">
<Property>
<Name>jetty.deploy.defaultsDescriptorPath</Name>
<Deprecated>jetty.deploy.defaultsDescriptor</Deprecated>
<Default>
<Property name="jetty.home" default="." />/etc/webdefault-ee10.xml
</Default>
<Configure id="DeploymentManager" class="org.eclipse.jetty.deploy.DeploymentManager">
<Call name="addAppProvider">
<Arg>
<New id="ee10late-provider" class="org.eclipse.jetty.deploy.providers.ContextProvider">
<Set name="EnvironmentName">ee10</Set>
<Set name="monitoredDirName">
<Call name="resolvePath" class="org.eclipse.jetty.xml.XmlConfiguration">
<Arg><Property name="jetty.base"/></Arg>
<Arg><Property name="jetty.deploy.late.monitoredDir" default="webapps-late" /></Arg>
</Call>
</Set>
<Set name="defaultsDescriptor">
<Property>
<Name>jetty.deploy.defaultsDescriptorPath</Name>
<Deprecated>jetty.deploy.defaultsDescriptor</Deprecated>
<Default>
<Property name="jetty.home" default="." />/etc/webdefault-ee10.xml
</Default>
</Property>
</Set>
<Set name="deferInitialScan">true</Set>
<Set name="scanInterval" property="jetty.deploy.scanInterval" />
<Set name="extractWars" property="jetty.deploy.extractWars" />
<Set name="parentLoaderPriority" property="jetty.deploy.parentLoaderPriority" />
<Set name="configurationClasses" property="jetty.deploy.configurationClasses" />
<Get name="properties">
<Put name="jetty.deploy.containerScanJarPattern">
<Property name="jetty.deploy.containerScanJarPattern">
<Default>.*/jakarta.servlet-api-[^/]*\.jar$|.*jakarta.servlet.jsp.jstl-.*\.jar$</Default>
</Property>
</Set>
<Set name="deferInitialScan">true</Set>
<Set name="scanInterval" property="jetty.deploy.scanInterval" />
<Set name="extractWars" property="jetty.deploy.extractWars" />
<Set name="parentLoaderPriority" property="jetty.deploy.parentLoaderPriority" />
<Set name="configurationClasses" property="jetty.deploy.configurationClasses" />
<Get name="properties">
<Put name="jetty.deploy.containerScanJarPattern">
<Property name="jetty.deploy.containerScanJarPattern">
<Default>.*/jakarta.servlet-api-[^/]*\.jar$|.*jakarta.servlet.jsp.jstl-.*\.jar$</Default>
</Property>
</Put>
<Put name="jetty.deploy.webInfScanJarPattern">
<Property name="jetty.deploy.webInfScanJarPattern"/>
</Put>
<Put name="jetty.deploy.servletContainerInitializerExclusionPattern">
<Property name="jetty.deploy.servletContainerInitializerExclusionPattern"/>
</Put>
<Put name="jetty.deploy.servletContainerInitializerOrder">
<Property name="jetty.deploy.servletContainerInitializerOrder"/>
</Put>
</Get>
</New>
</Arg>
</Call>
</Ref>
</Put>
<Put name="jetty.deploy.webInfScanJarPattern">
<Property name="jetty.deploy.webInfScanJarPattern"/>
</Put>
<Put name="jetty.deploy.servletContainerInitializerExclusionPattern">
<Property name="jetty.deploy.servletContainerInitializerExclusionPattern"/>
</Put>
<Put name="jetty.deploy.servletContainerInitializerOrder">
<Property name="jetty.deploy.servletContainerInitializerOrder"/>
</Put>
</Get>
</New>
</Arg>
</Call>
</Configure>
97 changes: 43 additions & 54 deletions standalone/deferred-deployment/etc/jetty-ee8-deploy-late.xml
Original file line number Diff line number Diff line change
@@ -1,59 +1,48 @@
<?xml version="1.0"?>
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "https://www.eclipse.org/jetty/configure_10_0.dtd">

<Configure id="Server" class="org.eclipse.jetty.server.Server">
<Call id="DeploymentManager" name="getBean">
<Arg><Call class="java.lang.Class" name="forName"><Arg>org.eclipse.jetty.deploy.DeploymentManager</Arg></Call></Arg>
</Call>
<Ref refid="Environment">
<Call name="setAttribute">
<Arg>contextHandlerClass</Arg>
<Arg><Property name="contextHandlerClass"/></Arg>
</Call>
</Ref>
<Ref refid="DeploymentManager">
<Call name="addAppProvider">
<Arg>
<New id="corelate-provider" class="org.eclipse.jetty.deploy.providers.ContextProvider">
<Set name="EnvironmentName">ee8</Set>
<Set name="monitoredDirName">
<Call name="resolvePath" class="org.eclipse.jetty.xml.XmlConfiguration">
<Arg><Property name="jetty.base"/></Arg>
<Arg><Property name="jetty.deploy.late.monitoredDir" default="webapps-late" /></Arg>
</Call>
</Set>
<Set name="defaultsDescriptor">
<Property>
<Name>jetty.deploy.defaultsDescriptorPath</Name>
<Deprecated>jetty.deploy.defaultsDescriptor</Deprecated>
<Default>
<Property name="jetty.home" default="." />/etc/webdefault-ee8.xml
</Default>
<Configure id="DeploymentManager" class="org.eclipse.jetty.deploy.DeploymentManager">
<Call name="addAppProvider">
<Arg>
<New id="ee8late-provider" class="org.eclipse.jetty.deploy.providers.ContextProvider">
<Set name="EnvironmentName">ee8</Set>
<Set name="monitoredDirName">
<Call name="resolvePath" class="org.eclipse.jetty.xml.XmlConfiguration">
<Arg><Property name="jetty.base"/></Arg>
<Arg><Property name="jetty.deploy.late.monitoredDir" default="webapps-late" /></Arg>
</Call>
</Set>
<Set name="defaultsDescriptor">
<Property>
<Name>jetty.deploy.defaultsDescriptorPath</Name>
<Deprecated>jetty.deploy.defaultsDescriptor</Deprecated>
<Default>
<Property name="jetty.home" default="." />/etc/webdefault-ee8.xml
</Default>
</Property>
</Set>
<Set name="deferInitialScan">true</Set>
<Set name="scanInterval" property="jetty.deploy.scanInterval" />
<Set name="extractWars" property="jetty.deploy.extractWars" />
<Set name="parentLoaderPriority" property="jetty.deploy.parentLoaderPriority" />
<Set name="configurationClasses" property="jetty.deploy.configurationClasses" />
<Get name="properties">
<Put name="jetty.deploy.containerScanJarPattern">
<Property name="jetty.deploy.containerScanJarPattern">
<Default>.*/jetty-servlet-api-[^/]*\.jar$|.*jakarta.servlet.jsp.jstl-.*\.jar$</Default>
</Property>
</Set>
<Set name="deferInitialScan">true</Set>
<Set name="scanInterval" property="jetty.deploy.scanInterval" />
<Set name="extractWars" property="jetty.deploy.extractWars" />
<Set name="parentLoaderPriority" property="jetty.deploy.parentLoaderPriority" />
<Set name="configurationClasses" property="jetty.deploy.configurationClasses" />
<Get name="properties">
<Put name="jetty.deploy.containerScanJarPattern">
<Property name="jetty.deploy.containerScanJarPattern">
<Default>.*/jetty-servlet-api-[^/]*\.jar$|.*jakarta.servlet.jsp.jstl-.*\.jar$</Default>
</Property>
</Put>
<Put name="jetty.deploy.webInfScanJarPattern">
<Property name="jetty.deploy.webInfScanJarPattern"/>
</Put>
<Put name="jetty.deploy.servletContainerInitializerExclusionPattern">
<Property name="jetty.deploy.servletContainerInitializerExclusionPattern"/>
</Put>
<Put name="jetty.deploy.servletContainerInitializerOrder">
<Property name="jetty.deploy.servletContainerInitializerOrder"/>
</Put>
</Get>
</New>
</Arg>
</Call>
</Ref>
</Put>
<Put name="jetty.deploy.webInfScanJarPattern">
<Property name="jetty.deploy.webInfScanJarPattern"/>
</Put>
<Put name="jetty.deploy.servletContainerInitializerExclusionPattern">
<Property name="jetty.deploy.servletContainerInitializerExclusionPattern"/>
</Put>
<Put name="jetty.deploy.servletContainerInitializerOrder">
<Property name="jetty.deploy.servletContainerInitializerOrder"/>
</Put>
</Get>
</New>
</Arg>
</Call>
</Configure>
Loading

0 comments on commit 9cfa40d

Please sign in to comment.