HttpSessionTimeOut
Hi,
Does the HttpSession time out work in JDeveloper?
I ran a JSP application locally in JDeveloper 3.2.3 and set the session.MaxInactiveInterval(20). But in my JSP page session information never expired no matter how long the application idled.
I just want to test and see if the session variables of one session will expire after max inactive time. Does the session time out of server embedded in JDeveloper work? Or how can I set the environment right to make it work?
Thank you for your assistant.
REPOST
I moved now to JDev 3.2.3.
In bc4j.xcfg file the property RELEASE_MODE is Reserved. Are there any property which substitutes the old "HttpSessionTimeOut" setting used with JDev 3.1?
I also tried to edit the new "webabb_package_packagemodule.properties" file, writing "HttpSessionTimeOut=60", but session is still alive after 60 seconds. I didn't monitored yet, but it seems the default timeout is 30 minutes.
Where is the setting for session timeout?
Thank you.
Similar Messages
-
User timeout sap me 5.2
Hello.
I have a tiny issue, but it is not a problem. When I logon to a site and stay idle for sometime and i try to open resources or admin pods or any of the links in sap me, it wont work. As it turns out after some time of idling I'm being logged out of the site and need to re-log to continue working. Where can I change the timeout settings for user authentication?
regards,
Tarvi
Edited by: Tarvi Tihhanov on Jul 28, 2011 12:58 PMHello Tarvi,
Please check this link: http://wiki.sdn.sap.com/wiki/display/ME/HTTPSessionTimeout
Regards,
Alex. -
URGENT timout problems with bc4j
Hello Jdev Team,
We have a serious problem with the BC4J. The situation is as
follows:
We use BC4J with jsp pages an run the whole thing on a j2ee
Container.
We have written our own ApplicationPool class and
ApplicationModule datatag because the users have to login
using different credentials. The login users are db-users. The
application release mode is reserved.
The application crashes frequently. 2 errors occur.
First of all we get an JBO-30003: "The application pool, {AM
Name}, failed to checkout an application module instance."
after the BC4J Container timeout --> messages ("BC4J HTTP
Container was timed out" and "The binding listener for { AM
name} was timed out")
We haven't found a way to alter the BC4J container timeout.
Where do we customize the timeout?
We have tried to use the HttpSessionTimeOut variable but it
seems to have no effect.
I hope you can help us with this one.
Second problem is that the J2EE Container stops functioning
after a couple of requests.
Even if an other browser is started (on the same or different
machine) the Container does not respond to any request.
We have found a Thread on technet handling this kind of problem
but the solution doesn't work in our case.
(the solution on technet was to put synchronized(session) around
each JSP page)
Now we run the application under Apache/Jserv and with the same
Runtime packages as used in the Container and the problem
seems to have disappeared.
Here follows the code of the ApplicationPool class:
The class is based on an example posted on technet
* @author Juan Oropeza
package be.cronos.dbwise.jbo;
import oracle.jbo.common.ampool.ApplicationPoolImpl;
import oracle.jbo.ApplicationModule;
import java.util.Properties;
public class SeperateLoginApplicationPool extends
ApplicationPoolImpl
private String vConnectURL;
private String vUsername;
private String vPassword;
public SeperateLoginApplicationPool()
public void setConnectInfo(String pUsername, String pPassword,
String pConnectURL)
this.vUsername = pUsername;
this.vPassword = pPassword;
this.vConnectURL = pConnectURL;
protected void connect(ApplicationModule appModule)
if (!appModule.getTransaction().isConnected())
appModule.getTransaction().connect(vConnectURL ,
vUsername, vPassword);
//use Optimistic locking as default for all transactions
appModule.getTransaction().setLockingMode
(oracle.jbo.Transaction.LOCK_OPTIMISTIC);
* checkin
* @param appModule
public synchronized void checkin(ApplicationModule appModule)
// release the instance regardless of the release mode
// this is necessary since we need a fresh instance each
time.
this.releaseInstance(appModule);
this.releaseInstances();
public void disconnect(ApplicationModule pAppModule, boolean
pRetainState)
super.disconnect(pAppModule, pRetainState);
Here is the code of the applicationPool datatag:
* @author Juan Oropeza
* @author Ief Cuynen
* @version 1.1
/* Modification history
package be.cronos.dbwise.datatags;
import be.cronos.dbwise.jbo.SeperateLoginApplicationPool;
import javax.servlet.jsp.tagext.TagSupport;
import javax.servlet.jsp.JspException;
import java.io.StringWriter;
import java.io.PrintWriter;
import oracle.jbo.html.jsp.ConnectionInfo;
import oracle.jbo.common.ampool.PoolMgr;
import oracle.jbo.common.ampool.ApplicationPool;
import oracle.jbo.ApplicationModule;
import oracle.jbo.html.jsp.JSPApplicationRegistry;
import java.util.Properties;
import java.util.Hashtable;
import java.util.Enumeration;
public class ApplicationModuleTag extends TagSupport
String fApplicationName;
String fConfigName;
String fUsername;
String fPassword;
String fConnectionURL;
String fIiopUserName;
String fIiopPassword;
JSPApplicationRegistry fAppRegistry;
public ApplicationModuleTag()
public void setId(String pAppName)
{ this.fApplicationName = pAppName; }
public void setConfigname(String pValue)
{ this.fConfigName = pValue; }
* doEndTag
* @return int
* @exception javax.servlet.jsp.JspException
public int doEndTag() throws JspException
try
SeperateLoginApplicationPool pool = null;
init();
// Get an application module resource.
fAppRegistry = JSPApplicationRegistry.getInstance();
// this step will access the custom pool from the property
file
appRegistry.registerApplicationFromPropertyFile
(fApplicationName);
// Since we don't want to use a
PropertyFile per AM, we have written are own
registerApplicationModule method
this.registerApplicationModule();
// get an instance of the pool, which is already existing
pool = (SeperateLoginApplicationPool)
PoolMgr.getInstance().getPool(fApplicationName);
// get an instance of the application module
synchronized(pool)
// Setup the connection information
pool.setConnectInfo(fUsername, fPassword,
fConnectionURL);
// This instance will be used by the rest of the
DataWebBeans since it’s part of the context.
try
//After the BC4J
container timeout, this method will raise an exception
ApplicationModule am =
fAppRegistry.getAppModuleInstance(fApplicationName, pageContext);
catch(Exception e)
System.out.println
("JspRegistry has failed to get application module instance");
setPageContextValues();
catch(Exception ex)
StringWriter writer = new StringWriter();
PrintWriter prn = new PrintWriter(writer);
ex.printStackTrace(prn);
prn.flush();
throw new JspException(writer.toString());
return SKIP_BODY;
* for internal use only
private void init()
fUsername = (String)pageContext.getSession().getValue
("username");
fPassword = (String)pageContext.getSession().getValue
("password");
fConnectionURL = (String)pageContext.getSession().getValue
("connectionURL");
private void setPageContextValues()
// place default renderers into session, these will not be
exposed via config file
pageContext.getSession().putValue
("oracle_ord_im_OrdImageDomain_Renderer", "oracle.ord.html.OrdBui
ldURL");
pageContext.getSession().putValue
("oracle_ord_im_OrdAudioDomain_Renderer","oracle.ord.html.OrdBuil
dURL");
pageContext.getSession().putValue
("oracle_ord_im_OrdVideoDomain_Renderer","oracle.ord.html.OrdBuil
dURL");
pageContext.getSession().putValue
("oracle_ord_im_OrdVirDomain_Renderer", "oracle.ord.html.OrdBuild
URL");
pageContext.getSession().putValue
("oracle_ord_im_OrdImageDomain_EditRenderer", "oracle.ord.html.Fi
leUploadField");
pageContext.getSession().putValue
("oracle_ord_im_OrdAudioDomain_EditRenderer", "oracle.ord.html.Fi
leUploadField");
pageContext.getSession().putValue
("oracle_ord_im_OrdVideoDomain_EditRenderer", "oracle.ord.html.Fi
leUploadField");
pageContext.getSession().putValue
("oracle_ord_im_OrdVirDomain_EditRenderer", "oracle.ord.html.File
UploadField");
protected synchronized void registerApplicationModule()
PoolMgr vPoolMgr = PoolMgr.getInstance();
try
if (!vPoolMgr.isPoolCreated(fApplicationName))
// Parse the ConfigName
String vConfigPackage =
fConfigName.substring(0, fConfigName.lastIndexOf('.'));
String vConfigSection = fConfigName.substring
(fConfigName.lastIndexOf('.') + 1);
//Strip out the AM Class
vConfigPackage =
vConfigPackage.substring(0, vConfigPackage.lastIndexOf('.'));
Properties vProps = new Properties();
vProps.put("ConfigName",fConfigName);
ApplicationPool vAppPool =
vPoolMgr.createPool(fApplicationName,vConfigPackage,
vConfigSection, vProps);
vAppPool.setUserName
(this.fUsername);
vAppPool.setPassword
(this.fPassword);
catch (Exception ex)
ex.printStackTrace();
throw new RuntimeException(ex.toString
* release() called after doEndTag() to reset state
public void release()
super.release();
fApplicationName = null;
fConfigName = null;
fUsername = null;
fPassword = null;
fConnectionURL = null;
fIiopUserName = null;
fIiopPassword = null;
JSPApplicationRegistry fAppRegistry = null;
Another thing is that the JSPApplicationRegistry contains a bug
(I think)
It doesn't use the HttpSessionTimeOut variable at all (see
following code)
this piece of code is a Method from the
JSPApplicationRegistry.java File taken from package
oracle.jbo.html.jsp;
static synchronized public void
registerApplicationFromPropertyFile(HttpSession session, String
sPropFileName)
if(!mPoolManager.isPoolCreated(sPropFileName))
registerApplicationFromPropertyFile(sPropFileName);
if (!PropertyConstants.TRUE.equals((String)session.getValue
(SESSION_INITIALIZED)))
Hashtable settings = getAppSettings(sPropFileName);
/* The timeout variable is declared here */
int nTimeOut = 300;
if (settings != null)
// see if we have a setting for the session timeout
String sTimeOut;
/* get the HttpSessionTimeOut variable */
if(settings.get("HttpSessionTimeOut") != null)
sTimeOut = (String)settings.get
("HttpSessionTimeOut");
if(sTimeOut != null)
/* Put the value in the variable... and that's the last thing it
does. nTimeOut isn't used anywhere in the class */
nTimeOut = Integer.parseInt(sTimeOut);
if(settings.get("ImageBase") != null)
session.putValue("ImageBase", settings.get
("ImageBase"));
else
settings.put("ImageBase", "/webapp/images");
session.putValue("ImageBase", "/webapp/images");
if(settings.get("CSSURL") != null)
session.putValue("CSSURL",settings.get("CSSURL"));
else
settings.put("CSSURL", "/webapp/css/oracle.css");
session.putValue
("CSSURL", "/webapp/css/oracle.css");
// place default renderers into session, these will not
be
// exposed via config file
session.putValue
("oracle_ord_im_OrdImageDomain_Renderer", "oracle.ord.html.OrdBui
ldURL");
session.putValue
("oracle_ord_im_OrdAudioDomain_Renderer","oracle.ord.html.OrdBuil
dURL");
session.putValue
("oracle_ord_im_OrdVideoDomain_Renderer","oracle.ord.html.OrdBuil
dURL");
session.putValue
("oracle_ord_im_OrdVirDomain_Renderer", "oracle.ord.html.OrdBuild
URL");
session.putValue
("oracle_ord_im_OrdImageDomain_EditRenderer", "oracle.ord.html.F
ileUploadField");
session.putValue
("oracle_ord_im_OrdAudioDomain_EditRenderer", "oracle.ord.html.F
ileUploadField");
session.putValue
("oracle_ord_im_OrdVideoDomain_EditRenderer", "oracle.ord.html.F
ileUploadField");
session.putValue
("oracle_ord_im_OrdVirDomain_EditRenderer", "oracle.ord.html.F
ileUploadField");
session.putValue(SESSION_INITIALIZED,
PropertyConstants.TRUE);
Am I mistaken or is it a bug?
Thank you for your fast response.
Greetings,
Ief CuynenFirst of all we get an JBO-30003: "The application pool, {AM Name}, failed to checkout an application module
instance."
The JBO-30003 exception is thrown whenever the pool cannot
properly create/recycle an application module. Please see the
exception details (scan the exception stack to find the exception
details) for more information regarding the "root" cause of the
exception.
We haven't found a way to alter the BC4J container timeout. Where do we customize the timeout?
The BC4J container is timed out when the HttpSession is timed
out. The session timeout is configurable via the web.xml file
for the J2EE application. Your servlet container may also
include another mechanism for setting a session timeout.
Second problem is that the J2EE Container stops functioning after a couple of requests. Even if an other browser
is started (on the same or different machine) the Container does
not respond to any request. We have found a Thread on technet
handling this kind of problem but the solution doesn't work in
our case.
The issue sounds like a deadlock. Please use kill -3 (Solaris)
or ctrl-break (NT) at the java server console to print the thread
stack trace to stdout. This will contain more information
regarding which threads are blocked and where. If you would like
you can send the stack trace to me via mail and I can take a look
at it.
The solution of synchronizing your pages with the HttpSession
context is required only if you are using the BC4J datatags with
HTML frames (i.e. have multi-threaded application module
access for a given session). Please note that this solution may
have a performance impact and should not be implemented unless
absolutely necessary.
Another thing is that the JSPApplicationRegistry contains a bug (I think). It doesn't use the HttpSessionTimeOut variable
at all (see following code)
This parameter was deprecated after 3.1. It looks like the code
which used the parameter may have been removed prematurely.
Sorry for the confusion. Please use the J2EE compliant
mechanisms mentioned above to configure the session timeout in
3.2.
Finally, please note that JDeveloper9i includes new integrated
features for the often requested feature of supporting different
db users with the same application pool! Please stay tuned.
Maybe you are looking for
-
HT1386 cant sync apps but will do music and podcasts?
i have jusy got a new iphone 4s and cant seem to sycn any of my apps. i can do music podcasts and photos? does anyone know what i can try? i had no trouble b4 with my iphone4
-
Dialog WP runtime exceeds value set in rdisp/wp_max_runtime
Dialog wp runtime exceeds the value set in parameter rdisp/wp_max_runtime Value set for rdisp/wp_max_runtime is 1500 but wp runtime exceeds more than 10,000. we are using 4.5B system on Oracle/AIX. Please suggest how to avoid such wp running for more
-
How can I get the driver from symbol tech reader?
-
When I synch my ipod to itunes, I get the warning "some of the items in the library were not copied to ipod because they could not be found". But they ARE there, on both the library and the ipod. I haven't deleted them, or touched them at all. Why al
-
Cannot connect oracle database follwing path.
Hi experts, cannot connect oracle database in the following path. i take sap daily backup on testing server ,but it is fail. F:\oracle\MPQ\sapcheck\cegvmynv.chk' at location main-11. but the following path not found in the testing