1 package org
.argeo
.equinox
.jetty
;
3 import java
.util
.Dictionary
;
5 import javax
.servlet
.ServletContext
;
6 import javax
.websocket
.DeploymentException
;
7 import javax
.websocket
.server
.ServerContainer
;
9 import org
.eclipse
.equinox
.http
.jetty
.JettyCustomizer
;
10 import org
.eclipse
.jetty
.server
.ConnectionFactory
;
11 import org
.eclipse
.jetty
.server
.ServerConnector
;
12 import org
.eclipse
.jetty
.server
.SslConnectionFactory
;
13 import org
.eclipse
.jetty
.servlet
.ServletContextHandler
;
14 import org
.eclipse
.jetty
.util
.ssl
.SslContextFactory
;
15 import org
.eclipse
.jetty
.websocket
.javax
.server
.config
.JavaxWebSocketServletContainerInitializer
;
16 import org
.eclipse
.jetty
.websocket
.javax
.server
.config
.JavaxWebSocketServletContainerInitializer
.Configurator
;
17 import org
.osgi
.framework
.BundleContext
;
18 import org
.osgi
.framework
.FrameworkUtil
;
20 /** Customises the Jetty HTTP server. */
21 public class CmsJettyCustomizer
extends JettyCustomizer
{
22 static final String SSL_TRUSTSTORE
= "ssl.truststore";
23 static final String SSL_TRUSTSTOREPASSWORD
= "ssl.truststorepassword";
24 static final String SSL_TRUSTSTORETYPE
= "ssl.truststoretype";
26 private BundleContext bc
= FrameworkUtil
.getBundle(CmsJettyCustomizer
.class).getBundleContext();
28 public final static String WEBSOCKET_ENABLED
= "argeo.websocket.enabled";
31 public Object
customizeContext(Object context
, Dictionary
<String
, ?
> settings
) {
33 Object webSocketEnabled
= settings
.get(WEBSOCKET_ENABLED
);
34 if (webSocketEnabled
!= null && webSocketEnabled
.toString().equals("true")) {
35 ServletContextHandler servletContextHandler
= (ServletContextHandler
) context
;
36 JavaxWebSocketServletContainerInitializer
.configure(servletContextHandler
, new Configurator() {
39 public void accept(ServletContext servletContext
, ServerContainer serverContainer
)
40 throws DeploymentException
{
41 bc
.registerService(javax
.websocket
.server
.ServerContainer
.class, serverContainer
, null);
45 return super.customizeContext(context
, settings
);
50 public Object
customizeHttpsConnector(Object connector
, Dictionary
<String
, ?
> settings
) {
51 ServerConnector httpsConnector
= (ServerConnector
) connector
;
52 if (httpsConnector
!= null)
53 for (ConnectionFactory connectionFactory
: httpsConnector
.getConnectionFactories()) {
54 if (connectionFactory
instanceof SslConnectionFactory
) {
55 SslContextFactory
.Server sslConnectionFactory
= ((SslConnectionFactory
) connectionFactory
)
56 .getSslContextFactory();
57 sslConnectionFactory
.setTrustStorePath((String
) settings
.get(SSL_TRUSTSTORE
));
58 sslConnectionFactory
.setTrustStoreType((String
) settings
.get(SSL_TRUSTSTORETYPE
));
59 sslConnectionFactory
.setTrustStorePassword((String
) settings
.get(SSL_TRUSTSTOREPASSWORD
));
62 return super.customizeHttpsConnector(connector
, settings
);