@@ -95,16 +95,21 @@ public class ServletEngine implements ServletEngineMBean, MBeanRegistration {
95
95
public static final String METRIC_NAME_PORT = "serverPort" ;
96
96
97
97
public static ServletEngineMBean getServletEngine (OperatorContext operatorContext ) throws Exception {
98
+
98
99
int portNumber = DEFAULT_PORT ;
99
100
if (operatorContext .getParameterNames ().contains ("port" ))
100
101
portNumber = Integer .valueOf (operatorContext .getParameterValues ("port" ).get (0 ));
101
102
103
+ String host = null ;
104
+ if (operatorContext .getParameterNames ().contains ("host" ))
105
+ host = operatorContext .getParameterValues ("host" ).get (0 );
106
+
102
107
MBeanServer mbs = ManagementFactory .getPlatformMBeanServer ();
103
108
final ObjectName jetty = new ObjectName ("com.ibm.streamsx.inet.rest:type=jetty,port=" + portNumber );
104
109
synchronized (syncMe ) {
105
110
if (!mbs .isRegistered (jetty )) {
106
111
try {
107
- mbs .registerMBean (new ServletEngine (jetty , operatorContext , portNumber ), jetty );
112
+ mbs .registerMBean (new ServletEngine (jetty , operatorContext , portNumber , host ), jetty );
108
113
} catch (InstanceAlreadyExistsException infe ) {
109
114
}
110
115
}
@@ -127,7 +132,7 @@ public static ServletEngineMBean getServletEngine(OperatorContext operatorContex
127
132
private final Map <String , ServletContextHandler > staticContexts = Collections .synchronizedMap (new HashMap <String , ServletContextHandler >());
128
133
private final List <ExposedPort > exposedPorts = Collections .synchronizedList (new ArrayList <ExposedPort >());
129
134
130
- private ServletEngine (ObjectName myObjectName , OperatorContext operatorContext , int portNumber ) throws Exception {
135
+ private ServletEngine (ObjectName myObjectName , OperatorContext operatorContext , int portNumber , String host ) throws Exception {
131
136
this .myObjectName = myObjectName ;
132
137
this .startingOperatorContext = operatorContext ;
133
138
final ThreadPoolExecutor tpe = newContextThreadPoolExecutor (operatorContext );
@@ -164,9 +169,9 @@ public void join() throws InterruptedException {
164
169
handlers = new ContextHandlerCollection ();
165
170
166
171
if (operatorContext .getParameterNames ().contains (SSL_CERT_ALIAS_PARAM ))
167
- setHTTPSConnector (operatorContext , server , portNumber );
172
+ setHTTPSConnector (operatorContext , server , portNumber , host );
168
173
else
169
- setHTTPConnector (operatorContext , server , portNumber );
174
+ setHTTPConnector (operatorContext , server , portNumber , host );
170
175
operatorContext .getMetrics ().getCustomMetric (METRIC_NAME_HTTPS ).setValue (isSSL ? 1 : 0 );
171
176
172
177
ServletContextHandler portsIntro = new ServletContextHandler (server , "/ports" , ServletContextHandler .SESSIONS );
@@ -187,18 +192,20 @@ public void join() throws InterruptedException {
187
192
/**
188
193
* Setup an HTTP connector.
189
194
*/
190
- private void setHTTPConnector (OperatorContext operatorContext , Server server , int portNumber ) {
195
+ private void setHTTPConnector (OperatorContext operatorContext , Server server , int portNumber , String host ) {
191
196
HttpConfiguration http_config = new HttpConfiguration ();
192
197
ServerConnector connector = new ServerConnector (server , new HttpConnectionFactory (http_config ));
193
198
connector .setPort (portNumber );
199
+ if (host != null )
200
+ connector .setHost (host );
194
201
connector .setIdleTimeout (IDLE_TIMEOUT );
195
202
server .addConnector (connector );
196
203
}
197
204
198
205
/**
199
206
* Setup an HTTPS connector.
200
207
*/
201
- private void setHTTPSConnector (OperatorContext operatorContext , Server server , int httpsPort ) {
208
+ private void setHTTPSConnector (OperatorContext operatorContext , Server server , int httpsPort , String host ) {
202
209
SslContextFactory .Server sslContextFactory = new SslContextFactory .Server ();
203
210
//Key Store is required
204
211
String keyStorePath = operatorContext .getParameterValues (SSL_KEYSTORE_PARAM ).get (0 );
@@ -250,6 +257,8 @@ private void setHTTPSConnector(OperatorContext operatorContext, Server server, i
250
257
new HttpConnectionFactory (https_config ));
251
258
252
259
connector .setPort (httpsPort );
260
+ if (host != null )
261
+ connector .setHost (host );
253
262
connector .setIdleTimeout (IDLE_TIMEOUT );
254
263
server .addConnector (connector );
255
264
0 commit comments