Как мне обновить этот встроенный кот? - PullRequest
2 голосов
/ 28 декабря 2010

Я хочу в основном обновить мою версию Tomcat (на RHEL).

Всегда работал в среде, где мой файл war был бы выгружен в * / webapps, при перезапуске tomcat файл war расширялся, а остальное - история.

Теперь система, над которой я работаю, имеет совершенно другую структуру папок.

Примерно так:

[root@bliss ~]# ls /usr/local/blah/blu-app/WEB-INF/
accounts      faces-reports.xml  logging.properties             web-app_2_3.dtd
bin           faces-syscfg.xml   logging.properties-production  web-app_2_4.xsd
buildnum.txt  framework2007      perl                           web.xml
classes       host.xsd           settings                       work
deploy-root   java.policy        tags
events.xsd    lib                tld
[root@bliss ~]#

Здесь можно увидеть несколько банок, связанных с котом:

/usr/local/blah/blu-app/WEB-INF/lib/tomcat-http.jar
/usr/local/blah/blu-app/WEB-INF/lib/tomcat-util.jar
/usr/local/blah/blu-app/WEB-INF/lib/tomcat-coyote.jar

UPDATE

Итак, я узнал, что кот встроен, потому что нашел следующий код, запускающий его:

tomcat = new Embedded();
tomcat.setCatalinaHome(targetPath);

Host host = tomcat.createHost("localhost", targetPath);
Context rootCtx = tomcat.createContext("", targetPath);
((StandardContext)rootCtx).setWorkDir("WEB-INF/work"); 
ServletContext servletContext = rootCtx.getServletContext();
servletContext.setAttribute("version", version);
ApplRealm realm = new ApplRealm(servletContext);
tomcat.setRealm(realm);

rootCtx.setPrivileged(true);

Engine engine = tomcat.createEngine();
engine.setName("tomcat");
engine.setDefaultHost("localhost");
host.addChild(rootCtx);
engine.addChild(host);
tomcat.addEngine(engine);

LOG.debug("starting tomcat");
tomcat.start();
LOG.debug("tomcat started");
// clear out any old sessions: see bug 17882
Session[] sessions = rootCtx.getManager().findSessions();
for (int i = 0; i < sessions.length; i++)
{
    sessions[i].expire();
}

ServerSocket socket = null;
socket = new ServerSocket(CmcUtils.getControlPort(), 2, InetAddress.getByName("127.0.0.1"));
socket.accept();

LOG.info("Received shutdown command. Exiting !");

tomcat.stop();

Тогда возникает вопрос, как мне обновить этого кота до Tomcat6?

Заменить последними банками в WEB-INF / lib? Какие все банки?

Ответы [ 2 ]

1 голос
/ 28 декабря 2010

Это зависит.Это может быть встроенный tomcat, но также может быть сильно настроенная конфигурация tomcat.

Проверьте сценарий запуска, чтобы определить, какой класс вызывается.Если это обычный catalina, то он не встроен, просто он изменил конфигурацию так, чтобы она указывала на другую папку вместо веб-приложений.

Если он действительно встроен, то для обновления вам нужно будет заменить фляги tomcat на новые.

0 голосов
/ 28 декабря 2010

В tomcat мы можем создавать виртуальные хосты, то есть заставлять tomcat распознавать приложения, которые развернуты во внешних папках.

Здесь можно найти гораздо больше информации. http://tomcat.apache.org/tomcat-5.5-doc/config/host.html

В данном сценарии попробуйте поискать в файле server.xml, который обычно находится в папке conf домашней папки tomcat.

...