My confusion is where to add the old (Jetty 8) connector configurations for Jetty 9.
It is my understanding that there is a move to try and consolidate all configurations in the start.ini file (that would be nice). However, I see many examples of editing various .xml files (ie, jetty.xml, jetty-ssl.xml, etc,.).
Here is the old (jetty 8) connector setup extracted from jetty.xml (passwords have been changed):
#===========================================================
<Set name="connectors">
<Array type="org.eclipse.jetty.server.Connector">
<Item>
<New class="org.eclipse.jetty.server.ssl.SslSelectChannelConnector">
<Arg>
<New class="org.eclipse.jetty.http.ssl.SslContextFactory">
<Set name="certAlias">password1</Set>
<Set name="keyStore"><SystemProperty name="jetty.home" default="." />/etc/keystore</Set>
<Set name="keyStorePassword">password1</Set>
<Set name="keyManagerPassword">password1</Set>
<Set name="excludeCipherSuites">
<Array type="java.lang.String">
<Item>.+RC4.+</Item>
</Array>
</Set>
<Set name="excludeProtocols">
<Array type="java.lang.String">
<Item>SSLv2</Item>
<Item>SSLv3</Item>
</Array>
</Set>
</New>
</Arg>
<Set name="port">443</Set>
<Set name="maxIdleTime">300000</Set>
<Set name="Acceptors">1</Set>
<Set name="name">conn-app1</Set>
</New>
</Item>
<Item>
<New class="org.eclipse.jetty.server.ssl.SslSelectChannelConnector">
<Arg>
<New class="org.eclipse.jetty.http.ssl.SslContextFactory">
<Set name="certAlias">password2</Set>
<Set name="keyStore"><SystemProperty name="jetty.home" default="." />/etc/keystore.app2</Set>
<Set name="keyStorePassword">password2</Set>
<Set name="keyManagerPassword">password2</Set>
<Set name="needClientAuth">true</Set>
<Set name="IncludeCipherSuites">
<Array type="java.lang.String">
<Item>TLS_ECDHE_RSA_WITH_RC4_128_SHA</Item>
<Item>SSL_RSA_WITH_RC4_128_SHA</Item>
</Array>
</Set>
<Set name="excludeProtocols">
<Array type="java.lang.String">
<Item>SSLv2</Item>
<Item>SSLv3</Item>
</Array>
</Set>
</New>
</Arg>
<Set name="port">2600</Set>
<Set name="maxIdleTime">300000</Set>
<Set name="Acceptors">1</Set>
<Set name="name">conn-app2</Set>
</New>
</Item>
<Item>
<New class="org.eclipse.jetty.server.nio.SelectChannelConnector">
<Set name="port">2601</Set>
<Set name="maxIdleTime">300000</Set>
<Set name="Acceptors">1</Set>
<Set name="name">conn-app2</Set>
</New>
</Item>
<Item>
<New class="org.eclipse.jetty.server.nio.SelectChannelConnector">
<Set name="port">8080</Set>
<Set name="maxIdleTime">300000</Set>
<Set name="Acceptors">1</Set>
<Set name="name">conn-app1</Set>
</New>
</Item>
</Array>
</Set>
#===========================================================
As you can see, I also have multiple keystore passwords to deal with, as well.
Attempting to add the above configuration into the (new) xml files created failures across the board.
I followed Joakim's steps on
http://dev.eclipse.org/mhonarc/lists/jetty-users/msg03850.html and can see that many of the variables, in the old jetty.xml file, can be added to start.ini.
Just not sure where/how to add multiple connector port settings. Is it necessary to edit the etc/*.xml files or is it best (possible?) to keep it all in start.ini?
Below is what I have in the start.ini file (commented sections have been removed & passwords changed):
#===========================================================
# To disable the warning message, comment the following line
--module=home-base-warning
# ---------------------------------------
# Module: ext
--module=ext
# ---------------------------------------
# Module: resources
--module=resources
# ---------------------------------------
# Module: server
--module=server
# ---------------------------------------
# Module: http
--module=http
# ---------------------------------------
# Module: deploy
--module=deploy
# ---------------------------------------
# Module: jsp
--module=jsp
# ---------------------------------------
# Module: websocket
--module=websocket
# ---------------------------------------
# Module: jstl
--module=jstl
# ---------------------------------------
# Module: ssl
--module=ssl
### TLS(SSL) Connector Configuration
## Connector port to listen on
jetty.ssl.port=443
## Keystore file path (relative to $jetty.base)
jetty.sslContext.keyStorePath=etc/keystore
## Truststore file path (relative to $jetty.base)
jetty.sslContext.trustStorePath=etc/keystore
## Keystore password
jetty.sslContext.keyStorePassword=password1
## KeyManager password
jetty.sslContext.keyManagerPassword=password1
## Truststore password
jetty.sslContext.trustStorePassword=password1
Below is the ouput of 'java -jar start.jar --list-config' (my jetty.{home,base} are the same to test for now)
#===========================================================
Java Environment:
-----------------
java.home = /usr/java/jdk1.8.0_11/jre
java.vm.vendor = Oracle Corporation
java.vm.version = 25.11-b03
java.vm.name = Java HotSpot(TM) 64-Bit Server VM
java.vm.info = mixed mode
java.runtime.name = Java(TM) SE Runtime Environment
java.runtime.version = 1.8.0_11-b12
java.io.tmpdir = /tmp
user.dir = /opt/jetty-distribution-9.3.0.v20150612
user.language = en
user.country = US
Jetty Environment:
-----------------
jetty.version = 9.3.0.v20150612
jetty.tag.version = master
jetty.home = /opt/jetty-distribution-9.3.0.v20150612
jetty.base = /opt/jetty-distribution-9.3.0.v20150612
Config Search Order:
--------------------
<command-line>
${jetty.base} -> /opt/jetty-distribution-9.3.0.v20150612
${jetty.home} -> /opt/jetty-distribution-9.3.0.v20150612
JVM Arguments:
--------------
(no jvm args specified)
System Properties:
------------------
(no system properties specified)
Properties:
-----------
jetty.ssl.port = 8443
jetty.sslContext.keyManagerPassword = password1
jetty.sslContext.keyStorePassword = password1
jetty.sslContext.keyStorePath = etc/keystore
jetty.sslContext.trustStorePassword = password1
jetty.sslContext.trustStorePath = etc/keystore
Jetty Server Classpath:
-----------------------
Version Information on 34 entries in the classpath.
Note: order presented here is how they would appear on the classpath.
changes to the --module=name command line options will be reflected here.
0: 9.3.0.v20150612 | ${jetty.base}/lib/apache-jsp/org.eclipse.jetty.apache-jsp-9.3.0.v20150612.jar
1: 3.8.2.v20130121-145325 | ${jetty.base}/lib/apache-jsp/org.eclipse.jetty.orbit.org.eclipse.jdt.core-3.8.2.v20130121.jar
2: 8.0.20 | ${jetty.base}/lib/apache-jsp/org.mortbay.jasper.apache-el-8.0.20.M0.jar
3: 2.3 | ${jetty.base}/lib/apache-jsp/org.mortbay.jasper.apache-jsp-8.0.20.M0.jar
4: 1.2.1 | ${jetty.base}/lib/apache-jstl/org.apache.taglibs.taglibs-standard-impl-1.2.1.jar
5: 1.2.1 | ${jetty.base}/lib/apache-jstl/org.apache.taglibs.taglibs-standard-spec-1.2.1.jar
6: (dir) | ${jetty.base}/resources
7: 3.1.0 | ${jetty.base}/lib/servlet-api-3.1.jar
8: 3.1.0.M0 | ${jetty.base}/lib/jetty-schemas-3.1.jar
9: 9.3.0.v20150612 | ${jetty.base}/lib/jetty-http-9.3.0.v20150612.jar
10: 9.3.0.v20150612 | ${jetty.base}/lib/jetty-server-9.3.0.v20150612.jar
11: 9.3.0.v20150612 | ${jetty.base}/lib/jetty-xml-9.3.0.v20150612.jar
12: 9.3.0.v20150612 | ${jetty.base}/lib/jetty-util-9.3.0.v20150612.jar
13: 9.3.0.v20150612 | ${jetty.base}/lib/jetty-io-9.3.0.v20150612.jar
14: 9.3.0.v20150612 | ${jetty.base}/lib/jetty-jndi-9.3.0.v20150612.jar
15: 1.4.1.v201005082020 | ${jetty.base}/lib/jndi/javax.mail.glassfish-1.4.1.v201005082020.jar
16: 1.2 | ${jetty.base}/lib/jndi/javax.transaction-api-1.2.jar
17: 9.3.0.v20150612 | ${jetty.base}/lib/jetty-security-9.3.0.v20150612.jar
18: 9.3.0.v20150612 | ${jetty.base}/lib/jetty-servlet-9.3.0.v20150612.jar
19: 9.3.0.v20150612 | ${jetty.base}/lib/jetty-webapp-9.3.0.v20150612.jar
20: 9.3.0.v20150612 | ${jetty.base}/lib/jetty-deploy-9.3.0.v20150612.jar
21: 9.3.0.v20150612 | ${jetty.base}/lib/jetty-plus-9.3.0.v20150612.jar
22: 9.3.0.v20150612 | ${jetty.base}/lib/jetty-annotations-9.3.0.v20150612.jar
23: 5.0.1 | ${jetty.base}/lib/annotations/asm-5.0.1.jar
24: 5.0.1 | ${jetty.base}/lib/annotations/asm-commons-5.0.1.jar
25: 1.2 | ${jetty.base}/lib/annotations/javax.annotation-api-1.2.jar
26: 1.0 | ${jetty.base}/lib/websocket/javax.websocket-api-1.0.jar
27: 9.3.0.v20150612 | ${jetty.base}/lib/websocket/javax-websocket-client-impl-9.3.0.v20150612.jar
28: 9.3.0.v20150612 | ${jetty.base}/lib/websocket/javax-websocket-server-impl-9.3.0.v20150612.jar
29: 9.3.0.v20150612 | ${jetty.base}/lib/websocket/websocket-api-9.3.0.v20150612.jar
30: 9.3.0.v20150612 | ${jetty.base}/lib/websocket/websocket-client-9.3.0.v20150612.jar
31: 9.3.0.v20150612 | ${jetty.base}/lib/websocket/websocket-common-9.3.0.v20150612.jar
32: 9.3.0.v20150612 | ${jetty.base}/lib/websocket/websocket-server-9.3.0.v20150612.jar
33: 9.3.0.v20150612 | ${jetty.base}/lib/websocket/websocket-servlet-9.3.0.v20150612.jar
Jetty Active XMLs:
------------------
${jetty.base}/etc/jetty.xml
${jetty.base}/etc/jetty-http.xml
${jetty.base}/etc/jetty-ssl.xml
${jetty.base}/etc/jetty-ssl-context.xml
${jetty.base}/etc/jetty-deploy.xml
${jetty.base}/etc/jetty-plus.xml
${jetty.base}/etc/jetty-annotations.xml
#===========================================================
When using the above start.ini with all xml files at default, it starts to load the war files and seems to start working, then I run into this error:
2015-06-24 16:07:24.031:INFO:oejsh.ContextHandler:main: Started o.e.j.w.WebAppContext@4b7c4456{/app2,file:///tmp/jetty-0.0.0.0-8080-app2.war-_app2-any-7629879214902633666.dir/webapp/,AVAILABLE}{/app2.war}
2015-06-24 16:07:24.099:INFO:oejs.ServerConnector:main: Started ServerConnector@31ca701b{HTTP/1.1,[http/1.1]}{
0.0.0.0:8080}
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at org.eclipse.jetty.start.Main.invokeMain(Main.java:214)
at org.eclipse.jetty.start.Main.start(Main.java:457)
at org.eclipse.jetty.start.Main.main(Main.java:75)
Caused by: java.lang.NullPointerException
at org.eclipse.jetty.util.StringUtil.asciiToLowerCase(StringUtil.java:119)
at org.eclipse.jetty.server.AbstractConnector.getConnectionFactory(AbstractConnector.java:345)
at org.eclipse.jetty.server.AbstractConnector.doStart(AbstractConnector.java:256)
at org.eclipse.jetty.server.AbstractNetworkConnector.doStart(AbstractNetworkConnector.java:81)
at org.eclipse.jetty.server.ServerConnector.doStart(ServerConnector.java:244)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
at org.eclipse.jetty.server.Server.doStart(Server.java:384)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
at org.eclipse.jetty.xml.XmlConfiguration$1.run(XmlConfiguration.java:1520)
at java.security.AccessController.doPrivileged(Native Method)
at org.eclipse.jetty.xml.XmlConfiguration.main(XmlConfiguration.java:1445)
... 7 more
Not exactly sure what to check. I fell strongly that it is due to the connector configurations.
I have changed/added variables in the start.ini file with mixed results, all creating errors similar to the one above.
I do know that, in the old jetty.xml file, there are 4 network ports (8080, 443, 2600, and 2601) and 2 keystore files/passwords to consider.
I feel that I am close, but have been attempting to get Jetty 9 going a couple of days straight and cannot seem to get any further.
Thank you,
JD