Stateful session and stateless session
i want to use session pool, but in document being stateful session or stateless session are one of standards.
i do not understand the difference of them. who can tell me something about this?
thanks! and the session we commonly used is stateful or stateless ?
A stateful session is one that must maintain a state across requests; such as one that may require package states and the like. As such, it cannot be reused by other requests until it is completely finished.
On the other hand, a stateless session is one that performs somewhat like a singleton action (statement cache for example) which, upon completion, can be reused in the pool for any other request as it does not require the state to be maintained.
The most commonly used depends on the application, but I would say stateless is more common as it's used for performing small simple things (queries or small transactions) without requiring procedural-type processing overhead.
Not sure if that description really helps you though.
Similar Messages
-
How to get stateful and stateless session bean in second jsp
I create stateful session bean in the first jsp, then how can I get the stateful session bean in the second jsp? I find that somebody store the bean in HttpSession.
If I store the stateful session bean in HttpSession, then I can get it in the second jsp. My problem is that I can store the stateless session bean in HttpSession, and get it in the second jsp. Then, both stateful and stateless can maintain the state in the second jsp. What is the difference between stateful and stateless session bean in this case ?
I understand the definition of stateful and stateless session bean, but I'm confuse how to use session bean. Can anyone provide sample jsp to show difference of stateful and stateless? How the stateful session bean can maintain the state for the client?Greetings,
I create stateful session bean in the first jsp, then how can I get the stateful session bean in the
second jsp? I find that somebody store the bean in HttpSession.Which is the correct scope for sharing client-specific data when 'request' scope is insufficient.
If I store the stateful session bean in HttpSession, then I can get it in the second jsp. My problem is
that I can store the stateless session bean in HttpSession, and get it in the second jsp. Then, bothWhy is that a "problem"? Does your application not require the stateless bean to be shared? If so, then don't store the EJBObject reference in the session...
stateful and stateless can maintain the state in the second jsp. What is the difference betweenWhat do you mean by this exactly?..
stateful and stateless session bean in this case ?Statefulness of session beans is in regard to maintaining client state (er, in all cases). If your "stateless" bean is receiving information from the client (i.e. its caller) - either through a create method or a business method - and that information is available (retrievable from the bean) on subsequent method calls, then that bean is, in fact, stateful - regardless of how it is deployed.
I understand the definition of stateful and stateless session bean, but I'm confuse how to use
session bean.The correct question, it here seems, is "when" to use which type... Use a "stateful" bean when information about (from) the client (i.e. the caller) must be maintained across method calls of the bean. Use a "stateless" bean for general business methods that do not depend on "prior knowledge" of the client (i.e. the caller).
Can anyone provide sample jsp to show difference of stateful and stateless? How the statefulA "sample JSP" would yield nothing additional... The semantics of calling, using, and "persisting", bean references are always the same - regardless of type or class. However, the reason(s) for using one over the other depends entirely on the needs of your application.
session bean can maintain the state for the client?I recommend that you spend more time learning about EJBs generally. In particular, it seems you require more fundamental understanding of their scope and lifecycle. Refer to sections 4, 6, and 7 of the EJB 2.0 Specification.
Regards,
Tony "Vee Schade" Cook -
Difference between stateful and stateless session beans
can any body explain simply what is the difference between stateful and stateless session beans? also in what kind of situations we can use these.
Hi
This is the classificatio os Session Bean.
(1) Statfull
(2) Stateless
Stateful means u will persists the state of the object.
USESE:
In a Banking system u can use the statful session just for maintaing the
state.
(2) STATELESS: that's mean u do't want to persists any state of the object. that's mean a single Request is coming ,do the desire and give the output.
EX: A Credit Card System is the Example of Stateless.
May it will helpfull to understands u. if any need write here
saM -
Not be able to obtain a transacted session within stateless session bean
I need some assistance on creating a transacted session. For some reason while within a stateless session bean, I am unable to create a transacted session even though I'm specifying to create the transacted queue session. Can anyone provide any assistance to me on this? It would be much appreciated.
Here is the code snippets involved with the problem:
Code snipet from ejb-jar.xml:
<session>
<display-name>Initial Request</display-name>
<ejb-name>InitialRequestBean</ejb-name>
<ejb-class>com.raytheon.rds.jms.InitialRequestBean</ejb-class>
<session-type>Stateless</session-type>
<transaction-type>Container</transaction-type>
</session>
Code from stateless session bean:
static Logger logger;
private QueueConnectionFactory connectionFactory;
private SessionContext sc;
private Queue requestQueue;
public String processRequest(String msgBody)
logger.log(Level.INFO, "In processRequest(String).", msgBody);
QueueConnection con = null;
QueueSession session = null;
QueueSender sender = null;
TextMessage message = null;
String messageID = null;
QueueReceiver receiver = null;
TemporaryQueue replyQueue = null;
boolean transacted = false;
try
//Create the infrastructure (ie. The connection & the session)
logger.log(Level.FINE, "Creating connection");
con = connectionFactory.createQueueConnection();
logger.log(Level.FINE, "Creating session");
session = con.createQueueSession(true, Session.AUTO_ACKNOWLEDGE);
//Note: This line above was changed in all possible permutation and still didn't work such as using Session.SESSION_TRANSACTED
transacted = session.getTransacted();
logger.log(Level.FINE, "Is session transacted? : " + transacted);
//Note: This line above is constantly saying false
//Now first, setup the temporary reply queue and its listener
replyQueue = session.createTemporaryQueue();
logger.log(Level.FINE, "Creating receiver/consumer");
receiver = session.createReceiver(replyQueue);
con.start();
//Now create the requestor that will make the request message and put it on the request queue
logger.log(Level.FINE, "Creating Requestor/Producer");
sender = session.createSender(requestQueue);
//Now create the message and make sure that you put the "JMSReplyTo" property to the temporary response queue we just created
message = session.createTextMessage();
message.setJMSReplyTo(replyQueue);
logger.log(Level.FINE, "Created message: " + message.getJMSMessageID());
//Now add the actual info you want to send
message.setText(msgBody);
//Now send the message
logger.log(Level.INFO, "Sending message: " + message.getText());
sender.send(message);
//Now wait until we get a response
logger.log(Level.FINE, "Waiting for the response message");
Message responseMsg = receiver.receive(20000); //Toggle the "0" to specify timeout in millisectionds
//Process the message
logger.log(Level.FINE, "Processing the response message");
if(null != responseMsg)
logger.log(Level.FINE, "responseMsg is : " + responseMsg.toString());
messageID = processMessage(responseMsg);
logger.log(Level.FINE, "Response is : " + messageID);
//close the connection
logger.log(Level.FINE, "Stopping the connection");
con.stop();
catch (Throwable t)
// JMSException could be thrown
logger.log(Level.SEVERE, "Exception Thrown in sendRequest: ", t);
sc.setRollbackOnly();
finally
//Close the sender
if (sender != null)
try
logger.log(Level.FINE, "Closing the sender");
sender.close();
catch (JMSException e)
logger.log(Level.WARNING, "JMSException Thrown when trying to close the sender to the request queue: ", e);
else
logger.log(Level.FINE, "Sender is already closed.");
//Close the receiver
if (receiver != null)
try
logger.log(Level.FINE, "Closing the receiver");
receiver.close();
catch (JMSException e)
logger.log(Level.WARNING, "JMSException Thrown when trying to close the receiver to the request queue: ", e);
else
logger.log(Level.FINE, "Receiver is already closed.");
//Close the session
if (session != null)
try
logger.log(Level.FINE, "Closing the session");
session.close();
catch (JMSException e)
logger.log(Level.WARNING, "JMSException Thrown when trying to close the session to the request queue: ", e);
else
logger.log(Level.FINE, "Session is already closed.");
//Close the connection
if (con != null)
try
logger.log(Level.FINE, "Closing the connection");
con.close();
catch (JMSException e)
logger.log(Level.WARNING, "JMSException Thrown when trying to close the connection to the reply queue: ", e);
else
logger.log(Level.FINE, "Connection is already closed.");
return messageID;
}I found the answer through lots of painful searching.
http://blogs.sun.com/fkieviet/entry/request_reply_from_an_ejb
This weblog from Frank Kieviet from a sun blog explains what's happening behind the scenes.
Then I proceeded to create a Bean-Managed Transaction out of my EJB, which is using EJB 3.0. This requires the tag:
@TransactionManagement(value= TransactionManagementType.BEAN)
Note: I got this information from http://download.oracle.com/docs/cd/B31017_01/web.1013/b28221/servtran001.htm#BAJIBAFF
Then I just added the code specified in Frank's blog and everything is working now. The main portion of the code looks like this now:
//begin the user transaction
ctx.getUserTransaction().begin();
//Create the infrastructure (ie. The connection & the session)
logger.log(Level.FINE, "Creating connection");
con = connectionFactory.createQueueConnection();
//Create the session
logger.log(Level.FINE, "Creating session");
session = con.createQueueSession(false, Session.SESSION_TRANSACTED);
transacted = session.getTransacted();
logger.log(Level.FINE, "Is session transacted? : " + transacted);
//Now create the sender that will make the request message and put it on the request queue
logger.log(Level.FINE, "Creating Sender");
sender = session.createSender(requestQueue);
//Now create the message
message = session.createTextMessage();
//Now add the actual info you want to send
message.setText(msgBody);
logger.log(Level.FINE, "Created message: " + message.getJMSMessageID());
//Now first, setup the temporary reply queue and its listener
replyQueue = session.createTemporaryQueue();
if(null != replyQueue)
logger.log(Level.FINE, "Created temporary queue: " + replyQueue.getQueueName());
else
logger.log(Level.FINE, "Temporary Queue could not be created.");
//make sure that you put the "JMSReplyTo" property to the temporary response queue we just created
message.setJMSReplyTo(replyQueue);
//Now send the message
logger.log(Level.INFO, "Sending message: " + message.getText());
sender.send(message);
//Now start the connection
logger.log(Level.FINE, "Starting the connection");
con.start();
//commit the changes
ctx.getUserTransaction().commit();
ctx.getUserTransaction().begin();
//Create the receiver
logger.log(Level.FINE, "Creating Receiver");
receiver = session.createReceiver(replyQueue);
//Now wait until we get a response
logger.log(Level.FINE, "Waiting for the response message");
Message responseMsg = receiver.receive(20000); //Toggle the "0" to specify timeout in millisectionds
//Process the message
logger.log(Level.FINE, "Processing the response message");
if(null != responseMsg)
logger.log(Level.FINE, "responseMsg is : " + responseMsg.toString());
else
logger.log(Level.FINE, "No response came back.");
messageID = processMessage(responseMsg);
logger.log(Level.FINE, "Response is : " + messageID);
logger.log(Level.FINE, "Transaction is complete");
//commit the changes
ctx.getUserTransaction().commit(); -
V$session and gV$session
Can anyone explain v$session and gv$session ;
Prefix G in GV$ means GLOBAL. The best way to find out the the difference between v$session and gv$session is to look in v$fixed_view_definition.
V$SESSION
select SADDR,
SID,
SERIAL#,
AUDSID,
from GV$SESSION
where inst_id = USERENV('Instance')GV$SESSION
select s.inst_id,
s.addr,
s.indx,
s.ksuseser,
s.ksuudses,
s.ksusepro,
s.ksuudlui,
s.ksuudlna,
s.ksuudoct,
s.ksusesow,
decode(s.ksusetrn, hextoraw('00'), null, s.ksusetrn),
decode(s.ksqpswat, hextoraw('00'), null, s.ksqpswat),
decode(bitand(s.ksuseidl, 11),
1,
'ACTIVE',
0,
decode(bitand(s.ksuseflg, 4096), 0, 'INACTIVE', 'CACHED'),
2,
'SNIPED',
3,
'SNIPED',
'KILLED'),
decode(s.ksspatyp, 1, 'DEDICATED', 2, 'SHARED', 3, 'PSEUDO', 'NONE'),
s.ksuudsid,
s.ksuudsna,
s.ksuseunm,
s.ksusepid,
s.ksusemnm,
s.ksusetid,
s.ksusepnm,
decode(bitand(s.ksuseflg, 19),
17,
'BACKGROUND',
1,
'USER',
2,
'RECURSIVE',
s.ksusesql,
s.ksusesqh,
s.ksusesqi,
decode(s.ksusesch, 65535, to_number(null), s.ksusesch),
s.ksusepsq,
s.ksusepha,
s.ksusepsi,
decode(s.ksusepch, 65535, to_number(null), s.ksusepch),
decode(s.ksusepeo, 0, to_number(null), s.ksusepeo),
decode(s.ksusepeo, 0, to_number(null), s.ksusepes),
decode(s.ksusepco, 0, to_number(null), s.ksusepco),
decode(s.ksusepco, 0, to_number(null), s.ksusepcs),
s.ksuseapp,
s.ksuseaph,
s.ksuseact,
s.ksuseach,
s.ksusecli,
s.ksusefix,
s.ksuseobj,
s.ksusefil,
s.ksuseblk,
s.ksuseslt,
s.ksuseltm,
s.ksusectm,
decode(bitand(s.ksusepxopt, 12), 0, 'NO', 'YES'),
decode(s.ksuseft,
2,
'SESSION',
4,
'SELECT',
8,
'TRANSACTIONAL',
'NONE'),
decode(s.ksusefm, 1, 'BASIC', 2, 'PRECONNECT', 4, 'PREPARSE', 'NONE'),
decode(s.ksusefs, 1, 'YES', 'NO'),
s.ksusegrp,
decode(bitand(s.ksusepxopt, 4),
4,
'ENABLED',
decode(bitand(s.ksusepxopt, 8), 8, 'FORCED', 'DISABLED')),
decode(bitand(s.ksusepxopt, 2),
2,
'FORCED',
decode(bitand(s.ksusepxopt, 1), 1, 'DISABLED', 'ENABLED')),
decode(bitand(s.ksusepxopt, 32),
32,
'FORCED',
decode(bitand(s.ksusepxopt, 16), 16, 'DISABLED', 'ENABLED')),
s.ksusecqd,
s.ksuseclid,
decode(s.ksuseblocker,
4294967295,
'UNKNOWN',
4294967294,
'UNKNOWN',
4294967293,
'UNKNOWN',
4294967292,
'NO HOLDER',
4294967291,
'NOT IN WAIT',
'VALID'),
decode(s.ksuseblocker,
4294967295,
to_number(null),
4294967294,
to_number(null),
4294967293,
to_number(null),
4294967292,
to_number(null),
4294967291,
to_number(null),
bitand(s.ksuseblocker, 2147418112) / 65536),
decode(s.ksuseblocker,
4294967295,
to_number(null),
4294967294,
to_number(null),
4294967293,
to_number(null),
4294967292,
to_number(null),
4294967291,
to_number(null),
bitand(s.ksuseblocker, 65535)),
s.ksuseseq,
s.ksuseopc,
e.kslednam,
e.ksledp1,
s.ksusep1,
s.ksusep1r,
e.ksledp2,
s.ksusep2,
s.ksusep2r,
e.ksledp3,
s.ksusep3,
s.ksusep3r,
e.ksledclassid,
e.ksledclass#,
e.ksledclass,
decode(s.ksusetim,
0,
0,
-1,
-1,
-2,
-2,
decode(round(s.ksusetim / 10000),
0,
-1,
round(s.ksusetim / 10000))),
s.ksusewtm,
decode(s.ksusetim,
0,
'WAITING',
-2,
'WAITED UNKNOWN TIME',
-1,
'WAITED SHORT TIME',
decode(round(s.ksusetim / 10000),
0,
'WAITED SHORT TIME',
'WAITED KNOWN TIME')),
s.ksusesvc,
decode(bitand(s.ksuseflg2, 32), 32, 'ENABLED', 'DISABLED'),
decode(bitand(s.ksuseflg2, 64), 64, 'TRUE', 'FALSE'),
decode(bitand(s.ksuseflg2, 128), 128, 'TRUE', 'FALSE')
from x$ksuse s, x$ksled e
where bitand(s.ksspaflg, 1) != 0
and bitand(s.ksuseflg, 1) != 0
and s.ksuseopc = e.indxAlexander Anokhin
http://alexanderanokhin.wordpress.com/ -
GV$SESSION and V$SESSION | Find who is connecting
Any one please brief what is the diff b/w
GV$SESSION and V$SESSION
and what is the use os both...
Can we find the user who is connecting to the oracle server using gv$session view.
Oracle Version is 9i R2
OS is Solaris 9You can find the users connecting to each node if you query the v$session. You must be aware of the node you are connecting when issuing this query because the information is exclusive from the node you are connected to.
If you query the gv$session the information gathered is the same, but as you can see it reports information from all RAC participant users.
If you take a look at the dynamic views, you will find a lot of gv$ views, those are global views that can be seen from whichever instance you are connected to and it will report information about all the instances in a single query. As you can see the gv$ views include an INST_ID (instance ID) column, which declares the number of instance the information comes from.
~ Madrid
http://hrivera99.blogspot.com -
Disconnect session and kill session
Hi
what is the difference between
disconnect session and kill session
Edited by: Pascal Nouma on 21/10/2009 16:23Hi,
You can use the supplied package [dbms_metadata|http://download.oracle.com/docs/cd/B28359_01/appdev.111/b28419/d_metada.htm#i1015856] to get the DDL for database objects, including sequences.
If you want to continue working on this query, then I think you need a CASE expression to do one thing for 0 vlaues, and another for values >0.
Something like this:
select 'create sequence '
|| SEQUENCE_NAME
|| ' minvalue '
|| MIN_VALUE
|| ' maxvalue '
|| MAX_VALUE
|| ' increment by '
|| INCREMENT_BY
|| decode ( CYCLE_FLAG
, 'N' , ' nocycle '
, ' cycle '
|| CASE
WHEN cache_size = 0
THEN ' NOCACHE'
ELSE ' cache ' || cache_size
|| ' start with '
|| LAST_NUMBER
END
|| ';'
from user_sequences;You can also use DECODE instead of CASE (and vice-versa).
Edited by: Frank Kulash on Oct 21, 2009 7:34 PM
A few minutes ago this question was about re-creating sequences. What happened? -
Determine blocking sessions and blocked sessions in 9iR2
Hi,
Running 9.2.0.7 on Solaris 2.
We are trying to develop a query that can show us the blocked sessions and the session causing it. I have one working for 11 but for 9i, its a little more trickier. I am running these two so far:
select s1.username || '@' || s1.machine || ' ( SID=' || s1.sid ||
' ) is blocking ' || s2.username || '@' || s2.machine || ' ( SID=' ||
s2.sid || ' ) ' AS blocking_status
from gv$lock l1, gv$session s1, gv$lock l2, gv$session s2
where s1.sid = l1.sid
and s2.sid = l2.sid
and l1.BLOCK = 1
and l2.request > 0
and l1.id1 = l2.id1
and l2.id2 = l2.id2;
select do.object_name,
row_wait_obj#,
row_wait_file#,
row_wait_block#,
row_wait_row#,
dbms_rowid.rowid_create(1,
ROW_WAIT_OBJ#,
ROW_WAIT_FILE#,
ROW_WAIT_BLOCK#,
ROW_WAIT_ROW#)
from gv$session s, dba_objects do
where sid = 543
and s.ROW_WAIT_OBJ# = do.OBJECT_ID;Reason I need this is that lately we have been getting a lot of DEADLOCKS and we want to determine why this is happening a lot now and we want to start with who it is and what objects are causing it....any suggestions?mbobak wrote:
There are a few critical pieces to interpreting a deadlock trace file. First, to be clear, you're getting ORA-00060, not ORA-04020 (which is a library cache deadlock), correct?
If so, the tracefile will contain a deadlock graph. This will show the type of enqueue involved (TM or TX are the likely candidates), and the modes that locks and requests are being made.
Then, there's the SQL which encountered the deadlock, and finally, the other SQL involved in the deadlock.
All the above information is in the deadlock trace file.
Using it, you ought to be able to determine root cause of the deadlock.
If you need help understanding it, post here. If you post the deadlock graph, make sure you use code tags, or it will be unreadable.Yes we are getting the ORA-00060. This is what we get exactly from the AppTeam from the App:
Available exception message: iims.ge.common.exception.IIMSTechnicalException : ORA-00060: deadlock detected while waiting for resourceFrom our latest Deadlock occurence we got a LMD Trace file generated. We can see the DeadLock graph and its SQL. We the enqueue of TX and it's modes. Basically everything you asked for we see it in the trace file. What we want to see is what is causing it or who is so we can fix it. Maybe I am not reading the trace file correctly. I appreciate your assistance in helping me interpret the trace file. As requested, here is the trace file.
Dump file /var/local/oracle/logs/ora_prod_can1_lmd0_4432.trc
Oracle9i Enterprise Edition Release 9.2.0.8.0 - 64bit Production
With the Partitioning and Real Application Clusters options
JServer Release 9.2.0.8.0 - Production
ORACLE_HOME = /opt/oracle/9.2.0
System name: SunOS
Node name: can-clust01
Release: 5.9
Version: Generic_118558-36
Machine: sun4u
Instance name: ORA_PROD_CAN1
Redo thread mounted by this instance: 0 <none>
Oracle process number: 5
Unix process pid: 4432, image: oracle@can-clust01 (LMD0)
*** SESSION ID:(4.1) 2010-08-15 08:07:02.736
open lock on RM 0 0
*** 2010-08-15 08:07:31.353
open lock on RM 0 0
*** 2010-08-16 11:17:21.469
user session for deadlock lock 40972c9c0
pid=50 serial=6956 audsid=189500961 user: 61/IIMS_UWR
O/S info: user: weblogic, term: unknown, ospid: , machine: can-prod03
program: JDBC Thin Client
application name: JDBC Thin Client, hash value=0
Current SQL Statement:
UPDATE T_POLICY_PROPERTY POP SET POP.PRP_EFFECTIVE_END_DATE = :B3 , POP.PRP_LAST_UPDATED_DATE = SYSDATE WHERE POP.PRP_POL_POLICY_ID = :B2 AND POP.PRP_
PROPERTY_SEQ_NUM = 1 AND POP.PRP_EFFECTIVE_END_DATE = TO_DATE(:B1 , DATE_FORMAT)
Global Wait-For-Graph(WFG) at ddTS[0.1] :
BLOCKED 40972c570 5 [0x90014][0x19bb82],[TX] [131094,2] 1
BLOCKER 40972bb98 5 [0x90014][0x19bb82],[TX] [65586,6177] 0
BLOCKED 40972c9c0 5 [0x110014][0x12ec40],[TX] [65586,6177] 0
BLOCKER 40972ba18 5 [0x110014][0x12ec40],[TX] [131094,2] 1
user session for deadlock lock 40972c9c0
pid=50 serial=6956 audsid=189500961 user: 61/IIMS_UWR
O/S info: user: weblogic, term: unknown, ospid: , machine: can-prod03
program: JDBC Thin Client
application name: JDBC Thin Client, hash value=0
Current SQL Statement:
UPDATE T_POLICY_PROPERTY POP SET POP.PRP_EFFECTIVE_END_DATE = :B3 , POP.PRP_LAST_UPDATED_DATE = SYSDATE WHERE POP.PRP_POL_POLICY_ID = :B2 AND POP.PRP_
PROPERTY_SEQ_NUM = 1 AND POP.PRP_EFFECTIVE_END_DATE = TO_DATE(:B1 , DATE_FORMAT)
Global Wait-For-Graph(WFG) at ddTS[0.2] :
BLOCKED 40972c9c0 5 [0x110014][0x12ec40],[TX] [65586,6177] 0
BLOCKER 40972ba18 5 [0x110014][0x12ec40],[TX] [131094,2] 1
BLOCKED 40972c570 5 [0x90014][0x19bb82],[TX] [131094,2] 1
BLOCKER 40972bb98 5 [0x90014][0x19bb82],[TX] [65586,6177] 0
*** 2010-08-16 11:17:42.495
user session for deadlock lock 4098bcd08
pid=59 serial=981 audsid=189501588 user: 61/IIMS_UWR
O/S info: user: weblogic, term: unknown, ospid: , machine: can-prod03
program: JDBC Thin Client
application name: JDBC Thin Client, hash value=0
Current SQL Statement:
UPDATE T_POLICY_PROPERTY POP SET POP.PRP_EFFECTIVE_END_DATE = :B3 , POP.PRP_LAST_UPDATED_DATE = SYSDATE WHERE POP.PRP_POL_POLICY_ID = :B2 AND POP.PRP_
PROPERTY_SEQ_NUM = 1 AND POP.PRP_EFFECTIVE_END_DATE = TO_DATE(:B1 , DATE_FORMAT)
Global Wait-For-Graph(WFG) at ddTS[0.3] :
BLOCKED 41228b128 5 [0x70001][0x178a52],[TX] [131100,2] 1
BLOCKER 4098bade8 5 [0x70001][0x178a52],[TX] [65595,583] 0
BLOCKED 4098bcd08 5 [0x130025][0x1475c9],[TX] [65595,583] 0
BLOCKER 412275b78 5 [0x130025][0x1475c9],[TX] [131100,2] 1
user session for deadlock lock 4098bcd08
pid=59 serial=981 audsid=189501588 user: 61/IIMS_UWR
O/S info: user: weblogic, term: unknown, ospid: , machine: can-prod03
program: JDBC Thin Client
application name: JDBC Thin Client, hash value=0
Current SQL Statement:
UPDATE T_POLICY_PROPERTY POP SET POP.PRP_EFFECTIVE_END_DATE = :B3 , POP.PRP_LAST_UPDATED_DATE = SYSDATE WHERE POP.PRP_POL_POLICY_ID = :B2 AND POP.PRP_
PROPERTY_SEQ_NUM = 1 AND POP.PRP_EFFECTIVE_END_DATE = TO_DATE(:B1 , DATE_FORMAT)
Global Wait-For-Graph(WFG) at ddTS[0.4] :
BLOCKED 4098bcd08 5 [0x130025][0x1475c9],[TX] [65595,583] 0
BLOCKER 412275b78 5 [0x130025][0x1475c9],[TX] [131100,2] 1
BLOCKED 41228b128 5 [0x70001][0x178a52],[TX] [131100,2] 1
BLOCKER 4098bade8 5 [0x70001][0x178a52],[TX] [65595,583] 0Let's see what we can get out of this now :) -
WLS10 and Stateless Session Bean
I tried to create EJB3 application example.
1. Created Stateless Session Bean that implements Remote and Local interfaces:
Session Bean code:
package com.session;
import javax.ejb.Local;
import javax.ejb.Remote;
import javax.ejb.Stateless;
import javax.ejb.TransactionAttribute;
import javax.ejb.TransactionAttributeType;
@Stateless(mappedName="SessionBeanService")
@Remote(ISessionBeanRemote.class)
@Local(ISessionBeanLocal.class)
@TransactionAttribute(TransactionAttributeType.REQUIRED)
public class SessionBean implements ISessionBeanLocal,
ISessionBeanRemote
public String reply(){
return "MySessionBean - success !!!";
Remote Interface code :
package com.session;
public interface ISessionBeanRemote
public String reply();
Local Interface code:
package com.session;
public interface ISessionBeanLocal
public String reply();
application.xml:
<?xml version="1.0" encoding="UTF-8"?>
<application 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/application_5.xsd"
version="5">
<display-name>EJB3 Sample Application</display-name>
<module>
<ejb>beans.jar</ejb>
</module>
</application>
weblogic-application.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE weblogic-application PUBLIC
"-//BEA Systems, Inc.//DTD WebLogic Application 8.1.0//EN"
"http://www.bea.com/ns/weblogic/90/weblogic-application.xsd">
<weblogic-application>
<classloader-structure>
<module-ref>
<module-uri>beans.jar</module-uri>
</module-ref>
</classloader-structure>
</weblogic-application>
2. I packaged classes into EAR file and deployed to WLS10.
I didn't include any weblogic specific XML descriptors besides weblogic-application.jar.
My client code lookes as follows:
public void test(){
Context context = getMyServerContext();
// THIS JNDI NAME I SEE ON MY SERVER JNDI TREE
String jndiName = "sessionbeansbeans_jarSessionBean_ISessionBeanRemote";
Object obj;
obj = context.lookup(jndiName);
System.out.println(" obj class : " + obj.getClass().getName());
ISessionBeanRemote remote = (ISessionBeanRemote) PortableRemoteObject.narrow(
obj, ISessionBeanRemote.class );
String res = remote.reply();
System.out.println("res : "+res);
I get an Exception:
Exception occurred!
java.lang.ClassCastException: Cannot narrow remote object to com.session.ISessionBeanRemote
at weblogic.iiop.PortableRemoteObjectDelegateImpl.narrow(PortableRemoteObjectDelegateImpl.java:242)
at javax.rmi.PortableRemoteObject.narrow(PortableRemoteObject.java:137)
at ca.cgi.mvest.test.server.wms.GlFacadeTest.runTest(GlFacadeTest.java:91)
at ca.cgi.mvest.test.server.wms.GlFacadeTest.<init>(GlFacadeTest.java:53)
at ca.cgi.mvest.test.server.wms.GlFacadeTest.main(GlFacadeTest.java:151)
java.lang.ClassCastException: Cannot narrow remote object to com.session.ISessionBeanRemote
My server console have the following output:
Root cause of ServletException.java.lang.NoClassDefFoundError: com/session/SessionBean_7pp7ls_ISessionBeanRemot
eIntf
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:620)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:12
4)
at weblogic.utils.classloaders.GenericClassLoader.defineClass(GenericCla
ssLoader.java:338)
at weblogic.utils.classloaders.GenericClassLoader.findLocalClass(Generic
ClassLoader.java:291)
Truncated. see log file for complete stacktrace
Server logs a problem already on the line when I do lookup
on JNDI name even before narrow();
It looks like my EAR was missing something. But server never complained during deployment.
May be someone can direct me to a real sample of Weblogic10-ejb3.0 application, since examples that come with WLS 10 intallation combersome and do not follow
docmentation.
Thanks in advance for any suggestion.Hello Freind
The main different b\w stateful and statless is that stateful maintain state of method conversation means it has record that which method call before this method
but in case of stateless conversation state does not saved second different we can say that create method in stateless having no parameter but statefull having parameter I think u can understand easily
With Best Regards
Rajesh Pandey
email :[email protected]
url :-- http://www.sixthquadrant.com
Mob :-- 9811903737
Delhi India -
How to use jta in toplink and stateless session bean EJB 3.0?
I have an application with techologies jsf,stateless session bean, adf, toplink
generated by toplink workbench.
In web side ı want to use two methods in stateless session bean which are updated
different tables. I call these methods in my page backing bean.
I also want to JTA in web side. My first methods is done correctly, but second method has an error. I wanto to rollback all transaction.
How can ı do that? with using JTA in Toplink...Yuichi
Did you manage to solve this? I'm doing something similar and seeing the same problem, although they're up to 7.3 SP7.
Any help greatly appreciated.
Lewis -
Hot delpoyment with TopLink and Stateless Session Beans
What is the recommended procedure for making hot deployment of Stateless session beans work with toplink in WLS 7.0sp1 and oc4j (9.0.3)
My current setup is as follows using WLS 7.0sp1:
A stateless session bean is accessing toplink enabled persistent java classes via the SessionManager. I'm currently using the class loader of the stateless session bean:
* Method in stateless session bean
* Return the TopLink Session (based on the wls stateless session bean demo)
public Server getSession() {
return (Server)SessionManager.getManager().getSession("ejb_sessionbean", this.getClass().getClassLoader());
Everything is working as such. My session bean can read and write the persistent java classes. However if I redeploy the stateless session bean jar file the toplink session is not reinitalized. This means that new settings in the session.xml are not used. I addition I get other errors.
I'm having toplink on the server classpath. The toplink enabled persistent classes are in the stateless session bean jar file.
Thanks
HenrikWhat is the recommended procedure for making hot deployment of Stateless session beans work with toplink in WLS 7.0sp1 and oc4j (9.0.3)
Everything is working as such. My session bean can read and write the persistent java classes. However if I redeploy the stateless session bean jar file the toplink session is not reinitalized. This means that new settings in the session.xml are not used. I addition I get other errors.
I'm having toplink on the server classpath. The toplink enabled persistent classes are in the stateless session bean jar file.Henrik,
This is a recent post note I found on the same topic:
It all hinges on whether the TopLink ServerSession class has
been loaded by a classloader which is actually thrown away
during the hot deployment process. If this is the case, then
hot deployment causes the ServerSession to go out of scope
and finalize methods take care of logging it out properly.
If you deploy your TopLink Project on the Sytem class path then
it definately won't work. You'd have to restart the server every time.
But if the TopLink Project is deployed inside of an .ear file
and if you pass the correct ClassLoader to the
SessionManager.getSession( .... ) call then TopLink Session will
be re-started when you hot deploy the .earBased on this, the solution might be to deploy your EJBs in an ear file. Everything else looks OK. Can you try this and let us know?
Thanks,
Pete Farkas -
JCo 3.0 Server and Stateless Session Bean
Hello,
I use JCO (3.0) and I need to integrate SAP with JBoss.
The SAP Module is calling EJB-Services over JCo.
How would the architectur looks like?
I start with using an MBean to start and stob the native JCO-Server over JMX.
This still works.
But it doesn't work:
The Client(SAP) calls the JCoServer (works fine).
But the call off the EJB failed.
What solutions do you have to share?
Do you use a stateless session bean?
Best regards
PeterThe program ID should be with length 8 max
-
Web session and authentification session pb with wl6.0
Hi,
I am evaluating weblogic 6.0 on windows 2000.
I have a little web application, with some URL (html, servlet...), I want to protect.
So I defined a <security-constraint> element in my web.xml
file, and I binded the logical roles with real participant in
weblogic.xml
It works very well at startup. I launch a browser, request a protected URL and the
authentification window popup. I enter valid info and I can access my URL.
Perfect.
Now I want to give the possibility to my user to terminate a session, to disconmect,
so I had a button, (disconnect) which invoque a servlet which get the current session
and invalidate it.
I checked, the session is destroyed and a new one is defined (new ID, new counter...),
but my user are still connected. It means that if I want to acces a protected URL,
I still can do it.
more strange. In both a secured and unsecured page I print the User Principal. When
I connect, the two pages print the same and right value.
But if I disconnect, the unsecured page print null(no connection for this session)
and the secured page print the principal I used to connect in the previous message.
I know this message is a little bit long, but I tried to give the cleares context.
Has anyone ancountered that kind of problem? Is there a solution.
I pass the test with netscape 4.76, netscape 6.01, Internet Explorer 5.50. I got
the same behavior each time...
Thanks
NicolasIf you use a Form to authenticate then the browser is unaware of the
username and password. The PetStore demonstrates how it's done in
..\samples\petStore\source\com\bea\estore\util\WLSecurityAdapter.java
"Nicolas GANDRIAU" <[email protected]> wrote in message
news:[email protected]...
>
Hi John,
thank you for your answer. It confirmed my first guess, that the
browser keep the secret info and send them back to the server.
The server does not make any attachment with the current session.
But you talk about a "ServletAuthentication" example which presents theway to bind
the login info in the session. I have not found this servlet, in weblogic6.0 distribution
or J2EE API.
Can you give me the exact reference of this servlet.
Thank you for your help.
Nicolas
"John Lindwall" <[email protected]> wrote:
Nicolas,
It is my understanding that the authentication information for this
scenario
(ie HTTP BASIC authentication) is not contained in the session -- it is
maintained by the browser and resent with every request. That is why
invalidating the session makes no difference. If you have a HTTPsnooping
utility you will see the "Authorization" information (albeit encodedusing
BASE64) present in the requests from your browser to the server.
FYI: I've noticed that by using the ServletAuthentication class tomanually
perform authentication, it DOES in fact store the authentication info in
the
session. There is a "done()" method in this class which removes thisinfo
from the session (ie performs a logout).
If this link reproduces properly, check it out -- it's a good simple
explanation of what's going on:
http://www.support.lotus.com/sims2.nsf/852561c1006719a98525614100588964/877
a
0ac029a78f8a8525645f0069a34d?OpenDocument
For tons of detail on BASIC authentication see
ftp://ftp.isi.edu/in-notes/rfc2617.txt
John
Nicolas GANDRIAU <[email protected]> wrote in message
news:[email protected]...
Hi,
I am evaluating weblogic 6.0 on windows 2000.
I have a little web application, with some URL (html, servlet...), I
want
to protect.
So I defined a <security-constraint> element in my web.xml
file, and I binded the logical roles with real participant in
weblogic.xml
It works very well at startup. I launch a browser, request a protectedURL
and the
authentification window popup. I enter valid info and I can access myURL.
Perfect.
Now I want to give the possibility to my user to terminate a session,to
disconmect,
so I had a button, (disconnect) which invoque a servlet which get thecurrent session
and invalidate it.
I checked, the session is destroyed and a new one is defined (new ID,new
counter...),
but my user are still connected. It means that if I want to acces aprotected URL,
I still can do it.
more strange. In both a secured and unsecured page I print the UserPrincipal. When
I connect, the two pages print the same and right value.
But if I disconnect, the unsecured page print null(no connection for
this
session)
and the secured page print the principal I used to connect in the
previous
message.
I know this message is a little bit long, but I tried to give the
cleares
context.
Has anyone ancountered that kind of problem? Is there a solution.
I pass the test with netscape 4.76, netscape 6.01, Internet Explorer
5.50.
I got
the same behavior each time...
Thanks
Nicolas -
Scope of component session and http session
Hi,
I wish multiple iviews to share the same information. I am unsure however of the scope of portalcomponentsession, as opposed to http session. I have read the docs, and they are unclear as to the life and scope of these 2 sessions within portal. Which one is tied to the user? And which one is available over multiple iviews.
I would appreciate any help with this
Thanks
MarianaHi Mariana,
> I am sorry
No problem at all
> I did not want to close the topic by mistake
Just for explanation: If you give ten points (they call it blue, my eyes say black), this star is marked in the overview and somehow displaying "solved". In addtion, if you have marked a question as question, you can mark it as answered. As long as you don't do one of both things, you can reward points (2, 6) also in between without trimming your chances to get additional answers.
> I did not de-mark the question,
> I just replied to the post.
When you initially opened the thread (that was no reply), it <i>seems</i> that you've de-marked this thread as question (the standard is: it is a question).
Anyhow, some people seem to have made the experience that they definitely did not de-mark the thread as question, but it wasn't marked as question, anyhow.
In this case, a short and friendly mail to [email protected] with the problem stated and alink to the thread concernced will help to repair everything...
Best regards
Detlev -
Idle session and active session
how can I clear/remove the session user in oracle 10g express, via asp.net (1.1), is it possible?
is idle session can affect the number of concurrent users? or only active session...coz right we're having a problem. first of all, i would like to say that I'm a oracle novice.
this is the scenario, we have 1 server (p4 2.2ghz w/ 2gig of memory), oracle 10g express install and our application front end (asp.net 1.1 is also install). while running of application and reached 5 or more that users have connected tru asp.net, the connection to the oracle is refuse.
can you help me regarding our problem.
thanks in advance
Maybe you are looking for
-
Two charts with different data on single report
Hi there, I've a requirement to report on two weeks, past week and current week. The data is grouped by a type.The report should display separate charts side by side, one chart for the past week and the other for the current week, for comparision pu
-
Why are some emails only found in 'search', they do not exist in any of my folders?
''locking this thread as duplicate, please continue at [https://support.mozilla.org/en-US/questions/1030552 /questions/1030552]'' Emails like bills for my phone and electricity only exist if I do a search for them. They are not in any of my folders.
-
I have a Mac OSX version 10.4.11 and iphoto 6. I can no longer order cards, prints etc. and cannot upgrade to a newer version of iphoto because I don't meet the system requirements of 10.5.6 or later. What can I do?
-
BB Storm Problems - Upgrade?
Hey guys, I have had a BB Storm for a little more than a year and I can say that I am completely sick of it. I have taken the device back twice (and I'm going tomorrow to replace it again). The phone constantly messes up (screen freezes, can't unlock
-
HT1688 my camera is not working and storing pictures
when I take a picture, it doesnt go to my pics or albums, I can not even save a picture when I receive one from a text,,,