Java EE,GlassFish突然重启

时间:2018-03-24 16:04:14

标签: java exception java-ee

我正在学习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

我们如何解决这个难题?

感谢您的帮助。

0 个答案:

没有答案