use of org.codelibs.core.timer.TimeoutTask in project fess-crawler by codelibs.
the class FtpClient method processRequest.
protected ResponseData processRequest(final String uri, final boolean includeContent) {
if (ftpAuthenticationHolder == null) {
init();
}
// start
AccessTimeoutTarget accessTimeoutTarget = null;
TimeoutTask accessTimeoutTask = null;
if (accessTimeout != null) {
accessTimeoutTarget = new AccessTimeoutTarget(Thread.currentThread());
accessTimeoutTask = TimeoutManager.getInstance().addTimeoutTarget(accessTimeoutTarget, accessTimeout.intValue(), false);
}
try {
return getResponseData(uri, includeContent);
} finally {
if (accessTimeout != null) {
accessTimeoutTarget.stop();
if (!accessTimeoutTask.isCanceled()) {
accessTimeoutTask.cancel();
}
}
}
}
use of org.codelibs.core.timer.TimeoutTask in project fess-crawler by codelibs.
the class ApiExtractor method getText.
@Override
public ExtractData getText(final InputStream in, final Map<String, String> params) {
if (logger.isDebugEnabled()) {
logger.debug("Accessing " + url);
}
// start
AccessTimeoutTarget accessTimeoutTarget = null;
TimeoutTask accessTimeoutTask = null;
if (accessTimeout != null) {
accessTimeoutTarget = new AccessTimeoutTarget(Thread.currentThread());
accessTimeoutTask = TimeoutManager.getInstance().addTimeoutTarget(accessTimeoutTarget, accessTimeout.intValue(), false);
}
final ExtractData data = new ExtractData();
final HttpPost httpPost = new HttpPost(url);
final HttpEntity postEntity = MultipartEntityBuilder.create().setMode(HttpMultipartMode.BROWSER_COMPATIBLE).setCharset(Charset.forName("UTF-8")).addBinaryBody("filedata", in).build();
httpPost.setEntity(postEntity);
try (CloseableHttpResponse response = httpClient.execute(httpPost)) {
if (response.getStatusLine().getStatusCode() != Constants.OK_STATUS_CODE) {
logger.error("Failed to access " + url + ", code: " + response.getStatusLine().getStatusCode() + ".");
return null;
}
data.setContent(EntityUtils.toString(response.getEntity(), Charsets.UTF_8));
final Header[] headers = response.getAllHeaders();
for (final Header header : headers) {
data.putValue(header.getName(), header.getValue());
}
} catch (final IOException e) {
throw new ExtractException(e);
} finally {
if (accessTimeout != null) {
accessTimeoutTarget.stop();
if (!accessTimeoutTask.isCanceled()) {
accessTimeoutTask.cancel();
}
}
}
return data;
}
use of org.codelibs.core.timer.TimeoutTask in project fess by codelibs.
the class ThumbnailGenerator method main.
public static void main(final String[] args) {
final Options options = new Options();
final CmdLineParser parser = new CmdLineParser(options);
try {
parser.parseArgument(args);
} catch (final CmdLineException e) {
System.err.println(e.getMessage());
System.err.println("java " + ThumbnailGenerator.class.getCanonicalName() + " [options...] arguments...");
parser.printUsage(System.err);
return;
}
if (logger.isDebugEnabled()) {
try {
ManagementFactory.getRuntimeMXBean().getInputArguments().stream().forEach(s -> logger.debug("Parameter: {}", s));
System.getProperties().entrySet().stream().forEach(e -> logger.debug("Property: {}={}", e.getKey(), e.getValue()));
System.getenv().entrySet().forEach(e -> logger.debug("Env: {}={}", e.getKey(), e.getValue()));
logger.debug("Option: {}", options);
} catch (final Exception e) {
// ignore
}
}
final String httpAddress = System.getProperty(Constants.FESS_ES_HTTP_ADDRESS);
if (StringUtil.isNotBlank(httpAddress)) {
System.setProperty(FesenClient.HTTP_ADDRESS, httpAddress);
}
TimeoutTask systemMonitorTask = null;
int exitCode;
try {
SingletonLaContainerFactory.setConfigPath("app.xml");
SingletonLaContainerFactory.setExternalContext(new GenericExternalContext());
SingletonLaContainerFactory.setExternalContextComponentDefRegister(new GenericExternalContextComponentDefRegister());
SingletonLaContainerFactory.init();
final Thread shutdownCallback = new Thread("ShutdownHook") {
@Override
public void run() {
if (logger.isDebugEnabled()) {
logger.debug("Destroying LaContainer..");
}
destroyContainer();
}
};
Runtime.getRuntime().addShutdownHook(shutdownCallback);
systemMonitorTask = TimeoutManager.getInstance().addTimeoutTarget(new SystemMonitorTarget(), ComponentUtil.getFessConfig().getThumbnailSystemMonitorIntervalAsInteger(), true);
final int totalCount = process(options);
if (totalCount != 0) {
logger.info("Created {} thumbnail files.", totalCount);
} else {
logger.info("No new thumbnails found.");
}
exitCode = 0;
} catch (final ContainerNotAvailableException e) {
if (logger.isDebugEnabled()) {
logger.debug("ThumbnailGenerator is stopped.", e);
} else if (logger.isInfoEnabled()) {
logger.info("ThumbnailGenerator is stopped.");
}
exitCode = Constants.EXIT_FAIL;
} catch (final Throwable t) {
logger.error("ThumbnailGenerator does not work correctly.", t);
exitCode = Constants.EXIT_FAIL;
} finally {
if (systemMonitorTask != null) {
systemMonitorTask.cancel();
}
destroyContainer();
}
System.exit(exitCode);
}
use of org.codelibs.core.timer.TimeoutTask in project fess by codelibs.
the class SuggestCreator method main.
public static void main(final String[] args) {
final Options options = new Options();
final CmdLineParser parser = new CmdLineParser(options);
try {
parser.parseArgument(args);
} catch (final CmdLineException e) {
System.err.println(e.getMessage());
System.err.println("java " + SuggestCreator.class.getCanonicalName() + " [options...] arguments...");
parser.printUsage(System.err);
return;
}
if (logger.isDebugEnabled()) {
try {
ManagementFactory.getRuntimeMXBean().getInputArguments().stream().forEach(s -> logger.debug("Parameter: {}", s));
System.getProperties().entrySet().stream().forEach(e -> logger.debug("Property: {}={}", e.getKey(), e.getValue()));
System.getenv().entrySet().forEach(e -> logger.debug("Env: {}={}", e.getKey(), e.getValue()));
logger.debug("Option: {}", options);
} catch (final Exception e) {
// ignore
}
}
final String httpAddress = System.getProperty(Constants.FESS_ES_HTTP_ADDRESS);
if (StringUtil.isNotBlank(httpAddress)) {
System.setProperty(FesenClient.HTTP_ADDRESS, httpAddress);
}
TimeoutTask systemMonitorTask = null;
int exitCode;
try {
SingletonLaContainerFactory.setConfigPath("app.xml");
SingletonLaContainerFactory.setExternalContext(new GenericExternalContext());
SingletonLaContainerFactory.setExternalContextComponentDefRegister(new GenericExternalContextComponentDefRegister());
SingletonLaContainerFactory.init();
final Thread shutdownCallback = new Thread("ShutdownHook") {
@Override
public void run() {
if (logger.isDebugEnabled()) {
logger.debug("Destroying LaContainer..");
}
destroyContainer();
}
};
Runtime.getRuntime().addShutdownHook(shutdownCallback);
systemMonitorTask = TimeoutManager.getInstance().addTimeoutTarget(new SystemMonitorTarget(), ComponentUtil.getFessConfig().getSuggestSystemMonitorIntervalAsInteger(), true);
exitCode = process(options);
} catch (final ContainerNotAvailableException e) {
if (logger.isDebugEnabled()) {
logger.debug("SuggestCreator is stopped.", e);
} else if (logger.isInfoEnabled()) {
logger.info("SuggestCreator is stopped.");
}
exitCode = Constants.EXIT_FAIL;
} catch (final Throwable t) {
logger.error("Suggest creator does not work correctly.", t);
exitCode = Constants.EXIT_FAIL;
} finally {
if (systemMonitorTask != null) {
systemMonitorTask.cancel();
}
destroyContainer();
}
logger.info("Finished SuggestCreator.");
System.exit(exitCode);
}
use of org.codelibs.core.timer.TimeoutTask in project fess by codelibs.
the class SuggestJob method execute.
@Override
public String execute() {
final StringBuilder resultBuf = new StringBuilder();
if (sessionId == null) {
// create session id
sessionId = RandomStringUtils.randomAlphabetic(15);
}
resultBuf.append("Session Id: ").append(sessionId).append("\n");
if (jobExecutor != null) {
jobExecutor.addShutdownListener(() -> ComponentUtil.getProcessHelper().destroyProcess(sessionId));
}
final TimeoutTask timeoutTask = createTimeoutTask();
try {
executeSuggestCreator();
} catch (final Exception e) {
logger.warn("Failed to create suggest data.", e);
resultBuf.append(e.getMessage()).append("\n");
} finally {
if (timeoutTask != null && !timeoutTask.isCanceled()) {
timeoutTask.cancel();
}
}
return resultBuf.toString();
}
Aggregations