小编h-k*_*ach的帖子

在JSF 2中的requestScoped bean中显式创建会话

我对在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)最后,任何可能促使他们使用这种方式的东西?

任何人都可以详细说明吗?请指正.谢谢

multithreading java-ee jsf-2 managed-bean

7
推荐指数
1
解决办法
4101
查看次数

EJB查找的初始Context属性值

我正在学习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'的确切含义是什么?

其余的是将'属性'放在初始上下文实例中.我对上述内容有一个非常含糊的想法,但我想非常清楚地澄清它.如果有人能指出我对上述内容的任何链接或见解,我会很高兴.

提前致谢.

java jboss jndi initial-context ejb-3.0

5
推荐指数
1
解决办法
2万
查看次数

JSF facelet应用程序无法在jboss AS 7中运行

我正在尝试在我的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)

提前致谢.

jsf jsf-2 jboss7.x

2
推荐指数
1
解决办法
5463
查看次数