Skip to content

Commit 9c07b97

Browse files
authored
Merge pull request #29 from IBMStreams/develop
Develop
2 parents 4fc2640 + 6380083 commit 9c07b97

File tree

5 files changed

+30
-8
lines changed

5 files changed

+30
-8
lines changed

CHANGELOG.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,3 +28,11 @@
2828
* New sample: HTTPXMLView
2929
* Simplified sample RequestProcessTuple
3030
* Removed puzzeling RequestProcessTuple Json Sample
31+
32+
## v4.1.0
33+
* Enhancement in operator HTTPTupleInjection: Flexible partition query
34+
* Enhancement in operator HTTPTupleInjection: new parameter 'partitionBy'
35+
* Enhancement in Servlet Operator: new Parameter 'host'
36+
* Enhancement in operator HTTPTupleInjection: insert the default values
37+
* Correction in operator HTTPTupleInjection: selection of partition fails if attribute has type boolean
38+

com.ibm.streamsx.inetserver/com.ibm.streamsx.inet/namespace-info.spl

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,9 @@
2525
* This allows operators to expose streams through the same webserver
2626
* without having to be connected in the SPL graph.
2727
*
28-
* Operators which are using a shared jetty instance must have the same parameter values for parameters
28+
* Operators which are using a shared jetty instance must have the **same parameter values for parameters**
2929
* * `port`
30+
* * `host`
3031
* * `certificateAlias`
3132
* * `keyStore`
3233
* * `keyStorePassword`

com.ibm.streamsx.inetserver/impl/java/src/com/ibm/streamsx/inet/rest/engine/ServletEngine.java

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -95,16 +95,21 @@ public class ServletEngine implements ServletEngineMBean, MBeanRegistration {
9595
public static final String METRIC_NAME_PORT = "serverPort";
9696

9797
public static ServletEngineMBean getServletEngine(OperatorContext operatorContext) throws Exception {
98+
9899
int portNumber = DEFAULT_PORT;
99100
if (operatorContext.getParameterNames().contains("port"))
100101
portNumber = Integer.valueOf(operatorContext.getParameterValues("port").get(0));
101102

103+
String host = null;
104+
if (operatorContext.getParameterNames().contains("host"))
105+
host = operatorContext.getParameterValues("host").get(0);
106+
102107
MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
103108
final ObjectName jetty = new ObjectName("com.ibm.streamsx.inet.rest:type=jetty,port=" + portNumber);
104109
synchronized (syncMe) {
105110
if (!mbs.isRegistered(jetty)) {
106111
try {
107-
mbs.registerMBean(new ServletEngine(jetty, operatorContext, portNumber), jetty);
112+
mbs.registerMBean(new ServletEngine(jetty, operatorContext, portNumber, host), jetty);
108113
} catch (InstanceAlreadyExistsException infe) {
109114
}
110115
}
@@ -127,7 +132,7 @@ public static ServletEngineMBean getServletEngine(OperatorContext operatorContex
127132
private final Map<String, ServletContextHandler> staticContexts = Collections.synchronizedMap(new HashMap<String, ServletContextHandler>());
128133
private final List<ExposedPort> exposedPorts = Collections.synchronizedList(new ArrayList<ExposedPort>());
129134

130-
private ServletEngine(ObjectName myObjectName, OperatorContext operatorContext, int portNumber) throws Exception {
135+
private ServletEngine(ObjectName myObjectName, OperatorContext operatorContext, int portNumber, String host) throws Exception {
131136
this.myObjectName = myObjectName;
132137
this.startingOperatorContext = operatorContext;
133138
final ThreadPoolExecutor tpe = newContextThreadPoolExecutor(operatorContext);
@@ -164,9 +169,9 @@ public void join() throws InterruptedException {
164169
handlers = new ContextHandlerCollection();
165170

166171
if (operatorContext.getParameterNames().contains(SSL_CERT_ALIAS_PARAM))
167-
setHTTPSConnector(operatorContext, server, portNumber);
172+
setHTTPSConnector(operatorContext, server, portNumber, host);
168173
else
169-
setHTTPConnector(operatorContext, server, portNumber);
174+
setHTTPConnector(operatorContext, server, portNumber, host);
170175
operatorContext.getMetrics().getCustomMetric(METRIC_NAME_HTTPS).setValue(isSSL ? 1 : 0);
171176

172177
ServletContextHandler portsIntro = new ServletContextHandler(server, "/ports", ServletContextHandler.SESSIONS);
@@ -187,18 +192,20 @@ public void join() throws InterruptedException {
187192
/**
188193
* Setup an HTTP connector.
189194
*/
190-
private void setHTTPConnector(OperatorContext operatorContext, Server server, int portNumber) {
195+
private void setHTTPConnector(OperatorContext operatorContext, Server server, int portNumber, String host) {
191196
HttpConfiguration http_config = new HttpConfiguration();
192197
ServerConnector connector = new ServerConnector(server, new HttpConnectionFactory(http_config));
193198
connector.setPort(portNumber);
199+
if (host != null)
200+
connector.setHost(host);
194201
connector.setIdleTimeout(IDLE_TIMEOUT);
195202
server.addConnector(connector);
196203
}
197204

198205
/**
199206
* Setup an HTTPS connector.
200207
*/
201-
private void setHTTPSConnector(OperatorContext operatorContext, Server server, int httpsPort) {
208+
private void setHTTPSConnector(OperatorContext operatorContext, Server server, int httpsPort, String host) {
202209
SslContextFactory.Server sslContextFactory = new SslContextFactory.Server();
203210
//Key Store is required
204211
String keyStorePath = operatorContext.getParameterValues(SSL_KEYSTORE_PARAM).get(0);
@@ -250,6 +257,8 @@ private void setHTTPSConnector(OperatorContext operatorContext, Server server, i
250257
new HttpConnectionFactory(https_config));
251258

252259
connector.setPort(httpsPort);
260+
if (host != null)
261+
connector.setHost(host);
253262
connector.setIdleTimeout(IDLE_TIMEOUT);
254263
server.addConnector(connector);
255264

com.ibm.streamsx.inetserver/impl/java/src/com/ibm/streamsx/inet/rest/ops/ServletOperator.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,10 @@ public void shutdown() throws Exception {
7070
@Parameter(optional=true, description="Port number for the embedded Jetty HTTP server, default: \\\"" + ServletEngine.DEFAULT_PORT + "\\\". "
7171
+ "If the port is set to 0, the jetty server uses a free tcp port, and the metric `serverPort` delivers the actual value.")
7272
public void setPort(int port) {}
73+
@Parameter(optional=true, description="You can configure a host either as a host name or IP address to identify a "
74+
+ "specific network interface on which to listen. If not set, or set to the value of 0.0.0.0, the integrated "
75+
+ "jetty server listens on all local interfaces.")
76+
public void setHost(String host) {}
7377
@Parameter(optional=true, description=CONTEXT_DESC)
7478
public void setContext(String context) {}
7579
@Parameter(optional=true, description=CRB_DESC)

com.ibm.streamsx.inetserver/info.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ This toolkit separates its functionality into a number of namespaces:
1414
* [namespace:com.ibm.streamsx.inet.wsserver|com.ibm.streamsx.inet.wsserver]: Operators that embed a (jetty) WebSocket server to expose streaming data as WebSocket messages.
1515

1616
</description>
17-
<version>4.0.0</version>
17+
<version>4.1.0</version>
1818
<requiredProductVersion>4.0.1.0</requiredProductVersion>
1919
</identity>
2020
<dependencies/>

0 commit comments

Comments
 (0)