powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / tomcat 6.0.36: как запретить ему кешировать классы сервлетов ?
9 сообщений из 9, страница 1 из 1
tomcat 6.0.36: как запретить ему кешировать классы сервлетов ?
    #38475548
ozzmosis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте.

servlet:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
import java.text.*;
public class TestingServlet extends HttpServlet {
    private static SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd_HHmmss");
    public void doGet(HttpServletRequest req, HttpServletResponse res)
            throws ServletException, IOException {
        PrintWriter o = res.getWriter();
        o.println("<html>");
        o.println("<body>");
        o.println("Welcome to the BEST-1 Servlet Testing Center at " + sdf.format( System.currentTimeMillis() ) );
        o.println("</body>");
        o.println("</html>");
    }
}


web.xml:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app
    PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
    "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
  <servlet>
    <servlet-name>dummy01</servlet-name>
    <servlet-class>TestingServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>dummy01</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>
</web-app>


Запускаю в браузере (мозилла): http://localhost:8080/myApp/servlet/dummy01
Выдаёт 'BEST-1' и текущее время, т.е. всё ОК.

Меняю в исходнике на 'BEST-2', перекомпиляю в класс, делаю в браузере Ctrl-F5.
Время обновляет, а "BEST-..." так и остаётся старым, 'BEST-1'.

Как сделать, чтобы перекомпилированный класс перегружался таки томкатом, а не торчал у него в кеше ?

ЗЫ.
В %catalina_home%\conf\Catalina\localhost\ пробовал добавлять по очереди в каждый из файлов:
host-manager.xml
manager.xml
- параметр
Код: plaintext
<Context antiResourceLocking="false"  cachingAllowed="false"  privileged="true" useHttpOnly="true" />
(с перезапуском томката, ес-сно).
Результат - ноль, кеширование не отменяется.

В %catalina_home%\conf\context.xml добавлял:
Код: plaintext
    <Context reloadable="true" />
- результат такой же: никакой.
...
Рейтинг: 0 / 0
tomcat 6.0.36: как запретить ему кешировать классы сервлетов ?
    #38475562
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ozzmosisМеняю в исходнике на 'BEST-2', перекомпиляю в класс, делаю в браузере Ctrl-F5.
Время обновляет, а "BEST-..." так и остаётся старым, 'BEST-1'.

Здесь между компилляцией (неизвестно в какой среде) и деланием в браузере Ctrl-F5 выполнился огроменный
стек операций. Ради интереса загляди в server.log и посмотри что делает Tomcat в это время. Может
валит ошибками. Может вообще ничего не делает. А у тебя иллюзия деплоя.
...
Рейтинг: 0 / 0
tomcat 6.0.36: как запретить ему кешировать классы сервлетов ?
    #38475653
ozzmosis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maytonв server.log и посмотри что делает Tomcat в это время. Может валит ошибками. Может вообще ничего не делает. А у тебя иллюзия деплоя.Нет ошибок в логах. Их содержимое не меняется при перекомпиляции класса и тычке в Упр-Ф5 в браузере. Но и деплоя тоже нет:
type localhost.2013-11-24.log
Код: plaintext
1.
2.
3.
4.
D:\JAVA\Tomcat\apache-tomcat-6.0.36\logs>type localhost.2013-11-24.log
24.11.2013 13:13:33 org.apache.catalina.core.ApplicationContext log
INFO: ContextListener: contextInitialized()
24.11.2013 13:13:33 org.apache.catalina.core.ApplicationContext log
INFO: SessionListener: contextInitialized()
type catalina.2013-11-24.log
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
D:\JAVA\Tomcat\apache-tomcat-6.0.36\logs>type catalina.2013-11-24.log
24.11.2013 13:13:32 org.apache.catalina.core.AprLifecycleListener init
INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on
 the java.library.path: <. . .>
24.11.2013 13:13:32 org.apache.coyote.http11.Http11Protocol init
INFO: Initializing Coyote HTTP/1.1 on http-8080
24.11.2013 13:13:32 org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 931 ms
24.11.2013 13:13:32 org.apache.catalina.core.StandardService start
INFO: Starting service Catalina
24.11.2013 13:13:32 org.apache.catalina.core.StandardEngine start
INFO: Starting Servlet Engine: Apache Tomcat/6.0.36
24.11.2013 13:13:32 org.apache.catalina.startup.HostConfig deployDescriptor
INFO: Deploying configuration descriptor host-manager.xml
24.11.2013 13:13:33 org.apache.catalina.startup.HostConfig deployDescriptor
INFO: Deploying configuration descriptor manager.xml
24.11.2013 13:13:33 org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory docs
24.11.2013 13:13:33 org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory examples
24.11.2013 13:13:33 org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory myApp
24.11.2013 13:13:33 org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory myProbe
24.11.2013 13:13:33 org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory ROOT
24.11.2013 13:13:33 org.apache.coyote.http11.Http11Protocol start
INFO: Starting Coyote HTTP/1.1 on http-8080
24.11.2013 13:13:33 org.apache.jk.common.ChannelSocket init
INFO: JK: ajp13 listening on /0.0.0.0:8009
24.11.2013 13:13:33 org.apache.jk.server.JkMain start
INFO: Jk running ID=0 time=0/47  config=null
24.11.2013 13:13:33 org.apache.catalina.startup.Catalina start
INFO: Server startup in 1178 ms

Работаю вне IDE, всё пока делаю в far'e.
...
Рейтинг: 0 / 0
tomcat 6.0.36: как запретить ему кешировать классы сервлетов ?
    #38475668
MaxNevermind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня сработало, просто добавил reloadable="true":
<Context reloadable="true">
</Context>
...
Рейтинг: 0 / 0
tomcat 6.0.36: как запретить ему кешировать классы сервлетов ?
    #38475669
MaxNevermind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaxNevermind,

попробуйте может поставить еще один - чистый, на нем проверить, если сработает ищите различие в конфигурационных xml
...
Рейтинг: 0 / 0
tomcat 6.0.36: как запретить ему кешировать классы сервлетов ?
    #38478258
ozzmosis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ozzmosisВ %catalina_home%\conf\context.xml добавлял:
Код: plaintext
    <Context reloadable="true" />
- результат такой же: никакой.Видимо, бредил, когда добавил закрывающую "/>"
Потому что поставил на другой машине с tomcat'ом-7 всё работает:
conf/context.xml
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
. . .
<!-- The contents of this file will be loaded for each web application -->
<Context  reloadable="true" >

    <!-- Default set of monitored resources -->
    <WatchedResource>WEB-INF/web.xml</WatchedResource>
. . .
</Context>

Лог томката:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
. . .
INFO: Starting ProtocolHandler ["ajp-bio-8009"]
26.11.2013 14:15:48 org.apache.catalina.startup.Catalina start
INFO: Server startup in 1970 ms
26.11.2013 14:16:28 org.apache.catalina.core.StandardContext reload
INFO: Reloading Context with name [/myApp] has started
26.11.2013 14:16:28 org.apache.catalina.core.StandardContext reload
INFO: Reloading Context with name [/myApp] is completed

Только теперь новый вопрос: с какой частотой томкат следит за таймштампом классов ? Это регулируется или нет ?
...
Рейтинг: 0 / 0
tomcat 6.0.36: как запретить ему кешировать классы сервлетов ?
    #38480478
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Шрифт штатной документации совсем сливается с фоном:
Код: sql
1.
2.
3.
unloadDelay
Number of ms that the container will wait for servlets to unload.
If not specified, the default value is 2000 ms.
...
Рейтинг: 0 / 0
tomcat 6.0.36: как запретить ему кешировать классы сервлетов ?
    #38480480
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это был вопрос, а не утверждение.
...
Рейтинг: 0 / 0
tomcat 6.0.36: как запретить ему кешировать классы сервлетов ?
    #38480567
ozzmosis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Basil A. SidorovЭто был вопрос, а не утверждение.Можно было и утверждением оставить, намёк и так понятен ;-)
Я искал что-то весьма далекое от "unloadDelay". Спасибо за инфу.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / tomcat 6.0.36: как запретить ему кешировать классы сервлетов ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]