Rad-only Entity beans are replicated?
Hi. I have just read the document "Failover and Replication in a cluster": http://edocs.bea.com/wls/docs81/cluster/failover.html#1008850
I have no clear if read-only entity beans are replicated?
I understand that replica-aware stub does not mean that stub objects are replicated in all the servers of the cluster. This seems to be only for statefull session beans.
Thx.
Hi,
we use read only entity beans. It is beneficial if have findByPrimaryKey finders. but we also have finders on non primary key coloumn also. is there a way to cache such local references returned by such non primary key finders also.
Similar Messages
-
Load balancing not happending but fail over is for Read only Entity beans
The following are the configuration.
Two NT servers with WL5.1 sp9 having only EJBs(Read only entity beans)
One Client with WL5.1 sp9 having servlet/java application as
EJB client.
I am trying to make a call like findbyprimarykey in one of the
entity bean. I could see the request is being directed only to the one of the
server always. When I bring that server, fail over is happening to the other server.
Here are the settings I have in the ejb-jar.xml :
<entity>
<ejb-name>device.StartHome</ejb-name>
<home>com.wl.api.device.StartHome</home>
<remote>com.wl.api.device.StartRemote</remote>
<ejb-class>com.wl.server.device.StartImpl</ejb-class>
<persistence-type>Bean</persistence-type>
<prim-key-class>java.lang.Long</prim-key-class>
<reentrant>False</reentrant>
<resource-ref>
<res-ref-name>jdbc/wlPool</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
</entity>
Here are the settings I have in the weblogic-ejb-jar.xml.
<weblogic-enterprise-bean>
<ejb-name>device.StartHome</ejb-name>
<caching-descriptor>
<max-beans-in-cache>50</max-beans-in-cache>
<cache-strategy>Read-Only</cache-strategy>
<read-timeout-seconds>900</read-timeout-seconds>
</caching-descriptor>
<reference-descriptor>
<resource-description>
<res-ref-name>jdbc/wlPool</res-ref-name>
<jndi-name>weblogic.jdbc.pool.wlPool</jndi-name>
</resource-description>
</reference-descriptor>
<enable-call-by-reference>False</enable-call-by-reference>
<jndi-name>device.StartHome</jndi-name>
</weblogic-enterprise-bean>
Am I doin any mistake in this?
Any one's help is appreciated.
Thanks
Suresh
we are using 5.1
"Gene Chuang" <[email protected]> wrote in message
news:[email protected]...
> Colocation optimization occurs if your client resides in the same
container (and also in the same
> EAR for 6.0) as your ejbs.
>
> Gene
>
> "Suresh" <[email protected]> wrote in message
news:[email protected]...
> > Ok....the ejb-call-by-reference set to true is making the call to one
server
> > only. i am not sure why it is. I removed the property name and it
works.
> > Also I have one question, in our prduct environment, when i cache the
ejb
> > home it is not doing the load balancing. can any one help me for that.
> > thanks
> >
> > Mike,
> > From the sample pgm I sent, even from single client calls get load
> > balanced.
> >
> > Suresh
> >
> >
> > "Gene Chuang" <[email protected]> wrote in message
> > news:[email protected]...
> > > In WL, LoadBalancing will ONLY WORK if you reuse your EJBHome! Take
your
> > StartEndPointHome lookup
> > > out of your for loop and see if this fixes your problem.
> > >
> > > I've seen this discussion in ejb-interest, and some other vendor
(Borland,
> > I believe it is), brings
> > > up an interesting point: Clustering and LoadBalance is not in the
J2EE
> > specs, hence implementation
> > > is totally up to the vendor. Weblogic loadbalances from the remote
> > interfaces (EJBObject, EJBHome,
> > > etc..), while Borland loadbalances from JNDI Context lookup.
> > >
> > > Let me suggest a third implmentation: loadbalance from BOTH Context
> > lookup as well as stub method
> > > invocation! Or create a smart replica-aware list manager which
persists
> > on the client thread
> > > (ThreadLocal) and is aware of lookup/evocation history. Hence if I do
the
> > following in a client
> > > hitting a 3 node cluster, I'll still get perfect round-robining
regardless
> > of what I do on the
> > > client side:
> > >
> > > InitialContext ctxt = new InitialContext();
> > > EJBHome myHome = ctxt.lookup(MY_BEAN);
> > > myHome.findByPrimaryKey(pk); <== hits Node #1
> > > myHome = ctxt.lookup(MY_BEAN);
> > > myHome.findByPrimaryKey(pk); <== hits Node #2
> > > myHome.findByPrimaryKey(pk); <== hits Node #3
> > > myHome = ctxt.lookup(MY_BEAN);
> > > myHome.findByPrimaryKey(pk); <== hits Node #1
> > > ...
> > >
> > >
> > > Gene
> > >
> > > "Suresh" <[email protected]> wrote in message
> > news:[email protected]...
> > > > Mike ,
> > > >
> > > > Do you have any reasons for the total number of machines to be 10.
> > > >
> > > > I tried with 7 machines.
> > > >
> > > >
> > > > Here is my sample client java application running individual in the
> > seven
> > > > machines.
> > > >
> > > > StartEndPointHome =
> > > > (StartEndPointHome)ctx.lookup("dev.StartEndPointHome");
> > > > for(;;)
> > > > {
> > > > // logMsg(" --in loop "+currentTime);
> > > > if (currentTime > nextRefereshTime)
> > > > {
> > > > logMsg("****- going to call");
> > > > currentTime=getSystemTime();
> > > > nextRefereshTime=currentTime+timeInterval;
> > > > StartEndPointHome =
> > > > (StartEndPointHome)ctx.lookup("dev.StartEndPointHome");
> > > > long rndno=(long)(Math.random()*10)+range;
> > > > logMsg(" going to call remotestub"+rndno);
> > > > retVal =
> > > >
> >
((StartEndPointHome)getStartHome()).findByNumber("pe"+rndno+"_mportal_dsk36.
> > > > mportal.com");
> > > >
> > > > logMsg("**++- called stub");
> > > > }
> > > >
> > > >
> > > >
> > > > The range value is different for each of the machines in the
cluster.
> > > >
> > > > If the first request starts at srv1, all request starts hitting the
same
> > > > server.
> > > > If the first request starts at srv2, all request starts hitting the
same
> > > > server.
> > > >
> > > > I have the following for the url , user and pwd values for the
context
> > .
> > > >
> > > > public static String url="t3://10.11.12.14,10.11.12.117:8000";
> > > > public static String user="guest";
> > > > public static String password="guest";
> > > >
> > > >
> > > >
> > > > It would be great if you could help me.
> > > >
> > > > Thanks
> > > > suresh
> > > >
> > > >
> > > > "Mike Reiche" <[email protected]> wrote in message
> > > > news:[email protected]...
> > > > >
> > > > > If you have only one client don't be surprised if you only hit one
> > server.
> > > > Try
> > > > > running ten different clients and see if the hit the same server.
> > > > >
> > > > > Mike
> > > > >
> > > > >
> > > > > "suresh" <[email protected]> wrote:
> > > > > >
> > > > > >The following are the configuration.
> > > > > >
> > > > > > Two NT servers with WL5.1 sp9 having only EJBs(Read only entity
> > beans)
> > > > > >
> > > > > > One Client with WL5.1 sp9 having servlet/java application as
> > > > > > EJB client.
> > > > > >
> > > > > >
> > > > > >I am trying to make a call like findbyprimarykey in one of the
> > > > > >entity bean. I could see the request is being directed only to
the
> > one
> > > > > >of the
> > > > > >server always. When I bring that server, fail over is happening
to
> > the
> > > > > >other server.
> > > > > >
> > > > > >
> > > > > >Here are the settings I have in the ejb-jar.xml :
> > > > > > <entity>
> > > > > > <ejb-name>device.StartHome</ejb-name>
> > > > > > <home>com.wl.api.device.StartHome</home>
> > > > > > <remote>com.wl.api.device.StartRemote</remote>
> > > > > > <ejb-class>com.wl.server.device.StartImpl</ejb-class>
> > > > > > <persistence-type>Bean</persistence-type>
> > > > > > <prim-key-class>java.lang.Long</prim-key-class>
> > > > > > <reentrant>False</reentrant>
> > > > > > <resource-ref>
> > > > > > <res-ref-name>jdbc/wlPool</res-ref-name>
> > > > > > <res-type>javax.sql.DataSource</res-type>
> > > > > > <res-auth>Container</res-auth>
> > > > > > </resource-ref>
> > > > > > </entity>
> > > > > >
> > > > > >
> > > > > >Here are the settings I have in the weblogic-ejb-jar.xml.
> > > > > >
> > > > > ><weblogic-enterprise-bean>
> > > > > > <ejb-name>device.StartHome</ejb-name>
> > > > > >
> > > > > > <caching-descriptor>
> > > > > > <max-beans-in-cache>50</max-beans-in-cache>
> > > > > > <cache-strategy>Read-Only</cache-strategy>
> > > > > > <read-timeout-seconds>900</read-timeout-seconds>
> > > > > > </caching-descriptor>
> > > > > >
> > > > > > <reference-descriptor>
> > > > > > <resource-description>
> > > > > > <res-ref-name>jdbc/wlPool</res-ref-name>
> > > > > > <jndi-name>weblogic.jdbc.pool.wlPool</jndi-name>
> > > > > > </resource-description>
> > > > > > </reference-descriptor>
> > > > > > <enable-call-by-reference>False</enable-call-by-reference>
> > > > > > <jndi-name>device.StartHome</jndi-name>
> > > > > > </weblogic-enterprise-bean>
> > > > > >
> > > > > >
> > > > > >Am I doin any mistake in this?
> > > > > >
> > > > > >Any one's help is appreciated.
> > > > > >Thanks
> > > > > >Suresh
> > > > >
> > > >
> > > >
> > >
> > >
> >
> >
>
>
-
Problem with Read-Only Entity Bean
Hi All,
I have an Read-Only BMP that just read data from 20 tables and stores them in a Collection. In a 'Read-Only' Entity bean, the ejbLoad() is supposed to called periodically as defined by 'read-timeout-seconds' parameter in 'weblogic-ejb-jar.xml'. But this doesn't happen. Every time I invoke the EJB, ejbCreate() and ejbLoad() get called. Any suggestions will be highly appreciated.
Here is the content of my 'weblogic-ejb-jar.xml' file.
<?xml version="1.0"?>
<!DOCTYPE weblogic-ejb-jar PUBLIC
'-//BEA Systems, Inc.//DTD WebLogic 6.0.0 EJB//EN'
'http://www.bea.com/servers/wls600/dtd/weblogic-ejb-jar.dtd'>
<weblogic-ejb-jar>
<weblogic-enterprise-bean>
<ejb-name>beanManaged</ejb-name>
<entity-descriptor>
<entity-cache>
<max-beans-in-cache>1</max-beans-in-cache>
<read-timeout-seconds>5</read-timeout-seconds>
<concurrency-strategy>ReadOnly</concurrency-strategy>
</entity-cache>
</entity-descriptor>
<jndi-name>beanManaged</jndi-name>
</weblogic-enterprise-bean>
</weblogic-ejb-jar>
Thanks,
PremYes, it calls ejbLoad() at intervals defined by read-timeout-seconds, but only when bean
is requested by the client, and the cached copy is old. If bean just sits in the cache
unused no ejbLoad()'s will be called.
Prem Raghupathy <[email protected]> wrote:
The weblogic document on 'Setting Entity EJBs to Read-Only' says "WebLogic Server
never calls ejbStore() for a read-only entity EJB. ejbLoad() is called initially
when the EJB is created; afterwards, WebLogic Server calls ejbLoad() only at intervals
defined by the read-timeout-seconds deployment parameter.". Here is the link to
the document
http://edocs.bea.com/wls/docs61/ejb/EJB_environment.html#1074846
Dimitri Rakitine <[email protected]> wrote:
WebLogic doesn't reload Read-Only entity beans periodically. It loads
bean instance only when client requests it, and instance is not in the
cache, or cached instance is older than read-timeout-seconds.
Prem Raghupathy <[email protected]> wrote:
This is a multi-part message in MIME format.
---=_newsgroups3c21148f
Content-Type: text/plain
Content-Transfer-Encoding: 7bit
Rajesh,
Thanks for your reply. I’m using WL6.1 sp1. When I log the methodcalls,
this is what I see on the server console.
SetEntityContext()
ejbCreate()
ejbPostCreate()
ejbLoad()
As you see, the ejbLoad() doesn’t get called every 5 sec, eventhough I
set the ‘read-timeout-seconds=5’ in the weblogic-ejb-jar.xml,
Do you have a working example for Read-Only BMP on WL6.1? The examplesdirectory
in weblogic 6.1 doesn’t have one.
Also find attached all the files. Any suggestions will be highly appreciated.
Thanks,
Prem.
Rajesh Mirchandani <[email protected]> wrote:
What version of the Server and Service pack are you using? Turn on
JDBC
logging and see if every ejbLoad() hits the DB.
prem wrote:
Hi All,
I have an Read-Only BMP that just read data from 20 tables and storesthem in a Collection. In a 'Read-Only' Entity bean, the ejbLoad() is
supposed to called periodically as defined by 'read-timeout-seconds'
parameter in 'weblogic-ejb-jar.xml'. But this doesn't happen. Every
time I invoke the EJB, ejbCreate() and ejbLoad() get called. Any suggestions
will be highly appreciated.
Here is the content of my 'weblogic-ejb-jar.xml' file.
<?xml version="1.0"?>
<!DOCTYPE weblogic-ejb-jar PUBLIC
'-//BEA Systems, Inc.//DTD WebLogic 6.0.0 EJB//EN'
'http://www.bea.com/servers/wls600/dtd/weblogic-ejb-jar.dtd'>
<weblogic-ejb-jar>
<weblogic-enterprise-bean>
<ejb-name>beanManaged</ejb-name>
<entity-descriptor>
<entity-cache>
<max-beans-in-cache>1</max-beans-in-cache>
<read-timeout-seconds>5</read-timeout-seconds>
<concurrency-strategy>ReadOnly</concurrency-strategy>
</entity-cache>
</entity-descriptor>
<jndi-name>beanManaged</jndi-name>
</weblogic-enterprise-bean>
</weblogic-ejb-jar>
Thanks,
Prem--
Rajesh Mirchandani
Developer Relations Engineer
BEA Support
---=_newsgroups3c21148f
Content-Type: application/x-zip-compressed; name="C:\WebGain\bea\wlserver6.1\samples\examples\ejb20\basic\beanManaged\beanManaged.zip"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="beanManaged.zip"
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
---=_newsgroups3c21148f----
Dimitri
Dimitri -
Read Only entity beans and Finders
Hi,
We are using Read Only entity beans with WLS 7.0 SP1 for some entities that represent Reference Data that will never change. What I would like to know is whether WLS needs to hit the database when a finder on these beans is run or does WLS cache the results of the Finder also?
Thanks.
SantoshHi,
we use read only entity beans. It is beneficial if have findByPrimaryKey finders. but we also have finders on non primary key coloumn also. is there a way to cache such local references returned by such non primary key finders also. -
Are ENtity Beans are deprecated in 3.0 version
Hi the below line is from the book "Mastering EJB 3.0 "
Note that Entity beans havent been enhanced in ejb3.0 , since there have been no changes made to them .
What does this mean actually ?
Does it mean ENtity Beans are deprecated in 3.0 version ?>
Hi kiran7882,
Note that Entity beans haven’t been enhanced in ejb3.0 , since there have been no changes made to them .Entity beans are specific to persistence managers. EJB's are only modules which can use them like any other objects.
Does it mean ENtity Beans are deprecated in 3.0 version ?No. -
Read Only Entity Bean will not cache
I'm using the Sun Java Application Server version 8.2. I've created a read only entity bean with a 900 second refresh. This bean has a findAll() method that I've created. The table it is reading from has only 22 rows of data that doesn't change (well, maybe 2 or 3 times a year).
As stated I've set the read-only property to true and the refresh to 900 seconds. I've also set the caching settings, which I guess i don't really need to mess with from the defaults.
I do not seem to be achieving any caching at all. My check for this is very simple. I simply load a drop down in the client application with these 22 values. After the intial load I add another row in the database. The newley added row always shows up in the drop down in real time. If i'm caching correctly I shouldn't see this value until the refresh time of 900 seconds. Is there something I am missing? I'm using NetBeans 5.0 to set the values of the entity beans and such.
Thanks for the help!
ryanHi Ryan,
The 8.2 read-only bean implementation still executes non-findByPrimaryKey queries within the database.
If your application calls findByPrimaryKey or accesses a business method on one of the
read-only beans returned from a query, that will not result in a database access (unless a refresh
period boundary is crossed).
We have added the additional optimization of caching specific result sets of non-findByPrimaryKey
read-only bean finders in the latest development version of Glassfish (V2).
https://glassfish.dev.java.net/public/downloadsindex.html#Official_supported_builds
It will also be available in our Application Server release 9.1. There are no plans to backport this
optimization to the 8.2 codebase.
--ken -
Primary Key for Read Only Entity Beans In EJB 3.0
Hi,
I have checked the spec for ejb 3.0 which mentions that, there is no common standard for the vendor to implement the Read only Entity Beans.
My question over here is how it is implemented in OC4J??
Do we need to specify a primary key attribute in the read-only entity bean?
w.r.t BC4J(ADF) i remember, we used to create a read-only View Object with out specifying a primary key.
Just want to check is that the way it works in EJB 3.0 (Implemented by OC4J).
Thanks for your help in advance.
ShivaHi,
Try using the JBoss embedded container:
http://docs.codehaus.org/display/MAVENUSER/How+to+use+the+JBoss+Embedded+EJB3+Container+for+Unit+testing
/klejs -
Are EJB ( entity beans) are cached ?
Are EJB ( entity beans) are cached ?
I have a doubt here . As per my understanding , the entity beans are cached from the database. In that case , If I delete a row in the database by an external application ( say using TOAD tool) , how the Entity bean will be updated / reloaded ? Entity bean will be out of sync then .
Application server : weblogic/webspehere .>
You can use the refresh method of the EntityManager interface to read new values from the database (if you expect it to be out of sync), and use locks to prevent others from changing your data while the application is performing actions in a transaction.Did you mean I have to write code for this ? can't be made it automatic refresh by the container ? Is there any settings I can configure so that container can do it by itself proactively ?
Also, using locks ...is this a container settings or I need to configure myself in ejb-jar.xml ? Could you please shed some light here ? -
Re: Read Only Entity Bean
I am trying to convert an entity bean into a read only bean .
I am not sure how it works ? I read the documentation and it said that I had to
set
the following parameters
cache-strategy>Read-Write</cache-strategy>
read-timeout-seconds>100</read-timeout-seconds>
If I set the time out time to 100 seconds will the container call the ejbLoad
method
to reload the bean after every 100 seconds or only when the a request is made
on the
bean
Thanks a lot in advance for your answers.Kevin,
"Kevin" <[email protected]> wrote in message
news:3ec25923$[email protected]..
I am trying to convert an entity bean into a read only bean .
I am not sure how it works ? I read the documentation and it said that Ihad to
set
the following parameters
cache-strategy>Read-Write</cache-strategy>
read-timeout-seconds>100</read-timeout-seconds>
If I set the time out time to 100 seconds will the container call theejbLoad
method
to reload the bean after every 100 seconds or only when the a request ismade
on the
bean
Thanks a lot in advance for your answers.read-timeout-seconds make sense only for Read-Only
cache strategy and defines cache element expiration time.
For Read-Write strategy data will be loaded from the database
in with every new transaction (if db-is-shared set to true).
Hope this helps.
Regards,
Slava Imeshev -
Is there any way to mark an entity bean as read only? I'm using glassfish V2.
JPA does not define a read-only concept, but TopLink Essentials (glassfish v2 persistence) does. You can use a DescriptorCustomizer to set your TopLink Descriptor to be read-only (descriptor.setReadOnly()).
TopLink 11g, and EclipseLink (Glassfish v3) also provider a query hint for returning read-only objects at the query level ("eclipselink.return-shared").
-- James : EclipseLink -
Help reg. read only CMP bean in the examples!!
Hi,
I have been working with examples of EJB in WLS 6.1
I used the Access database with CMP.
The basic entity beans, both CMP and BMP worked well.
However when I tried the read-only Stock Bean and write StockWriter Beans... I received the following error... I am not sure what does it say...
==============================================
Beginning readMostly.Client...
Creating a StockWriter for BEAS
There was an exception while creating and using the Beans.
This indicates that there was a problem communicating with the server: java.rmi.RemoteException: EJB Exception:; nested exception is:
java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver]Optional feature not implemented
Start server side stack trace:
java.rmi.RemoteException: EJB Exception:; nested exception is:
java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver]Optional feature not implemented
java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver]Optional feature not implemented
at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6026)
at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:6183)
at sun.jdbc.odbc.JdbcOdbc.SQLBindInParameterFloat(JdbcOdbc.java:852)
at sun.jdbc.odbc.JdbcOdbcPreparedStatement.setLong(JdbcOdbcPreparedStatement.java:575)
at weblogic.jdbc.pool.Statement.setLong(Statement.java:369)
at weblogic.jdbc.rmi.internal.PreparedStatementImpl.setLong(PreparedStatementImpl.java:114)
at weblogic.jdbc.rmi.SerialPreparedStatement.setLong(SerialPreparedStatement.java:147)
at ejb.readMostly.StockWriterBean_u4qwd5__WebLogic_CMP_RDBMS.__WL_create(StockWriterBean_u4qwd5__WebLogic_CMP_RDBMS.java:589)
at ejb.readMostly.StockWriterBean_u4qwd5__WebLogic_CMP_RDBMS.ejbCreate(StockWriterBean_u4qwd5__WebLogic_CMP_RDBMS.java:518)
at java.lang.reflect.Method.invoke(Native Method)
at weblogic.ejb20.manager.DBManager.create(DBManager.java:519)
at weblogic.ejb20.manager.DBManager.remoteCreate(DBManager.java:489)
at weblogic.ejb20.internal.EntityEJBHome.create(EntityEJBHome.java:190)
at ejb.readMostly.StockWriterBean_u4qwd5_HomeImpl.create(StockWriterBean_u4qwd5_HomeImpl.java:78)
at ejb.readMostly.StockWriterBean_u4qwd5_HomeImpl_WLSkel.invoke(Unknown Source)
at weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:305)
at weblogic.rmi.cluster.ReplicaAwareServerRef.invoke(ReplicaAwareServerRef.java:93)
at weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.java:274)
at weblogic.rmi.internal.BasicExecuteRequest.execute(BasicExecuteRequest.java:22)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:139)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:120)
End server side stack trace
; nested exception is:
java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver]Optional feature not implemented
Start server side stack trace:
java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver]Optional feature not implemented
at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6026)
at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:6183)
at sun.jdbc.odbc.JdbcOdbc.SQLBindInParameterFloat(JdbcOdbc.java:852)
at sun.jdbc.odbc.JdbcOdbcPreparedStatement.setLong(JdbcOdbcPreparedStatement.java:575)
at weblogic.jdbc.pool.Statement.setLong(Statement.java:369)
at weblogic.jdbc.rmi.internal.PreparedStatementImpl.setLong(PreparedStatementImpl.java:114)
at weblogic.jdbc.rmi.SerialPreparedStatement.setLong(SerialPreparedStatement.java:147)
at ejb.readMostly.StockWriterBean_u4qwd5__WebLogic_CMP_RDBMS.__WL_create(StockWriterBean_u4qwd5__WebLogic_CMP_RDBMS.java:589)
at ejb.readMostly.StockWriterBean_u4qwd5__WebLogic_CMP_RDBMS.ejbCreate(StockWriterBean_u4qwd5__WebLogic_CMP_RDBMS.java:518)
at java.lang.reflect.Method.invoke(Native Method)
at weblogic.ejb20.manager.DBManager.create(DBManager.java:519)
at weblogic.ejb20.manager.DBManager.remoteCreate(DBManager.java:489)
at weblogic.ejb20.internal.EntityEJBHome.create(EntityEJBHome.java:190)
at ejb.readMostly.StockWriterBean_u4qwd5_HomeImpl.create(StockWriterBean_u4qwd5_HomeImpl.java:78)
at ejb.readMostly.StockWriterBean_u4qwd5_HomeImpl_WLSkel.invoke(Unknown Source)
at weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:305)
at weblogic.rmi.cluster.ReplicaAwareServerRef.invoke(ReplicaAwareServerRef.java:93)
at weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.java:274)
at weblogic.rmi.internal.BasicExecuteRequest.execute(BasicExecuteRequest.java:22)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:139)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:120)
End server side stack trace
End readMostly.Client...
==========================================
please help
SP
[att1.html]<entity-cache>
<max-beans-in-cache>...</max-beans-in-cache>
<read-timeout-seconds>...</read-timeout-seconds>
<concurrency-strategy>ReadOnly</concurrency-strategy>
</entity-cache>
I believe this is what you are looking for and this is part of entity-descriptor.
-- Prasad
Aruna wrote:
> Hi
> I am trying to develop few entity beans which is for only reading the
> data from the data base, As Read only entity beans are treated like stateless
> session beans(ie lead balancing at method calls as well auto failover) in the
> cluster. I want to know how to specify an entity bean as read only entity bean???
> ie in deployment descriptor so that ejb container treats it as a read only entity
> bean.
>
> Any help on this highly appreciated
>
> Thanks and Regards
> Aruna
-
JDBC or Entity Beans for Read-Only Data?
Entity beans are way to slow on pulling the amount of data I need. What are the cons of just using JDBC? Is this bad programming?
One query pulls about 700 rows from 6 different tables taking up to 20 seconds. The same call using JDBC takes 2 seconds. What is the proper thing to do?One query pulls about 700 rows from 6 different
tables taking up to 20 seconds. The same call using
JDBC takes 2 seconds. What is the proper thing to do?JDBC. Entity beans are not really suited for data across multiple tables. This can be best done with plain SQL +JDBC. -
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.
ThanksSlava,
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]...
> -
Can anyone explain the advantage of entity beans
Hi All,
I was wondering if anyone can explain the advantage of entity beans versus session beans. We argue that session beans can perform retrival/storage more efficiently than having an extra layer of entity beans. Basically we can't see any advantage entity beans have to offer except caching a row in a database table. I'd like to see the other side of the argument. So please if someone is an expert in this field, please advise us.
Thanks in advance for any argument
Regards,
Di-Caching the data is one.
-Seperation of logical layer. Entity beans are used to represent the data layer, while session beans hold the business rules. This is some what nebulous as some business rules are often best implement directly in the database, although they might be replicated at a different level as well.
-Mapping a logical layout to a physical layout. For example 'customer' might have a 'fax' and 'voice' line which is represented as a Customer class with two TN classes hanging off of it. The database might represent this in one of two ways: two tables (customer and TN) or one table (customer with two tn fields).
Both of the above are more readily apparent when dealing with distributed data. If one database holds the customer and another holds the TNs, then caching of data is more relevant and dealing with the actual CRUD stuff is much more complicated. This is likely to lead to a session bean offloading the logic to another class anyways - and it becomes a defacto bean.
And a really excellent example is when the entity bean represents data that isn't accessed via normal database calls. For example the customer record might be on a legacy system which can only be accessed via screen scrapping and batch input. That single customer entity is now the front end for a large sub-system.
All such answers are usually pretty wishy-washy anyways. Why should one use java over C++? Most decisions of this nature are made because developers want to use something rather than because there is any strong technical reason to do so. And even though keeping the data layer seperate for the rules layer seems like a good idea, compromises are always required and adding layers adds complexity. -
To use Entity Bean or Oracle stored Package?
Currently, in my project, Weblogic8.1 and Oracle is used, but lots of business logic is implemented using Oracle stored Packages, many of these packages have a package level readonly lookup table(like index-by table or nested table), which is populated with data from database, once the package is called, and is accessed very often in subsequent calls of stored procedures.
Since, in Weblogic server, a connection pool is maintained, and those package level lookup tables would be stored as session data in oracle PGA, I'm afraid this might cause oracle database server to be overloaded.
to fully take advantage of middleware cache service that weblogic provide, should I move those business logic out of oracle and implement them using like read only entity bean?
any help appreciated!Its very hard to say without knowing the usage patterns of the data. It sounds like you have a lot of read-only entities. These could be spread around a WLS cluster, therefore there is more scalability and performance with this option. However, I would not neccessarily rewrite business logic from SP into EJB just for middle-tier caching.
If its a DB intensive app with lots of SQL, then if the calls are within SP's, there is only 1 call from WLS and the DBA ought o be able to tune the DB usin read-ahead and other DBA semantics. If there is locality of reference in the data, again, DB can use read-ahead better than WLS, although RO cache in middle is more scalable than DBMS.
I wouldnt rewrite business logic from SP to EJB/Entity beans to take advantage of cache, especially if there is no locality of read-only reference to data. Oracle could do this better in my opinion, especially if SP's already exist
Need for information on the usage patterns of the data - how is it CRUD'd.
I would use-case the steel threads and put them under test load to see if the SP's really are an issue, since this is an architecture decision. What state is the project at? Live/Dev? Inception?
Maybe you are looking for
-
I am not sure if there is where I ask this question. I have to locate a photo that was taken last year. I have all my photos (jpeg and mostly RAW) backed up on DVDs. I did this when I had a PC. Now when I put the disc into my computer it says it cann
-
SQL Extract Variable String in Variable Position with Variable length from ntext field
i want to extract a variable string from an ntext field. Sample Data in Background_text (ntext) function changeFocus() { document.getElementById('skipContent').style.visibility = 'visible'; document.getElementById('flashContent').bl
-
Documentation on Interface tables for lease management
Hi i found out the following interface tables for lease management but couldn't find any documentation or information of the mandatory columns to be populated in these tables is there any documentation provided in R12 for the following tables? PN_LEA
-
Dubious EFI boot manager entries
Hi all, After attempting to install Fedora on my computer via Boot Camp I ended up with 4 "windows" volumes in the boot manager, all of which give me the "missing operating system" error. I'm not sure how or why, but I imagine somewhere along the lin
-
Linking Excel Spreadsheet to Numbers
I know how to place an Excel Spreadsheet into Numbers and subsequently save it as a Numbers file. Once the Numbers file is established is there a way to export data changes made while working in the original Spreadsheet in Excel direct to the Numbers