Я пытаюсь следовать примеру из книги «Начало JSP, JSF и Tomcat». Я считаю, что это как-то связано с разрешениями, но я не знаю, стоит ли их менять. Я установил tomcat, и большинство папок принадлежат root.
Используемые мной файлы можно найти здесь .
У меня есть класс MyLog. java в $CATALINA_HOME/webapps/ROOT/WEB-INF/classes/MyClasses/MyLog.java
, -rw-r--r-- 1 root root MyLog.java
. Я только что скопировал его из папки с github, я не изменил разрешения и в книге не сказано, что я должен их менять.
/* MyLog.java - Implements a log class */
package MyClasses;
import java.util.Date;
import java.text.SimpleDateFormat;
import java.io.FileWriter;
import java.io.PrintWriter;
import java.io.IOException;
public class MyLog {
private static final SimpleDateFormat TIME_FMT =
new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS");
private static PrintWriter log = null;
public MyLog(String logpath) throws IOException {
log = new PrintWriter(new FileWriter(logpath, true));
}
public static synchronized void println(String s) {
log.println(TIME_FMT.format(new java.util.Date()) + " - " + s);
log.flush();
}
public static synchronized void close() {
log.close();
}
}
Тогда у меня также есть файл $CATALINA_HOME/webapps/ROOT/tets/log_on.jsp
. Папка tests
и файл log_on.jsp
принадлежат мне.
<%@page language="java" contentType="text/html"%>
<%@ page import="MyClasses.*"%>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>Switch the log ON</title>
</head>
<body>
<%
MyLog log = (MyLog)application.getAttribute("logFile");
if (log == null) {
try {
log = new MyLog("logs/mylog.log");
application.setAttribute("logFile", log);
log.println("Logging enabled");
out.println("Logging enabled");
} catch (Exception e) {
out.println(e.getMessage());
}
} else {
log.println("Attempt to enable logging");
out.println("Logging was already enabled");
}
%>
</body>
</html>
Когда я открываю браузер с адресом http://localhost:8080/tests/log_on.jsp
, я получаю logs/mylog.log (No such file or directory)
.
Я думаю Я должен изменить владельца папки $CATALINA_HOME/logs
с root на моего пользователя и MyLog.java
, но тогда почему бы книге не сказать что-нибудь. Было бы хорошо, если бы после установки Tomcat я просто сделал sudo chown -R myuser $CATALINA_HOME
, чтобы избежать этих ошибок? Если нет, что я должен сделать, чтобы этот пример работал правильно?