假设,我有一个拥有大量servlet的Web服务器.对于在这些servlet之间传递的信息,我正在设置会话和实例变量.
现在,如果有2个或更多用户向此服务器发送请求,那么会话变量会发生什么?它们对所有用户都是通用的,或者对于每个用户而言都是不同的.如果它们不同,那么服务器如何区分不同的用户?
还有一个类似的问题,如果有n用户访问特定的servlet,那么这个servlet只在第一个用户第一次访问它时实例化,或者是否为所有用户单独实例化?换句话说,实例变量会发生什么?
java multithreading servlets session-variables instance-variables
我什么时候应该使用<h:outputLink>而不是<h:commandLink>?
我知道a commandLink生成一个HTTP帖子; 我猜这outputLink将产生HTTP获取.也就是说,我读过的大多数JSF教程材料都是commandLink(几乎?)使用的.
上下文:我正在实现一个小的演示项目,它显示了一个到用户页面的标题链接,就像Stack Overflow的......

......我不确定commandLink(可能是?faces-redirect=true用于书签)还是outputLink正确的选择.
直到在什么时间点不JSF UI保存组件的状态在服务器端和什么时候被删除的UI组件的状态信息从服务器内存?当应用程序中的登录用户浏览页面时,组件的状态是否会继续在服务器上累积?
我不明白在服务器上保持UI组件状态有什么好处?是不是直接将经过验证/转换的数据传递给托管bean?我可以或者应该尽量避免它吗?
如果有数千个并发用户会话,那么在服务器端是否会消耗太多内存?我有一个应用程序,用户可以在某些主题上发布博客.这个博客的规模非常大.当有回复或请求查看博客时,这些大页面数据是否会被保存为组件状态的一部分? 这会耗费太多记忆.这不是一个问题吗?
现在,在使用JSF时不再需要保存状态.可以使用高性能无状态JSF实现.有关详细信息和讨论,请参阅此博客和此问题.此外,JSF规范中还包含一个未解决的问题,即为JSF提供无状态模式的选项.(PS考虑的问题投票这个和这个,如果这对你是一个非常有用的功能.)
一个好消息,Mojarra 2.1.19是无状态模式!
看这里:
http://weblogs.java.net/blog/mriem/archive/2013/02/08/jsf-going-stateless?force=255
在JSF 2中,h:button和之间有什么区别h:commandButton?
我正在学习JSF,当我意识到每当我们使用时<h:form>,JSF的标准行为总是向我显示浏览器中上一页的URL ,而不是当前页面的URL,我感到非常惊讶和困惑.
我知道这与JSF总是将表单发布到同一页面的方式有关,然后只是呈现控制器将其返回给浏览器的任何页面,而浏览器不知道页面位置已更改.
似乎JSF已经存在了足够长的时间,必须有一个干净,可靠的方法来处理这个问题.如果是这样,你介意分享吗?
我找到了各种解决方法,但遗憾的是,这似乎不是一个真正可靠的解决方案.
"?faces-redirect=true"到每个 bean的操作的返回值然后
@RequestScoped用其他东西替换(Flash Scopes,CDI对话,@ SessionScoped,......).如果它"?faces-redirect=true"是如此好,有没有办法配置整个应用程序以这种方式处理所有请求?
请考虑以下情形.在会话超时(过期)后,我点击了JSF表单的提交按钮.浏览器显示一些异常消息:
ViewExpiredException:无法恢复视图上下文
我想要做的是,在会话过期后自动重定向到网站的主页.这样做的机制是什么?任何帮助将非常感激.
我发现这篇文章对非ajax请求有用如何在JSF 2中处理会话过期和ViewExpiredException? 但是当我使用AJAX调用提交时,我无法使用它.
假设在一个primefaces对话框中,我正在使用AJAX发布一个post请求,session已经超时了.我看到我的页面卡住了.
如何解决这种情况的,这样当我POST使用AJAX,我可以重定向他对我的看法过期的页面,然后转发他类似于上面的链接解决方案登录页面?
JSF2/Primefaces/Glassfish的
Mojarra JSF 2的实现具有以下上下文参数:
com.sun.faces.numberOfViewsInSession (默认为15)com.sun.faces.numberOfLogicalViews (默认为15)他们之间有什么区别?文档中没有提到这些内容.我的应用程序在ViewExpiredException某些页面遇到问题,但在我们将这些设置提高到(更高)值后,我们就停止了问题.
我的应用程序是一个财务,重量级,支持Ajax的应用程序(有些屏幕有50多个输入,可以选择通过AJAX添加更多数据/输入).
这种行为可能是什么原因?我知道第一个参数定义了会话中保存的"页面"的数量,这对于后退按钮可能很有用,但我触发的用例ViewExpiredException不使用后退按钮.第二个参数是指什么?如果我保持在同一个屏幕但通过AJAX继续添加大量数据,这是否会导致需要更多的逻辑视图用于页面?
这似乎不对.我正在清理我的代码,我只是注意到了这一点.每个ajax请求都会触发构造函数和@PostConstruct我的@ViewScopedbean.即使是简单的数据库分页也会触发它.
我知道这@ViewScoped比@RequestScoped任何请求都要重建并且不应该重建.只有在通过GET重新加载完整页面之后.
目前在我的应用程序中,当用户在URL栏中键入一些非法目的地时,请看到:

我想让它更漂亮,并使用我自己的标记和一点css进行自定义.
- 我需要在我的应用程序上编程,或者我必须在应用程序服务器中配置它吗?
- 如果我想这样做,我应该从哪里开始?
jsf ×8
jsf-2 ×7
java ×3
ajax ×1
button ×1
constructor ×1
glassfish ×1
glassfish-3 ×1
java-ee ×1
mojarra ×1
navigation ×1
primefaces ×1
redirect ×1
servlets ×1
state-saving ×1
url ×1
view-scope ×1
viewstate ×1