2011-12-22 3 views
0

Когда запускается сервер приложений Tomcat, мне нужно убедиться, что все другие интерфейсные устройства подключены к сети, прежде чем прослушивать входящий HTTP-запрос. Есть ли способ сделать это программно из java?Есть ли способ программно приостановить Tomcat от прослушивания http-порта

ответ

1

Если ожидание короткое, я попробую использовать фильтр. См
http://www.oracle.com/technetwork/java/filters-137243.html
http://docs.oracle.com/javaee/5/tutorial/doc/bnagb.html
Вы можете проверить сопряжение устройств в это метод инициализации. Вам не нужно ничего делать в методе doFilter.

+0

Я новичок. После этого я хотел иметь этот код. – rickz

+0

Спасибо за идею. Это не будет работать для этого случая, потому что система зависимостей «может быть» недоступна более часа. и из-за SLA наша система не может быть подключена к этому периоду. – Reusable

+0

Во время простоя, что вы хотите, когда пользователь просматривает ваше приложение для wep? Сообщение об ошибке 404 Not Found? – rickz

1

Один из способов сделать это - установить размер пула потоков, связанный с соединителем http, равным нулю (minSpareThreads), а затем использовать JMX для установки его более высокого значения.

Просто теория - не уверен, что она будет работать.

Другим вариантом является изучение расширения разъемов с возможностью запуска/остановки через JMX.

В этом сообщении также описывается, как остановить/запустить разъем с помощью JMX. http://java-monitor.com/forum/showthread.php?t=169

+0

Благодарим вас за отличную идею. Я пытаюсь их немедленно! – Reusable

+0

Код выполнен отлично и способен найти MBeanServer. Странно, что сервер все еще способен прослушивать порт 9090 из другого браузера даже после строки: mbeanServer.invoke (objectName, «stop», null, null); – Reusable

+0

Я могу достичь этой формы jconsole. Перейдите к этому объекту - «Catalina: type = Connector, port = 8080» и вызовите стоп. Как только я это сделаю, я не могу подключиться к 8080 с помощью telnet. – gkamal

-1
public class TestFilter implements Filter { 
    public void init(FilterConfig config) throws ServletException{ 
        System.out.println("init of TestFilter"); 
        // Make sure all other interfacing device is online here. 
    } 
    public void destroy(){}   
    public void doFilter(ServletRequest req,ServletResponse resp,FilterChain chain) 
    throws ServletException, IOException { 
        chain.doFilter(req,resp); 
    } 
} 
Смежные вопросы