问一个一般菜的问题!!!!!!!! 打印出两个id的hashCode看看,应该不同。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 <jsp:useBean id="corba" scope="application" class="com.pci.EjbClient" />后面又有一个jsp的页面用到:<jsp:useBean id="corba" scope="session" class="com.pci.EjbClient" />------------------------------------------------------------------------请问第二条语句是否会生成实例,还是引用了上面第一条语句生成的那个实例?-------------------------------------------------------------------------怎么测试出是不是同一个实例?在不修改EjbClient的情况下 这个太easy了,你去查一下tomcat/work目录下相对应的文件,你就能找到把这个jsp转成servlet的文件,在里面一看就知道了,大概是这样写的com.pci.EjbClient corba = null; synchronized (pageContext) { sc = (com.pci.EjbClient) pageContext.getAttribute("corba", PageContext.PAGE_SESSION); if (corba == null){ try { corba = (com.pci.EjbClient) java.beans.Beans.instantiate(this.getClass().getClassLoader(), "com.pci.EjbClient"); } catch (ClassNotFoundException exc) { throw new InstantiationException(exc.getMessage()); } catch (Exception exc) { throw new ServletException("Cannot create bean of class " + "com.pci.EjbClient", exc); } pageContext.setAttribute("corba", corba, PageContext.PAGE_SESSION); } } corba = (com.pci.EjbClient) pageContext.getAttribute("corba", PageContext.PAGE_SESSION);从以上jsp编译后的代码可以看出jsp是按bean的id和scope来定位一个bean的,如果没找到才重新实例化一个新的!! <jsp:useBean id="corba" scope="application" class="com.pci.EjbClient" />后面又有一个jsp的页面用到:<jsp:useBean id="corba" scope="session" class="com.pci.EjbClient" />不太理解,什么叫做 后面又有一个 jsp 的页面用到啊??如果是另外一个 jsp 页面,肯定是新的!如果是本页面,根据上面的代码,会!!corba = (com.pci.EjbClient) pageContext.getAttribute("corba", PageContext.PAGE_SESSION);因为此时是 PAGE_APPLICATION啊!! 首先非常感觉各位的帮助。但根据:corba = (com.pci.EjbClient) pageContext.getAttribute("corba", PageContext.PAGE_SESSION);我觉得还不能说明就一定能建立新的实例。因为getAttribute(String, int);这个方法的内部实现有可能考虑到PageContext.PAGE_APPLICATION比PageContext.PAGE_SESSION的范围广,所以先递归调用一下它自己getAttribute("corba", PageContext.PAGE_APPLICATION);找不到才确认返回null啊。有没有其它的方法可以准确测试出是不同实例?而且我不能修改EjbClient的代码的 有关jdbc 急求各位高手帮忙: 请问一个javascript问题 struts动态formBean,如何得到一个设置属性的值? 痛哭中: 快两个小时了,连tomcat还没有起来.... jsp连接oracle查询数据集,中文显示为16进制字符问题!请问为什么? 请教运行JSP显示http status 500 急聘JSP程序员 resin链接池配置完了,应该怎么使用? 在安装ofbiz的时候碰到一个问题 关于打印的问题,请教各位大虾! microsoft development enviroment 6.0 是個什麼東西? 如何实现网页的自动刷新
后面又有一个jsp的页面用到:
<jsp:useBean id="corba" scope="session" class="com.pci.EjbClient" />
------------------------------------------------------------------------
请问第二条语句是否会生成实例,还是引用了上面第一条语句生成的那个实例?
-------------------------------------------------------------------------
怎么测试出是不是同一个实例?在不修改EjbClient的情况下
com.pci.EjbClient corba = null;
synchronized (pageContext) {
sc = (com.pci.EjbClient) pageContext.getAttribute("corba", PageContext.PAGE_SESSION);
if (corba == null){
try {
corba = (com.pci.EjbClient) java.beans.Beans.instantiate(this.getClass().getClassLoader(), "com.pci.EjbClient");
} catch (ClassNotFoundException exc) {
throw new InstantiationException(exc.getMessage());
} catch (Exception exc) {
throw new ServletException("Cannot create bean of class " + "com.pci.EjbClient", exc);
}
pageContext.setAttribute("corba", corba, PageContext.PAGE_SESSION);
}
}
后面又有一个jsp的页面用到:
<jsp:useBean id="corba" scope="session" class="com.pci.EjbClient" />
不太理解,什么叫做 后面又有一个 jsp 的页面用到啊??如果是另外一个 jsp 页面,肯定是新的!
如果是本页面,根据上面的代码,会!!corba = (com.pci.EjbClient) pageContext.getAttribute("corba", PageContext.PAGE_SESSION);
因为此时是 PAGE_APPLICATION啊!!
但根据:
corba = (com.pci.EjbClient) pageContext.getAttribute("corba", PageContext.PAGE_SESSION);
我觉得还不能说明就一定能建立新的实例。
因为getAttribute(String, int);这个方法的内部实现有可能考虑到
PageContext.PAGE_APPLICATION比PageContext.PAGE_SESSION的范围广,
所以先递归调用一下它自己getAttribute("corba", PageContext.PAGE_APPLICATION);
找不到才确认返回null啊。
有没有其它的方法可以准确测试出是不同实例?而且我不能修改EjbClient的代码的