Entity beans or direct data access ?

Hello All,
I started developing a J2EE internet application.
If you read all the books about EJB's they say that entity beans are better to use then coding the data access yourself using SQL.
What do you think ?
Is it really that better ? Or is it a lot of overhead ?

It depends on the type of application... if your application requires transaction management and blahblah, it is better to have EJB. Else SQL is better for performance.
***Annie***

Similar Messages

  • Can't activate direct data access for VProvider

    I try to activate direct data access for BC VirtualProvider 0TR_CM_1. When I open "Activate Direct Access" dialog I don't see any assigned source systems in "Source Syst. for InfoSource 3.x" nor  any in "Data Transfer Processes" tabs. Does it mean what non of source systems don't have direct access data sources? Or in other words - why I can't assign any source system for the BC VProvider?

    Hi,
           While creating datasource there is an option for direct access.This option  shows if the DataSource supports direct access to data.
    A RemoteProvider in BI can only get data from a DataSource that supports direct data access.
    It is only useful to access data directly if the quantity of data to be extracted can be restricted to a suitable selection.
    Hope this helps
    Regards
    Karthik

  • Difference between Realtime Data Acqisition and Direct Data Access ?

    Hi experts,
    What is RDA and DDA and whrere these two are used ?
    What is the Difference between Realtime Data Acqisition and Direct Data Access?
    Please explain me in a detail manner, i will assign points for ur valuable answers..............

    Hi,
    Eventhough the aim of the two methods are to report on the latest data, there is a difference in both.
    In Realtime Data Acqisition you are loading the data into BW and then reporting on that data from BW Infoproviders.
    http://help.sap.com/saphelp_nw04s/helpdata/en/52/777e403566c65de10000000a155106/content.htm
    I think you are refering to Virtual providers by the term Direct Data Access. In  Direct Data Access you are not loading data into BW. Data is residing in R/3 itself. Your reports will fetch data from R/3 directly. The data is called during execution of a query in the source system.
    http://help.sap.com/saphelp_nw04s/helpdata/en/23/c0234239f75733e10000000a155106/frameset.htm
    http://help.sap.com/saphelp_nw70/helpdata/EN/13/3e34429692b76be10000000a155106/frameset.htm
    http://help.sap.com/saphelp_nw04/helpdata/en/da/5909392a430303e10000000a114084/frameset.htm
    Hope this helps.
    Thanks,
    JituK

  • What happens to cached entity beans when directly change record in database?

    hi:
    i am working on a project which weblogic as app server. there's many case
    in my application where we have to update large number of records(about
    fifty thousands) in
    a loop one at a time. we have tried with entity beans but it 's so slow.
    so in this case we have to update database directly. but i am worried about
    my code accessing record with entity beans. the entities caches state and i
    am
    afraid there will be trouble if the state in ejb caches and record in db
    mismatch . i change state in db directly and ejbs has no way to know about
    it.
    is there any solution?
    thanks in advance!
    daniel

    Depends on the way you have implemented your entity bean. Normally, a bean
    method invocation will trigger a transaction (based on the bean's method
    transaction attribute), which will in turn call the ejbLoad(). In CMP's the
    container will automatically load the data from the underlying datastore. In
    BMP's a transactional method call will invoke the ejbLoad(), and the
    ejbLoad() implementation would be responsible for loading the data.
    "daniel wang" <[email protected]> wrote in message
    news:3c5e01b9$[email protected]..
    hi:
    i am working on a project which weblogic as app server. there's manycase
    in my application where we have to update large number of records(about
    fifty thousands) in
    a loop one at a time. we have tried with entity beans but it 's so slow.
    so in this case we have to update database directly. but i am worriedabout
    my code accessing record with entity beans. the entities caches state andi
    am
    afraid there will be trouble if the state in ejb caches and record in db
    mismatch . i change state in db directly and ejbs has no way to know about
    it.
    is there any solution?
    thanks in advance!
    daniel

  • Ideally speaking where would view a CMP -- Data Access or Business Layer

    I know this may be a very stupid question to ask here.
    But shoud one view all entity objects as data access objects or
    business objects. was just making a diagram to logically seperate
    the layers and kind off had some doubts and discussion with
    various viewpoints.

    the argument that I heard infavour of having CMP entity beans
    in the data access layer was that the just represent database rows and ideally they should do no more except validation so they should not be part of the business layer.
    But a part of me tells me that there is something really important I am missing
    which makes them a part of the business layer.... maybe someting I heard that
    I have forgotten... but then again maybe there is nothing more to it :-|

  • NON-transactional session bean access entity bean

    We are currently profiling our product using Borland OptmizeIt tool, and we
    found some interesting issues. Due to our design, we have many session beans which
    are non transactional, and these session beans will access entity beans to do
    the reading operations, such as getWeight, getRate, since it's read only, there
    is no need to do transaction commit stuff which really takes time, this could
    be seen through the profile. I know weblogic support readonly entity bean, but
    it seems that it only has benefit on ejbLoad call, my test program shows that
    weblogic still creates local transaction even I specified it as transaction not
    supported, and Transaction.commit() will always be called in postInvoke(), from
    the profile, we got that for a single method call, such as getRate(), 80% time
    spent on postInvoke(), any suggestion on this? BTW, most of our entity beans are
    using Exclusive lock, that's the reason that we use non-transactional session
    bean to avoid dead lock problem.
    Thanks

    Slava,
    Thanks for the link, actually I read it before, and following is what I extracted
    it from the doc:
    <weblogic-doc>
    Do not set db-is-shared to "false" if you set the entity bean's concurrency
    strategy to the "Database" option. If you do, WebLogic Server will ignore the
    db-is-shared setting.
    </weblogic-doc>
    Thanks
    "Slava Imeshev" <[email protected]> wrote:
    Hi Jinsong,
    You may want to read this to get more detailed explanation
    on db-is-shared (cache-between-transactions for 7.0):
    http://e-docs.bea.com/wls/docs61/ejb/EJB_environment.html#1127563
    Let me know if you have any questions.
    Regards,
    Slava Imeshev
    "Jinsong HU" <[email protected]> wrote in message
    news:[email protected]...
    Thanks.
    But it's still not clear to me in db-is-shared setting, if I specifiedentity
    lock as database lock, I assumed db-is-shared is useless, because foreach
    new
    transaction, entity bean will reload data anyway. Correct me if I amwrong.
    Jinsong
    "Slava Imeshev" <[email protected]> wrote:
    Jinsong,
    See my answers inline.
    "Jinsong Hu" <[email protected]> wrote in message
    news:[email protected]...
    Hi Slava,
    Thanks for your reply, actually, I agree with you, we need to
    review
    our db
    schema and seperate business logic to avoid db lock. I can not say,guys,
    we need
    to change this and that, since it's a big application and developedsince
    EJB1.0
    spec, I think they are afraid to do such a big change.Total rewrite is the worst thing that can happen to an app. The
    better aproach would be identifying the most critical piece and
    make a surgery on it.
    Following are questions in my mind:
    (1) I think there should be many companies using weblogic serverto
    develop
    large enterprise applications, I am just wondering what's the maintransaction/lock
    mechanism that is used? Transional session / database lock,
    db-is-shared
    entity
    I can't say for the whole community, as for my experience the standard
    usage patthern is session fasades calling Entity EJBs while having
    Required TX attribute plus plain transacted JDBC calls for bulk
    reads or inserts.
    is the dominant one? It seems that if you speficy database lock,
    the
    db-is-shared
    should be true, right?Basically it's not true. One will need db-is-shared only if thereare
    changes
    to the database done from outside of the app server.
    (2) For RO bean, if I specify read-idle-timeout to 0, it shouldonly
    load
    once at the first use time, right?I assume read-timeout-seconds was meant. That's right, but if
    an application constantly reads new RO data, RO beans will be
    constantly dropped from cache and new ones will be loaded.
    You may want to looks at server console to see if there's a lot
    of passivation for RO beans.
    (3) For clustering part, have anyone use it in real enterpriseapplication?
    My concern, since database lock is the only way to choose, how aboutthe
    affect
    of ejbLoad to performance, since most transactions are short live,if high
    volume
    transactions are in processing, I am just scared to death about
    the
    ejbLoad overhead.
    ejbLoad is a part of bean's lifecycle, how would you be scared ofit?
    If ejbLoads take too much time, it could be a good idea to profile
    used SQLs. Right index optimization can make huge difference.
    Also you may want cosider using CMP beans to let weblogic
    take care about load optimization.
    (4) If using Optimization lock, all the ejbStore need to do
    version
    check
    or timestamp check, right? How about this overhead?As for optimistic concurrency, it performs quite well as you can
    use lighter isolation levels.
    HTH,
    Slava Imeshev
    "Jinsong Hu" <[email protected]> wrote in message
    news:[email protected]...
    We are using Exclusive Lock for entity bean, because of we do
    not
    want
    to
    load
    data in each new transaction. If we use Database lock, that means
    we
    dedicate
    data access calls to database, if database deadlock happens,
    it's
    hard
    to
    detect,
    while using Exclusive lock, we could detect this dead lock in
    container
    level.
    The problem is, using Exclusive concurrency mode you serialize
    access to data represented by the bean. This aproach has negative
    effect on ablity of application to process concurrent requests.As
    a
    result the app may have performance problems under load.
    Actually, at the beginnning, we did use database lock and usingtransactional
    The fact that you had database deadlocking issues tells that
    application logic / database schema may need some review.
    Normally to avoid deadlocking it's good to group database
    operations mixing in updattes and inserts into one place so
    that db locking sequence is not spreaded in time. Moving to
    forced serialized data access just hides design/implementation
    problems.
    session bean, but the database dead lock and frequent ejbLoad
    really
    kill
    us,
    so we decided to move to use Exclusive lock and to avoid dead
    lock,
    we
    change
    some session bean to non-transactional.Making session beans non-transactions makes container
    creating short-living transactions for each call to entity bean
    methods. It's a costly process and it puts additional load to
    both container and database.
    We could use ReadOnly lock for some entity beans, but since weblogicserver will
    always create local transaction for entity bean, and we found
    transaction
    commit
    is expensive, I am arguing why do we need create container leveltransaction for
    read only bean.First, read-only beans still need to load data. Also, you may seeRO
    beans
    contanly loading data if db-is-shared set to true. Other reason
    can
    be
    that
    RO semantics is not applicable the data presented by RO bean (forinstance,
    you have a reporting engine that constantly produces "RO" data,
    while
    application-consumer of that data retrieves only new data and neverasks
    for "old" data). RO beans are good when there is a relatively stable
    data
    accessed repeatedly for read only access.
    You may want to tell us more about your app, we may be of help.
    Regards,
    Slava Imeshev
    I will post the performance data, let's see how costful
    transaction.commit
    is.
    "Cameron Purdy" <[email protected]> wrote:
    We are currently profiling our product using Borland
    OptmizeIt
    tool,
    and we
    found some interesting issues. Due to our design, we have
    many
    session
    beans which
    are non transactional, and these session beans will access
    entity
    beans
    to
    do
    the reading operations, such as getWeight, getRate, since
    it's
    read
    only,
    there
    is no need to do transaction commit stuff which really takes
    time,
    this
    could
    be seen through the profile. I know weblogic support readonly
    entity
    bean,
    but
    it seems that it only has benefit on ejbLoad call, my test
    program
    shows
    that
    weblogic still creates local transaction even I specified
    it
    as
    transaction not
    supported, and Transaction.commit() will always be called
    in
    postInvoke(),
    from
    the profile, we got that for a single method call, such as
    getRate(),
    80%
    time
    spent on postInvoke(), any suggestion on this? BTW, most of
    our
    entity
    beans are
    using Exclusive lock, that's the reason that we use
    non-transactional
    session
    bean to avoid dead lock problem.I am worried that you have made some decisions based on an improper
    understand of what WebLogic is doing.
    First, you say "non transactional", but from your description
    you
    should
    have those marked as tx REQUIRED to avoid multiple transactions
    (since
    non-transactional just means that the database operation becomesits
    own
    little transaction).
    Second, you say you are using exclusive lock, which you shouldonly
    use
    if
    you are absolutely sure that you need it, (and note that it
    does
    not
    work in
    a cluster).
    Peace,
    Cameron Purdy
    Tangosol, Inc.
    http://www.tangosol.com/coherence.jsp
    Tangosol Coherence: Clustered Replicated Cache for Weblogic
    "Jinsong Hu" <[email protected]> wrote in message
    news:[email protected]...
    >

  • Entity bean for shared acces without database access

    Hi all,
    I would like to create an entity bean to store data common for all application users. This bean does not have to have a database link, it should only keep data in memory until no user left.
    Is it possible ? And if yes, how ?
    I have already created a session bean that works but only keep data for one users session, and I have created an entity bean but it seems that it requires a database link.
    Thanks
    Sylvain

    Sylvain,
    I am assuming that you are using webdynpro for this.
    You have a provision to use 'Dictionary' objects to handle CRUD operations in webdynpro and also at EJB level.
    I can suggest you to handle this scenario in two ways.
    1) If you are trying to perform the persistance at Webdynpro level, You can create the dictionary object straightaway in the webdynpro component.
    2) If you are trying to perform persistance at EJB level using entity bean, I suggest you to maintain/create a dictionary object using your NWDS and access that Dictionary object at your entity bean using dictionary by packagename. Ofcourse you may have to write the CRUD operations code by urself.
    I hope that this information would be most useful.

  • Database access using Entity Beans

    How does it work? In the examples I've seen, there is no SQL statement
    being generated, and I no code establishing the JDBC bridge...
    What am I missing? How do I look up a record in a database using an
    entity bean?
    Thanks!!!
    -Dan

    The Entity Bean remote interface methods access the database.
    InitialContext ic=new InitialContext();
    EntityBHome eh = (EntityBHome)ic.lookup("com.ejb.EntityBHome");
    EntityB entityB=eh.findByPrimaryKey(primarykey pk);
    [email protected] (Dan M) wrote:
    How does it work? In the examples I've seen, there is no SQL statement
    being generated, and I no code establishing the JDBC bridge...
    What am I missing? How do I look up a record in a database using an
    entity bean?
    Thanks!!!
    -Dan

  • Entity beans not understood

    hello,
    I am new to ejb. I know that I have come to the right technology and now to the right forum. I have got quite a good grasp on session beans but I don't understand the entity beans.
    I have a couple of questions.
    Firstly if every bean represents a single record in a database then what's th logic behind having these beans in the first place. suppose I have about 10 milion records in one of my table then does that mean I have 10000000 instences of that entity bean? and what will be the advantage of such an arrangement.
    secondly, do I always need entity beans to manage data from a database? I mean what is wrong if I do all that in a session bean? I do connect to a database with jdbc in servlets and jsp, so what is the problem in doing same in a session bean.
    and one general question, how heavy is the remote object on the client machine, what I am asking is, if when I locate the bean using the home interface or home object if you like it, I get access to the remote object. so how heavy is the remote object when I download it on my client machine?
    thanks
    Krishnakant.

    Hi,
    If you want to have 10 million records it is not necessarily 10 million Entity Beans will be instatiated. EJB container pools the EntityBeans and uses then accordingly.
    Writing DataBase code in Servlets/JSP is not a good idea. If you want to get the benefits of layered Architecture we have to follow certain design patterns. DB operations can be handled trhu EntityBeans are DAO factories.

  • Very Basic Question about Entity Beans !!!  Need your help.

    Hi,
    I have the following requirement:-
    ==============================
    There is an application A, whose multiple instances can run
    at the same time. There is some data/variable which is to be
    globally shared (i.e by all the instances). I have thought of using
    Entity Beans and putting that data in a single record in DB.
    Approach A:-
    ~~~~~~~~~~~
    Instance 1 of A (with Entity Bean ) -
    -> Database (only 1 row exist)
    Instance 2 of A (with Entity Bean ) -
    Approach B:-
    ~~~~~~~~~~~
    Instance 1 of A
    -> Entity Bean -> Database (only 1 row exist)
    Instance 2 of A
    My Query is:-
    1) In Approach A, both the instances of Application
    have their own Entity Bean (running in same JVM as them,
    packaged with Application)..Now both the entity bean instances
    represent 1 row on Database...At one time only 1 Entity bean
    will be performing the operation (read/write, other will be
    disallowed).
    2) In Approach B, both the instances of application(or Client) using
    the same Entity Bean - which is representing 1 row of Database
    Which is correct....I have read somewhere instance of Entity Bean
    corresponds to 1 row of database....If that is the case, Approach
    A would be wrong..
    Please help.

    1 Entity bean for 1 row is not true. An entity bean can represent data from multiple tables also. The correct statement is 1Entitybean for 1 resultset.
    So in case 1, u have 2 instances of Application running so it should not be an issue.

  • Data Access Object vs. Value Object

    What is the relationship, if any, between DAOs and VOs?
    For example, suppose DAOs are used by entity beans to abstract data persistence and VOs are also used by entity beans to exchange data with the web tier. Would the DAOs extend the VOs or would they be unrelated?

    Dave,
    Dan, thanks for the response. This does help.
    However, I am assuming that the DAOs have getters and
    setters for each field/attribute. Is this correct?Typically, no.
    DAOs typically accept one or more Value Objects as arguments, providing a much coarser interface. In this case, if the VO changes, the interface of the DAO does not change, and thus its clients do not feel the ripple effect.
    If so, why not extend the VO (which implements the
    getters and setters) and just put the persistence in
    the DAO?
    Thanks again for your time. I am just trying to
    understand all the issues here.Thanks for your questions,
    Dan
    >
    Regards,
    Dave

  • Entity Beans deployed on JBOSS

    We have a Web application in our project that includes 6 Entity Beans with CMP fields1.1
    The application was developed in WSAD 5.1
    The WSAD generates Access Beans for each Entity Bean as well as stubs in default package com.ibm.ejs.container and com.ibm.websphere.csi.
    E.g. The Entity Bean �Organization.java� has Access Bean �OrganizationAccessBean.java�.
    Similarly for other 5 Entity Beans there are Access Beans created in WSAD.
    But now we are migrating the application to JBOSS 4.0.3SP1 server.
    The EAR of the application exported from the WSAD contains all the deployed code (stubs) and Access Beans.
    When this EAR was imported in Eclipse 3.2, it gave us error as it does not support the IBM specific files.
    We have replaced the IBM specific �.xmi� files by JBOSS compatible files like ejb-jar.xml, jboss.xml.
    Then a mapping file was created with the name jbosscmp-jdbc.xml which has all the mapping between the beans and the tables in the database.
    Also this file contains the relationship between the beans.
    After this we tried deploying the code on JBOSS but got some errors as mentioned below:
    Error:
    12:42:53,141 INFO [EARDeployer] Init J2EE application: file:/D:/jboss-4.0.3SP1/server/default/deploy/pmt.ear
    12:42:53,797 WARN [verifier] EJB spec violation:
    Bean : Organization
    Method : public void ejbCreate(String, int, int) throws Create Exception, Remote Exception
    Section: 9.2.3
    Warning: The return type of an ejbCreate (...) method must be the entity bean's primary key type.
    What we analyzed was that in ejb-jar.xml there were some entries.
    Here in <ejb-class> the Bean class was given, but there was no information about the AccessBean class.
    In WSAD the AcessBean classes were generated by the tool, but we actually did not know how to refer the AccessBean.
    Can anyone help us in successfully deploying the application to JBOSS server or provide some pointers/ steps to proceed.
    Also need help regarding generation of Access Beans, stubs (IBM specific files) in Eclipse 3.2
    Thanks
    Regards,
    dcpmt

    So if I understand correctly you wish to use IBM specific classes in support of entity beans running on JBoss?
    That won't be necessary on JBoss because JBoss has its own means of supporting entity beans on its server.

  • Multiple users accessing entity bean with same PK

    Hi,
    Some body please clarify the below issue.
    (EJB 1.1, WAS3.5)
    I have two app servers and two clones each clone is running in each app server.
    Stateful session bean access Entity beans to update/read record in the database.
    According to my requirement multiple users can access the same entity data (same primary key). Suppose user A created a Stateful session bean SB1 and the SB1 created Entity1 with PK1, this is happening at clone1.
    User B accessed the site and the request went to Clone2 and a new SB2 created, but the SB2 need to access the database with Same PK1.
    For the above situation, I guess container can not create a new Entity bean with PK1 because EB with PK1 is already there and it tries to allocate same EB1 with SB2, so if two requests are concurrent do the SB2 wait to get the handle of the EB1?
    Is there any way to create two Entity beans with same Primary Key at the same time but in different clone?
    Thanks,
    Sagar

    Hi,
    The concurrency level has to be set at the level of database and the database will take care of consistency & integrity of the data. So specity the concurrency level on the database connection in each appserver.

  • Problems accessing fields in a CMP entity bean from a session bean

    Hello everybody,
    I'm getting the next problem: when I try to access a field in a CMP entity bean that I have instantiated from a session bean (trhoug entitybean.getNameOfField), I get the error "the entity bean does not exist in the database".
    This entity bean is accessing a table in an external database (not the DB of the WAS), but I know that it's getting the correct data from the table, since  I check the entitybean.size() and the entitybean.findByPrimaryKey(), and I get the right information. For some reason, the only thing that it doesn't work in the entity bean are the getter/setter methods (I created them automatically after having created the entity fields).
    I access the entity bean through its local interface...
    I know it's really difficult to give an answer with so few details, but... does anybody think I forgot something important to configure??
    Thank very much in advance!!
    Isidro

    getter and setter methods for cmp-fields are abstract.
    getter and setter methods for cmr-fields are abstract.
    "John Lee" <[email protected]> wrote:
    >
    Hi:
    Which method in a CMP Entity bean should be abstract? just only SetXXX
    and
    GetXXX?
    Thanks!
    John Lee

  • Client Program accessing J2EE entity Bean

    I have trouble find my Course J2EE bean from a client. (The client
    runs on the same computer but a different VM from the bean.)
    In Glassfish (Sun Application Server Nine), I set up a simple
    Container-Managed Entity Bean. I tried to access it from an external
    client as described in the glassfish EJB
    FAQ https://glassfish.dev.java.net/javaee5/ejb/EJB-FAQ.html
    Here is the client program:
    package RS;
    import java.io.*;
    import javax.servlet.*;
    import javax.servlet.http.*;
    import javax.xml.parsers.*;
    import org.apache.xml.serialize.*;
    import org.w3c.dom.*;
    import org.xml.sax.*;
    import RS.CourseHome;
    import RS.CoursePK;
    import javax.naming.InitialContext;
    import javax.naming.Context;
    import javax.naming.NamingException;
    import java.rmi.RemoteException;
    import javax.rmi.*;
    import java.util.Properties;
    import Debug.*;
    public class Client {
    public static void main (String arg[]) throws IOException {
    try {
    InitialContext jndiContext = new InitialContext ();
    Debug.P("jndic ongtext" + jndiContext);
    Object o = jndiContext.lookup("RS.CourseHome");
    Debug.P("looked up object "+o + "|"+o.getClass().getName());
    RS.CourseHome home =
        (RS.CourseHome)PortableRemoteObject.narrow(o,RS.CourseHome.class);
    Debug.P("got home "+home);
    Course C = home.create(1);
    C.setName("blah");
    CoursePK PK = new CoursePK();
    PK.number=1;
    C = home.findByPrimaryKey(PK);
    Debug.P(C.getName());
    catch (java.rmi.RemoteException re) {Debug.P("Remote Exception" + re.getMessage());}
    catch (javax.naming.NamingException ne){Debug.P("Naming Exception"+ne.getMessage());}
    catch (javax.ejb.CreateException ce){Debug.P("Create Exception"+ce.getMessage());}
    catch (javax.ejb.FinderException fe){Debug.P("Finder Exception"+fe.getMessage());}
    }Here is the error message:
    Exception in thread "main" java.lang.ClassCastException
    at com.sun.corba.ee.impl.javax.rmi.PortableRemoteObject.narrow
                       (PortableRemoteObject.java:294)
      at javax.rmi.PortableRemoteObject.narrow(PortableRemoteObject.java:137)
      at RS.Client.main(Client.java:26)The debugging indicates that I got the Initial Context
    and got the object but the PortableObject.narrow failed:
    jndic ongtextjavax.naming.InitialContext@1d85f79
    looked up object IOR: (huge number deleted)
    com.sun.corba.ee.impl.corba.CORBAObjectImplEarlier, I tried the version below, but based on the suggestion by Mr. Ebbert
    in the forum started "Error When running the Client Program" by sree_devi,
    I checked
    the following. I went to "Jndi Tree Browsing" from the Administrative Console
    and I found a "RS.CourseHome" entry under "ejb" I found RS.CourseHome there
    but did not see the "Course" tghat I expected to see
    Thus, I tried the version above:
    package RS;
       --- imports deleted for conciseness
    import Debug.*;
    public class Client {
    public static void main (String arg[]) throws IOException {
    try {
    InitialContext jndiContext = new InitialContext ();
    Object o = jndiContext.lookup("Course");
    CourseHome home =
        (CourseHome)PortableRemoteObject.narrow(o,CourseHome.class);
    Course C = home.create(1);
    C.setName("blah");
    CoursePK PK = new CoursePK();
    PK.number=1;
    C = home.findByPrimaryKey(PK);
    Debug.P(C.getName());
    catch (java.rmi.RemoteException re) {Debug.P("Remote Exception" + re.getMessage());}
    catch (javax.naming.NamingException ne){Debug.P("Naming Exception"+ne.getMessage());}
    catch (javax.ejb.CreateException ce){Debug.P("Create Exception"+ce.getMessage());}
    catch (javax.ejb.FinderException fe){Debug.P("Finder Exception"+fe.getMessage());}
    }When I run it, I get the following Naming Exception: Course not found
    I confirmed at the administrative console, that I have "Course" listed
    under Enterprise Applications:
    As per the ejb FAQ, I set up my $CLASSPATH so it starts as follows:
    /opt/j2ee/SUNWappserver/lib/appserv-rt.jar:
    /opt/j2ee/SUNWappserver/lib/javaee.jar:I also verifed in my domain.xml that the orb-listener-1, the default
    naming service port was at 3700.
    Here is the info on the Bean that I have running for both of the tries
    at my Client code.
    ejb-jar.xml
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <ejb-jar xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
    http://java.sun.com/xml/ns/j2ee/ejb-jar_2_1.xsd"
    version="2.1">
      <enterprise-beans>
        <entity>
           <description>Course</description>
           <display-name>CourseBean</display-name>
           <ejb-name>CourseBean</ejb-name>
           <home>RS.CourseHome</home>
           <remote>RS.Course</remote>
           <ejb-class>RS.CourseBean</ejb-class>
           <persistence-type>Container</persistence-type>
           <prim-key-class>RS.CoursePK</prim-key-class>
           <reentrant>false</reentrant>
           <abstract-schema-name>Course</abstract-schema-name>
           <cmp-field><field-name>number</field-name></cmp-field>
           <cmp-field><field-name>name</field-name></cmp-field>
        </entity>
      </enterprise-beans>
      <assembly-descriptor>
         <security-role>
            <description>Everyone</description>
           <role-name>everyone</role-name>
         </security-role>
         <method-permission>
            <unchecked/>
            <method>
               <ejb-name>CourseBean</ejb-name>
               <method-name>*</method-name>
            </method>
          </method-permission>
         <container-transaction>
            <method>
               <ejb-name>CourseBean</ejb-name>
               <method-name>*</method-name>
            </method>
            <trans-attribute>Required</trans-attribute>
         </container-transaction>
      </assembly-descriptor>
    </ejb-jar>
    Sun-ejb-jar.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE sun-ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Application Server 8.1 EJB 2.1//EN"
    "http://www.sun.com/software/appserver/dtds/sun-ejb-jar_2_1-1.dtd">
    <sun-ejb-jar>
      <enterprise-beans>
         <name>CourseBean</name>
         <ejb>
           <ejb-name>CourseBean</ejb-name>
           <jndi-name>Course</jndi-name>
         </ejb>
      <cmp-resource>
         <jndi-name>jdbc/__default</jndi-name>
         <create-tables-at-deploy>true</create-tables-at-deploy>
         <drop-tables-at-undeploy>true</drop-tables-at-undeploy>
      </cmp-resource>
      </enterprise-beans>
    </sun-ejb-jar>
    Course.java
    package RS;
    import java.rmi.RemoteException;
    public interface Course extends javax.ejb.EJBObject {
      public String getName() throws RemoteException;
      public void setName (String Str) throws RemoteException;
      public int getNumber() throws RemoteException;
      public void setNumber (int n) throws RemoteException;
    CourseHome.java
    package RS;
    import java.rmi.RemoteException;
    import javax.ejb.CreateException;
    import javax.ejb.FinderException;
    public interface CourseHome extends javax.ejb.EJBHome {
    public Course create(int id) throws
    CreateException,RemoteException;
    public Course findByPrimaryKey(CoursePK pk)
    throws FinderException,RemoteException;
    CourseBean.java
    package RS;
    import javax.ejb.EntityContext;
    public abstract class CourseBean implements javax.ejb.EntityBean {
    public CoursePK ejbCreate (int number) throws javax.ejb.CreateException{
      this.setNumber(number);
      return null;
    public void ejbPostCreate (int number) {
    public abstract String getName();
    public abstract void setName (String str);
    public abstract int getNumber ();
    public abstract void setNumber (int number);
    public void setEntityContext (EntityContext ctx) {}
    public void unsetEntityContext() {}
    public void ejbActivate () {}
    public void ejbPassivate () {}
    public void ejbLoad () {}
    public void ejbStore () {}
    public void ejbRemove() {}
    }Laurence L. Leff, Ph.D. Associate Professor of Computer Science
    Western Illinois University, 1 University Circle 61455, Pager: 309 367 0787
    FAX 309 298 2302

    hi s-mcgowan,
    "some other processing" comprises of printing of debug lines and publishing to the message queue using JMS. I added more debug lines so that i could see whats really happening... here is the result
    myTableHome.create(...); <----------- no exception was thrown and it returned LocalMyTable object
    print out "Insert successful"
    print out "publishing message"
    ... publish message to message queue using JMS...
    print out "Publish done"
    ... after few milliseconds...
    java.sql.BatchUpdateException: Data exception -- row already exist in index PK_MYTABLE on table MYTABLE.
    From the exception it seems like its doing a batch insert. So that seems to explain why the java.sql.BatchUpdateException is thrown few milliseconds after my call to myTableHome.create(...);
    Is it possible to disable batch update / insert? how?
    thanks in advance,
    leigh

Maybe you are looking for

  • Fields for Intrastat in SRM 7.0 Purchase order

    Hi experts, we use SRM 7.0 extended scenario and the requirement is to enter data for Intrastat in the SRM PO fields and transfer this to ERP PO to exedute the Intrastat report in ERP. What I have to do in detail to see the fields on the screen like

  • No advanced option on photo downloader screen.

    Photoshop 8.  When importing pictures, the photo downloader screen is missing the "Advanced" button that is supposed to be in the lower left hand corner.  As a test, we installed the same software on another computer and there, the downloader display

  • My ipad has just up and lost all movie playback and sound any ideas??

    My ipad has lost all video playback, and has no sound.  I can't even listen to iTunes.  I have videos of my kids I can't watch, and my kids can't watch you tube on the ipad, what could be the problem.

  • Urgent info needed

    what is updating group,info structure,and update check  why we use it

  • Ora-00917 missing right paranthesis

    hi, pls help me to find the error in this query INSERT INTO champ.case_worker (case_worker_id, primary_role_id, worker_name, initials, short_name, mainframe_id, worker_status_code) VALUES (champ.case_worker_id_seq, 14, IRTS (Issue Resolution Tracking