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

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
24.11.2013, 03:18:33
    #38475562
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
tomcat 6.0.36: как запретить ему кешировать классы сервлетов ?
ozzmosisМеняю в исходнике на 'BEST-2', перекомпиляю в класс, делаю в браузере Ctrl-F5.
Время обновляет, а "BEST-..." так и остаётся старым, 'BEST-1'.

Здесь между компилляцией (неизвестно в какой среде) и деланием в браузере Ctrl-F5 выполнился огроменный
стек операций. Ради интереса загляди в server.log и посмотри что делает Tomcat в это время. Может
валит ошибками. Может вообще ничего не делает. А у тебя иллюзия деплоя.
...
Рейтинг: 0 / 0
24.11.2013, 12:19:44
    #38475653
ozzmosis
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
tomcat 6.0.36: как запретить ему кешировать классы сервлетов ?
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
24.11.2013, 13:11:15
    #38475668
MaxNevermind
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
tomcat 6.0.36: как запретить ему кешировать классы сервлетов ?
У меня сработало, просто добавил reloadable="true":
<Context reloadable="true">
</Context>
...
Рейтинг: 0 / 0
24.11.2013, 13:14:49
    #38475669
MaxNevermind
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
tomcat 6.0.36: как запретить ему кешировать классы сервлетов ?
MaxNevermind,

попробуйте может поставить еще один - чистый, на нем проверить, если сработает ищите различие в конфигурационных xml
...
Рейтинг: 0 / 0
26.11.2013, 14:24:31
    #38478258
ozzmosis
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
tomcat 6.0.36: как запретить ему кешировать классы сервлетов ?
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
27.11.2013, 18:58:15
    #38480478
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
tomcat 6.0.36: как запретить ему кешировать классы сервлетов ?
Шрифт штатной документации совсем сливается с фоном:
Код: 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
27.11.2013, 18:58:47
    #38480480
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
tomcat 6.0.36: как запретить ему кешировать классы сервлетов ?
Это был вопрос, а не утверждение.
...
Рейтинг: 0 / 0
27.11.2013, 19:45:22
    #38480567
ozzmosis
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
tomcat 6.0.36: как запретить ему кешировать классы сервлетов ?
Basil A. SidorovЭто был вопрос, а не утверждение.Можно было и утверждением оставить, намёк и так понятен ;-)
Я искал что-то весьма далекое от "unloadDelay". Спасибо за инфу.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / tomcat 6.0.36: как запретить ему кешировать классы сервлетов ? / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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