Исключение нулевого указателя - это индикатор того, что вы используете объект, не инициализируя его.
Например, ниже - класс ученика, который будет использовать его в нашем коде.
public class Student {
private int id;
public int getId() {
return this.id;
}
public setId(int newId) {
this.id = newId;
}
}
Приведенный ниже код дает вам исключение с нулевым указателем.
public class School {
Student obj_Student;
public School() {
try {
obj_Student.getId();
}
catch(Exception e) {
System.out.println("Null Pointer ");
}
}
}
Поскольку вы используете Obj_Student
, но вы забыли инициализировать его, как в правильном коде, показанном ниже:
public class School {
Student obj_Student;
public School() {
try {
obj_Student = new Student();
obj_Student.setId(12);
obj_Student.getId();
}
catch(Exception e) {
System.out.println("Null Pointer ");
}
}
}
Для файлов Вы перечислили, простой ответ, принимающий Вас, используют все значения по умолчанию, порядок (отметьте conf/Catalina/localhost):
...tomcat/conf/context.xml
...tomcat/conf/Catalina/localhost/myapp.xml
...tomcat/webapps/myapp/META-INF/context.xml
я основываю это (и следующее обсуждение) на документация чиновника Tomcat 5.5 для Контейнер Контекста .
Поэтому, если это - простой ответ, каков полный ответ?
Tomcat 5.5. посмотрит в нескольких других местах для <Context>
элементы вне тех, которых Вы перечислили (см. официальные документы).
Эти META-INF/context.xml
никогда не будет открываться, если Tomcat найдет Catalina/localhost/myapp.xml
. Таким образом, если у Вас на самом деле есть все файлы выше, его более корректное для высказывания эти META-INF/context.xml
не важно , не, что это - самый низкий приоритет.
, Если Вы говорите <Context override="true" ...>
в Вашем Catalina/localhost/myapp.xml
, который сделает его самым высоким приоритет, независимо от conf/context.xml
. То же самое в Вашем META-INF\context.xml
, пока Вы не имеете Catalina/localhost/myapp.xml
(см. предыдущий абзац).
кроме того, /Catalina/localhost/
часть пути в файлах выше на самом деле выходит из "значения по умолчанию" conf/server.xml
и соответствует <Engine name="Catalina" defaultHost="localhost">
. Если Ваш server.xml
использование различные значения для [1 114] и defaultHost
в эти <Engine>
, это - структура dir, где Tomcat посмотрит.
Наконец, для ...tomcat\
часть файлов, которые Вы перечислили, Tomcat, использует dir от $CATALINA_BASE
переменная среды. Если это не установлено, то это использует dir от $CATALINA_HOME
переменная среды, которая является каталогом установки Tomcat. Мне нравится устанавливать и использовать $CATALINA_BASE
так, чтобы я не "загрязнял" свою установку Tomcat.
Мое понимание:
Я не нашел официальной документации, но я наблюдал порядок загрузки быть:
1 tomcat_home/conf/context.xml
2 tomcat_home/webapps/myapp/META-INF/context.xml
, Где № 2 является последним примененным (таким образом, его настройки переопределяют все предыдущие, где применимый).
я никогда не использовал веб-приложение, названное файлами контекста (Ваша опция № 2).