Проблема с Входом палаты общин / Log4j устанавливает в пружинном веб-приложении с котом 6

Итак, вкратце; невозможно перейти от ледника к стандарту.

Amazon S3 поддерживает следующие переходы жизненного цикла между классами хранения с использованием конфигурации жизненного цикла:

Вы можете перейти из класса хранения STANDARD в любой другой класс хранения.

Вы можете перейти с любого класса хранения на класс хранения GLACIER.

Вы можете перейти от класса хранения STANDARD_IA к классам хранения INTELLIGENT_TIERING или ONEZONE_IA.

Вы можете перейти от класса хранения INTELLIGENT_TIERING к классу хранения ONEZONE_IA.

Следующие переходы жизненного цикла не поддерживаются:

Нельзя перейти из какого-либо класса хранения в класс хранения STANDARD.

Нельзя перейти из какого-либо класса хранения в класс хранения REDUCED_REDUNDANCY.

Нельзя перейти от класса хранения INTELLIGENT_TIERING к классу хранения STANDARD_IA.

Нельзя перейти с класса хранения ONEZONE_IA на классы хранения STANDARD_IA или INTELLIGENT_TIERING.

Нельзя перейти с класса хранения GLACIER на любой другой класс хранения.

blockquote>

Подробнее о жизненных циклах объектов s3 -> документы

15
задан Arne Burmeister 20 October 2008 в 09:49
поделиться

4 ответа

Существуют многочисленные зарегистрированные экземпляры на веб-людях предупреждения об использовании входа свободного городского населения. Так так, что SLF4J получает большую популярность.

Рассмотрение, что Вы не интересуетесь использованием Tomcat с Log4j, необходимо просто использовать Log4j непосредственно в приложении. Особенно, если нет никакого шанса, что Вы будете переключать платформы журналирования в будущее. Это уменьшит сложность Вашего приложения и избавится от любых проблем загрузчика класса, которые Вы имеете с входом свободного городского населения.

Это должно быть относительно легким поиском и заменой в Вашем тексте, поскольку вход свободного городского населения и log4j оба используют структуру подобного вызова для их методов входа.

10
ответ дан 1 December 2019 в 04:01
поделиться

Необходимо скомпилировать дополнительный компонент для полного входа свободного городского населения. Использованием Tomcat 6 по умолчанию hardcoded реализация входа свободного городского населения, который всегда делегирует к java.util.logging.

инструкции по Зданию здесь http://tomcat.apache.org/tomcat-6.0-doc/building.html

Затем заменяет кота-juli.jar в / каталоге bin Tomcat и помещает tomcat-juli-adapters.jar в / каталог lib наряду с log4j и конфигурацией.

1
ответ дан 1 December 2019 в 04:01
поделиться

Будьте особенно осторожны, который Вы имеете не , поместил log4j.jar в каталог свободного городского населения/lib Tomcat. Если корень classloader загрузит log4j библиотеки, то Вы столкнетесь с конфликтами и проблемами инициализации, когда Ваши веб-приложения также попытаются использовать log4j.

, Если необходимо использовать log4j для общего входа Tomcat, необходимо будет быть осторожными, что веб-приложения не пытаются загрузить log4j также. Если у Вас будет несколько веб-приложений на сервере, то Вы должны будете дисциплинировать инициализацию журнала того каждого веб-приложения, не топает на инициализации других веб-приложений. Каждое веб-приложение должно будет использовать уникальные идентификаторы Регистратора, которые могут быть выполнены с уникальными именами пакета.

Используя общий log4j в Tomcat с несколькими веб-приложениями вызывает серьезные конфликты, когда Вы совместно использовали библиотеки, что все хотят сделать вход, те, которые В спящем режиме или Spring. Следующее веб-приложение, которое пытается инициализировать log4j, может закрыть регистратор предыдущего. Это может быть путаница.

5
ответ дан 1 December 2019 в 04:01
поделиться

Решение из developpez.com Да, вы можете оптимизировать его и сделать его намного чище. Нельзя использовать такую "Цепочку Ответственность "с фабрикой:

public class ProcessFactory {
    private ArrayList<Process> processses = null;

    public ProcessFactory(){
        super();

        processses = new ArrayList<Process>();

        processses.add(new ProcessC1());
        processses.add(new ProcessC2());
        processses.add(new ProcessC3());
        processses.add(new ProcessC4());                    
        processses.add(new ProcessC5(6));                   
        processses.add(new ProcessC5(22));
    }

    public Process getProcess(int var, int subvar){
        for(Process process : processses){
            if(process.canDo(var, subvar)){
                return process;
            }
        }

        return null;
    }
}

Тогда, как ваши процессы реализуют процесс интерфейса с canXXX, вы можете легко использовать:

new ProcessFactory().getProcess(var,subvar).launch();
-121--4557764-

Вам не нужно менять CurrentCulture для преобразования. Если вы уверены, что дата в форме «dd/MM/yyyy», вы можете использовать

DateTime dtTemp = DateTime.ParseExact(dateString, "dd/MM/yyyy", null) // in order not to have to specify a FormatProvider

, а затем использовать

dtTemp.ToString("yyyy-MM-dd")

Таким образом, у вас не будет проблем независимо от того, что CurrentCulture. Однако, если вы не уверены, что дата имеет форму «dd/MM/yyyy», а основана на формате краткой даты CurrentCulture, то вы должны использовать

DateTime dtTemp = DateTime(dateString, CurrentCulture.DateTimeFormat.ShortDatePattern, CurrentCulture.DateTimeFormat);
-121--3294774-

Может быть я не прав. Попробуйте выполнить следующее:

A) Добавить приложение в пакет my.package как: ИЛИ B) Уменьшить уровень журнала root до INFO

-1
ответ дан 1 December 2019 в 04:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: