我对在JSF 2.x中的requestScoped bean中创建会话有疑问.我知道我们不需要在JSF 2.x中创建会话,因为我们可以直接使用sessionScoped bean来放置用户所需的数据.但我最近介绍了一个JSF代码,其中开发人员创建了session的实例变量并从facescontext获取会话,如下所示
@ManagedBean
@RequestScoped
Public class someClass(){
FacesContext facesContext = FacesContext.getCurrentInstance();
HttpSession session = (HttpSession) facesContext.getExternalContext().getSession(true);
public void someFunction(){
//Some code here..
session.setAttribute("key","value");
//Some code here..
}
//rest of the code here...
}
Run Code Online (Sandbox Code Playgroud)
好吧,我告诉他们一个人不应该将"session"作为实例变量,也不需要在JSF 2中显式获取会话,而是使用sessionScoped bean.
对于第一个我给出了一个理由,"保持会话作为实例变量不是线程安全的",而对于第二个语句,我给出了"你正在为已经提供的JSF会话做一个解决方法".
我得到的反驳论点是,第一个原因"我们的网络应用是如此,因此不存在多线程问题".第二,我得到了"无论如何,一旦请求被处理,会话变量将被清除,所以这里没有任何错误.
我没有其他强项来纠正它.所以我的问题是,1)他们是否正确?2)我们应该以应该做的方式做任何其他具体原因吗?3)最后,任何可能促使他们使用这种方式的东西?
任何人都可以详细说明吗?请指正.谢谢
我正在学习EJB 3.0的基础知识.我已设法获取并运行示例代码.现在我正在逐行分析,以获得深入的知识.但我被困在几行,其中有查找以找到所需的bean.
任何人都可以用简单的语言向我解释以下几行的含义和需要吗?
Properties properties = new Properties();
properties.put("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory");
properties.put("java.naming.factory.url.pkgs", "org.jboss.naming rg.jnp.interfaces");
properties.setProperty(Context.PROVIDER_URL, "localhost:1099");
IniialContext context = null;
SamleEjbRemote cl = null;
try {
context = new InitialContext(properties);
cl = (SampleEjbRemote) context.lookup("SampleEjbBean/remote");
} catch (NamingException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
属性中使用的每个'key'和'value'的确切含义是什么?
其余的是将'属性'放在初始上下文实例中.我对上述内容有一个非常含糊的想法,但我想非常清楚地澄清它.如果有人能指出我对上述内容的任何链接或见解,我会很高兴.
提前致谢.
我正在尝试在我的Windows 7机器中为Java/JSF应用程序设置环境.我正在使用从日食市场下载的Jboss AS 7的eclipse juno.我也在使用JDK 1.7.我创建了一个非常简单的应用程序,只包含啊:outputLabel标签.在部署和运行之前,一切看起来都很好,但标签不会呈现.我的意思是说我得到一个空白页面.我为JSF包含的jar是:jsf-api-2.1,jsf-impl-2.1.0-b03.jar,jsf-facelets-1.1.14.jar.和通常的公共和jstl罐子.
没有错误或任何例外.我在这里错过了什么吗?请原谅我,如果它太简单,但这只是花了太多时间.
编辑:我自动创建的faces-config xml:
<?xml version="1.0" encoding="UTF-8"?>
<faces-config
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
version="2.0">
</faces-config>
Run Code Online (Sandbox Code Playgroud)
我的网页xml:
<?xml version="1.0"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<display-name>test</display-name>
<welcome-file-list>
<welcome-file>NewFile.xhtml</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.jsf</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.faces</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>/faces/*</url-pattern>
</servlet-mapping>
</web-app>
Run Code Online (Sandbox Code Playgroud)
提前致谢.