414635 Modular start.d and jetty.base property
This commit is contained in:
parent
1f3ec4b538
commit
21e7b67cc7
|
@ -39,14 +39,14 @@
|
||||||
<Call id="webappprovider" name="addAppProvider">
|
<Call id="webappprovider" name="addAppProvider">
|
||||||
<Arg>
|
<Arg>
|
||||||
<New class="org.eclipse.jetty.deploy.providers.WebAppProvider">
|
<New class="org.eclipse.jetty.deploy.providers.WebAppProvider">
|
||||||
<Set name="monitoredDirName"><Property name="jetty.home" default="." />/webapps</Set>
|
<Set name="monitoredDirName"><Property name="jetty.base" default="." />/webapps</Set>
|
||||||
<Set name="defaultsDescriptor"><Property name="jetty.home" default="." />/etc/webdefault.xml</Set>
|
<Set name="defaultsDescriptor"><Property name="jetty.home" default="." />/etc/webdefault.xml</Set>
|
||||||
<Set name="scanInterval">1</Set>
|
<Set name="scanInterval">1</Set>
|
||||||
<Set name="extractWars">true</Set>
|
<Set name="extractWars">true</Set>
|
||||||
<Set name="configurationManager">
|
<Set name="configurationManager">
|
||||||
<New class="org.eclipse.jetty.deploy.PropertiesConfigurationManager">
|
<New class="org.eclipse.jetty.deploy.PropertiesConfigurationManager">
|
||||||
<!-- file of context configuration properties
|
<!-- file of context configuration properties
|
||||||
<Set name="file"><SystemProperty name="jetty.home"/>/etc/some.properties</Set>
|
<Set name="file"><SystemProperty name="jetty.base"/>/etc/some.properties</Set>
|
||||||
-->
|
-->
|
||||||
<!-- set a context configuration property
|
<!-- set a context configuration property
|
||||||
<Call name="put"><Arg>name</Arg><Arg>value</Arg></Call>
|
<Call name="put"><Arg>name</Arg><Arg>value</Arg></Call>
|
||||||
|
@ -56,7 +56,6 @@
|
||||||
</New>
|
</New>
|
||||||
</Arg>
|
</Arg>
|
||||||
</Call>
|
</Call>
|
||||||
|
|
||||||
</New>
|
</New>
|
||||||
</Arg>
|
</Arg>
|
||||||
</Call>
|
</Call>
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
<Call id="webappprovider" name="addAppProvider">
|
<Call id="webappprovider" name="addAppProvider">
|
||||||
<Arg>
|
<Arg>
|
||||||
<New class="org.eclipse.jetty.deploy.providers.WebAppProvider">
|
<New class="org.eclipse.jetty.deploy.providers.WebAppProvider">
|
||||||
<Set name="monitoredDirName"><Property name="jetty.home" default="." />/webapps.demo</Set>
|
<Set name="monitoredDirName"><Property name="jetty.base" default="." />/webapps.demo</Set>
|
||||||
<Set name="defaultsDescriptor"><Property name="jetty.home" default="." />/etc/webdefault.xml</Set>
|
<Set name="defaultsDescriptor"><Property name="jetty.home" default="." />/etc/webdefault.xml</Set>
|
||||||
<Set name="scanInterval">1</Set>
|
<Set name="scanInterval">1</Set>
|
||||||
<Set name="extractWars">true</Set>
|
<Set name="extractWars">true</Set>
|
||||||
|
|
|
@ -0,0 +1,27 @@
|
||||||
|
|
||||||
|
#===========================================================
|
||||||
|
# Configure JVM arguments.
|
||||||
|
# If JVM args are include in an ini file then --exec is needed
|
||||||
|
# to start a new JVM from start.jar with the extra args.
|
||||||
|
# If you wish to avoid an extra JVM running, place JVM args
|
||||||
|
# on the normal command line and do not use --exec
|
||||||
|
#
|
||||||
|
# IF USED, THIS MODULE WILL INVOKE AN EXTRA JVM INSTANCE!!
|
||||||
|
#-----------------------------------------------------------
|
||||||
|
--exec
|
||||||
|
-Xmx2000m
|
||||||
|
-Xmn512m
|
||||||
|
-XX:+UseConcMarkSweepGC
|
||||||
|
-XX:ParallelCMSThreads=2
|
||||||
|
-XX:+CMSClassUnloadingEnabled
|
||||||
|
-XX:+UseCMSCompactAtFullCollection
|
||||||
|
-XX:CMSInitiatingOccupancyFraction=80
|
||||||
|
# -verbose:gc
|
||||||
|
# -XX:+PrintGCDateStamps
|
||||||
|
# -XX:+PrintGCTimeStamps
|
||||||
|
# -XX:+PrintGCDetails
|
||||||
|
# -XX:+PrintTenuringDistribution
|
||||||
|
# -XX:+PrintCommandLineFlags
|
||||||
|
# -XX:+DisableExplicitGC
|
||||||
|
|
||||||
|
# -Dorg.apache.jasper.compiler.disablejsr199=true
|
|
@ -0,0 +1,17 @@
|
||||||
|
#===========================================================
|
||||||
|
# NPN Next Protocol Negotiation
|
||||||
|
#
|
||||||
|
# The SPDY and HTTP/2.0 connectors require NPN. The jar for
|
||||||
|
# NPN cannot be downloaded from eclipse. So the --download
|
||||||
|
# option is used to install the NPN jar if it does not already
|
||||||
|
# exist
|
||||||
|
#
|
||||||
|
#-----------------------------------------------------------
|
||||||
|
|
||||||
|
DEFINE=npn
|
||||||
|
OPTION=npn
|
||||||
|
|
||||||
|
--exec
|
||||||
|
--download=http://repo1.maven.org/maven2/org/mortbay/jetty/npn/npn-boot/1.1.5.v20130313/npn-boot-1.1.5.v20130313.jar:lib/npn/npn-boot-1.1.5.v20130313.jar
|
||||||
|
-Xbootclasspath/p:lib/npn/npn-boot-1.1.5.v20130313.jar
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
# Add libraries from lib/ext to the classpath
|
||||||
|
|
||||||
|
OPTION=ext
|
|
@ -0,0 +1,9 @@
|
||||||
|
#===========================================================
|
||||||
|
# JMX Management
|
||||||
|
#-----------------------------------------------------------
|
||||||
|
|
||||||
|
jetty.jmxrmihost=localhost
|
||||||
|
jetty.jmxrmiport=1099
|
||||||
|
|
||||||
|
--exec
|
||||||
|
-Dcom.sun.management.jmxremote
|
|
@ -0,0 +1,3 @@
|
||||||
|
# Add the resources directory to the classpath
|
||||||
|
|
||||||
|
OPTION=resources
|
|
@ -0,0 +1,19 @@
|
||||||
|
|
||||||
|
#===========================================================
|
||||||
|
# Default Server Options
|
||||||
|
# Use the core server jars with websocket on the classpath
|
||||||
|
# Add the contents of the resources directory to the classpath
|
||||||
|
# Add jars discovered in lib/ext to the classpath
|
||||||
|
# Include the core jetty configuration file
|
||||||
|
#-----------------------------------------------------------
|
||||||
|
|
||||||
|
threads.min=10
|
||||||
|
threads.max=200
|
||||||
|
threads.timeout=60000
|
||||||
|
#jetty.host=myhost.com
|
||||||
|
jetty.dump.start=false
|
||||||
|
jetty.dump.stop=false
|
||||||
|
#jetty.logs=/var/log/jetty
|
||||||
|
|
||||||
|
OPTION=Server
|
||||||
|
etc/jetty.xml
|
|
@ -0,0 +1,7 @@
|
||||||
|
#===========================================================
|
||||||
|
# JMX Management
|
||||||
|
#-----------------------------------------------------------
|
||||||
|
|
||||||
|
OPTION=jmx
|
||||||
|
|
||||||
|
etc/jetty-jmx.xml
|
|
@ -0,0 +1,5 @@
|
||||||
|
#===========================================================
|
||||||
|
# Java Server Pages
|
||||||
|
#-----------------------------------------------------------
|
||||||
|
|
||||||
|
OPTION=jsp
|
|
@ -0,0 +1,9 @@
|
||||||
|
#===========================================================
|
||||||
|
# stderr/stdout logging.
|
||||||
|
# The following configuration will redirect stderr and stdout
|
||||||
|
# to file which is rolled over daily.
|
||||||
|
#-----------------------------------------------------------
|
||||||
|
|
||||||
|
jetty.log.retain=90
|
||||||
|
|
||||||
|
etc/jetty-logging.xml
|
|
@ -0,0 +1,14 @@
|
||||||
|
#===========================================================
|
||||||
|
# Enable SetUID
|
||||||
|
# The default user and group is 'jetty' and if you are
|
||||||
|
# starting as root you must change the run privledged to true
|
||||||
|
#-----------------------------------------------------------
|
||||||
|
|
||||||
|
jetty.startServerAsPrivileged=false
|
||||||
|
jetty.username=jetty
|
||||||
|
jetty.groupname=jetty
|
||||||
|
jetty.umask=002
|
||||||
|
|
||||||
|
OPTION=setuid
|
||||||
|
|
||||||
|
etc/jetty-setuid.xml
|
|
@ -0,0 +1,17 @@
|
||||||
|
#===========================================================
|
||||||
|
# SSL Context
|
||||||
|
# Create the keystore and trust store for use by
|
||||||
|
# HTTPS and SPDY
|
||||||
|
#-----------------------------------------------------------
|
||||||
|
|
||||||
|
jetty.keystore=etc/keystore
|
||||||
|
jetty.keystore.password=OBF:1vny1zlo1x8e1vnw1vn61x8g1zlu1vn4
|
||||||
|
jetty.keymanager.password=OBF:1u2u1wml1z7s1z7a1wnl1u2g
|
||||||
|
jetty.truststore=etc/keystore
|
||||||
|
jetty.truststore.password=OBF:1vny1zlo1x8e1vnw1vn61x8g1zlu1vn4
|
||||||
|
jetty.secure.port=8443
|
||||||
|
|
||||||
|
DEFINE=ssl
|
||||||
|
OPTION=ssl
|
||||||
|
|
||||||
|
etc/jetty-ssl.xml
|
|
@ -0,0 +1,5 @@
|
||||||
|
#===========================================================
|
||||||
|
# WebSocket Support
|
||||||
|
#-----------------------------------------------------------
|
||||||
|
|
||||||
|
OPTION=websocket
|
|
@ -0,0 +1,11 @@
|
||||||
|
#===========================================================
|
||||||
|
# HTTP Connector
|
||||||
|
#-----------------------------------------------------------
|
||||||
|
|
||||||
|
jetty.port=8080
|
||||||
|
http.timeout=30000
|
||||||
|
|
||||||
|
DEFINE=http
|
||||||
|
OPTION=http
|
||||||
|
|
||||||
|
etc/jetty-http.xml
|
|
@ -0,0 +1,13 @@
|
||||||
|
#===========================================================
|
||||||
|
# HTTPS Connector
|
||||||
|
# Must be used with jetty-ssl.xml
|
||||||
|
#-----------------------------------------------------------
|
||||||
|
|
||||||
|
jetty.https.port=8443
|
||||||
|
|
||||||
|
DEFINE=https
|
||||||
|
OPTION=https
|
||||||
|
DEPEND=ssl
|
||||||
|
|
||||||
|
etc/jetty-https.xml
|
||||||
|
|
|
@ -0,0 +1,10 @@
|
||||||
|
#===========================================================
|
||||||
|
# SPDY Connector
|
||||||
|
#-----------------------------------------------------------
|
||||||
|
|
||||||
|
jetty.spdy.port=8444
|
||||||
|
|
||||||
|
OPTION=spdy
|
||||||
|
DEPEND=npn,ssl
|
||||||
|
|
||||||
|
etc/jetty-spdy.xml
|
|
@ -0,0 +1,9 @@
|
||||||
|
# ===========================================================
|
||||||
|
# Enable JAAS
|
||||||
|
# -----------------------------------------------------------
|
||||||
|
|
||||||
|
jaas.login.conf=etc/login.conf
|
||||||
|
|
||||||
|
OPTION=jaas
|
||||||
|
|
||||||
|
etc/jetty-jaas.xml
|
|
@ -0,0 +1,5 @@
|
||||||
|
# ===========================================================
|
||||||
|
# Enable JNDI
|
||||||
|
# -----------------------------------------------------------
|
||||||
|
|
||||||
|
OPTION=jndi
|
|
@ -0,0 +1,6 @@
|
||||||
|
# ===========================================================
|
||||||
|
# Enable additional webapp environment configurators
|
||||||
|
# -----------------------------------------------------------
|
||||||
|
|
||||||
|
OPTION=plus
|
||||||
|
etc/jetty-plus.xml
|
|
@ -0,0 +1,11 @@
|
||||||
|
|
||||||
|
#===========================================================
|
||||||
|
# Request logger
|
||||||
|
# Will add a handler to log all HTTP requests to a standard
|
||||||
|
# request log format file.
|
||||||
|
#-----------------------------------------------------------
|
||||||
|
|
||||||
|
requestlog.retain=90
|
||||||
|
requestlog.append=true
|
||||||
|
requestlog.extended=true
|
||||||
|
etc/jetty-requestlog.xml
|
|
@ -0,0 +1,9 @@
|
||||||
|
# ===========================================================
|
||||||
|
# Enable servlet 3.1 annotations
|
||||||
|
# -----------------------------------------------------------
|
||||||
|
|
||||||
|
OPTION=annotations
|
||||||
|
DEPEND=plus
|
||||||
|
|
||||||
|
etc/jetty-annotations.xml
|
||||||
|
|
|
@ -0,0 +1,7 @@
|
||||||
|
#===========================================================
|
||||||
|
# WebSocket Annotations Support
|
||||||
|
#-----------------------------------------------------------
|
||||||
|
|
||||||
|
DEPEND=websocket
|
||||||
|
|
||||||
|
etc/jetty-websockets.xml
|
|
@ -0,0 +1 @@
|
||||||
|
etc/jetty-debug.xml
|
|
@ -0,0 +1 @@
|
||||||
|
etc/jetty-ipaccess.xml
|
|
@ -0,0 +1,13 @@
|
||||||
|
#===========================================================
|
||||||
|
# Low resource management
|
||||||
|
#-----------------------------------------------------------
|
||||||
|
|
||||||
|
lowresources.period=1050
|
||||||
|
lowresources.lowResourcesIdleTimeout=200
|
||||||
|
lowresources.monitorThreads=true
|
||||||
|
lowresources.maxConnections=0
|
||||||
|
lowresources.maxMemory=0
|
||||||
|
lowresources.maxLowResourcesTime=5000
|
||||||
|
|
||||||
|
etc/jetty-lowresources.xml
|
||||||
|
|
|
@ -0,0 +1,6 @@
|
||||||
|
# ===========================================================
|
||||||
|
# Enable rewrite handler
|
||||||
|
# -----------------------------------------------------------
|
||||||
|
|
||||||
|
OPTION=rewrite
|
||||||
|
etc/jetty-rewrite.xml
|
|
@ -0,0 +1 @@
|
||||||
|
etc/jetty-stats.xml
|
|
@ -0,0 +1,5 @@
|
||||||
|
#===========================================================
|
||||||
|
# Webapplication Deployer
|
||||||
|
#-----------------------------------------------------------
|
||||||
|
|
||||||
|
etc/jetty-deploy.xml
|
|
@ -6,54 +6,20 @@
|
||||||
# the start.d directory or rename it to not end with ".ini"
|
# the start.d directory or rename it to not end with ".ini"
|
||||||
# ===========================================================
|
# ===========================================================
|
||||||
|
|
||||||
# ===========================================================
|
|
||||||
# Enable rewrite handler
|
|
||||||
# -----------------------------------------------------------
|
|
||||||
OPTIONS=rewrite
|
|
||||||
etc/jetty-rewrite.xml
|
|
||||||
|
|
||||||
# ===========================================================
|
|
||||||
# Add a deploy app provider to scan the webapps.demo directory
|
|
||||||
# -----------------------------------------------------------
|
|
||||||
etc/jetty-demo.xml
|
|
||||||
|
|
||||||
# ===========================================================
|
# The following options are explicitly configured for the demo
|
||||||
# Enable the Jetty HTTP client APIs for use by demo webapps
|
# in this file. Thus they cannot be used with the normal
|
||||||
# -----------------------------------------------------------
|
# activation of them
|
||||||
OPTIONS=client
|
|
||||||
|
|
||||||
# ===========================================================
|
|
||||||
# Enable the test-realm login service for use by authentication
|
|
||||||
# demonstrations
|
|
||||||
# -----------------------------------------------------------
|
|
||||||
etc/test-realm.xml
|
|
||||||
|
|
||||||
# ===========================================================
|
|
||||||
# Enable JAAS test webapp
|
|
||||||
# -----------------------------------------------------------
|
|
||||||
OPTIONS=jaas
|
|
||||||
jaas.login.conf=webapps.demo/test-jaas.d/login.conf
|
jaas.login.conf=webapps.demo/test-jaas.d/login.conf
|
||||||
|
EXCLUDE=jaas,jndi,rewrite,client
|
||||||
|
OPTION=jaas,jndi,rewrite,client
|
||||||
|
|
||||||
|
etc/jetty-rewrite.xml
|
||||||
etc/jetty-jaas.xml
|
etc/jetty-jaas.xml
|
||||||
|
|
||||||
# ===========================================================
|
# Activate the demo options and configurations
|
||||||
# Enable JNDI test webapp
|
OPTION=jndi.demo
|
||||||
# -----------------------------------------------------------
|
etc/jetty-demo.xml
|
||||||
OPTIONS=jndi,jndi.demo
|
etc/test-realm.xml
|
||||||
|
|
||||||
# ===========================================================
|
|
||||||
# Enable additional webapp environment configurators
|
|
||||||
# -----------------------------------------------------------
|
|
||||||
# OPTIONS=plus
|
|
||||||
# etc/jetty-plus.xml
|
|
||||||
|
|
||||||
# ===========================================================
|
|
||||||
# Enable servlet 3.1 annotations
|
|
||||||
# -----------------------------------------------------------
|
|
||||||
# OPTIONS=annotations
|
|
||||||
# etc/jetty-annotations.xml
|
|
||||||
|
|
||||||
# ===========================================================
|
|
||||||
# Enable https listener
|
|
||||||
# -----------------------------------------------------------
|
|
||||||
etc/jetty-ssl.xml
|
|
||||||
etc/jetty-https.xml
|
|
||||||
|
|
|
@ -12,8 +12,11 @@
|
||||||
# Each line in this file is prepended to the command line
|
# Each line in this file is prepended to the command line
|
||||||
# as arguments, which may be either:
|
# as arguments, which may be either:
|
||||||
# + A property like: name=value
|
# + A property like: name=value
|
||||||
|
# + Activation of an option: OPTION=option
|
||||||
|
+ The declaration of a new option: DEFINE=option
|
||||||
|
+ An option dependency: DEPEND=option,option
|
||||||
|
+ An option exclusion: EXCLUDE=option,option
|
||||||
# + A file of properties like: /etc/myjetty.properties
|
# + A file of properties like: /etc/myjetty.properties
|
||||||
# + A classpath option like: OPTION=jmx
|
|
||||||
# + An XML configuration file like: etc/jetty-feature.xml
|
# + An XML configuration file like: etc/jetty-feature.xml
|
||||||
# + A start.jar option like: --dry-run
|
# + A start.jar option like: --dry-run
|
||||||
#
|
#
|
||||||
|
@ -23,231 +26,11 @@
|
||||||
# + A System Property like: -Dcom.sun.management.jmxremote
|
# + A System Property like: -Dcom.sun.management.jmxremote
|
||||||
#
|
#
|
||||||
#-----------------------------------------------------------
|
#-----------------------------------------------------------
|
||||||
#
|
|
||||||
# NOTE: The lines in this file may be uncommented to activate
|
|
||||||
# features. Alternately, the lines may be copied to a ini file
|
|
||||||
# in the start.d directory to enabled configuration without
|
|
||||||
# editing this file. See start.d/900-demo.ini for an example.
|
|
||||||
#
|
|
||||||
# Future releases will switch start.d style configuration for
|
|
||||||
# all features.
|
|
||||||
#===========================================================
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#===========================================================
|
|
||||||
# Configure JVM arguments.
|
|
||||||
# If JVM args are include in an ini file then --exec is needed
|
|
||||||
# to start a new JVM from start.jar with the extra args.
|
|
||||||
# If you wish to avoid an extra JVM running, place JVM args
|
|
||||||
# on the normal command line and do not use --exec
|
|
||||||
#-----------------------------------------------------------
|
|
||||||
# --exec
|
|
||||||
# -Xmx2000m
|
|
||||||
# -Xmn512m
|
|
||||||
# -XX:+UseConcMarkSweepGC
|
|
||||||
# -XX:ParallelCMSThreads=2
|
|
||||||
# -XX:+CMSClassUnloadingEnabled
|
|
||||||
# -XX:+UseCMSCompactAtFullCollection
|
|
||||||
# -XX:CMSInitiatingOccupancyFraction=80
|
|
||||||
# -verbose:gc
|
|
||||||
# -XX:+PrintGCDateStamps
|
|
||||||
# -XX:+PrintGCTimeStamps
|
|
||||||
# -XX:+PrintGCDetails
|
|
||||||
# -XX:+PrintTenuringDistribution
|
|
||||||
# -XX:+PrintCommandLineFlags
|
|
||||||
# -XX:+DisableExplicitGC
|
|
||||||
|
|
||||||
# -Dorg.apache.jasper.compiler.disablejsr199=true
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#===========================================================
|
|
||||||
# Default Server Options
|
|
||||||
# Use the core server jars with websocket on the classpath
|
|
||||||
# Add the contents of the resources directory to the classpath
|
|
||||||
# Add jars discovered in lib/ext to the classpath
|
|
||||||
# Include the core jetty configuration file
|
|
||||||
#-----------------------------------------------------------
|
|
||||||
OPTIONS=Server,resources,ext
|
|
||||||
threads.min=10
|
|
||||||
threads.max=200
|
|
||||||
threads.timeout=60000
|
|
||||||
#jetty.host=myhost.com
|
|
||||||
jetty.dump.start=false
|
|
||||||
jetty.dump.stop=false
|
|
||||||
|
|
||||||
etc/jetty.xml
|
|
||||||
|
|
||||||
#===========================================================
|
|
||||||
# Servlet 3.x Annotation Support
|
|
||||||
#-----------------------------------------------------------
|
|
||||||
OPTIONS=plus,annotations
|
|
||||||
etc/jetty-plus.xml
|
|
||||||
etc/jetty-annotations.xml
|
|
||||||
|
|
||||||
#===========================================================
|
|
||||||
# WebSocket Support
|
|
||||||
# To enable websocket server support (both apis)
|
|
||||||
# org.eclipse.jetty.websocket.api (API)
|
|
||||||
# javax.websocket (API)
|
|
||||||
#-----------------------------------------------------------
|
|
||||||
OPTIONS=websocket
|
|
||||||
etc/jetty-websockets.xml
|
|
||||||
|
|
||||||
#===========================================================
|
|
||||||
# JMX Management
|
|
||||||
# To enable remote JMX access uncomment jmxremote and
|
|
||||||
# enable --exec
|
|
||||||
#-----------------------------------------------------------
|
|
||||||
OPTIONS=jmx
|
|
||||||
# jetty.jmxrmihost=localhost
|
|
||||||
# jetty.jmxrmiport=1099
|
|
||||||
# -Dcom.sun.management.jmxremote
|
|
||||||
etc/jetty-jmx.xml
|
|
||||||
|
|
||||||
#===========================================================
|
|
||||||
# Java Server Pages
|
|
||||||
#-----------------------------------------------------------
|
|
||||||
OPTIONS=jsp
|
|
||||||
|
|
||||||
#===========================================================
|
|
||||||
# Request logger
|
|
||||||
# Will add a handler to log all HTTP requests to a standard
|
|
||||||
# request log format file.
|
|
||||||
#-----------------------------------------------------------
|
|
||||||
# requestlog.retain=90
|
|
||||||
# requestlog.append=true
|
|
||||||
# requestlog.extended=true
|
|
||||||
# etc/jetty-requestlog.xml
|
|
||||||
|
|
||||||
|
|
||||||
#===========================================================
|
|
||||||
# stderr/stdout logging.
|
|
||||||
# The following configuration will redirect stderr and stdout
|
|
||||||
# to file which is rolled over daily.
|
|
||||||
#-----------------------------------------------------------
|
|
||||||
# jetty.log.retain=90
|
|
||||||
# etc/jetty-logging.xml
|
|
||||||
|
|
||||||
|
|
||||||
#===========================================================
|
|
||||||
# Enable SetUID
|
|
||||||
# The default user and group is 'jetty' and if you are
|
|
||||||
# starting as root you must change the run privledged to true
|
|
||||||
#-----------------------------------------------------------
|
|
||||||
# OPTIONS=setuid
|
|
||||||
# jetty.startServerAsPrivileged=false
|
|
||||||
# jetty.username=jetty
|
|
||||||
# jetty.groupname=jetty
|
|
||||||
# jetty.umask=002
|
|
||||||
# etc/jetty-setuid.xml
|
|
||||||
|
|
||||||
|
|
||||||
#===========================================================
|
|
||||||
# HTTP Connector
|
|
||||||
#-----------------------------------------------------------
|
|
||||||
jetty.port=8080
|
|
||||||
http.timeout=30000
|
|
||||||
etc/jetty-http.xml
|
|
||||||
|
|
||||||
|
|
||||||
#===========================================================
|
|
||||||
# SSL Context
|
|
||||||
# Create the keystore and trust store for use by
|
|
||||||
# HTTPS and SPDY
|
|
||||||
#-----------------------------------------------------------
|
|
||||||
# jetty.keystore=etc/keystore
|
|
||||||
# jetty.keystore.password=OBF:1vny1zlo1x8e1vnw1vn61x8g1zlu1vn4
|
|
||||||
# jetty.keymanager.password=OBF:1u2u1wml1z7s1z7a1wnl1u2g
|
|
||||||
# jetty.truststore=etc/keystore
|
|
||||||
# jetty.truststore.password=OBF:1vny1zlo1x8e1vnw1vn61x8g1zlu1vn4
|
|
||||||
# jetty.secure.port=8443
|
|
||||||
# etc/jetty-ssl.xml
|
|
||||||
|
|
||||||
|
|
||||||
#===========================================================
|
|
||||||
# HTTPS Connector
|
|
||||||
# Must be used with jetty-ssl.xml
|
|
||||||
#-----------------------------------------------------------
|
|
||||||
# jetty.https.port=8443
|
|
||||||
# etc/jetty-https.xml
|
|
||||||
|
|
||||||
|
|
||||||
#===========================================================
|
|
||||||
# NPN Next Protocol Negotiation
|
|
||||||
#
|
|
||||||
# The SPDY and HTTP/2.0 connectors require NPN. The jar for
|
|
||||||
# NPN cannot be downloaded from eclipse. So the --download
|
|
||||||
# option is used to install the NPN jar if it does not already
|
|
||||||
# exist
|
|
||||||
#
|
|
||||||
#-----------------------------------------------------------
|
|
||||||
# --exec
|
|
||||||
# --download=http://repo1.maven.org/maven2/org/mortbay/jetty/npn/npn-boot/1.1.5.v20130313/npn-boot-1.1.5.v20130313.jar:lib/npn/npn-boot-1.1.5.v20130313.jar
|
|
||||||
# -Xbootclasspath/p:lib/npn/npn-boot-1.1.5.v20130313.jar
|
|
||||||
|
|
||||||
|
|
||||||
#===========================================================
|
|
||||||
# SPDY Connector
|
|
||||||
# Requires SSL Context and NPN from above
|
|
||||||
#-----------------------------------------------------------
|
|
||||||
# OPTIONS=spdy
|
|
||||||
# jetty.spdy.port=8443
|
|
||||||
# etc/jetty-spdy.xml
|
|
||||||
|
|
||||||
|
|
||||||
#===========================================================
|
|
||||||
# Webapplication Deployer
|
|
||||||
#-----------------------------------------------------------
|
|
||||||
etc/jetty-deploy.xml
|
|
||||||
|
|
||||||
|
|
||||||
# ===========================================================
|
|
||||||
# Enable JAAS
|
|
||||||
# -----------------------------------------------------------
|
|
||||||
# OPTIONS=jaas
|
|
||||||
# jaas.login.conf=etc/login.conf
|
|
||||||
# etc/jetty-jaas.xml
|
|
||||||
|
|
||||||
# ===========================================================
|
|
||||||
# Enable JNDI
|
|
||||||
# -----------------------------------------------------------
|
|
||||||
# OPTIONS=jndi
|
|
||||||
|
|
||||||
# ===========================================================
|
|
||||||
# Enable additional webapp environment configurators
|
|
||||||
# -----------------------------------------------------------
|
|
||||||
# OPTIONS=plus
|
|
||||||
# etc/jetty-plus.xml
|
|
||||||
|
|
||||||
# ===========================================================
|
|
||||||
# Enable servlet 3.1 annotations
|
|
||||||
# -----------------------------------------------------------
|
|
||||||
# OPTIONS=annotations
|
|
||||||
# etc/jetty-annotations.xml
|
|
||||||
|
|
||||||
#===========================================================
|
|
||||||
# Other server features
|
|
||||||
#-----------------------------------------------------------
|
|
||||||
# etc/jetty-debug.xml
|
|
||||||
# etc/jetty-ipaccess.xml
|
|
||||||
# etc/jetty-stats.xml
|
|
||||||
|
|
||||||
|
|
||||||
#===========================================================
|
|
||||||
# Low resource managment
|
|
||||||
#-----------------------------------------------------------
|
|
||||||
# lowresources.period=1050
|
|
||||||
# lowresources.lowResourcesIdleTimeout=200
|
|
||||||
# lowresources.monitorThreads=true
|
|
||||||
# lowresources.maxConnections=0
|
|
||||||
# lowresources.maxMemory=0
|
|
||||||
# lowresources.maxLowResourcesTime=5000
|
|
||||||
# etc/jetty-lowresources.xml
|
|
||||||
|
|
||||||
|
|
||||||
#===========================================================
|
#===========================================================
|
||||||
# The start.d directory contains the active start.ini fragments
|
# The start.d directory contains the active start.ini fragments
|
||||||
start.d/
|
start.d/
|
||||||
|
#-----------------------------------------------------------
|
||||||
|
|
||||||
|
|
|
@ -7,10 +7,10 @@
|
||||||
<!-- and either jetty-https.xml or jetty-spdy.xml (but not both) -->
|
<!-- and either jetty-https.xml or jetty-spdy.xml (but not both) -->
|
||||||
<!-- ============================================================= -->
|
<!-- ============================================================= -->
|
||||||
<Configure id="sslContextFactory" class="org.eclipse.jetty.util.ssl.SslContextFactory">
|
<Configure id="sslContextFactory" class="org.eclipse.jetty.util.ssl.SslContextFactory">
|
||||||
<Set name="KeyStorePath"><Property name="jetty.home" default="." />/<Property name="jetty.keystore" default="etc/keystore"/></Set>
|
<Set name="KeyStorePath"><Property name="jetty.base" default="." />/<Property name="jetty.keystore" default="etc/keystore"/></Set>
|
||||||
<Set name="KeyStorePassword"><Property name="jetty.keystore.password" default="OBF:1vny1zlo1x8e1vnw1vn61x8g1zlu1vn4"/></Set>
|
<Set name="KeyStorePassword"><Property name="jetty.keystore.password" default="OBF:1vny1zlo1x8e1vnw1vn61x8g1zlu1vn4"/></Set>
|
||||||
<Set name="KeyManagerPassword"><Property name="jetty.keymanager.password" default="OBF:1u2u1wml1z7s1z7a1wnl1u2g"/></Set>
|
<Set name="KeyManagerPassword"><Property name="jetty.keymanager.password" default="OBF:1u2u1wml1z7s1z7a1wnl1u2g"/></Set>
|
||||||
<Set name="TrustStorePath"><Property name="jetty.home" default="." />/<Property name="jetty.truststore" default="etc/keystore"/></Set>
|
<Set name="TrustStorePath"><Property name="jetty.base" default="." />/<Property name="jetty.truststore" default="etc/keystore"/></Set>
|
||||||
<Set name="TrustStorePassword"><Property name="jetty.truststore.password" default="OBF:1vny1zlo1x8e1vnw1vn61x8g1zlu1vn4"/></Set>
|
<Set name="TrustStorePassword"><Property name="jetty.truststore.password" default="OBF:1vny1zlo1x8e1vnw1vn61x8g1zlu1vn4"/></Set>
|
||||||
<Set name="EndpointIdentificationAlgorithm"></Set>
|
<Set name="EndpointIdentificationAlgorithm"></Set>
|
||||||
<Set name="ExcludeCipherSuites">
|
<Set name="ExcludeCipherSuites">
|
||||||
|
|
|
@ -45,6 +45,8 @@ import java.util.Set;
|
||||||
import java.util.StringTokenizer;
|
import java.util.StringTokenizer;
|
||||||
import java.util.TreeSet;
|
import java.util.TreeSet;
|
||||||
|
|
||||||
|
import org.omg.CORBA._PolicyStub;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>
|
* <p>
|
||||||
* It allows an application to be started with the command <code>"java -jar start.jar"</code>.
|
* It allows an application to be started with the command <code>"java -jar start.jar"</code>.
|
||||||
|
@ -184,14 +186,14 @@ public class Config
|
||||||
|
|
||||||
private static final String _version;
|
private static final String _version;
|
||||||
private static boolean DEBUG = false;
|
private static boolean DEBUG = false;
|
||||||
private static final Map<String, String> __properties = new HashMap<String, String>();
|
private final Map<String, String> _properties = new HashMap<String, String>();
|
||||||
private final Map<String, Classpath> _classpaths = new HashMap<String, Classpath>();
|
private final Map<String, Classpath> _classpaths = new HashMap<String, Classpath>();
|
||||||
private final List<String> _xml = new ArrayList<String>();
|
private final List<String> _xml = new ArrayList<String>();
|
||||||
private String _classname = null;
|
private String _classname = null;
|
||||||
|
|
||||||
private int argCount = 0;
|
private int argCount = 0;
|
||||||
|
|
||||||
private final Set<String> _activeOptions = new TreeSet<String>(new Comparator<String>()
|
private final Set<String> _options = new TreeSet<String>(new Comparator<String>()
|
||||||
{
|
{
|
||||||
// Make sure "*" is always at the end of the list
|
// Make sure "*" is always at the end of the list
|
||||||
public int compare(String o1, String o2)
|
public int compare(String o1, String o2)
|
||||||
|
@ -208,17 +210,24 @@ public class Config
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
public Classpath defineOption(String option)
|
||||||
|
{
|
||||||
|
Classpath cp = _classpaths.get(option);
|
||||||
|
if (cp == null)
|
||||||
|
{
|
||||||
|
cp = new Classpath();
|
||||||
|
_classpaths.put(option,cp);
|
||||||
|
}
|
||||||
|
return cp;
|
||||||
|
}
|
||||||
|
|
||||||
private boolean addClasspathComponent(List<String> sections, String component)
|
private boolean addClasspathComponent(List<String> sections, String component)
|
||||||
{
|
{
|
||||||
for (String section : sections)
|
for (String section : sections)
|
||||||
{
|
{
|
||||||
Classpath cp = _classpaths.get(section);
|
Classpath cp = defineOption(section);
|
||||||
if (cp == null)
|
|
||||||
cp = new Classpath();
|
|
||||||
|
|
||||||
boolean added = cp.addComponent(component);
|
boolean added = cp.addComponent(component);
|
||||||
_classpaths.put(section,cp);
|
|
||||||
|
|
||||||
if (!added)
|
if (!added)
|
||||||
{
|
{
|
||||||
// First failure means all failed.
|
// First failure means all failed.
|
||||||
|
@ -234,10 +243,6 @@ public class Config
|
||||||
for (String section : sections)
|
for (String section : sections)
|
||||||
{
|
{
|
||||||
Classpath cp = _classpaths.get(section);
|
Classpath cp = _classpaths.get(section);
|
||||||
if (cp == null)
|
|
||||||
{
|
|
||||||
cp = new Classpath();
|
|
||||||
}
|
|
||||||
if (!cp.addClasspath(path))
|
if (!cp.addClasspath(path))
|
||||||
{
|
{
|
||||||
// First failure means all failed.
|
// First failure means all failed.
|
||||||
|
@ -385,7 +390,7 @@ public class Config
|
||||||
*/
|
*/
|
||||||
public Classpath getActiveClasspath()
|
public Classpath getActiveClasspath()
|
||||||
{
|
{
|
||||||
return getCombinedClasspath(_activeOptions);
|
return getCombinedClasspath(_options);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -408,7 +413,7 @@ public class Config
|
||||||
Classpath otherCp = _classpaths.get(optionId);
|
Classpath otherCp = _classpaths.get(optionId);
|
||||||
if (otherCp == null)
|
if (otherCp == null)
|
||||||
{
|
{
|
||||||
throw new IllegalArgumentException("No such OPTIONS: " + optionId);
|
throw new IllegalArgumentException("No such OPTION: " + optionId);
|
||||||
}
|
}
|
||||||
cp.overlay(otherCp);
|
cp.overlay(otherCp);
|
||||||
}
|
}
|
||||||
|
@ -421,12 +426,12 @@ public class Config
|
||||||
return _classname;
|
return _classname;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void clearProperties()
|
public void clearProperties()
|
||||||
{
|
{
|
||||||
__properties.clear();
|
_properties.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Properties getProperties()
|
public Properties getProperties()
|
||||||
{
|
{
|
||||||
Properties properties = new Properties();
|
Properties properties = new Properties();
|
||||||
// Add System Properties First
|
// Add System Properties First
|
||||||
|
@ -436,30 +441,30 @@ public class Config
|
||||||
properties.put(name, System.getProperty(name));
|
properties.put(name, System.getProperty(name));
|
||||||
}
|
}
|
||||||
// Add Config Properties Next (overwriting any System Properties that exist)
|
// Add Config Properties Next (overwriting any System Properties that exist)
|
||||||
for (String key : __properties.keySet()) {
|
for (String key : _properties.keySet()) {
|
||||||
properties.put(key,__properties.get(key));
|
properties.put(key,_properties.get(key));
|
||||||
}
|
}
|
||||||
return properties;
|
return properties;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String getProperty(String name)
|
public String getProperty(String name)
|
||||||
{
|
{
|
||||||
if ("version".equalsIgnoreCase(name)) {
|
if ("version".equalsIgnoreCase(name)) {
|
||||||
return _version;
|
return _version;
|
||||||
}
|
}
|
||||||
// Search Config Properties First
|
// Search Config Properties First
|
||||||
if (__properties.containsKey(name)) {
|
if (_properties.containsKey(name)) {
|
||||||
return __properties.get(name);
|
return _properties.get(name);
|
||||||
}
|
}
|
||||||
// Return what exists in System.Properties otherwise.
|
// Return what exists in System.Properties otherwise.
|
||||||
return System.getProperty(name);
|
return System.getProperty(name);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String getProperty(String name, String defaultValue)
|
public String getProperty(String name, String defaultValue)
|
||||||
{
|
{
|
||||||
// Search Config Properties First
|
// Search Config Properties First
|
||||||
if (__properties.containsKey(name))
|
if (_properties.containsKey(name))
|
||||||
return __properties.get(name);
|
return _properties.get(name);
|
||||||
// Return what exists in System.Properties otherwise.
|
// Return what exists in System.Properties otherwise.
|
||||||
return System.getProperty(name, defaultValue);
|
return System.getProperty(name, defaultValue);
|
||||||
}
|
}
|
||||||
|
@ -956,31 +961,46 @@ public class Config
|
||||||
}
|
}
|
||||||
if (name.equals("OPTIONS"))
|
if (name.equals("OPTIONS"))
|
||||||
{
|
{
|
||||||
_activeOptions.clear();
|
_options.clear();
|
||||||
String ids[] = value.split(",");
|
String ids[] = value.split(",");
|
||||||
for (String id : ids)
|
for (String id : ids)
|
||||||
|
addOption(id);
|
||||||
|
}
|
||||||
|
if (name.equals("jetty.base"))
|
||||||
{
|
{
|
||||||
addActiveOption(id);
|
File base=new File(value);
|
||||||
|
try
|
||||||
|
{
|
||||||
|
value=base.getCanonicalPath();
|
||||||
|
}
|
||||||
|
catch(Exception e)
|
||||||
|
{
|
||||||
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
__properties.put(name,value);
|
_properties.put(name,value);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addActiveOption(String option)
|
public void addOption(String option)
|
||||||
{
|
{
|
||||||
_activeOptions.add(option);
|
_options.add(option);
|
||||||
__properties.put("OPTIONS",join(_activeOptions,","));
|
_properties.put("OPTIONS",join(_options,","));
|
||||||
}
|
}
|
||||||
|
|
||||||
public Set<String> getActiveOptions()
|
public Set<String> getKnownOptions()
|
||||||
{
|
{
|
||||||
return _activeOptions;
|
return _classpaths.keySet();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void removeActiveOption(String option)
|
public Set<String> getOptions()
|
||||||
{
|
{
|
||||||
_activeOptions.remove(option);
|
return _options;
|
||||||
__properties.put("OPTIONS",join(_activeOptions,","));
|
}
|
||||||
|
|
||||||
|
public void removeOption(String option)
|
||||||
|
{
|
||||||
|
_options.remove(option);
|
||||||
|
_properties.put("OPTIONS",join(_options,","));
|
||||||
}
|
}
|
||||||
|
|
||||||
private String join(Collection<?> coll, String delim)
|
private String join(Collection<?> coll, String delim)
|
||||||
|
@ -999,4 +1019,37 @@ public class Config
|
||||||
return buf.toString();
|
return buf.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getJettyHome()
|
||||||
|
{
|
||||||
|
return getProperty("jetty.home");
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getJettyBase()
|
||||||
|
{
|
||||||
|
return getProperty("jetty.base");
|
||||||
|
}
|
||||||
|
|
||||||
|
public File getFileBaseHomeAbs(String filename)
|
||||||
|
{
|
||||||
|
File file;
|
||||||
|
|
||||||
|
String base = getJettyBase();
|
||||||
|
if (base!=null)
|
||||||
|
{
|
||||||
|
file=new File(base,filename);
|
||||||
|
if (file.exists())
|
||||||
|
return file;
|
||||||
|
}
|
||||||
|
|
||||||
|
file=new File(getJettyHome(),filename);
|
||||||
|
if (file.exists())
|
||||||
|
return file;
|
||||||
|
|
||||||
|
file=new File(filename);
|
||||||
|
if (file.exists())
|
||||||
|
return file;
|
||||||
|
|
||||||
|
return null;
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -51,8 +51,6 @@ import java.util.Locale;
|
||||||
import java.util.Properties;
|
import java.util.Properties;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
import javax.naming.OperationNotSupportedException;
|
|
||||||
|
|
||||||
/*-------------------------------------------*/
|
/*-------------------------------------------*/
|
||||||
/**
|
/**
|
||||||
* <p>
|
* <p>
|
||||||
|
@ -82,19 +80,17 @@ public class Main
|
||||||
private boolean _dryRun = false;
|
private boolean _dryRun = false;
|
||||||
private boolean _exec = false;
|
private boolean _exec = false;
|
||||||
private final Config _config = new Config();
|
private final Config _config = new Config();
|
||||||
private final Set<String> _sysProps = new HashSet<String>();
|
private final Set<String> _sysProps = new HashSet<>();
|
||||||
private final List<String> _jvmArgs = new ArrayList<String>();
|
private final List<String> _jvmArgs = new ArrayList<>();
|
||||||
|
private final List<File> _iniFiles = new ArrayList<>();
|
||||||
private String _startConfig = null;
|
private String _startConfig = null;
|
||||||
|
|
||||||
private String _jettyHome;
|
|
||||||
|
|
||||||
public static void main(String[] args)
|
public static void main(String[] args)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
Main main = new Main();
|
Main main = new Main();
|
||||||
List<String> arguments = main.expandCommandLine(args);
|
List<String> xmls = main.processCommandLine(args);
|
||||||
List<String> xmls = main.processCommandLine(arguments);
|
|
||||||
if (xmls != null)
|
if (xmls != null)
|
||||||
main.start(xmls);
|
main.start(xmls);
|
||||||
}
|
}
|
||||||
|
@ -106,64 +102,36 @@ public class Main
|
||||||
|
|
||||||
Main() throws IOException
|
Main() throws IOException
|
||||||
{
|
{
|
||||||
_jettyHome = System.getProperty("jetty.home",".");
|
String jetty_home=new File(System.getProperty("jetty.home",".")).getCanonicalPath();
|
||||||
_jettyHome = new File(_jettyHome).getCanonicalPath();
|
_config.setProperty("jetty.home",jetty_home);
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<String> expandCommandLine(String[] args) throws Exception
|
Config getConfig()
|
||||||
{
|
{
|
||||||
List<String> arguments = new ArrayList<String>();
|
return _config;
|
||||||
|
}
|
||||||
|
|
||||||
// add the command line args and look for start.ini args
|
public List<String> processCommandLine(String[] args) throws Exception
|
||||||
boolean ini = false;
|
|
||||||
for (String arg : args)
|
|
||||||
{
|
{
|
||||||
|
String source="";
|
||||||
|
|
||||||
|
// Handle default ini args
|
||||||
|
ArrayList<String> arguments = new ArrayList<>(Arrays.asList(args));
|
||||||
|
boolean ini=false;
|
||||||
|
for(String arg : arguments)
|
||||||
if (arg.startsWith("--ini=") || arg.equals("--ini"))
|
if (arg.startsWith("--ini=") || arg.equals("--ini"))
|
||||||
{
|
|
||||||
ini = true;
|
ini = true;
|
||||||
if (arg.length() > 6)
|
|
||||||
{
|
|
||||||
arguments.addAll(loadStartIni(new File(arg.substring(6))));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (arg.startsWith("--config="))
|
|
||||||
{
|
|
||||||
_startConfig = arg.substring(9);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
arguments.add(arg);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// if no non-option inis, add the start.ini and start.d
|
|
||||||
if (!ini)
|
if (!ini)
|
||||||
{
|
arguments.add("--ini=start.ini");
|
||||||
arguments.addAll(0,parseStartIniFiles());
|
|
||||||
}
|
|
||||||
|
|
||||||
return arguments;
|
|
||||||
}
|
|
||||||
|
|
||||||
List<String> parseStartIniFiles()
|
|
||||||
{
|
|
||||||
List<String> ini_args = new ArrayList<String>();
|
|
||||||
File start_ini = new File(_jettyHome,"start.ini");
|
|
||||||
if (start_ini.exists())
|
|
||||||
ini_args.addAll(loadStartIni(start_ini));
|
|
||||||
|
|
||||||
return ini_args;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<String> processCommandLine(List<String> arguments) throws Exception
|
|
||||||
{
|
|
||||||
// The XML Configuration Files to initialize with
|
// The XML Configuration Files to initialize with
|
||||||
List<String> xmls = new ArrayList<String>();
|
List<String> xmls = new ArrayList<String>();
|
||||||
|
|
||||||
// Process the arguments
|
// Process the arguments in for loop so list of args can be extended.
|
||||||
int startup = 0;
|
for (int i=0;i<arguments.size();i++)
|
||||||
for (String arg : arguments)
|
|
||||||
{
|
{
|
||||||
|
String arg=arguments.get(i);
|
||||||
|
|
||||||
if ("--help".equals(arg) || "-?".equals(arg))
|
if ("--help".equals(arg) || "-?".equals(arg))
|
||||||
{
|
{
|
||||||
_showUsage = true;
|
_showUsage = true;
|
||||||
|
@ -172,9 +140,9 @@ public class Main
|
||||||
|
|
||||||
if ("--stop".equals(arg))
|
if ("--stop".equals(arg))
|
||||||
{
|
{
|
||||||
int port = Integer.parseInt(Config.getProperty("STOP.PORT","-1"));
|
int port = Integer.parseInt(_config.getProperty("STOP.PORT","-1"));
|
||||||
String key = Config.getProperty("STOP.KEY",null);
|
String key = _config.getProperty("STOP.KEY",null);
|
||||||
int timeout = Integer.parseInt(Config.getProperty("STOP.WAIT","0"));
|
int timeout = Integer.parseInt(_config.getProperty("STOP.WAIT","0"));
|
||||||
stop(port,key,timeout);
|
stop(port,key,timeout);
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
@ -215,6 +183,28 @@ public class Main
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (arg.startsWith("--ini=") || arg.equals("--ini"))
|
||||||
|
{
|
||||||
|
ini = true;
|
||||||
|
if (arg.length() > 6)
|
||||||
|
{
|
||||||
|
String name=arg.substring(6);
|
||||||
|
File file=_config.getFileBaseHomeAbs(name);
|
||||||
|
arguments.addAll(i+1,loadStartIni(file,name));
|
||||||
|
}
|
||||||
|
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (arg.startsWith("--config="))
|
||||||
|
{
|
||||||
|
_startConfig = arg.substring(9);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// Special internal indicator that jetty was started by the jetty.sh Daemon
|
// Special internal indicator that jetty was started by the jetty.sh Daemon
|
||||||
if ("--daemon".equals(arg))
|
if ("--daemon".equals(arg))
|
||||||
{
|
{
|
||||||
|
@ -278,17 +268,58 @@ public class Main
|
||||||
switch (assign.length)
|
switch (assign.length)
|
||||||
{
|
{
|
||||||
case 2:
|
case 2:
|
||||||
if ("OPTIONS".equals(assign[0]))
|
if ("_SRC_".equals(assign[0]))
|
||||||
|
{
|
||||||
|
source=assign[1].trim();
|
||||||
|
}
|
||||||
|
else if ("DEFINE".equals(assign[0]))
|
||||||
{
|
{
|
||||||
String opts[] = assign[1].split(",");
|
String opts[] = assign[1].split(",");
|
||||||
for (String opt : opts)
|
for (String opt : opts)
|
||||||
_config.addActiveOption(opt.trim());
|
_config.defineOption(opt.trim());
|
||||||
|
}
|
||||||
|
else if ("DEPEND".equals(assign[0]))
|
||||||
|
{
|
||||||
|
String opts[] = assign[1].split(",");
|
||||||
|
for (String opt : opts)
|
||||||
|
{
|
||||||
|
opt=opt.trim();
|
||||||
|
if (!_config.getOptions().contains(opt))
|
||||||
|
{
|
||||||
|
System.err.printf("Missing Dependency: %s DEPEND %s%n",path(source),opt );
|
||||||
|
usageExit(ERR_LOGGING);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if ("EXCLUDE".equals(assign[0]))
|
||||||
|
{
|
||||||
|
String opts[] = assign[1].split(",");
|
||||||
|
for (String opt : opts)
|
||||||
|
{
|
||||||
|
opt=opt.trim();
|
||||||
|
if (_config.getOptions().contains(opt))
|
||||||
|
{
|
||||||
|
System.err.printf("Excluded Dependency: %s EXCLUDE %s%n",path(source),opt );
|
||||||
|
usageExit(ERR_LOGGING);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if ("OPTION".equals(assign[0]))
|
||||||
|
{
|
||||||
|
String opts[] = assign[1].split(",");
|
||||||
|
for (String opt : opts)
|
||||||
|
_config.addOption(opt.trim());
|
||||||
|
}
|
||||||
|
else if ("OPTIONS".equals(assign[0]))
|
||||||
|
{
|
||||||
|
this._config.setProperty(assign[0],assign[1]);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
this._config.setProperty(assign[0],assign[1]);
|
this._config.setProperty(assign[0],assign[1]);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 1:
|
case 1:
|
||||||
this._config.setProperty(assign[0],null);
|
this._config.setProperty(assign[0],null);
|
||||||
break;
|
break;
|
||||||
|
@ -398,15 +429,7 @@ public class Main
|
||||||
}
|
}
|
||||||
else if (info.equals("@CONFIGS"))
|
else if (info.equals("@CONFIGS"))
|
||||||
{
|
{
|
||||||
File etc = new File(System.getProperty("jetty.home","."),"etc");
|
FileFilter filter =new FileFilter()
|
||||||
if (!etc.exists() || !etc.isDirectory())
|
|
||||||
{
|
|
||||||
System.out.print(indent);
|
|
||||||
System.out.println("Unable to find/list " + etc);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
File configs[] = etc.listFiles(new FileFilter()
|
|
||||||
{
|
{
|
||||||
public boolean accept(File path)
|
public boolean accept(File path)
|
||||||
{
|
{
|
||||||
|
@ -418,34 +441,54 @@ public class Main
|
||||||
String name = path.getName().toLowerCase(Locale.ENGLISH);
|
String name = path.getName().toLowerCase(Locale.ENGLISH);
|
||||||
return (name.startsWith("jetty") && name.endsWith(".xml"));
|
return (name.startsWith("jetty") && name.endsWith(".xml"));
|
||||||
}
|
}
|
||||||
});
|
};
|
||||||
|
|
||||||
|
// list home etc
|
||||||
|
File etc = new File(_config.getJettyHome(),"etc");
|
||||||
|
if (!etc.exists() || !etc.isDirectory())
|
||||||
|
{
|
||||||
|
System.out.print(indent);
|
||||||
|
System.out.println("Unable to find/list " + etc);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
List<File> configFiles = new ArrayList<File>();
|
List<File> configFiles = new ArrayList<File>();
|
||||||
|
File[] configs = etc.listFiles(filter);
|
||||||
configFiles.addAll(Arrays.asList(configs));
|
configFiles.addAll(Arrays.asList(configs));
|
||||||
|
|
||||||
|
// list base etc
|
||||||
|
if (!_config.getJettyHome().equals(_config.getJettyBase()))
|
||||||
|
{
|
||||||
|
etc = new File(_config.getJettyBase(),"etc");
|
||||||
|
if (etc.exists() && etc.isDirectory())
|
||||||
|
{
|
||||||
|
configs = etc.listFiles(filter);
|
||||||
|
configFiles.addAll(Arrays.asList(configs));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Collections.sort(configFiles);
|
Collections.sort(configFiles);
|
||||||
|
|
||||||
for (File configFile : configFiles)
|
for (File configFile : configFiles)
|
||||||
{
|
System.out.printf("%s%s%n",indent,path(configFile));
|
||||||
System.out.print(indent);
|
|
||||||
System.out.print("etc/");
|
|
||||||
System.out.println(configFile.getName());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else if (info.equals("@STARTINI"))
|
else if (info.equals("@STARTINI"))
|
||||||
{
|
{
|
||||||
List<String> ini = parseStartIniFiles();
|
for (File file : _iniFiles)
|
||||||
if (ini != null && ini.size() > 0)
|
|
||||||
{
|
{
|
||||||
for (String a : ini)
|
String path=path(file);
|
||||||
|
System.out.printf("%s%s:%n",indent,path);
|
||||||
|
|
||||||
|
try (FileReader reader=new FileReader(file); BufferedReader in = new BufferedReader(reader);)
|
||||||
{
|
{
|
||||||
System.out.print(indent);
|
String arg;
|
||||||
System.out.println(a);
|
while ((arg = in.readLine()) != null)
|
||||||
|
{
|
||||||
|
arg = arg.trim();
|
||||||
|
if (arg.length() == 0 || arg.startsWith("#"))
|
||||||
|
continue;
|
||||||
|
System.out.printf("%s %s%n",indent,arg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
System.out.print(indent);
|
|
||||||
System.out.println("none");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -466,6 +509,29 @@ public class Main
|
||||||
System.exit(EXIT_USAGE);
|
System.exit(EXIT_USAGE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
String path(String path)
|
||||||
|
{
|
||||||
|
if (path==null)
|
||||||
|
return path;
|
||||||
|
if (path.startsWith(_config.getJettyHome()))
|
||||||
|
path = "${jetty.home}" + path.substring(_config.getJettyHome().length());
|
||||||
|
if (_config.getJettyBase()!=null && path.startsWith(_config.getJettyBase()))
|
||||||
|
path = "${jetty.base}" + path.substring(_config.getJettyBase().length());
|
||||||
|
return path;
|
||||||
|
}
|
||||||
|
|
||||||
|
String path(File file)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
return path(file.getCanonicalPath());
|
||||||
|
}
|
||||||
|
catch (IOException e)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
return path(file.getAbsolutePath());
|
||||||
|
}
|
||||||
|
|
||||||
public void invokeMain(ClassLoader classloader, String classname, List<String> args) throws IllegalAccessException, InvocationTargetException,
|
public void invokeMain(ClassLoader classloader, String classname, List<String> args) throws IllegalAccessException, InvocationTargetException,
|
||||||
NoSuchMethodException, ClassNotFoundException
|
NoSuchMethodException, ClassNotFoundException
|
||||||
{
|
{
|
||||||
|
@ -550,12 +616,13 @@ public class Main
|
||||||
{
|
{
|
||||||
System.err.println("java.class.path=" + System.getProperty("java.class.path"));
|
System.err.println("java.class.path=" + System.getProperty("java.class.path"));
|
||||||
System.err.println("jetty.home=" + System.getProperty("jetty.home"));
|
System.err.println("jetty.home=" + System.getProperty("jetty.home"));
|
||||||
|
System.err.println("jetty.base=" + System.getProperty("jetty.base"));
|
||||||
System.err.println("java.home=" + System.getProperty("java.home"));
|
System.err.println("java.home=" + System.getProperty("java.home"));
|
||||||
System.err.println("java.io.tmpdir=" + System.getProperty("java.io.tmpdir"));
|
System.err.println("java.io.tmpdir=" + System.getProperty("java.io.tmpdir"));
|
||||||
System.err.println("java.class.path=" + classpath);
|
System.err.println("java.class.path=" + classpath);
|
||||||
System.err.println("classloader=" + cl);
|
System.err.println("classloader=" + cl);
|
||||||
System.err.println("classloader.parent=" + cl.getParent());
|
System.err.println("classloader.parent=" + cl.getParent());
|
||||||
System.err.println("properties=" + Config.getProperties());
|
System.err.println("properties=" + _config.getProperties());
|
||||||
}
|
}
|
||||||
|
|
||||||
// Show the usage information and return
|
// Show the usage information and return
|
||||||
|
@ -689,23 +756,20 @@ public class Main
|
||||||
return xmlFilename;
|
return xmlFilename;
|
||||||
}
|
}
|
||||||
|
|
||||||
File xml = new File(xmlFilename);
|
// Look for the file as absolute, jetty-base or jetty-home
|
||||||
if (xml.exists() && xml.isFile())
|
File xml = _config.getFileBaseHomeAbs(xmlFilename);
|
||||||
{
|
if (xml!=null && xml.isFile())
|
||||||
return xml.getAbsolutePath();
|
return xml.getAbsolutePath();
|
||||||
}
|
|
||||||
|
|
||||||
xml = new File(_jettyHome,fixPath(xmlFilename));
|
// Try corrected / for \
|
||||||
if (xml.exists() && xml.isFile())
|
xml = _config.getFileBaseHomeAbs(fixPath(xmlFilename));
|
||||||
{
|
if (xml!=null && xml.isFile())
|
||||||
return xml.getAbsolutePath();
|
return xml.getAbsolutePath();
|
||||||
}
|
|
||||||
|
|
||||||
xml = new File(_jettyHome,fixPath("etc/" + xmlFilename));
|
// Try in etc
|
||||||
if (xml.exists() && xml.isFile())
|
xml = _config.getFileBaseHomeAbs("etc/"+xmlFilename);
|
||||||
{
|
if (xml!=null && xml.isFile())
|
||||||
return xml.getAbsolutePath();
|
return xml.getAbsolutePath();
|
||||||
}
|
|
||||||
|
|
||||||
throw new FileNotFoundException("Unable to find XML Config: " + xmlFilename);
|
throw new FileNotFoundException("Unable to find XML Config: " + xmlFilename);
|
||||||
}
|
}
|
||||||
|
@ -718,7 +782,9 @@ public class Main
|
||||||
{
|
{
|
||||||
cmd.addArg(x);
|
cmd.addArg(x);
|
||||||
}
|
}
|
||||||
cmd.addRawArg("-Djetty.home=" + _jettyHome);
|
cmd.addRawArg("-Djetty.home=" + _config.getJettyHome());
|
||||||
|
if (_config.getJettyBase()!=null)
|
||||||
|
cmd.addRawArg("-Djetty.base=" + _config.getJettyBase());
|
||||||
|
|
||||||
// Special Stop/Shutdown properties
|
// Special Stop/Shutdown properties
|
||||||
ensureSystemPropertySet("STOP.PORT");
|
ensureSystemPropertySet("STOP.PORT");
|
||||||
|
@ -736,7 +802,7 @@ public class Main
|
||||||
cmd.addRawArg(_config.getMainClassname());
|
cmd.addRawArg(_config.getMainClassname());
|
||||||
|
|
||||||
// Check if we need to pass properties as a file
|
// Check if we need to pass properties as a file
|
||||||
Properties properties = Config.getProperties();
|
Properties properties = _config.getProperties();
|
||||||
if (properties.size() > 0)
|
if (properties.size() > 0)
|
||||||
{
|
{
|
||||||
File prop_file = File.createTempFile("start",".properties");
|
File prop_file = File.createTempFile("start",".properties");
|
||||||
|
@ -767,7 +833,7 @@ public class Main
|
||||||
return; // done
|
return; // done
|
||||||
}
|
}
|
||||||
|
|
||||||
Properties props = Config.getProperties();
|
Properties props = _config.getProperties();
|
||||||
if (props.containsKey(key))
|
if (props.containsKey(key))
|
||||||
{
|
{
|
||||||
String val = props.getProperty(key,null);
|
String val = props.getProperty(key,null);
|
||||||
|
@ -841,7 +907,8 @@ public class Main
|
||||||
System.out.println("Note: If using multiple options (eg: 'Server,servlet,webapp,jms,jmx') "
|
System.out.println("Note: If using multiple options (eg: 'Server,servlet,webapp,jms,jmx') "
|
||||||
+ "then overlapping entries will not be repeated in the eventual classpath.");
|
+ "then overlapping entries will not be repeated in the eventual classpath.");
|
||||||
System.out.println();
|
System.out.println();
|
||||||
System.out.printf("${jetty.home} = %s%n",_jettyHome);
|
System.out.printf("${jetty.home} = %s%n",_config.getJettyHome());
|
||||||
|
System.out.printf("${jetty.base} = %s%n",_config.getJettyBase());
|
||||||
System.out.println();
|
System.out.println();
|
||||||
|
|
||||||
for (String sectionId : sectionIds)
|
for (String sectionId : sectionIds)
|
||||||
|
@ -876,14 +943,7 @@ public class Main
|
||||||
|
|
||||||
int i = 0;
|
int i = 0;
|
||||||
for (File element : sectionCP.getElements())
|
for (File element : sectionCP.getElements())
|
||||||
{
|
System.out.printf("%2d: %20s | %s\n",i++,getVersion(element),path(element));
|
||||||
String elementPath = element.getAbsolutePath();
|
|
||||||
if (elementPath.startsWith(_jettyHome))
|
|
||||||
{
|
|
||||||
elementPath = "${jetty.home}" + elementPath.substring(_jettyHome.length());
|
|
||||||
}
|
|
||||||
System.out.printf("%2d: %20s | %s\n",i++,getVersion(element),elementPath);
|
|
||||||
}
|
|
||||||
|
|
||||||
System.out.println();
|
System.out.println();
|
||||||
}
|
}
|
||||||
|
@ -894,7 +954,7 @@ public class Main
|
||||||
// Iterate through active classpath, and fetch Implementation Version from each entry (if present)
|
// Iterate through active classpath, and fetch Implementation Version from each entry (if present)
|
||||||
// to dump to end user.
|
// to dump to end user.
|
||||||
|
|
||||||
System.out.println("Active Options: " + _config.getActiveOptions());
|
System.out.println("Active Options: " + _config.getOptions());
|
||||||
|
|
||||||
if (classpath.count() == 0)
|
if (classpath.count() == 0)
|
||||||
{
|
{
|
||||||
|
@ -908,14 +968,7 @@ public class Main
|
||||||
|
|
||||||
int i = 0;
|
int i = 0;
|
||||||
for (File element : classpath.getElements())
|
for (File element : classpath.getElements())
|
||||||
{
|
System.out.printf("%2d: %20s | %s\n",i++,getVersion(element),path(element));
|
||||||
String elementPath = element.getAbsolutePath();
|
|
||||||
if (elementPath.startsWith(_jettyHome))
|
|
||||||
{
|
|
||||||
elementPath = "${jetty.home}" + elementPath.substring(_jettyHome.length());
|
|
||||||
}
|
|
||||||
System.out.printf("%2d: %20s | %s\n",i++,getVersion(element),elementPath);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private String fixPath(String path)
|
private String fixPath(String path)
|
||||||
|
@ -1003,13 +1056,6 @@ public class Main
|
||||||
// parse the config
|
// parse the config
|
||||||
_config.parse(cfgstream);
|
_config.parse(cfgstream);
|
||||||
|
|
||||||
_jettyHome = Config.getProperty("jetty.home",_jettyHome);
|
|
||||||
if (_jettyHome != null)
|
|
||||||
{
|
|
||||||
_jettyHome = new File(_jettyHome).getCanonicalPath();
|
|
||||||
System.setProperty("jetty.home",_jettyHome);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Collect the configured xml configurations.
|
// Collect the configured xml configurations.
|
||||||
List<String> ret = new ArrayList<String>();
|
List<String> ret = new ArrayList<String>();
|
||||||
ret.addAll(xmls); // add command line provided xmls first.
|
ret.addAll(xmls); // add command line provided xmls first.
|
||||||
|
@ -1145,17 +1191,22 @@ public class Main
|
||||||
/**
|
/**
|
||||||
* Convert a start.ini format file into an argument list.
|
* Convert a start.ini format file into an argument list.
|
||||||
*/
|
*/
|
||||||
List<String> loadStartIni(File ini)
|
List<String> loadStartIni(File ini,String name)
|
||||||
{
|
{
|
||||||
if (!ini.exists())
|
if (ini==null || !ini.exists() || ini.isDirectory() || !ini.canRead())
|
||||||
{
|
{
|
||||||
System.err.println("Warning - can't find ini file: " + ini);
|
System.err.println("Warning - bad ini file: " + name);
|
||||||
// No start.ini found, skip load.
|
// No start.ini found, skip load.
|
||||||
return Collections.emptyList();
|
return Collections.emptyList();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ini=ini.getAbsoluteFile();
|
||||||
|
if (!_iniFiles.contains(ini))
|
||||||
|
_iniFiles.add(ini);
|
||||||
List<String> args = new ArrayList<String>();
|
List<String> args = new ArrayList<String>();
|
||||||
|
|
||||||
|
args.add("_SRC_="+name);
|
||||||
|
|
||||||
FileReader reader = null;
|
FileReader reader = null;
|
||||||
BufferedReader buf = null;
|
BufferedReader buf = null;
|
||||||
try
|
try
|
||||||
|
@ -1176,11 +1227,8 @@ public class Main
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
File start_d = new File(arg);
|
File start_d = _config.getFileBaseHomeAbs(arg);
|
||||||
if (!start_d.exists() || !start_d.isDirectory())
|
if (start_d!=null && start_d.isDirectory())
|
||||||
start_d = new File(_jettyHome,arg);
|
|
||||||
|
|
||||||
if (start_d.isDirectory())
|
|
||||||
{
|
{
|
||||||
File[] inis = start_d.listFiles(new FilenameFilter()
|
File[] inis = start_d.listFiles(new FilenameFilter()
|
||||||
{
|
{
|
||||||
|
@ -1193,8 +1241,9 @@ public class Main
|
||||||
Arrays.sort(inis);
|
Arrays.sort(inis);
|
||||||
|
|
||||||
for (File i : inis)
|
for (File i : inis)
|
||||||
args.addAll(loadStartIni(i));
|
args.addAll(loadStartIni(i,i.getAbsolutePath()));
|
||||||
|
|
||||||
|
args.add("_SRC_="+name);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -68,11 +68,15 @@ jetty.home=../jetty-distribution/src/main/resources ! exists $(jetty.home)/start
|
||||||
jetty.home=. ! exists $(jetty.home)/start.jar
|
jetty.home=. ! exists $(jetty.home)/start.jar
|
||||||
jetty.home/=$(jetty.home) exists $(jetty.home)/start.jar
|
jetty.home/=$(jetty.home) exists $(jetty.home)/start.jar
|
||||||
|
|
||||||
|
# Set the jetty.base property
|
||||||
|
jetty.base=$(jetty.base) system jetty.base
|
||||||
|
|
||||||
# The main class to run
|
# The main class to run
|
||||||
org.eclipse.jetty.xml.XmlConfiguration.class
|
org.eclipse.jetty.xml.XmlConfiguration.class
|
||||||
${start.class}.class property start.class
|
${start.class}.class property start.class
|
||||||
|
|
||||||
# The default configuration files
|
# The default configuration files
|
||||||
|
$(jetty.base)/etc/jetty.xml nargs == 0 AND property jetty.base
|
||||||
$(jetty.home)/etc/jetty.xml nargs == 0
|
$(jetty.home)/etc/jetty.xml nargs == 0
|
||||||
./jetty-server/src/main/config/etc/jetty.xml nargs == 0 AND ! exists $(jetty.home)/etc/jetty.xml
|
./jetty-server/src/main/config/etc/jetty.xml nargs == 0 AND ! exists $(jetty.home)/etc/jetty.xml
|
||||||
|
|
||||||
|
@ -81,6 +85,7 @@ OPTIONS~=default,* ! property OPTIONS
|
||||||
|
|
||||||
# Add a resources directory if it is there
|
# Add a resources directory if it is there
|
||||||
[All,resources,default]
|
[All,resources,default]
|
||||||
|
$(jetty.base)/resources/ property jetty.base
|
||||||
$(jetty.home)/resources/
|
$(jetty.home)/resources/
|
||||||
|
|
||||||
# Add jetty modules
|
# Add jetty modules
|
||||||
|
@ -160,8 +165,15 @@ $(jetty.home)/lib/jetty-overlay-deployer-$(version).jar ! available org.eclipse
|
||||||
|
|
||||||
# Add ext if it exists
|
# Add ext if it exists
|
||||||
[Server,All,default,ext]
|
[Server,All,default,ext]
|
||||||
|
$(jetty.base)/lib/ext/** property jetty.base
|
||||||
$(jetty.home)/lib/ext/**
|
$(jetty.home)/lib/ext/**
|
||||||
|
|
||||||
# Add all other sub-directories in /lib/ as options in a dynamic way
|
# Add all other sub-directories in /lib/ as options in a dynamic way
|
||||||
|
[All,=$(jetty.base)/lib/**]
|
||||||
[All,=$(jetty.home)/lib/**]
|
[All,=$(jetty.home)/lib/**]
|
||||||
|
|
||||||
|
# Set property jetty.base and jetty.log as jetty.home if not set
|
||||||
|
jetty.base=${jetty.home} ! property jetty.base
|
||||||
|
jetty.logs=${jetty.base}/logs ! property jetty.logs
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -76,13 +76,20 @@ System Properties:
|
||||||
com.sun.management.jmxremote
|
com.sun.management.jmxremote
|
||||||
Enable remote JMX management in Sun JVMS.
|
Enable remote JMX management in Sun JVMS.
|
||||||
|
|
||||||
|
|
||||||
Properties:
|
Properties:
|
||||||
These are set with a command line like "java -jar start.jar name=value"
|
These are set with a command line like "java -jar start.jar name=value"
|
||||||
and only affect the start mechanism. Some of these are defined in the
|
and only affect the start mechanism. Some of these are defined in the
|
||||||
default start.config and will not be available if another configuration
|
default start.config and will not be available if another configuration
|
||||||
file is used. NOTE: Not all properties are listed here:
|
file is used. NOTE: Not all properties are listed here:
|
||||||
|
|
||||||
|
jetty.home=[directory]
|
||||||
|
Set the home directory of the jetty distribtion.
|
||||||
|
|
||||||
|
jetty.base=[directory]
|
||||||
|
Set the jetty configuration directory. This is where the etc, webapps and start
|
||||||
|
files will be looked for. If not found in jetty.base, they are looked for in
|
||||||
|
jetty.home.
|
||||||
|
|
||||||
path=[directory]
|
path=[directory]
|
||||||
An additional class path element to add to the started class path. Typically
|
An additional class path element to add to the started class path. Typically
|
||||||
this is used to add directories of classes and/or resources
|
this is used to add directories of classes and/or resources
|
||||||
|
@ -120,8 +127,8 @@ Properties:
|
||||||
|
|
||||||
|
|
||||||
Available Configurations:
|
Available Configurations:
|
||||||
By convention, configuration files are kept in $JETTY_HOME/etc.
|
By convention, configuration files are kept in ${jetty.base}/etc or
|
||||||
The known configuration files are:
|
${jetty.home}/etc The known configuration files are:
|
||||||
|
|
||||||
@CONFIGS@
|
@CONFIGS@
|
||||||
|
|
||||||
|
@ -135,6 +142,6 @@ Defaults:
|
||||||
|
|
||||||
If --ini options are provided on the command line, then start.ini will NOT be read.
|
If --ini options are provided on the command line, then start.ini will NOT be read.
|
||||||
|
|
||||||
The current start.ini arguments are:
|
The current start.ini files are:
|
||||||
|
|
||||||
@STARTINI@
|
@STARTINI@
|
||||||
|
|
|
@ -100,7 +100,6 @@ public class ConfigTest
|
||||||
@Before
|
@Before
|
||||||
public void reset()
|
public void reset()
|
||||||
{
|
{
|
||||||
Config.clearProperties();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -115,7 +114,7 @@ public class ConfigTest
|
||||||
Config cfg = new Config();
|
Config cfg = new Config();
|
||||||
cfg.parse(buf);
|
cfg.parse(buf);
|
||||||
|
|
||||||
Assert.assertEquals(getTestResourcesDir().getCanonicalPath(),Config.getProperty("test.resources.dir"));
|
Assert.assertEquals(getTestResourcesDir().getCanonicalPath(),cfg.getProperty("test.resources.dir"));
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -131,8 +130,8 @@ public class ConfigTest
|
||||||
Config options = new Config();
|
Config options = new Config();
|
||||||
options.parse(buf);
|
options.parse(buf);
|
||||||
|
|
||||||
Assert.assertEquals("foo",Config.getProperty("test.jetty.start.text"));
|
Assert.assertEquals("foo",options.getProperty("test.jetty.start.text"));
|
||||||
Assert.assertEquals("Eatagramovabits",Config.getProperty("test.jetty.start.quote"));
|
Assert.assertEquals("Eatagramovabits",options.getProperty("test.jetty.start.quote"));
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -30,9 +30,11 @@ import java.io.IOException;
|
||||||
import java.lang.reflect.Field;
|
import java.lang.reflect.Field;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
import java.util.Vector;
|
import java.util.Vector;
|
||||||
|
|
||||||
import org.eclipse.jetty.toolchain.test.MavenTestingUtils;
|
import org.eclipse.jetty.toolchain.test.MavenTestingUtils;
|
||||||
|
import org.hamcrest.Matchers;
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
|
@ -52,42 +54,19 @@ public class MainTest
|
||||||
System.setProperty("jetty.home",testJettyHome.getAbsolutePath());
|
System.setProperty("jetty.home",testJettyHome.getAbsolutePath());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
|
||||||
public void testLoadStartIni() throws IOException
|
|
||||||
{
|
|
||||||
Main main = new Main();
|
|
||||||
List<String> args = main.parseStartIniFiles();
|
|
||||||
|
|
||||||
assertEquals("Expected 5 uncommented lines in start.ini",9,args.size());
|
|
||||||
assertEquals("First uncommented line in start.ini doesn't match expected result","OPTIONS=Server,jsp,resources,websocket,ext",args.get(0));
|
|
||||||
assertEquals("Last uncommented line in start.ini doesn't match expected result","etc/jetty-contexts.xml",args.get(8));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void testExpandCommandLine() throws Exception
|
|
||||||
{
|
|
||||||
Main main = new Main();
|
|
||||||
List<String> args = main.expandCommandLine(new String[] {});
|
|
||||||
|
|
||||||
assertEquals("start.ini OPTIONS","OPTIONS=Server,jsp,resources,websocket,ext",args.get(0));
|
|
||||||
assertEquals("start.d/jmx OPTIONS","OPTIONS=jmx",args.get(2));
|
|
||||||
assertEquals("start.d/jmx XML","etc/jetty-jmx.xml",args.get(3));
|
|
||||||
assertEquals("start.d/websocket OPTIONS","OPTIONS=websocket",args.get(4));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testProcessCommandLine() throws Exception
|
public void testProcessCommandLine() throws Exception
|
||||||
{
|
{
|
||||||
Main main = new Main();
|
Main main = new Main();
|
||||||
List<String> args = main.expandCommandLine(new String[] {});
|
List<String> xmls = main.processCommandLine(new String[] {});
|
||||||
List<String> xmls = main.processCommandLine(args);
|
|
||||||
|
|
||||||
System.err.println(args);
|
|
||||||
System.err.println(xmls);
|
|
||||||
assertEquals("etc/jetty.xml",xmls.get(0));
|
assertEquals("etc/jetty.xml",xmls.get(0));
|
||||||
assertEquals("etc/jetty-jmx.xml",xmls.get(1));
|
assertEquals("etc/jetty-jmx.xml",xmls.get(1));
|
||||||
assertEquals("start.d","etc/jetty-testrealm.xml",xmls.get(2));
|
assertEquals("start.d","etc/jetty-testrealm.xml",xmls.get(2));
|
||||||
assertEquals("start.d","etc/jetty-contexts.xml",xmls.get(5));
|
assertEquals("start.d","etc/jetty-contexts.xml",xmls.get(5));
|
||||||
|
|
||||||
|
Set<String> options = main.getConfig().getOptions();
|
||||||
|
assertThat(options,Matchers.contains("Server","ext","jmx","jsp","newOption","resources","websocket"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
|
|
||||||
#===========================================================
|
#===========================================================
|
||||||
#-----------------------------------------------------------
|
#-----------------------------------------------------------
|
||||||
OPTIONS=jmx
|
OPTION=jmx
|
||||||
#-----------------------------------------------------------
|
#-----------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -9,5 +9,6 @@
|
||||||
|
|
||||||
#===========================================================
|
#===========================================================
|
||||||
#-----------------------------------------------------------
|
#-----------------------------------------------------------
|
||||||
OPTIONS=websocket
|
DEPEND=Server
|
||||||
|
OPTION=websocket
|
||||||
#-----------------------------------------------------------
|
#-----------------------------------------------------------
|
|
@ -6,71 +6,13 @@
|
||||||
#===========================================================
|
#===========================================================
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#===========================================================
|
|
||||||
# If the arguements in this file include JVM arguments
|
|
||||||
# (eg -Xmx512m) or JVM System properties (eg com.sun.???),
|
|
||||||
# then these will not take affect unless the --exec
|
|
||||||
# parameter is included or if the output from --dry-run
|
|
||||||
# is executed like:
|
|
||||||
# eval $(java -jar start.jar --dry-run)
|
|
||||||
#
|
|
||||||
# Below are some recommended options for Sun's JRE
|
|
||||||
#-----------------------------------------------------------
|
|
||||||
# --exec
|
|
||||||
# -Dorg.apache.jasper.compiler.disablejsr199=true
|
|
||||||
# -Dcom.sun.management.jmxremote
|
|
||||||
# -Dorg.eclipse.jetty.util.log.IGNORED=true
|
|
||||||
# -Dorg.eclipse.jetty.util.log.stderr.DEBUG=true
|
|
||||||
# -Dorg.eclipse.jetty.util.log.stderr.SOURCE=true
|
|
||||||
# -Xmx2000m
|
|
||||||
# -Xmn512m
|
|
||||||
# -verbose:gc
|
|
||||||
# -XX:+PrintGCDateStamps
|
|
||||||
# -XX:+PrintGCTimeStamps
|
|
||||||
# -XX:+PrintGCDetails
|
|
||||||
# -XX:+PrintTenuringDistribution
|
|
||||||
# -XX:+PrintCommandLineFlags
|
|
||||||
# -XX:+DisableExplicitGC
|
|
||||||
# -XX:+UseConcMarkSweepGC
|
|
||||||
# -XX:ParallelCMSThreads=2
|
|
||||||
# -XX:+CMSClassUnloadingEnabled
|
|
||||||
# -XX:+UseCMSCompactAtFullCollection
|
|
||||||
# -XX:CMSInitiatingOccupancyFraction=80
|
|
||||||
#-----------------------------------------------------------
|
|
||||||
|
|
||||||
|
|
||||||
#===========================================================
|
|
||||||
# Start classpath OPTIONS.
|
|
||||||
# These control what classes are on the classpath
|
|
||||||
# for a full listing do
|
|
||||||
# java -jar start.jar --list-options
|
|
||||||
#
|
|
||||||
# Enable classpath OPTIONS. Each options represents one or more jars
|
|
||||||
# to be added to the classpath. The options can be listed with --help
|
|
||||||
# or --list-options.
|
|
||||||
# By convention, options starting with a capital letter (eg Server)
|
|
||||||
# are aggregations of other available options.
|
|
||||||
# Directories in $JETTY_HOME/lib can be added as dynamic OPTIONS by
|
|
||||||
# convention. E.g. put some logging jars in $JETTY_HOME/lib/logging
|
|
||||||
# and make them available in the classpath by adding a "logging" OPTION
|
|
||||||
# like so: OPTIONS=Server,jsp,logging
|
|
||||||
#-----------------------------------------------------------
|
|
||||||
OPTIONS=Server,jsp,resources,websocket,ext
|
OPTIONS=Server,jsp,resources,websocket,ext
|
||||||
#-----------------------------------------------------------
|
|
||||||
|
|
||||||
|
|
||||||
#===========================================================
|
|
||||||
# Configuration files.
|
|
||||||
# For a full list of available configuration files do
|
|
||||||
# java -jar start.jar --help
|
|
||||||
#-----------------------------------------------------------
|
|
||||||
etc/jetty.xml
|
etc/jetty.xml
|
||||||
start.d/
|
start.d/
|
||||||
# etc/jetty-ssl.xml
|
|
||||||
# etc/jetty-requestlog.xml
|
|
||||||
etc/jetty-deploy.xml
|
etc/jetty-deploy.xml
|
||||||
#etc/jetty-overlay.xml
|
|
||||||
etc/jetty-webapps.xml
|
etc/jetty-webapps.xml
|
||||||
etc/jetty-contexts.xml
|
etc/jetty-contexts.xml
|
||||||
#===========================================================
|
|
||||||
|
DEFINE=newOption
|
||||||
|
OPTION=newOption
|
||||||
|
DEPEND=newOption
|
Loading…
Reference in New Issue