不同jsp訪問同一個stateful session bean的困惑
jsp1訪問一個SFSB,比如就用counter,第一次返回1,重新整理頁面第二次返回2,。。3,456,的確是儲存了state
這是用另外一個jsp2.jsp,裡面程式碼與jsp1完全相同,這時候第一次返回是多少???
兩個頁面在同一個web container中的sessionid是一樣。
竟然是不是記憶下上次的狀態而是從1開始,然後遞增。。。
Why??
//bean code
package com.test;
import javax.ejb.SessionBean;
import javax.ejb.SessionContext;
import javax.ejb.CreateException;
public class CounterBean
implements SessionBean {
SessionContext sessionContext;
private int i = 0;
public void ejbCreate() throws CreateException {
log("counter create");
}
public void ejbRemove() {
log("remove");
}
public void ejbActivate() {
log("activate");
}
public void ejbPassivate() {
log("passivate");
}
public void setSessionContext(SessionContext sessionContext) {
this.sessionContext = sessionContext;
}
public int count() {
log("counter called");
return ++i;
}
public void log(String s){
System.out.println(s);
}
}
//jsp code
<%@ page import="com.test.*" %>
<%@ page import="javax.ejb.*" %>
<%@ page import="java.util.*" %>
<%@ page import="javax.naming.*" %>
<%@ page import="javax.rmi.PortableRemoteObject" %>
<%@ page import="java.rmi.RemoteException" %>
<%!
private Counter counter = null;
public void jspInit() {
try {
InitialContext ic = new InitialContext();
Object objRef = ic.lookup("Counter");
if(objRef==null)
System.out.println("object is null");
else
System.out.println("object is not null");
CounterHome home = (CounterHome)PortableRemoteObject.narrow(objRef, CounterHome.class);
System.out.println("aaaa");
counter = home.create();
System.out.println("bbb");
} catch (RemoteException ex) {
System.out.println("Couldn't create bean."+ ex.getMessage());
} catch (CreateException ex) {
System.out.println("Couldn't create bean."+ ex.getMessage());
} catch (NamingException ex) {
System.out.println("Unable to lookup home"+ ex.getMessage());
}
}
public void jspDestroy() {
counter = null;
}
%>
<%=counter.count()%>
比如當前jsp1.jsp返回10,在另外一臺機器上測試,同樣一個頁面竟然從11開始,而不是從一開始,問題出在哪裡?
如果是這樣,那麼stateful session bean的狀態和http session還是有很大的不同,
http session可以追綜同一個sessionid下的狀態,
而sfsb可以獲得同一個程式全部訪問的狀態(包括不同機器,不同http session的狀態),如果是不同app訪問同一sfsb 則狀態卻不儲存。
那位兄弟解釋一下,tks
這是用另外一個jsp2.jsp,裡面程式碼與jsp1完全相同,這時候第一次返回是多少???
兩個頁面在同一個web container中的sessionid是一樣。
竟然是不是記憶下上次的狀態而是從1開始,然後遞增。。。
Why??
//bean code
package com.test;
import javax.ejb.SessionBean;
import javax.ejb.SessionContext;
import javax.ejb.CreateException;
public class CounterBean
implements SessionBean {
SessionContext sessionContext;
private int i = 0;
public void ejbCreate() throws CreateException {
log("counter create");
}
public void ejbRemove() {
log("remove");
}
public void ejbActivate() {
log("activate");
}
public void ejbPassivate() {
log("passivate");
}
public void setSessionContext(SessionContext sessionContext) {
this.sessionContext = sessionContext;
}
public int count() {
log("counter called");
return ++i;
}
public void log(String s){
System.out.println(s);
}
}
//jsp code
<%@ page import="com.test.*" %>
<%@ page import="javax.ejb.*" %>
<%@ page import="java.util.*" %>
<%@ page import="javax.naming.*" %>
<%@ page import="javax.rmi.PortableRemoteObject" %>
<%@ page import="java.rmi.RemoteException" %>
<%!
private Counter counter = null;
public void jspInit() {
try {
InitialContext ic = new InitialContext();
Object objRef = ic.lookup("Counter");
if(objRef==null)
System.out.println("object is null");
else
System.out.println("object is not null");
CounterHome home = (CounterHome)PortableRemoteObject.narrow(objRef, CounterHome.class);
System.out.println("aaaa");
counter = home.create();
System.out.println("bbb");
} catch (RemoteException ex) {
System.out.println("Couldn't create bean."+ ex.getMessage());
} catch (CreateException ex) {
System.out.println("Couldn't create bean."+ ex.getMessage());
} catch (NamingException ex) {
System.out.println("Unable to lookup home"+ ex.getMessage());
}
}
public void jspDestroy() {
counter = null;
}
%>
<%=counter.count()%>
比如當前jsp1.jsp返回10,在另外一臺機器上測試,同樣一個頁面竟然從11開始,而不是從一開始,問題出在哪裡?
如果是這樣,那麼stateful session bean的狀態和http session還是有很大的不同,
http session可以追綜同一個sessionid下的狀態,
而sfsb可以獲得同一個程式全部訪問的狀態(包括不同機器,不同http session的狀態),如果是不同app訪問同一sfsb 則狀態卻不儲存。
那位兄弟解釋一下,tks
相關文章
- Choosing between HttpSession and Stateful session beanHTTPSessionBean
- session bean 對 entity bean的訪問策略?SessionBean
- 如何讓jsp使用同一個bean同時連線操作兩個不同的資料庫JSBean資料庫
- JavaScript訪問同一個頁面中的不同iframe的內容!JavaScript
- ejb 的session bean 和儲存在servlet session中的一個java物件有何不同?SessionBeanServletJava物件
- 一個Session Bean如何去呼叫另外一個Session Bean裡的方法?SessionBean
- 同一臺伺服器部署多個專案,實現不同域名訪問伺服器
- 多個人訪問實體Bean,這個Bean訪問幾次資料庫啊?Bean資料庫
- 關於jsp 呼叫bean 訪問sql-server資料庫問題JSBeanSQLServer資料庫
- 在同一工程裡,對應同一張表建立兩個不同JNDI名稱的CMP Entity Bean,會不會又有什麼問題?Bean
- 請教一個在Session Bean中使用JDBC的問題SessionBeanJDBC
- 在bean為singleton的情況下,為什麼同一個applicationContext會獲取多個不同的bean例項??BeanAPPContext
- 一個在JB9.0部署Session Bean的問題?SessionBean
- 訪問自己的jsp程式JS
- session bean中的session如何理解?SessionBean
- 類的方法,函式,同一個package不同.py檔案,不同package不同.py檔案————呼叫問題函式Package
- spring2的session scope bean問題SpringSessionBean
- 查詢訪問同一表的兩個以上索引(三)索引
- 查詢訪問同一表的兩個以上索引(二)索引
- 查詢訪問同一表的兩個以上索引(一)索引
- jsp中的javabean 和 sevlet 的困惑JSJavaBean
- 一個要用stateful Session Bean 實現的登入程式,但遇到難題暫時無法解決,請老鳥們出點注意!!!SessionBean
- 同一Tomcat下不同Web應用之間共享Session會話TomcatWebSession會話
- MySQL 更新同一個表不同欄位MySql
- 使用 session 訪問計數Session
- idea 訪問 jsp 404問題IdeaJS
- session bean + dao +vo ???SessionBean
- 在某個方法被呼叫並且還沒有值返回的情況下,sessionful的bean的這個方法不能被同一個使用者再次訪問嗎?SessionBean
- jsp無法使用bean的問題 等到解決問題為止!!!!JSBean
- 禁用 COOKIE 後如何訪問 SESSION 問題CookieSession
- tomcat+jsp訪問mysqlTomcatJSMySql
- javascript訪問不同物件的速度比較JavaScript物件
- 斑竹的:Jsp中資料bean的直接賦值 ? 的一點疑問?JSBean賦值
- 線上急等]訪問jsp時的錯誤JS
- js的cookie的同一域名下不同主機名問題JSCookie
- 求助:jsp中session跨war包呼叫問題?JSSession
- JSP訪問資料庫大全(轉)JS資料庫
- Tomcat 配置支援不同的域名訪問各自不同程式的配置方法Tomcat