Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 当试图显示消息框时,NetBeans IDE 6.9.1中的Glassfish服务器停止工作_Java_Jsf_Servlets_Glassfish_Messagebox - Fatal编程技术网

Java 当试图显示消息框时,NetBeans IDE 6.9.1中的Glassfish服务器停止工作

Java 当试图显示消息框时,NetBeans IDE 6.9.1中的Glassfish服务器停止工作,java,jsf,servlets,glassfish,messagebox,Java,Jsf,Servlets,Glassfish,Messagebox,我正在使用JSF web应用程序。由于Java不支持在web应用程序中直接显示消息框,我决定尝试一些新的方法,并认为应该尝试在传统桌面应用程序中显示消息框的方法。为了简单起见,我在Javaservlet中尝试了以下方法。 JOptionPane.showMessageDialog(null, "A message from Java Servlet."); 没有想到它会工作,但它确实工作了,一条消息出现在web浏览器上!我觉得我发现了一些新的东西,但也发现我的NetBeans 6.9.1中的G

我正在使用JSF web应用程序。由于Java不支持在web应用程序中直接显示消息框,我决定尝试一些新的方法,并认为应该尝试在传统桌面应用程序中显示消息框的方法。为了简单起见,我在Javaservlet中尝试了以下方法。

JOptionPane.showMessageDialog(null, "A message from Java Servlet.");
没有想到它会工作,但它确实工作了,一条消息出现在web浏览器上!我觉得我发现了一些新的东西,但也发现我的NetBeans 6.9.1中的Glassfish服务器在两三次尝试后就停止工作了。它关闭时没有警告,没有错误,也没有任何异常


屏幕截图如下所示



现在,如果在Java web中使用此方法是非法的,则不应允许在Java web中使用此方法,并且在尝试这样做时应引发一些错误或异常。这应该是一个编译时错误,如果是这样的话,消息是如何通过JavaServlet显示在web浏览器上的?还有,为什么Glassfish服务器停止工作?

我不知道Glassfish为什么停止工作,我想这是由于背景中悬挂的Swing/AWT线程造成的。在终身运行的JavaWebEE应用程序中手动生成(非托管)线程一直是一个非常糟糕的主意。一旦请求完成,您将失去控制。您必须收集会话或应用程序作用域中线程的引用,最好是在会话或应用程序销毁/关闭时正确清理的池中

但是,该消息实际上不是由webbowser显示的,而是由Web服务器显示的。这意味着只有当Web服务器和webbrowser在物理上运行在同一台机器上时,您的意图才会起作用。当您将网站发布到万维网上的生产环境中,客户使用物理上不同的机器访问该环境时,显然不会发生这种情况

所有webbrowser检索和执行的都是纯HTML/CSS/JavaScript。在JSF中,如果您想要对标记、外观和/或执行托管bean操作进行更细粒度的控制,则需要JavaScript等,或者只需要覆盖中绝对定位的
。后者由许多第三方组件库(如with和with)以单一JSF组件的形式提供


如果出于某种原因您确实需要在web应用程序中运行Swing/AWT,那么您应该创建一个,并最终通过HTML
标记将其嵌入到web页面中。这将从服务器下载到客户端,并在客户端环境中执行。

我不知道Glassfish停止的原因,我猜这是由于后台挂起Swing/AWT线程造成的。在终身运行的JavaWebEE应用程序中手动生成(非托管)线程一直是一个非常糟糕的主意。一旦请求完成,您将失去控制。您必须收集会话或应用程序作用域中线程的引用,最好是在会话或应用程序销毁/关闭时正确清理的池中

但是,该消息实际上不是由webbowser显示的,而是由Web服务器显示的。这意味着只有当Web服务器和webbrowser在物理上运行在同一台机器上时,您的意图才会起作用。当您将网站发布到万维网上的生产环境中,客户使用物理上不同的机器访问该环境时,显然不会发生这种情况

所有webbrowser检索和执行的都是纯HTML/CSS/JavaScript。在JSF中,如果您想要对标记、外观和/或执行托管bean操作进行更细粒度的控制,则需要JavaScript等,或者只需要覆盖中绝对定位的
。后者由许多第三方组件库(如with和with)以单一JSF组件的形式提供


如果出于某种原因您确实需要在web应用程序中运行Swing/AWT,那么您应该创建一个,并最终通过HTML
标记将其嵌入到web页面中。这将从服务器下载到客户端,并在客户端环境中执行。

是否将记录器设置设置为“最精细”?如果没有,请设置它们并重新运行应用程序。然后将您在服务器日志中看到的内容发布。@Preston:)从下面的回答中,我觉得在Java web应用程序中使用我在问题中发布的这种概念没有任何意义。因此,我决定永远离开这个概念,我忘记了它。谢谢。你的记录器设置是否设置为“最佳”?如果没有,请设置它们并重新运行应用程序。然后将您在服务器日志中看到的内容发布。@Preston:)从下面的回答中,我觉得在Java web应用程序中使用我在问题中发布的这种概念没有任何意义。因此,我决定永远离开这个概念,我忘记了它。谢谢