use of edu.uiuc.ncsa.myproxy.oa4mp.server.util.ConnectionCacheRetentionPolicy in project OA4MP by ncsa.
the class OA4MPServletInitializer method init.
@Override
public void init() throws ServletException {
if (isInitRun)
return;
isInitRun = true;
MyProxyDelegationServlet mps = (MyProxyDelegationServlet) getServlet();
try {
// mps.storeUpdates();
mps.processStoreCheck(mps.getTransactionStore());
mps.processStoreCheck(mps.getServiceEnvironment().getClientStore());
mps.processStoreCheck(mps.getServiceEnvironment().getClientApprovalStore());
} catch (IOException | SQLException e) {
e.printStackTrace();
throw new ServletException("Could not update table", e);
}
Cleanup transactionCleanup = MyProxyDelegationServlet.transactionCleanup;
ServiceEnvironmentImpl env = (ServiceEnvironmentImpl) getEnvironment();
MyLoggingFacade logger = env.getMyLogger();
logger.info("Cleaning up incomplete client registrations");
if (transactionCleanup == null) {
transactionCleanup = new Cleanup<>(logger);
// set it in the servlet
MyProxyDelegationServlet.transactionCleanup = transactionCleanup;
transactionCleanup.setStopThread(false);
transactionCleanup.setMap(env.getTransactionStore());
transactionCleanup.addRetentionPolicy(new ValidTimestampPolicy());
transactionCleanup.start();
logger.info("Starting transaction store cleanup thread");
}
Cleanup<Identifier, CachedObject> myproxyConnectionCleanup = MyProxyDelegationServlet.myproxyConnectionCleanup;
if (myproxyConnectionCleanup == null) {
myproxyConnectionCleanup = new Cleanup<Identifier, CachedObject>(logger) {
@Override
public List<CachedObject> age() {
List<CachedObject> x = super.age();
// is just trying to clean up afterwards.
for (CachedObject co : x) {
Object mp = co.getValue();
if (mp instanceof MyProxyConnectable) {
try {
((MyProxyConnectable) mp).close();
} catch (Throwable t) {
// don't care if it fails, get rid of it.
}
}
}
return x;
}
};
// set it in the servlet
MyProxyDelegationServlet.myproxyConnectionCleanup = myproxyConnectionCleanup;
myproxyConnectionCleanup.setStopThread(false);
Cache myproxyConnectionCache = MyProxyDelegationServlet.myproxyConnectionCache;
if (myproxyConnectionCache == null) {
myproxyConnectionCache = new Cache();
// set it in the servlet
MyProxyDelegationServlet.myproxyConnectionCache = myproxyConnectionCache;
}
myproxyConnectionCleanup.setMap(myproxyConnectionCache);
myproxyConnectionCleanup.addRetentionPolicy(new ConnectionCacheRetentionPolicy(myproxyConnectionCache, env.getTransactionStore()));
myproxyConnectionCleanup.start();
logger.info("Starting myproxy connection cache cleanup thread");
}
AbstractCLIApprover.ClientApprovalThread caThread = MyProxyDelegationServlet.caThread;
if (caThread != null && !caThread.isAlive()) {
caThread.setStopThread(false);
caThread.start();
}
KeyPairPopulationThread kpt = MyProxyDelegationServlet.kpt;
if (kpt != null && !kpt.isAlive()) {
kpt.setStopThread(false);
kpt.start();
}
try {
setupNotifiers();
} catch (IOException e) {
throw new GeneralException("Error: could not set up notifiers ", e);
}
}
Aggregations