User threads and local entity beans

I have started a background thread to handle transferring large files via ftp. This thread needs to be able to access the entity beans via a local interface (to log its progress). I have started oc4j with -userThreads (debugger -Doc4j.userThreads=true) and I get the NameNotFoundException when trying to find the beans via a local home interface.
The code looks like this:
<code>
InitialContext context = new InitialContext();
JobLocalHome home = (JobLocalHome)context.lookup(JOB);
JobLocal job = home.findByPrimaryKey("java:comp/env/ejb/JobLocal");
</code>
This code works perfectly when called from the context of another bean, but not from the background thread. Can background threads use local interfaces? Or do I have to have remote interfaces on these beans just to allow the background thread to operate?

Hi - Resolved this one
The Target for the compiler was set wrong in Jdeveloper!!!
Set to "default" resolved this
Tks

Similar Messages

  • BC4J DAOs vs. Local Entity Beans

    We are beginning a brand new project and trying to evaluate the costs/benefits of using BC4J entity objects versus local entity beans for our persistence needs.
    I've read the "Simplifying J2EE and EJB Development with BC4J" white paper including the "How Does EJB 2.0 Change the Picture?" section, but that seems to have been written at a time when EJB 2.0 support was a rarity.
    I'd like to get some feedback from people who have had experience with both. We are basically starting this application from scratch, although we have relational tables from our legacy C++ application that will serve as the basis for the Java object model. So what would we gain/lose by using entity objects?
    I must admit, I'm leaning toward using entity beans over a vendor-specific persistence framework, but if there are compelling reasons to choose entity objects (besides those mentioned in the white paper), I'd like to hear them. Please speak slowly, as I'm new to BC4J. :)
    Thanks for your time.

    I've read the "Simplifying J2EE and EJB Development with BC4J" white paper including the "How Does EJB 2.0 Change the Picture?" section, but that seems to have been written at a time when EJB 2.0 support was a rarity.IMO there's no change.
    What Sun doesn't tell you in the specs, but is much talked about on theserverside.com and in most
    anti-patterns threads, and in the up coming book J2EE Anti-Patterns; EJB Entities are basically
    broke with no solution. Reason: EjbStore() can throw an exception due to DB constraint violation
    after the business method returns. This drives the scenario where all business integrity is
    forced up into the middle tiers (EJB and business mediator tiers). etc etc ... EJB Entities are
    useful for the 5% to 1% of a business model and application that is transactional IMO.
    I.E. 95%++ of most apps/web sites are read only. Why use a heavy and expensive transactional
    component for reading rows from a DB to be displayed on an Inventory screen? The only reason
    to do this is if you have stock in Sun and your appserver vendor or want your project to last
    forever or get canceled. -- Seriously, do your home work, using Entities as your persistance
    tier mediator, for the 95% of your project that's read only, and for reports which involve
    joins, select criteria etc etc will be a serious problem to just code and even bigger problem
    to be responsive and scalable.
    Do this experiment: implement a report that joins several tables, selects on where criteria,
    orders by some attribute in EJB Entity bean technology. Seriously try to code this solution.
    Hint: spray water on your appserver box since it'll almost explode. :)
    Then try: do the same report in SQL. One SQL statement usually will do it and it's all in the
    DB. The data returned to the middle tier is ready for JSP formating.
    Try another EJB experiment: implement a finder based on criteria that returns a Collection.
    Do the same in SQL: time the perf difference.
    Hint: Maybe you're getting the picture, that EJB Entity 2.0 --> 10.0 what-ever, never wrote into
    the specs any means for joins, or high perf finders based on criteria.
    My opinion and experience: EJB Entity is good for one portion of a project if that; the single
    part that's transactional (usually the shopping cart or similar). All other data access needs
    to be through a DAO tier that's SQL based. With BC4J you get transactional support too, so
    why bother with EJB, except to be wrapped by SLSB's for remotability from the client.
    I'd like to get some feedback from people who have had experience with both. We are basically starting this application from scratch, although we have relational tables from our legacy C++ application that will serve as the basis for the Java object model. So what would we gain/lose by using entity objects? I'm at the end of phase one of a medium scale BC4J project which was initiated after scrapping
    a Sun Blueprint J2EE 1.2 architecture for the above reasons, plus the unmentioned time to market
    issue. We found hand coding the Sun architecture to be 400% slower, if you don't hit any of the
    above mentioned bumps in the road. We never got to reports, which would have been imposible without
    custom DAOs.
    I must admit, I'm leaning toward using entity beans over a vendor-specific persistence framework, but if there are compelling reasons to choose entity objects (besides those mentioned in the white paper), I'd like to hear them. Please speak slowly, as I'm new to BC4J. :)You're not the first to ask this question nor the last. Sun's happy talk in the face of their
    king has great cloths sell job to fend off .net will take more than just J2EE Anti-patterns books
    to displell. Try the reports and finders experiements in EJB 2.0. You'll no doubt learn alot
    and read more news group posts in the process.
    Heck, you might even discover that 903 oc4j's CMR and EQL can instantiate 1000's of Entity beans,
    JNDI entries, return a Collection of handles, your client get the ValueObjects and build a report
    in less than a minute and 100's of customers can do this simultanteously. __NOT__ :)
    Cheers,
    curt

  • Exposing local entity beans to web tier?

    Hello all,
    I have a question concerning basic design issues with EJB and the JSP presentation
    layer. Currently, I have designed a system using all local component interfaces
    of EJB 2.0. I currently have the following architecture in place:
    EJB --> Servlets (WebWork Actions) --> JSP
    I'm utilizing the session facade design pattern where the business logic in encapsulated
    in session beans, which internally access the entity beans, etc. However, I am
    doing something of the following:
    sessionBean.getUserAccounts() which returns a Collection of actual UserAcountLocal's.
    I then am passing this collection off to the JSP just to cycle through each entity
    bean and display the data via its getXXX() methods. No modifications to the entity
    beans are being done directly in the Actions/JSPs, rather they are modified through
    methods of the session beans. Now I know that there is the concept of DTO (Data
    transfer objects), which send the data from the particular entity bean to a regular
    java bean for presentation. I know that DTO's increase performance if one is using
    remote interfaces, because there is less network traffic that occurs via that
    transport method. However, I know that WebLogic performs excellent caching of
    entity beans, so that multiple invocations of get() methods on entity beans will
    not make a trip to the database each and every time the get() method is called.
    So, my question is: Is it "safe" to continue with the current way I am designing/coding
    the system? I just find it a bit tedious to create value objects for each and
    every entity bean, if I know that I will not be calling setXXX() methods from
    within the presentation layer. Also, with EJB 2.0 and the introduction of local
    component interfaces, it seems that issues regarding limiting the amount of network
    traffic don't seem to be so relevant. Any suggestions/tips are appreciated. :-)
    Best regards,
    Ryan LeCompte
    [email protected]
    http://www.louisiana.edu/~rml7669

    use dtos
    the main reason is that if you call a getXXX() method on a local or remote
    interface from your servlet then that bean is retrieved again (as the
    servlet is outside the transaction involved in the initial retrieval)
    For example if you retrieve 100 users and want to display them in a html
    table with the user id, first name and lastname then there end up being more
    than 300 SQL statements executed (this is unless your ejbs are readonly)
    If you have a tool (like sql server profiler) that traces sql statements i
    recommend you use it to see the staggering amount of sql statements that are
    being executed by your current code - then DTOs will look much more
    appealing (it worked for me) :).
    I would also recommend using dtos when performing updates. Basically work
    towards your servlets never directly accessing anything entity bean related.
    Some people extend this further and have the DTO as the single argument in
    the create method of an entity bean - I havent done this yet myself but it
    looks like a good idea to me.
    "Ryan LeCompte" <[email protected]> wrote in message
    news:[email protected]...
    >
    Hello all,
    I have a question concerning basic design issues with EJB and the JSPpresentation
    layer. Currently, I have designed a system using all local componentinterfaces
    of EJB 2.0. I currently have the following architecture in place:
    EJB --> Servlets (WebWork Actions) --> JSP
    I'm utilizing the session facade design pattern where the business logicin encapsulated
    in session beans, which internally access the entity beans, etc. However,I am
    doing something of the following:
    sessionBean.getUserAccounts() which returns a Collection of actualUserAcountLocal's.
    I then am passing this collection off to the JSP just to cycle througheach entity
    bean and display the data via its getXXX() methods. No modifications tothe entity
    beans are being done directly in the Actions/JSPs, rather they aremodified through
    methods of the session beans. Now I know that there is the concept of DTO(Data
    transfer objects), which send the data from the particular entity bean toa regular
    java bean for presentation. I know that DTO's increase performance if oneis using
    remote interfaces, because there is less network traffic that occurs viathat
    transport method. However, I know that WebLogic performs excellent cachingof
    entity beans, so that multiple invocations of get() methods on entitybeans will
    not make a trip to the database each and every time the get() method iscalled.
    So, my question is: Is it "safe" to continue with the current way I amdesigning/coding
    the system? I just find it a bit tedious to create value objects for eachand
    every entity bean, if I know that I will not be calling setXXX() methodsfrom
    within the presentation layer. Also, with EJB 2.0 and the introduction oflocal
    component interfaces, it seems that issues regarding limiting the amountof network
    traffic don't seem to be so relevant. Any suggestions/tips areappreciated. :-)
    >
    Best regards,
    Ryan LeCompte
    [email protected]
    http://www.louisiana.edu/~rml7669

  • Cannot lookup local entity bean through JNDI

    I have an local entity bean with local-jndi-name as "ejb/Address". After deployed
    to WL 8.1 server and tested on the Admin page, I got:
    The EJB Address has not been tested successfully. There was a problem determining
    the JNDI Name of the given bean.
    When looking up this bean by:
    Object ref2 = context.lookup("ejb/Address");
    or
    Object ref2 = context.lookup("java:comp/env/ejb/Address");
    or
    Object ref2 = context.lookup("/ejb/Address");
    I got the same error:
    javax.naming.LinkException: . Root exception is javax.naming.NameNotFoundException:
    remaining name: /app/ejb/iitga_ejb.jar#Address/local-home
         at weblogic.j2eeclient.SimpleContext.resolve(SimpleContext.java:35)
    -- Failed initializing bean access.
    Has anyone successfully deployed/lookuped local entity beans in WL 8.1 server?
    Thanks,

    Does the ejb have a jndi binding?
    "Henry Niu" <[email protected]> wrote:
    >
    I have an local entity bean with local-jndi-name as "ejb/Address". After
    deployed
    to WL 8.1 server and tested on the Admin page, I got:
    The EJB Address has not been tested successfully. There was a problem
    determining
    the JNDI Name of the given bean.
    When looking up this bean by:
    Object ref2 = context.lookup("ejb/Address");
    or
    Object ref2 = context.lookup("java:comp/env/ejb/Address");
    or
    Object ref2 = context.lookup("/ejb/Address");
    I got the same error:
    javax.naming.LinkException: . Root exception is javax.naming.NameNotFoundException:
    remaining name: /app/ejb/iitga_ejb.jar#Address/local-home
         at weblogic.j2eeclient.SimpleContext.resolve(SimpleContext.java:35)
    -- Failed initializing bean access.
    Has anyone successfully deployed/lookuped local entity beans in WL 8.1
    server?
    Thanks,

  • Business components mapped to EJB 2.0 local entity beans

    Hi ,
    I read about the new feature in JDev 903 that is "Creating business components mapped to EJB 2.0 local entity beans". but I am not able to find any documentation on it.can anyone provide me any link or help on this topic.
    Thanx,
    Prasoon

    Prasoon -
    For JDeveloper 10g, version 9.0.5.1, there is information on this topic located in the help:
    Building J2EE Applications >
    Working with the Business Tier >
    Developing Enterprise JavaBean Applications >
    Using Business Component Entity Facades
    Hope this helps,
    Lynn
    Java Tools Team

  • Calling Local Entity Beans from another Application

    Hi,
    I packaged all my Local entity Beans in 1 single Application (APP1.EAR).
    I then I have another Application (APP2.EAR) which is made of Session Beans which require access to the APP1 application.
    I'm using this code to achieve this:
    Hashtable env = new Hashtable();
    env.put(Context.INITIAL_CONTEXT_FACTORY, "com.evermind.server.rmi.RMIInitialContextFactory");
    env.put(Context.SECURITY_PRINCIPAL, "admin");
    env.put(Context.SECURITY_CREDENTIALS, "manager");
    env.put(Context.PROVIDER_URL, "ormi://<host>/APP1");
    context = new InitialContext(env);
    ... (BeanLocalHome)context.lookup("java:comp/env/ejb/BeanLocal");
    I get the Following Exception:
    javax.naming.NameNotFoundException: java:comp/env/ejb/BeanLocal not found
    1) is there any problem with this code?
    2) can local interfaces be accessed by another Application (or can they be accessed only by the same application) ?
    Regards.
    giuseppe.

    Hi ,
    thank you for your answer.
    I'm still in trouble:
    these are the steps:
    App1.jar entity beans.
    App2.jar Session bean.
    I embedded the App1.jar into the App2.ear
    dir :
    App1.jar
    App2.jar
    application.xml (added the App1.jar)
    then I added this in the ejb-jar.xml deployment descriptor for App2.jar
    <ejb-link>../App1.jar#BeanName</ejb-link>
    for each entity bean.
    But I still get :
    javax.naming.NameNotFoundException: java:comp/env/ejb/BeanNameLocal not found
    java.lang.Object com.evermind.server.ApplicationContext.lookup(java.lang.String, boolean)
    ApplicationContext.java:110
    java.lang.Object com.evermind.server.ApplicationContext.lookup(java.lang.String)
    ApplicationContext.java:66
    java.lang.Object javax.naming.InitialContext.lookup(java.lang.String)
    What am I missing ??
    Thanks.
    giuseppe.

  • Proxy object and entity Bean interaction

    Hello,
    I'd like to have some precisions on the interactions between the proxy object (client) and the entity bean(server):
    - does J2EE provides ways for a bean to manage clients, to define roles and permissions, lock, etc ... ? What informations an entity bean can know about the clients ?.
    - how does the context mechanism work on the entity bean side ?
    - how does an entity bean identify different clients ? how does it recognize one from another ? I mean if client c1 and client c2 use same entity bean B, how B can manage different roles for c1 and c2, and how can B returns specific values to a particular client.
    Thx.

    If you can read some tutorial, you will get all the information.
    I'll suggest a book EJB by richard manson publicvations oreilly.
    The activities you are talking about is responsibility of container and user developed bean are totally absytracted from this system level activities.
    Primary service include security which take care of activities like Authentication, access control and secure communication.
    for role based access control u have container providing the identity by Principal object. DDescriptors declare which logical roles are allowed to access even perticular method of the bean.

  • How to use same transaction when calling CMP entity beans and  DAO (JDBC)

    We are currently using Weblogic 8.1 SP2 with an Oracle 10g database (using XA thin and non-XA drivers).
    We have a session bean that invokes an entity bean and a DAO (data access object pattern) in order to add data in 2 separate tables (account and history). Rows are added to the first (account) table using a CMP Entity bean while inserts are done in the 2nd (history) table using a DAO. Here is some pseudo code:
    addHistorySessionBean (trans-attribute="Required")
    begin
    Step #1 - call addAccountEntityBean (trans- attribute="Required")
    Step #2 - call addHistoryDAO (get datasource, connection)
    end
    The 2nd table (history) has a foreign key constraint to ensure that the corresponding key exists in the first (account) table. Unfortunately, DAO inserts on the 2nd (history) table fail with a foreign key constraint violation (INTEGRITY CONSTRAINT VIOLATION - PARENT KEY NOT FOUND!) since they cannot see the row added to the 1st (account) table in step #1 by the CMP entity bean.
    How does one ensure that all this is done in a single transaction ? It appears that the app server creates two seperate transactions (one for the session bean facade and the entity bean and a 2nd transaction (when we retrieve a connection using the same data source JNDI name) for the DAO.
    A post on server side suggested using a "<resource-ref>" in the session bean to tie the two potentially separate transactions together, but that does not work for us. However, I am not sure if we are doing that correctly. After we define the resource ref in the session facade bean, do we use the resource ref "name" attribute to lookup the datasource or do we still lookup the datasource by JNDI name ? Do we need to define the resource-ref tag in the entity bean also ?
    Does Weblogic allow using a single transaction for this type of a scenario ? How does one specify within Weblogic that the same transaction should be utilized by the entity bean and any subsequent DAOs?
    People have also suggested that we defer constraint checking until the transaction(s) are committed but that sounds like a work acount without addressing this issue. Would postponing the constraint checking in Oracle cause any additional overhead ?
    Any suggestions with specific examples or documentation on how to address this issue will be gratefully appreciated.

    Thanks for your suggestion. Unfortunately, this does not work since it appears that there are 2 separate transactions going on here. One, the original one initiated by the session bean and used by the entity bean and the other initiated by the DAO. Any other ideas appreciated.
    Hi,
    Try setting the delay-database-inserts tag to
    ejbCreate in RDBMS descriptor file.
    http://bernal/stage/wls/docs81/ejb/DDreference-cmp-jar
    .html#1113981
    vasanthi ramesh

  • Basic difference between stateful and entity beans???

    Could anyone please explain the basic diff between stateful bean and an entity bean.as per my understanding,stateful beans are extensions to clients.they perform a job of a client and they r not persistent.also their state goes off when the server crashes or the machine is reeboted.while in contrast,an entity bean can retain its session coz' they represent a persistent field in the DB.What i have seen in few books(O'reilly,etc)where a session bean can insert some values into the DB,which means it also represents a persistent object in the DB,which contradicts the statement that "stateful session beans dont represent any persistent object in the DB".Could anyone please elaborate on this.Thanks in advance.
    Jameel

    Thank u very much crackers for ur valuable
    suggestions.I'll throw a different one in here for free: clarity of writing is a highly-valued and useful skill in a software professional. This is especially true these days when concepts need to be clearly explained to a variety of technical peoples from all over the world. And then there's the other side of the coin: Management.
    You have to get your thoughts across in a very precise manner and, unfortunately for those who have to learn it as a second lanugage, English seems to be the overall preferred medium. Which makes it even more important to use "correct" English in written communications. If you don't, your credibility diminishes and you appear to be (horrors!) unprofessional It's not that much harder to type "you" than it is to use a single letter. Besides, most people that "pay by the byte" appreciate the clarity, as well (as I've seen on Usenet, by way of covering my ass).
    Now, back to our regularly scheduled post...
    Is this wat u were trying to say if i
    understood u correctly.Yes, the EntityBean is directly related to the data being persisted: in this case, a database table. So, using your example from below, the DB table would have two fields: a VARCHAR 'Name' and an INT 'Age.' The EntityBean would have corresponding fields/properties/variables, String name and int age.
    "WHICH BEAN (Entity
    or Sateful Session) SHOULD I GO 4???"No easy answer. The best one is: it depends. On what? It depends upon what you're trying to do with the data, how it's presented/manipulated, load requirements, environmental requirements, caching strategies, and about another dozen or so other high-level requirements.
    My personal preference is if I need caching and the number of EntityBeans actually in existence is pretty "low" (another nebulous and arbitrary value, depending), I'll use a StatelessSessionBean as a Facade (search for "patterns" here in the forum), with the persistence in CMP EntityBeans. Which is influenced by the fact that I like playing with CMP. ;D

  • Deploying CMP entity bean throws compilation error.

    Jdeveloper build works fine but the server deployment ( embedded) fails. I linked tools.jar to j2ee home dir, same version as jdev uses. Session beans deploy OK.
    The table corr to the entity bean has a primary key and the entity bean was created by dragging-dropping table onto UML diagram.
    error is >>>cmp-field of type 'java.lang.Long' does not have a no-arg constructor which is needed for properties/fields based mapping<<<, message details follow after dashed line.
    Platform details - Jdeveloper 9.0.3 on mdk 9.0, JDK 1.4.1 ( JDK 1.3.1 also does the same).
    [Starting OC4J using the following ports: HTTP=8988, RMI=23891, JMS=9227.]
    /usr/java/j2sdk1.4.1/bin/java -hotspot -classpath /var/jdeveloper/j2ee/home/oc4j.jar -Xverify:none -Doracle.j2ee.dont.use.memory.archive=true -Xrs com.evermind.server.OC4JServer -config /home/demo/jdevhome/system9.0.3.1035/oc4j-config/server.xml
    [waiting for the server to complete its initialization...]
    Embedded OC4J startup time: 9611 ms.
    Copying default deployment descriptor from archive at /home/demo/jdevhome/mywork/MyHRApplication/EJB-Tier/classes/META-INF/orion-ejb-jar.xml to deployment directory /home/demo/jdevhome/system9.0.3.1035/oc4j-config/application-deployments/current-workspace-app/classes...
    Auto-deploying file:/home/demo/jdevhome/mywork/MyHRApplication/EJB-Tier/classes/ (No previous deployment found)... Error compiling /home/demo/jdevhome/mywork/MyHRApplication/EJB-Tier/classes: cmp-field of type 'java.lang.Long' does not have a no-arg constructor which is needed for properties/fields based mapping
    Oracle9iAS (9.0.3.0.0) Containers for J2EE initialized

    Please note that the data-source has been re-architectured in 10.1.3 DP3 and you should have DataSource as follows:
    <data-sources xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:noNamespaceSchemaLocation='http://xmlns.oracle.com/oracleas/schema/data-sources-10_1.xsd' schema-major-version='10' schema-minor-version='1'>
    <managed-data-source connection-pool-name='Example Connection Pool' jndi-name='jdbc/OracleDS' name='OracleManagedDS' />
    <connection-pool name='Example Connection Pool' >
    <connection-factory factory-class='oracle.jdbc.pool.OracleDataSource' user='scott' password='tiger' url='jdbc:oracle:thin:@localhost:1521:orcl'>
    </connection-factory>
    </connection-pool>
    </data-sources>

  • How to persist local entity reference?

    I had a remote entity bean A hold a reference to a remote entity bean B's handle. Now I change them to local entity beans. But Local entity bean doesn't support Handle and I found local entity stub is not even Serializable (WebSphere5.0). How do I persist local entity bean B's reference? This is kind of non-container managed relationship. Why ejb2.0 spec doesn't support local entity Handle? How do you do non-container managed relationship without handle?

    "I had a remote entity bean A hold a reference to a remote entity bean B's handle."
    You hold a reference; as in an instance variable? If so, how did you use the handle? What did you do with the reference when the entity was stored or passivated?
    "Now I change them to local entity beans. But Local entity bean doesn't support Handle... Why ejb2.0 spec doesn't support local entity Handle? "
    Handle objects are intended to assist with holding for long-lived references to remote objects by avoiding the potential problems associated with holding a reference directly to the remote object. Since there are no concerns with respect to working remotely, Local objects do not need a Handle. Just hold reference to the Local directly, like you would any other object.
    "...and I found local entity stub is not even Serializable."
    Well of course not, it's not a remote object. One of the main points driving the use of local interfaces is to limit access to components. Hence only components within the same JVM as the Local can access it.
    "How do I persist local entity bean B's reference?"
    What do you mean by "persist"? Were you actually storing the Handle object into the database?! If so, then I see why you wanted a serializable Local Handle.

  • Change one entity bean query, errors pop up in another... why?

    In my application I have the following entity bean:
    @Entity
    @Table(name = "ventureprofile")
    @SecondaryTable(name = "venture")
    @NamedQueries( {       
            @NamedQuery(name = "Ventureprofile.findByVentureprofileid", query = "SELECT v FROM Ventureprofile v WHERE v.ventureprofileid = :ventureprofileid"),
            @NamedQuery(name = "Ventureprofile.findByVentureid", query = "SELECT v FROM Ventureprofile v WHERE v.ventureid = :ventureid"),
            @NamedQuery(name = "Ventureprofile.findByLogoimagelocation", query = "SELECT v FROM Ventureprofile v WHERE v.logoimagelocation = :logoimagelocation"),
            @NamedQuery(name = "Ventureprofile.findByVisible", query = "SELECT v FROM Ventureprofile v WHERE v.visible = :visible ORDER BY v.venturename")
            //@NamedQuery(name = "Ventureprofile.findByVisibleRange", query = "SELECT v FROM Ventureprofile v WHERE v.visible = :visible ORDER BY v.venturename OFFSET 1 LIMIT 2")
    public class Ventureprofile implements Serializable {
        @GeneratedValue(strategy=GenerationType.AUTO, generator="Ventureprofile.ventureprofileid.seq")
        @SequenceGenerator(name="Ventureprofile.ventureprofileid.seq", sequenceName="ventureprofile_ventureprofileid_seq", allocationSize=1) 
        @Column(name = "ventureprofileid", nullable = false)
        private BigInteger ventureprofileid;
        @Id
        @JoinColumn(name = "ventureid", referencedColumnName = "ventureid")
        private long ventureid;  
        @Lob
        @Column(name = "venturesummary")
        private String venturesummary;
        @Column(name = "logoimagelocation")
        private String logoimagelocation;
        @Column(name = "visible", nullable = false)
        private char visible;
        @Column(table = "venture", name = "venturename", insertable=false)
        private String venturename;
    ...and another entity bean:
    @Entity
    @Table(name = "venturelink")
    @NamedQueries( {
            @NamedQuery(name = "Venturelink.findByVenturelinkid", query = "SELECT v FROM Venturelink v WHERE v.venturelinkid = :venturelinkid"),
            @NamedQuery(name = "Venturelink.findByVentureprofileid", query = "SELECT v FROM Venturelink v WHERE v.ventureprofileid = :ventureprofileid"),
            @NamedQuery(name = "Venturelink.findByLinkurl", query = "SELECT v FROM Venturelink v WHERE v.linkurl = :linkurl"),
            @NamedQuery(name = "Venturelink.findByLinkname", query = "SELECT v FROM Venturelink v WHERE v.linkname = :linkname")
    public class Venturelink implements Serializable {
        @Id
        @GeneratedValue(strategy=GenerationType.AUTO, generator="Venturelink.venturelinkid.seq")
        @SequenceGenerator(name="Venturelink.venturelinkid.seq", sequenceName="venturelink_venturelinkid_seq", allocationSize=1)  
        @Column(name = "venturelinkid", nullable = false)
        private BigInteger venturelinkid;
        @Column(name = "ventureprofileid", nullable = false)
        private long ventureprofileid;
        @Column(name = "linkurl", nullable = false)
        private String linkurl;
        @Column(name = "linkname", nullable = false)
        private String linkname;
    ...    If I uncomment the last NamedQuery ~
    @NamedQuery(name = "Ventureprofile.findByVisibleRange", query = "SELECT v FROM Ventureprofile v WHERE v.visible = :visible ORDER BY v.venturename OFFSET 1 LIMIT 2")I experience the following runtime error:
    javax.ejb.EJBException: nested exception is: java.rmi.ServerException: RemoteException occurred in server thread; nested exception is:
            java.rmi.RemoteException: null; nested exception is:
            java.lang.IllegalArgumentException: NamedQuery of name: Venturelink.findByVentureprofileid not found.Container: Glassfish
    Database: Postgres
    OS: WinXP sp2
    Persistence provider: Toplink
    Note that I am not altering 'Venturelink', I am only altering 'Ventureprofile', however errors are manifesting themselves in 'Venturelink'.
    I have heard a rumor that 'OFFSET' and 'LIMIT' are not supported by the majority of persistence providers, but that would be a ridiculous situation... unless the majority of persistence providers lazy-load results when they are pulled from a result set. Is that the case?
    Regardless, this is making me guess what is going on behind the scenes. So, at some point during runtime, is all of my EJB query code getting munged together? And then whatever interprets them into SQL is giving up as soon as it finds a query it doesn't like? That's what this smells like, at least...
    Typically, I find weird errors like this crop up when I'm doing something stupid that a system wasn't designed to handle. So I'd really appreciate it if someone would set me straight.

    Solution, via Doug Clarke at the TopLink forums:
    2. JPA's query language does not support OFFSET and LIMIT. Instead JPA offers setFirstResult(int) and setMaxResult(int) on the Query object. In TopLink this generally translates to JDBC calls of similar names.
    (Thanks Doug!)
    so yeah... unless somebody knows otherwise and I'm wrong (often the case), looks like things choke across multiple entity beans as soon as one malformed query is found. Not good.

  • Error while using sybase trigger with the CMP entity bean,ejb version 2.1

    Hi All,
    I am using ejb version 2.1 and using entity bean (Transaction required) ,i am trying to update data in sybase(ver 12.3) database table
    I am using session bean(Transaction required) to update the multiple entity beans in a while loop.It is working fine .But when i am trying to run it with the trigger which updates multiple tables in different sybase databases on update of each entity.Then it throws NoSuchEntityException and it rollback the whole transaction.
    My trigger has only few simple update statements and the trigger runs fine without my CMP entity bean.is the CMP does not support the update triggers in sybase or is it the problem with the transaction.
    Please help
    Thanks
    Anshu

    If you can have a look at a cmp example in the samples that ship with the server. My guess is that the weblogic-ejb-jar.xml file is missing the <persistence-use> element which for 810 would look like:
    <persistence>
    <persistence-use>
    <type-identifier>WebLogic_CMP_RDBMS</type-identifier>
    <type-version>7.0</type-version>
    <type-storage>META-INF/weblogic-cmp-rdbms-jar.xml</type-storage>
    </persistence-use>
    </persistence>
    I seem to recall that the elements might be slightly different in structure for the wls700 version of the DTD, so please check that (I cannot, I'm at home and don't have everything here).
    Give that a try and see if it doesn't solve your compilation failure.
    Also, the compilation should not be throwing a null pointer exception in a case like that, I consider that to be a bug.
    -thorick

  • Force read with entity beans

    Hi,
    is there a way to force the container to reload an Entity EJB (not read-only), something like read-timeout-seconds?
    Thx,
    A.

    So you mean you're changing the data in the database and the entity bean isn't picking up these changes?
    If you call ejbLoad() the container will instruct the instance to synchronize its state by loading its state from the underlying database (so reload the ejb basically)
    Depending on what app server you're using - you can tell the container to call ejbLoad(), even if the data is already in cache, by default. This will probably be a setting in some .xml file.

  • Using Vectors in Entity Beans

    Hello,
    Can I use vectors in entity and store them in Tables directly as binary objects.I have tried making that bean but facing problem in retriving data from table using EJB-QL.Here are code snippets:
    -------public abstract class CartEntityBean implements EntityBean {
         private EntityContext ctx;
         public abstract String getCartId();
         public abstract Vector getItems();
         public abstract void setCartId(String CartId);
         public abstract void setItems(Vector items);
    public String ejbCreate(String cartId,Vector items) throws CreateException {
              setCartId(cartId);
              return cartId;
    rest other methods omitted
    public interface CartHomeInterface extends EJBHome{
    public CartRemoteInterface create (String cartId,Vector items )throws CreateException,RemoteException ;
    public CartRemoteInterface findByPrimaryKey(String pk) throws FinderException, RemoteException;
    public Collection findmyItems() throws FinderException, RemoteException;
    I am using Cloudscape as Database.
    Please help weather I can use Complex objects in Entity Beans or Not

    this is no good idea to store the cart-items as a java-vector. you should create a entity bean cart and a entity bean cartItem. then create a cmr between the two entity beans.

Maybe you are looking for