Unique identity of session bean

Hi,
I'm trying to store some data into our database using a stateless session bean
and JDBC.
I was wondering if there is any way to uniquely identify the SLSB ( from a pool)
as it stores the info in the DB. i.e. I want to store the SLSB's identity in the
table as well. ( This is so that the same SLSB can later delete the info it inserted
into the table).
I don't think the SessionContext can provide anything that uniquely identifies
the SLSB and am not sure what else to use.
Rinku.

rinku,
"rinku" <[email protected]> wrote in message
news:3ec52a72$[email protected]..
Hope it makes sense! I am currently trying to see if I can use a threadname to
>
uniquely identify the SLSB ( if there is some way to do it using the EJBspec,
I would
prefer that method).The process itself does make sence. Actually, you may want to use
bean's hashCode method for this purposes.
If you want to get it done right - introduce a sequence variable
in the database so for each load every bean will pick up a
new unique ID. Most of the databases support sequences.
If yours doesn't, you can implement it youself. Let me know
if you have questions how.
Hope this helps,
Regards,
Slava Imeshev
>
Thanks,
Rinku.
"Slava Imeshev" <[email protected]> wrote:
Hi Rinku,
"rinku" <[email protected]> wrote in message
news:3ec521d5$[email protected]..
I'm trying to store some data into our database using a stateless
session
bean
and JDBC.
I was wondering if there is any way to uniquely identify the SLSB (from a
pool)
as it stores the info in the DB. i.e. I want to store the SLSB's
identity
in the
table as well. ( This is so that the same SLSB can later delete theinfo
it inserted
into the table).SLSB are stateless and are indistinguishable by design. May I
ask you why would you want to do something like described
above? May be we will be able to come up with a better idea.
Regards,
Slava Imeshev

Similar Messages

  • EJB 3.0 Stateful session bean shared between Servlet's

    Hello
    I have a bit of a noob question regarding Stateful sessions beans.
    I am wanting to know if there is a way that I can share an instance of a session bean between multiple HttpServlet instances?
    I am sending XML messages from a mobile J2ME application, there will be several http POST's made from the mobile client to the server. I would like these multiple POST's to be passed from the handling servlet instance to the same uniquely identified single stateful session bean instance (i can then @Remove the stateful bean when I have finished my several requests).
    I would greatly appreciate any tips anyone could give me.

    If not, your only option is to maintain the
    association yourself by creating a unique id for
    each
    conversation and storing that id along with the SFSB
    reference in the ServletContext. Then you'll
    need to pass the id in along with each invocation to
    retrieve the appropriate SFSB reference.Thanks for your reply.
    Will I always be presented with the same ServletContext instance? Even if the time between requests might be many minutes? Where can I learn more about how to use the ServletContext?
    Thanks!

  • EJB 3.0 Session bean transfers null Entity

    Hello all
    I am having trouble trying to transfer an Entity from a stateful session bean to a JSP. When I try an identical method with a java client within the OC4J container of JDeveloper, it works fine. However when I deploy the application to OracleAS 10.1.3, I get a null pointer on the entity.
    Please help. I have been stuck on this for about 3 weeks, and I've followed documentation to the letter as far as I can see.
    Here is the code for the JSP, the (simplified) bean and the Entity in question.
    Bean:
    import java.util.List;
    import javax.annotation.Resource;
    import javax.ejb.Stateful;
    import javax.persistence.EntityManager;
    import javax.persistence.Query;
    @Stateful(name="cart")
    public class CartBean implements CartRemote, CartLocal  {
        @Resource
        protected EntityManager manager;
        public CartBean() {
             public User getUser(String username){
                    User user = manager.find(User.class, username);
             return user;
        }The JSP:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
    <%@ page contentType="text/html;charset=windows-1252"%>
    <%@ page import="com.evotec.ereq.CartLocal" %>
    <%@ page import="com.evotec.ereq.User" %>
    <%@ page import="javax.naming.InitialContext" %>
    <%@ page import="java.util.List" %>
    <%@ page import="java.util.ArrayList" %>
    <%!String m_username = "pbarrett";%>
    <%!String emailAddress = "";%>
    <%
    try {
        InitialContext ctx = new InitialContext();
        CartLocal cart = (CartLocal) ctx.lookup("java:comp/env/cart");
            User user = cart.getUser(m_username);
            emailAddress = user.getEmailAddress();
    %>
    <html>
    <body>
    you are: <%= m_username %><BR>
    your email address is: <%= emailAddress %><BR>
    </body>
    </html>
    <%
    catch (Exception e){
        e.printStackTrace();
    %>and the User entity:
    import java.io.Serializable;
    import java.sql.Timestamp;
    import static javax.persistence.AccessType.FIELD;
    import javax.persistence.Column;
    import javax.persistence.Entity;
    import javax.persistence.Table;
    import javax.persistence.Id;
    @Entity(access=FIELD)
    @Table(name="USERS")
    public class User implements Serializable {
        @Column(name="CREATION_DATE")
        protected Timestamp creationDate;
        @Column(name="DISPLAY_NAME")
        protected String displayName;
        @Column(name="EMAIL_ADDRESS")
        protected String emailAddress;
        @Id
        @Column(name="USERNAME")
        protected String username;
        @Column(name="USER_ID")
        protected Long userId;
        @Column(name="USER_STATUS")
        protected Long userStatus;
        public User() {
              //JDeveloper-generated getters and setters
    }I should point out that I have established that the null pointer is not coming from the CartLocal lookup.
    Any help welcome, thanks in advance.
    Paul

    Hi,
    Thanks for the quick response.
    I have tried this approach before but when I try and deploy to the server, I get this message:
    @PersistenceContext annotation can only be used when a javax.spi.PersistenceProvider is installed.
    Is this a missing jar file? If so, which one?
    Thanks
    Paul

  • SAME EJB 3.0 Stateful Session bean for different JSP sessions returned

    Forum,
    I have a strange problem utilizing stateful session beans. Please note, that I am using jdeveloper for the following:
    1) Here is a basic stateful session bean:
    @Stateful(name = "DemoClass")
    public class DemoClassBean implements DemoClass,
               DemoClassLocal, SessionSynchronization {
          public static int id=0;
          public DemoClassBean() {
          id++;
          public int getId() {
             return id;
          //... other methods
    }2) This bean is accessed from a JSP for testing purpose, I am copying only the script used in JSP:
    <%
       DemoClass bean = null;
       try {
          bean = (DemoClass) ((new javax.naming.InitialContext()).
                       lookup("DemoClass "));
          System.out.println("ID=" + bean.getId() );
          } catch (javax.naming.NamingException e) {
             // TODO
    %>If this page is addressed by different clients, from different browsers, the same bean is returned.
    Here is what I see in the logs:
    ID=1
    ID=1
    ID=1
    The same problem is being observed when this session bean is accessed from a JSF Backing bean.
    What could be wrong? Is this a bug in oc4j / jdeveloper (version 10.1.3.3.0)?
    Edited by: smw000000001 on Nov 17, 2008 10:52 AM

    Hi,
    The code for stateful is perfectly fine and working in a normal way. The way you are trying to implement the stateful session bean in your application is wrong.
    think of binding the stateful session bean with HttpSession object.
    So that you will get a unique stateful session bean object.

  • NameNotFoundException EJB 3.0 Stateless Session Bean

    Hi i am new to ejb 3.0 as well as ejb actually. I encountered an error trying out a small stateless session bean application.
    23:15:02,312 ERROR [STDERR] javax.naming.NameNotFoundException: com.afis.ct.ri.session.ejb.ReportIncidentSession not bound
    23:15:02,312 ERROR [STDERR]      at org.jnp.server.NamingServer.getBinding(NamingServer.java:529)
    23:15:02,312 ERROR [STDERR]      at org.jnp.server.NamingServer.getBinding(NamingServer.java:537)
    23:15:02,312 ERROR [STDERR]      at org.jnp.server.NamingServer.getObject(NamingServer.java:543)
    23:15:02,312 ERROR [STDERR]      at org.jnp.server.NamingServer.lookup(NamingServer.java:296)
    23:15:02,312 ERROR [STDERR]      at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:625)
    23:15:02,312 ERROR [STDERR]      at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:587)
    23:15:02,312 ERROR [STDERR]      at javax.naming.InitialContext.lookup(InitialContext.java:351)
    23:15:02,312 ERROR [STDERR]      at com.afis.ct.servlets.ri.ValidateIdentityServlet.validateIdentity(ValidateIdentityServlet.java:64)
    23:15:02,312 ERROR [STDERR]      at com.afis.ct.servlets.ri.ValidateIdentityServlet.processRequest(ValidateIdentityServlet.java:35)
    23:15:02,312 ERROR [STDERR]      at com.afis.ct.servlets.ri.ValidateIdentityServlet.doGet(ValidateIdentityServlet.java:19)
    23:15:02,312 ERROR [STDERR]      at javax.servlet.http.HttpServlet.service(HttpServlet.java:697)
    23:15:02,312 ERROR [STDERR]      at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
    23:15:02,328 ERROR [STDERR]      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
    23:15:02,328 ERROR [STDERR]      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
    23:15:02,328 ERROR [STDERR]      at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
    23:15:02,328 ERROR [STDERR]      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
    23:15:02,328 ERROR [STDERR]      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
    23:15:02,328 ERROR [STDERR]      at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
    23:15:02,328 ERROR [STDERR]      at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
    23:15:02,328 ERROR [STDERR]      at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:175)
    23:15:02,328 ERROR [STDERR]      at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:74)
    23:15:02,328 ERROR [STDERR]      at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
    23:15:02,328 ERROR [STDERR]      at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
    23:15:02,328 ERROR [STDERR]      at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
    23:15:02,328 ERROR [STDERR]      at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
    23:15:02,328 ERROR [STDERR]      at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
    23:15:02,328 ERROR [STDERR]      at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
    23:15:02,328 ERROR [STDERR]      at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
    23:15:02,328 ERROR [STDERR]      at org.apache.tomcat.util.net.MasterSlaveWorkerThread.run(MasterSlaveWorkerThread.java:112)
    23:15:02,328 ERROR [STDERR]      at java.lang.Thread.run(Thread.java:595)My remote interface looks like
    package com.afis.ct.ri.session.ejb;
    import javax.ejb.Remote;
    @Remote
    public interface ReportIncidentSession {
         public boolean isIdentityValid(String identity);
    }My bean looks like
    package com.afis.ct.ri.session.ejb;
    import javax.ejb.Stateless;
    @Stateless
    public class ReportIncidentSessionBean implements ReportIncidentSession {
         public ReportIncidentSessionBean() {
              super();
         public boolean isIdentityValid(String identity) {
              return true;
    }Finally i am calling from a servlet which is part of a web application under the same hood(ear) as the ejb jar file.
    InitialContext ctx=new InitialContext();
                   ReportIncidentSession session=(ReportIncidentSession)ctx.lookup(ReportIncidentSession.class.getName());
                                  return session.isIdentityValid(identity);I have done nothing more than making sure there is no compilation error, and i feel some mandatory steps are missing.. So thanks for any help!
    Marvelous.

    Hi DRS, i tried your recommendation and injected the following on top of my servlet class:
    EJB(name="ReportIncidentSessionBean", businessInterface=ReportIncidentSession.class)
    public class ValidateIdentityServlet extends HttpServlet implements
              ValidateIdentity {The original beanInterface you mentioned had an error.
    And upon deployment, JBoss wasn't able to generate a deployment descriptor hinting at the annotations.
    23:50:08,765 ERROR [MainDeployer] Could not create deployment: file:/C:/Program Files/jboss-4.0.4.GA/server/Marvelous/deploy/Avian Flu Information System.ear/Avian Flu Information System Web.war/
    java.lang.UnsupportedOperationException: FIXME: should ignore annotations for missing classes
         at org.jboss.lang.AnnotationHelper.getAnnotations(AnnotationHelper.java:98)
         at org.jboss.lang.AnnotationHelper.getAnnotation(AnnotationHelper.java:75)
         at org.jboss.lang.AnnotationHelper.isAnnotationPresent(AnnotationHelper.java:60)
         at org.jboss.ws.server.WebServiceDeployerJSE.isWebserviceDeployment(WebServiceDeployerJSE.java:152)
         at org.jboss.ws.server.WebServiceDeployer.create(WebServiceDeployer.java:101)
         at org.jboss.ws.server.WebServiceDeployerJSE.create(WebServiceDeployerJSE.java:66)
         at org.jboss.deployment.SubDeployerInterceptorSupport$XMBeanInterceptor.create(SubDeployerInterceptorSupport.java:180)
         at org.jboss.deployment.SubDeployerInterceptor.invoke(SubDeployerInterceptor.java:91)
         at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
         at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
         at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
         at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:210)
         at $Proxy49.create(Unknown Source)
         at org.jboss.deployment.MainDeployer.create(MainDeployer.java:953)
         at org.jboss.deployment.MainDeployer.create(MainDeployer.java:943)
         at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:807)
         at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:771)
         at sun.reflect.GeneratedMethodAccessor11.invoke(Unknown Source)
         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
         at java.lang.reflect.Method.invoke(Method.java:585)
         at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)
         at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)
         at org.jboss.mx.interceptor.AbstractInterceptor.invoke(AbstractInterceptor.java:133)
         at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
         at org.jboss.mx.interceptor.ModelMBeanOperationInterceptor.invoke(ModelMBeanOperationInterceptor.java:142)
         at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
         at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
         at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
         at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:210)
         at $Proxy6.deploy(Unknown Source)
         at org.jboss.deployment.scanner.URLDeploymentScanner.deploy(URLDeploymentScanner.java:421)
         at org.jboss.deployment.scanner.URLDeploymentScanner.scan(URLDeploymentScanner.java:610)
         at org.jboss.deployment.scanner.AbstractDeploymentScanner$ScannerThread.doScan(AbstractDeploymentScanner.java:263)
         at org.jboss.deployment.scanner.AbstractDeploymentScanner$ScannerThread.loop(AbstractDeploymentScanner.java:274)
         at org.jboss.deployment.scanner.AbstractDeploymentScanner$ScannerThread.run(AbstractDeploymentScanner.java:225)Your input is greatly appreciated!

  • Using local session bean interface from web container using EJB 3.0

    Hi,
    How can you use a local session bean interface from Java (rather than data controls) in a web container using EJB 3.0?
    I can use a remote interface by looking up InitialContext, but I can't find a local interface this way (even from another session EJB). I can use a local interface from an EJB using annotation "EJB", but as I understand, this is not available in the web container.
    If I try to add an ejb-jar.xml file, these seems to mess up by project...
    Hope you can help.
    Roger

    The portable way to retrieve an EJB reference in Java EE is to either inject it or look it up via the
    component's private naming environment. The simplest way is :
    @EJB
    private DocumentManager dm;
    The global JNDI name is only used as an implementation specific way to uniquely assign an
    identifier to a specific Remote EJB. It's best for this not to appear directly in the source code.
    There's more on global JNDI names in our EJB FAQ :
    https://glassfish.dev.java.net/javaee5/ejb/EJB_FAQ.html
    The alternative to annotations is to use an ejb-ref to declare the ejb dependency. The ejb-ref
    is declared in the standard deployment descriptor corresponding to the component doing the
    lookup. Each ejb-ref has an ejb-ref-name, e.g. <ejb-ref-name>DM_ref</ejb-ref-name>
    The code looks up the ejb-ref-name relative to the java:comp/env namespace to retrieve the
    EJB reference.
    DocumentManager dm = (DocumentManager)
    new InitialContext().lookup("java:comp/env/DM_ref");

  • Issue with Webservice Creation using Session Beans.

    Hi All,
    I want to expose my Session beans as webservice.
    I'm using Weblogic Application Server.
    When I do the modeling using JDeveloper, I'm unable to convert the Session bean to webservice.
    Any information on this is highly appreciable.
    Thanks & Regards,
    Kumar Madhavan.

    I can't give you much of a walk through, as I have just started it myself, but I'm using a universal unique identifier to represent each client. Whenever a client posts data from a jsp or applet the uuid is also sent. I use POST to pass all my parameters. If the server hasen't received data in say 5 minutes from the client then it is assumed the client went offline. Its working for me so far.
    COn

  • User defined exception problem in session bean.

    Hi,
    I creaed one user defined exception and using this exception
    in the session bean when I am trying use this bean at the client
    side and cathing this exception it is not catching it properly
    while server side it is throwing this exception.
    I can elaborate it through client code -
    try {
    isModified = sessionBean1.modifyNe(Object product);
    catch (ValidationException nve) {
    throw nve;
    catch (RemoteException remoteException) {
    remoteException.printStackTrace();
    server is throwing ValidationException but it is cathing in
    the RemoteException.
    stack trace is given below
    java.rmi.ServerException: RemoteException occurred in server thread; nested exception is:
    java.rmi.RemoteException: com.ss.sms.common.exception.ValidationException: name should be unique
    at com.sisl.snms.server.esc.common.SmsEscBean.checkDuplicateNeName(SnmsEscBean.java:56)
    at com.sisl.snms.server.esc.escatm.SessionBean1.modifyNe(EscAtmBean.java:219)
    at com.pramati.ejb.runtime.EscAtmBean_LocalObject_Impl_785398532._pramati_impl_modifyNe(EscAtmBean_LocalObject_Impl_785398532.java:285)
    at com.pramati.ejb.runtime.EscAtmBean_LocalObject_Impl_785398532$3.run(EscAtmBean_LocalObject_Impl_785398532.java:238)
    at com.pramati.security.util.JAASSecurityHelper.doAs(JAASSecurityHelper.java:158)
    at com.pramati.security.util.JAASSecurityHelper.doAs(JAASSecurityHelper.java:266)
    at sun.reflect.GeneratedMethodAccessor85.invoke(Unknown Source)

    hi vikassahu
    try it : remove remoteException catching. and try it with normal Exception, and make sure that Exception should be in remote interface.
    and make sure that you are throwing your user Defined Excepion
    ok i think this will help u
    ok

  • A question about entity manager in stateless session bean.

    JSR 220 ejbcore, page 47 : stateless session bean: All business object references of the same interface type for the same stateless session bean have the "same object identity", which is assigned by the container.
    So, if we have two session beans in client code...
    @EJB Cart cart1;
    @EJB Cart cart2;
    then cart1.equals(cart2)==true
    If we declare entity manager in stateless session bean:
    @PersistenceContext( unitName="ds" ,type=PersistenceContextType.TRANSACTION)
    private EntityManager em;If cart1 and cart2 are the same reference, do we have any problem when using the same reference(maybe the same em? ) to get data from db?

    If cart1 and cart2 are the same reference, do we have
    any problem when using the same reference(maybe the
    same em? ) to get data from db?No. In EJB, there is a distinction between the EJB reference and the bean instance.
    Each time you make an invocation on an EJB reference for a stateless session bean,
    the container can choose any instance of that bean's bean class to process the
    invocation. That's true whether you invoke the same reference multiple times or
    two difference references to the same bean.
    Each bean instance is guaranteed to be single-threaded.

  • EJBRemove on stateless session bean

    I would like to create a stateless session bean that loads data from
    the DB when it is created. Since the data being loaded is subject to
    change, I'd like to make sure that the stateless session bean is
    "destroyed" at least once every x seconds. Is it possible to do that
    through the deployment descriptor ?
    Mathieu
    (No need to tell me that this bean might use data that is not in sync
    with the db, I know that)

    I still do not understand what is wrong with read-only entity beans - it
    sounds like they do exactly what you want, automatically.
    Also, stateless session beans have no identity and remove() doesn't do
    anything.
    Mathieu <[email protected]> wrote:
    Let me be more specific:
    I need to access some data (=> several rows from the DB) very
    frequently. I don't need that data to be always up-to-date, I just
    need to make sure that it is refreshed once in a while. Therefore, I
    prefer to have to retrieve one session bean than X entity beans (one
    per row). The argument about the expense of destroying the bean
    doesn't seem to me to be a valid one because if I use read-only entity
    beans, I would expect them to be destroyed and reloaded as well. And
    furthermore, I don't understand why it would be costly to destroy such
    a stateless session bean.
    "David Shiffman" <[email protected]> wrote in message news:<3c130d6a$[email protected]>...
    Agree. Even if it's possible to destroy your stateless bean on a timely basis this
    approach is not the best for a number of reasons including the expense of destroying
    the bean...
    Dimitri Rakitine <[email protected]> wrote:
    Hrm. Why don't you use ReadOnly entity beans for this purpose ?
    Mathieu <[email protected]> wrote:
    I would like to create a stateless session bean that loads data from
    the DB when it is created. Since the data being loaded is subject to
    change, I'd like to make sure that the stateless session bean is
    "destroyed" at least once every x seconds. Is it possible to do that
    through the deployment descriptor ?
    Mathieu
    (No need to tell me that this bean might use data that is not in sync
    with the db, I know that)--
    Dimitri
    Dimitri

  • Entity Beans and Session beans to represet Business lOgic

    How cam we implement Entity Beans and Session beans to represent Business Logic.
    Can anyone explain how can we do this.
    Regards...

    I have session beans calling method in entity beans and any client
    doesn't have access to entity beans, only via session beans.
    If i define security policy and method permissions for session beans
    only, do entity beans use that permissions when calling their methods
    from sessions beans OR should i define the security policy for entity
    beans separately?If you want to set the permission on individual
    methods of entity bean ( with different roles)
    you have to do it separately.
    If you want to delegate the Authenticated user along with
    the method call to the Entity Bean you can use
    run-as-identity-principal.
    For more detail please check out the EJB2.0 Spec.
    -utpal

  • HttpSession vs. Stateful Session Bean ---- when State Session is large

    I hope most of the people come across with this issue where to put the state
    for the internet/intranet based applications when they are using
    servlet/jsps calling session beans. Weblogic 4.5.1 does support httpsession
    in-memory replication for the servlets but the stateful session beans are
    not replicated in clustered environment. Plus with stateful bean u get
    activation/passivation overhead too. So one tempts to use stateless session
    beans and store state in httpsession?
    Then what is the upper limit for the session state one can put in
    HttpSession with the weblogic? Is there any way to configure it?
    One way to overcome the httpsession size limitation is to use database for
    storing state and just store some unique Ids for the session info in
    httpSession. But then there will be overhead for database connection?(jdbc
    connection pool can provide some help here). So what is the recommended way
    for doing this provided few thousand concurrent clients with session size
    say exceeding 4kb per client?
    Thanks
    Usmani

    There are no special setting in sun-ejb-jar.xml regarding cache settings. The default settings from server.xml are used:
        <jdbc-connection-pool steady-pool-size="8" max-pool-size="32" max-wait-time-in-millis="60000" pool-resize-quantity="2" idle-timeout-in-seconds="300" is-isolation-level-guaranteed="false" is-connection-validation-required="false" connection-validation-method="auto-commit" fail-all-connections="false" datasource-classname="oracle.jdbc.pool.OracleDataSource" name="ebs">
          <property value="jdbc:oracle:thin:@myebsdbsserver:1521:ebsdevdb" name="url"/>
          <property value="ebs" name="user"/>
          <property value="ebs" name="password"/>
        </jdbc-connection-pool>
      <ejb-container steady-pool-size="32" pool-resize-quantity="16" max-pool-size="64" cache-resize-quantity="32" max-cache-size="512" pool-idle-timeout-in-seconds="600" cache-idle-timeout-in-seconds="600" removal-timeout-in-seconds="5400" victim-selection-policy="nru" commit-option="B" monitoring-enabled="true">
         </ejb-container>The Session Bean uses Container Managed Transaction. Is it possible in this case, that the bean isn't 'idle enough' in order to set into passivated?

  • Life time of session bean

    I read in Ed Roman's book
    Life time of session bean is rough equivalent to life time of session or "life time of client code that is calling the session."
    "clients session duration could be as long as browser window is open" page 81
    How does the server know lifetime of client code.

    Greetings,
    I read in Ed Roman's book
    Life time of session bean is rough equivalent to life
    time of session or "life time of client code that is
    calling the session."The real point is that a Session Bean's life is relatively short since it is closely linked to the life of the client - as compared to the relatively long life of an Entity Bean which is closely linked to that of the resource's data. As an Entity Bean's identity comes from the primary key of the data to which it maps, a Session Bean's identity comes from the session id for the client which created it. When the client's session is "terminated", so is the Session Bean. The semantics of session termination, however, is dependent upon several factors...
    "clients session duration could be as long as browser
    window is open" page 81This is a little misleading. The browser (window) itself does not establish a connection to a Session Bean (or any EJB for that matter). However, an Applet embedded in the page which the browser is displaying might, as well as might a Servlet to which the browser is "connected". In either case, how long the Session Bean remains "alive" depends on the life of the component connecting to it. For an Applet it would generally be until the Applet's destroy() method is called. For a Servlet it would be until the client's HttpSession object is invalidated (assuming the bean reference is stored there; otherwise it's when the current service thread terminates ':-o ).
    How does the server know lifetime of client code.By virtue of the fact that a connection to a Session (or Entity) Bean is synchronous - meaning there's an underlying socket connection between the client's reference (a "stub") and the bean proxy. If the client code terminates the connection terminates with it...
    I hope this helps.
    Regards,
    Tony "Vee Schade" Cook

  • EJB3 session bean injection

    Hi,I have a problem about @EJB in session bean.
    There are 2 session beans, SessionBeanA & SessionBeanB
    in SessionBeanA:
    @EJB(beanName="SessionBeanB")
    SessionBeanBInterface sessionBeanB;
    in SessionBeanB:
    @EJB(beanName="SessionBeanA")
    SessionBeanAInterface sessionBeanA;
    when deploy the ejb, jboss will consider that SessionBeanA depends on SessionBeanA , and SessionBeanA depends on SessionBeanB, so jboss will output that:
    --- MBeans waiting for other MBeans ---
    What's the problem?How to solve it?
    Thanks.

    If they're both stateful session beans, it is an application error, since in that case injection has the side effect of creating a new stateful session bean identity. Allowing that would result in an infinite loop.
    If at least one is a stateless session bean, there's nothing wrong with the code. EJB references are always proxies. There is no notion of initialization ordering dependencies between such beans if they're packaged in the same application. In this case the JBoss container would be restricting something that is allowed by the EJB specification so it's a JBoss bug.

  • Authenticating EJB 3 Session Bean Web services

    I have some session beans that I want to expose directly as web services in Glassfish.
    My question is how do I protect them to only be used by authorized people?
    Do I simply use standard role based JEE authentication like normal session beans?
    Is there a client example that talks to an authenticated session bean?
    If this isn't the way it is done, can someone provide an example on how it should be done?
    Thanx!

    The portable way to retrieve an EJB reference in Java EE is to either inject it or look it up via the
    component's private naming environment. The simplest way is :
    @EJB
    private DocumentManager dm;
    The global JNDI name is only used as an implementation specific way to uniquely assign an
    identifier to a specific Remote EJB. It's best for this not to appear directly in the source code.
    There's more on global JNDI names in our EJB FAQ :
    https://glassfish.dev.java.net/javaee5/ejb/EJB_FAQ.html
    The alternative to annotations is to use an ejb-ref to declare the ejb dependency. The ejb-ref
    is declared in the standard deployment descriptor corresponding to the component doing the
    lookup. Each ejb-ref has an ejb-ref-name, e.g. <ejb-ref-name>DM_ref</ejb-ref-name>
    The code looks up the ejb-ref-name relative to the java:comp/env namespace to retrieve the
    EJB reference.
    DocumentManager dm = (DocumentManager)
    new InitialContext().lookup("java:comp/env/DM_ref");

Maybe you are looking for