* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
- *
+ *
* http://www.apache.org/licenses/LICENSE-2.0
- *
+ *
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
import org.onap.aaf.cadi.filter.CadiFilter;
public abstract class JettyServletServer implements Servlet {
-
+
public static Server run(PropAccess access, String context, Class<? extends Servlet> servletCls, int port, String ...args) throws Exception {
// Defaults:
int blockingQueueSize = 10;
if (hostname==null) {
hostname = Inet4Address.getLocalHost().getHostName();
}
-
+
// Add your own Properties to override defaults
ArrayBlockingQueue<Runnable> queue = new ArrayBlockingQueue<Runnable>(blockingQueueSize);
QueuedThreadPool pool = new QueuedThreadPool(maxPoolSize,corePoolSize,keepAliveTime,queue);
- Server server = new Server(pool);
+ Server server = new Server(pool);
String protocol;
if (access.getProperty(Config.CADI_KEYSTORE_PASSWORD,null)==null) {
SslContextFactory scf = new SslContextFactory();
scf.setSslContext(securityInfo.getSSLContext());
scf.setWantClientAuth(true);
- ServerConnector sslConnector = new ServerConnector(server,scf);
+ ServerConnector sslConnector = new ServerConnector(server,scf);
sslConnector.setHost(hostname);
sslConnector.setPort(port);
server.addConnector(sslConnector);
protocol = "https";
}
-
+
// Setup Sample Servlet
CadiFilter cf = new CadiFilter(true,access);
FilterHolder cfh = new FilterHolder(cf);
-
+
ServletHandler shand = new ServletHandler();
shand.addFilterWithMapping(cfh, "/*", FilterMapping.ALL);
// To use normal Servlets, just add the class here... Actually, bug in Jetty... need to add with ServletHolder
ServletHolder sh = new ServletHolder();
sh.setServlet(servletCls.newInstance());
shand.addServletWithMapping(sh,"/*");
-
+
// To use JASPI Authorization Style to protect the servlet, wrap the Servlet
- // with the "MiniJSAPIWrap class, as shown here. Then add "@RolesAllowed" on your
+ // with the "MiniJSAPIWrap class, as shown here. Then add "@RolesAllowed" on your
// servlet (see sample). Use Pipe delimited Permissions, not AAF Roles in the line
// shand.addServletWithMapping(new MiniJASPIWrap(MyServlet.class),"/*");
// call initialize after start
// Startup the Server
server.setStopAtShutdown(true);
server.start();
-
+
access.log(Level.INFO,"TestServlet is running at " + protocol + "://"+hostname+':'+port+context);
return server;
}