Резюме
Свежеустановленный (через apt-get
) Tomcat на недавно установленной 64-разрядной версии Ubuntu 8.04 LTS работает, но (кажется) ничего не регистрирует. Смотрите также "Что я пробовал" и "Закрытие на нем"ниже.
Более детально
Поскольку сопровождающие пакетов проделали ОГРОМНЫЙ объем работы, заставить работать базовые вещи было довольно просто. apt-get
и указывая Tomcat на правый JDK. И это работает. Но, похоже, ничего не регистрирует.
Насколько я могу судить, инфраструктура логирования управляется через logging.properties
файлы (поскольку это Tomcat 5.5, а не Tomcat 5.0), включая центральный (который можно переопределить для каждого веб-приложения) в /etc/tomcat55/logging.properties
(/etc/tomcat55
символически связан как /var/lib/tomcat55/conf
). Я не отменяю это, и я не понимаю, почему я не вижу что-то. Вот файл:
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
handlers = 1catalina.org.apache.juli.FileHandler, 2localhost.org.apache.juli.FileHandler, 3manager.org.apache.juli.FileHandler, 4admin.org.apache.juli.FileHandler, 5host-manager.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler
.handlers = 1catalina.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler
############################################################
# Handler specific properties.
# Describes specific configuration info for Handlers.
############################################################
1catalina.org.apache.juli.FileHandler.level = FINE
1catalina.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
1catalina.org.apache.juli.FileHandler.prefix = catalina.
2localhost.org.apache.juli.FileHandler.level = FINE
2localhost.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
2localhost.org.apache.juli.FileHandler.prefix = localhost.
3manager.org.apache.juli.FileHandler.level = FINE
3manager.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
3manager.org.apache.juli.FileHandler.prefix = manager.
4admin.org.apache.juli.FileHandler.level = FINE
4admin.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
4admin.org.apache.juli.FileHandler.prefix = admin.
5host-manager.org.apache.juli.FileHandler.level = FINE
5host-manager.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
5host-manager.org.apache.juli.FileHandler.prefix = host-manager.
java.util.logging.ConsoleHandler.level = FINE
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
############################################################
# Facility specific properties.
# Provides extra control for each logger.
############################################################
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].level = DEBUG
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].handlers = 2localhost.org.apache.juli.FileHandler
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].level = INFO
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].handlers = 3manager.org.apache.juli.FileHandler
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/admin].level = INFO
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/admin].handlers = 4admin.org.apache.juli.FileHandler
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager].level = INFO
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager].handlers = 5host-manager.org.apache.juli.FileHandler
# For example, set the com.xyz.foo logger to only log SEVERE
# messages:
#org.apache.catalina.startup.ContextConfig.level = DEBUG
#org.apache.catalina.startup.HostConfig.level = DEBUG
#org.apache.catalina.session.ManagerBase.level = DEBUG
Единственное изменение, которое я сделал:
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].level = DEBUG
... который был установлен на INFO
как и все остальные, но я хотел, чтобы это в лог что-то, поэтому я увеличил его до DEBUG
. Естественно, я перезапустил Tomcat.
Я могу компилировать и просматривать JSP, так что Tomcat снова работает, но /var/lib/tomcat5.5/logs
упорно не пусто. Даже если я вызываю ошибку, имея недопустимый JSP или что-то подобное, я ничего не получаю.
Что я пробовал
logs
каталог в другом месте, если это не /var/lib/tomcat5.5/logs
(хотя это было создано установкой).Одно я нет сделано для chown
все должно принадлежать tomcat55
пользователь, созданный при установке. logs
принадлежит tomcat55
, но ряд других каталогов и файлов принадлежит root
, хотя они доступны для чтения во всем мире. Я не сделал этого, потому что (вешает голову) Я не могу понять, как полностью создать резервную копию существующего дерева, чтобы легко отменить изменение. У взорванного дерева абсолютные символические ссылки переплетаются /etc/tomcat55
, /var/lib/tomcat55
, и /usr/share/tomcat55
что я знаю о. Я мог бы разобраться в каждом из них, но я не уверен, что что-то упустил.
РЕДАКТИРОВАТЬ:
Закрытие на нем
Итак, я обнаружил, что он пишет консольные вещи на /var/log/daemon.log
. Ух! По крайней мере, это дает мне возможность начать. И он выдает жалобы вроде:
jsvc.exec[18819]: Can't load log handler "2localhost.org.apache.juli.FileHandler"
jsvc.exec[18819]: java.lang.ClassNotFoundException: 2localhost.org.apache.juli.FileHandler
И я не удивлен, 2localhost.org.apache.juli.FileHandler
недопустимое имя класса (пакеты не могут начинаться с цифр!). Поэтому я подозреваю, что по умолчанию logging.properties
файл ... не хороший. Отчитаюсь.
Разобрался - посылка не вполне работать с последним пакетом Sun Java6, sun-java6-jdk
; исправление довольно простое, когда вы его найдете:
Как только я нашел daemon.log
, Я обнаружил ошибки, перечисленные в моем редактировании вопроса, но это всего лишь побочный эффект этой ошибки:
jsvc.exec[18819]: Could not load Logmanager "org.apache.juli.ClassLoaderLogManager"
jsvc.exec[18819]: java.security.AccessControlException: access denied (java.lang.RuntimePermission setContextClassLoader)
... что происходит потому, что пакет по умолчанию запускает Tomcat с помощью диспетчера безопасности Java согласно этому параметру в /etc/init.d/tomcat5.5
:
# Use the Java security manager? (yes/no)
TOMCAT5_SECURITY=yes
... но пакет не установить разрешения на JULI (реализация ведения журнала по умолчанию), которые, по-видимому, необходимы последней версии Java6 от Sun для работы. Более ранние версии Java6 явно были в порядке. Эта недавняя ветка в списке рассылки Tomcat-user указал мне в правильном направлении; рассматриваемый пользователь получил указанную выше ошибку, и в конце концов Марк Томас выяснил, что это разрешение:
permission java.lang.RuntimePermission "setContextClassLoader";
... отсутствовал из catalina.policy
. И действительно, если я добавлю это разрешение в раздел JULI /etc/tomcat5.5/policy.d/03catalina.policy
и перезапустите Tmocat, ошибка исчезнет, и я получу файлы журнала! Huzzah!
Будьте осторожны: если вы также установите tomcat5.5-webapps
чтобы получить примеры, приложение-менеджер и т. д., вам нужно включить другие настройки 03catalina.policy
. Конечно, у вас всегда есть возможность отключить диспетчер безопасности, но это то, что он для.
Все официальные сообщения об этой проблеме находятся здесь: https://bugs.launchpad.net/ubuntu/+source/tomcat5.5/+bug/410379