我正在学习Java EE。
首先,我将介绍一些我发现的例外情况以及解决问题的方法。 然后我会询问当前的异常。
为了实现记录每个类和方法访问的方法,我写了一个本地文件。首先我尝试了Files.write类,然后我意识到它报告了一个EOFException。我解决它的方法是使用BufferedWriter:
private void writeLogToFile(String text, File file) throws IOException {
BufferedWriter output = null;
output = new BufferedWriter(new FileWriter(file, true));
output.write(text);
output.close();
}
然后,为了实现会话持久性,我设法存储了在用户的HttpSession中创建的课程和评估。但是我看到它报告了isNotSerializable异常。为了处理这个问题,我在两个类中都实现了Serializable,我们在会话中坚持:
public class Evaluacion implements Serializable {
要实现一个页面以查看所有程序的日志,我使用了Singleton。然后,为了跟踪用户每次访问时所有页面的统计信息,我们使用了另一个SIngleton。困难在于每次GlassFish启动时,第一个Singleton将使用第二个,而不能由JNDI来支持,因为它尚未部署。所以我使用了@DependsOn标签。
此外,GlassFish警告我,因为它无法钝化Statefull bean,因为我在@PrePassivate标记的方法中有对统计单例的引用。所以我不得不删除正文的内容。 其他类似问题:Passivation issue with Stateful Session Bean
目前遇到的困难是:每当我访问一个完整状态时,GlassFish会突然重启。
我的日志是:
Grave: The Class frontController.EvaluacionCommand having annotation javax.servlet.annotation.WebServlet need to be a derived class of javax.servlet.http.HttpServlet.
symbol: TYPE location: class frontController.EvaluacionCommand
Grave: The Class frontController.AlumnosCommand having annotation javax.servlet.annotation.WebServlet need to be a derived class of javax.servlet.http.HttpServlet.
symbol: TYPE location: class frontController.AlumnosCommand
Grave: The Class frontController.CuestionarioCommand having annotation javax.servlet.annotation.WebServlet need to be a derived class of javax.servlet.http.HttpServlet.
symbol: TYPE location: class frontController.CuestionarioCommand
Grave: The Class frontController.EncuestaCommand having annotation javax.servlet.annotation.WebServlet need to be a derived class of javax.servlet.http.HttpServlet.
symbol: TYPE location: class frontController.EncuestaCommand
Grave: The Class frontController.CourseInfoCommand having annotation javax.servlet.annotation.WebServlet need to be a derived class of javax.servlet.http.HttpServlet.
symbol: TYPE location: class frontController.CourseInfoCommand
我搜索过,因为每个使用@WebServlet的类都需要实现HttpServlet。
但是我正在实现FrontServlet模式,我需要从FrontCommand抽象类扩展每个命令。
那么我不能做类似的事情:
class AlumnosCommand extends HttpServlet implements FrontCommand
我们如何解决这个难题?
感谢您的帮助。