Concurrent entity beans access
I have failed to come up with a workable solution for concurrent entity bean access on the SUN reference implementation together with cloudscape.
I have created a test case and a webpage which describes my problem. If anyone can come up with a working solution (must work on the RI) I would be very thankful.
Please have a look at
http://www.offermanns.de/~rolf/ejb-concurrency/
and tell me what you think.
-Rolf
Hi,
I thought that this is a problem. But this isn't just
about this pattern. It is a general question about how
to get concurrent access to entity beans to work on
the RI.Entity Beans are the shared components , same instance is being shared between all the concurrent users so if the same component is a part of the longer transaction then the component can lead to the data corruption and to avoid that you have to set the ISOLATION Level for the concurrent running long transactions.Remember the Entity beans are shared components and are shared between all the cliens not like the Sessoin BEans where different clients can get different instances.
I tried to alter the cloudscape setting to SERIAZABLE,
but that won't help. (from the cloudscape log, it
seems, that the container switches back to READ_COMMIT
before every transaction.You dont have to change the setting in the Cloudscape,you require add the Isolation-level tag in the deployment descriptor.These can take the values as
1)READ_COMMITED
2)READ_UNCOMMITTED
3)REPEATABLE_READ
4)SERIALIZABLEI hope this will help.
Regards
Vicky
Similar Messages
-
Wrapping entity bean access inside singletons
Hi all,
While developing an application based on EJB, i came across a situation which requires some analysis.
I have a session bean which acts as a session facade - for a set of related entity beans. Since, i wanted to take out all the finders, removes / creator access from the session bean - I created a singleton utility class - which does all the entity bean access. So, the session bean merely calls various methods in the singleton utility class for entity bean access.
I'am posting it here to get an opinion from others - whether the use of singleton utility class for accessing entity beans - a right approach ?(even though - it does not create any problems during normal testing..)
Please comment on this approach..
Thanks in advance,
BaskarHi,
The dictionary bean example was quite useful. Thanks.
But I'am still confused with one thing. i.e.,
What would be the difference between the below 2 approaches :
1. Locating & updating / reading from DB tables through CMPs directly from inside the session bean methods. In which case, each client request will have one instance of session bean activated - to service the request. By this, in each of these different session bean instances, the entity bean instances will be created/found/removed/updated.
2. Using a singleton class/a class containing static methods inside which entity bean instances will be created/found/removed/updated. These static methods/ singleton methods will be used inside each of the session bean instances - in which case, all session bean instances share the code for entity bean access.
Please give your comments.. -
Entity Bean Database Access Problem
I have developed the CustomerBook application from the NetBeans 4.1 quick start tutorial with SJAS8.1Q2 (http://www.netbeans.org/kb/41/quickstart-j2ee.html) with MySQL. I get the following set of errors. I am new to SJAS. I've tried a lot of different things. For the life of me, I can't understand why this isn't working. I know the problem is with the entity bean accessing the database because the session bean communicates well with the client when calling the entity bean.
Thank you in advance for any efforts made to help me on this.
Seymour
[#|2005-08-15T15:58:50.250-0500|INFO|sun-appserver-pe8.1_02|javax.enterprise.system.container.ejb|_ThreadID=21;|EJB5018: An exception was thrown during an ejb invocation on [CustomerFacadeBean]|#]
[#|2005-08-15T15:58:50.251-0500|INFO|sun-appserver-pe8.1_02|javax.enterprise.system.container.ejb|_ThreadID=21;|
javax.ejb.TransactionRolledbackLocalException: Exception thrown from bean; nested exception is: com.sun.jdo.api.persistence.support.JDOFatalInternalException: JDO76519: Failed to identify vendor type for the data store.
NestedException: java.sql.SQLException: Error in allocating a connection. Cause: Class name is wrong or classpath is not set for : org.gjt.mm.mysql.jdbc2.optional.MysqlDataSource
com.sun.jdo.api.persistence.support.JDOFatalInternalException: JDO76519: Failed to identify vendor type for the data store.
NestedException: java.sql.SQLException: Error in allocating a connection. Cause: Class name is wrong or classpath is not set for : org.gjt.mm.mysql.jdbc2.optional.MysqlDataSource
at com.sun.jdo.spi.persistence.support.sqlstore.impl.SQLPersistenceManagerFactory.initializeSQLStoreManager(SQLPersistenceManagerFactory.java:870)
at com.sun.jdo.spi.persistence.support.sqlstore.impl.SQLPersistenceManagerFactory.getFromPool(SQLPersistenceManagerFactory.java:786)
at com.sun.jdo.spi.persistence.support.sqlstore.impl.SQLPersistenceManagerFactory.getPersistenceManager(SQLPersistenceManagerFactory.java:673)
at com.sun.jdo.spi.persistence.support.sqlstore.impl.PersistenceManagerFactoryImpl.getPersistenceManager(PersistenceManagerFactoryImpl.java:849)
at com.sun.jdo.spi.persistence.support.sqlstore.impl.PersistenceManagerFactoryImpl.getPersistenceManager(PersistenceManagerFactoryImpl.java:681)
at ejb.CustomersBean_2122496195_ConcreteImpl.jdoGetPersistenceManager(CustomersBean_2122496195_ConcreteImpl.java:862)
at ejb.CustomersBean_2122496195_ConcreteImpl.ejbFindByPrimaryKey(CustomersBean_2122496195_ConcreteImpl.java:417)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at com.sun.enterprise.security.SecurityUtil.invoke(SecurityUtil.java:147)
at com.sun.ejb.containers.EntityContainer.invokeFindByPrimaryKey(EntityContainer.java:738)
at com.sun.ejb.containers.EJBLocalHomeInvocationHandler.invoke(EJBLocalHomeInvocationHandler.java:181)
at $Proxy15.findByPrimaryKey(Unknown Source)
at ejb.CustomerFacadeBean.getCompanyInfo(CustomerFacadeBean.java:73)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at com.sun.enterprise.security.SecurityUtil$2.run(SecurityUtil.java:153)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.enterprise.security.application.EJBSecurityManager.doAsPrivileged(EJBSecurityManager.java:950)
at com.sun.enterprise.security.SecurityUtil.invoke(SecurityUtil.java:158)
at com.sun.ejb.containers.EJBObjectInvocationHandler.invoke(EJBObjectInvocationHandler.java:128)
at $Proxy18.getCompanyInfo(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at com.sun.corba.ee.impl.presentation.rmi.ReflectiveTie._invoke(ReflectiveTie.java:123)
at com.sun.corba.ee.impl.protocol.CorbaServerRequestDispatcherImpl.dispatchToServant(CorbaServerRequestDispatcherImpl.java:648)
at com.sun.corba.ee.impl.protocol.CorbaServerRequestDispatcherImpl.dispatch(CorbaServerRequestDispatcherImpl.java:192)
at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleRequestRequest(CorbaMessageMediatorImpl.java:1709)
at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleRequest(CorbaMessageMediatorImpl.java:1569)
at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleInput(CorbaMessageMediatorImpl.java:951)
at com.sun.corba.ee.impl.protocol.giopmsgheaders.RequestMessage_1_2.callback(RequestMessage_1_2.java:181)
at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleRequest(CorbaMessageMediatorImpl.java:721)
at com.sun.corba.ee.impl.transport.SocketOrChannelConnectionImpl.dispatch(SocketOrChannelConnectionImpl.java:469)
at com.sun.corba.ee.impl.transport.SocketOrChannelConnectionImpl.doWork(SocketOrChannelConnectionImpl.java:1258)
at com.sun.corba.ee.impl.orbutil.threadpool.ThreadPoolImpl$WorkerThread.run(ThreadPoolImpl.java:409)
NestedStackTrace:
java.sql.SQLException: Error in allocating a connection. Cause: Class name is wrong or classpath is not set for : org.gjt.mm.mysql.jdbc2.optional.MysqlDataSource
at com.sun.gjc.spi.DataSource.getConnection(DataSource.java:74)
at com.sun.jdo.spi.persistence.support.sqlstore.ejb.TransactionHelperImpl.getConnection(TransactionHelperImpl.java:181)
at com.sun.jdo.spi.persistence.support.sqlstore.ejb.EJBHelper.getConnection(EJBHelper.java:166)
at com.sun.jdo.spi.persistence.support.sqlstore.impl.SQLPersistenceManagerFactory.getConnection(SQLPersistenceManagerFactory.java:892)
at com.sun.jdo.spi.persistence.support.sqlstore.impl.SQLPersistenceManagerFactory.initializeSQLStoreManager(SQLPersistenceManagerFactory.java:857)
at com.sun.jdo.spi.persistence.support.sqlstore.impl.SQLPersistenceManagerFactory.getFromPool(SQLPersistenceManagerFactory.java:786)
at com.sun.jdo.spi.persistence.support.sqlstore.impl.SQLPersistenceManagerFactory.getPersistenceManager(SQLPersistenceManagerFactory.java:673)
at com.sun.jdo.spi.persistence.support.sqlstore.impl.PersistenceManagerFactoryImpl.getPersistenceManager(PersistenceManagerFactoryImpl.java:849)
at com.sun.jdo.spi.persistence.support.sqlstore.impl.PersistenceManagerFactoryImpl.getPersistenceManager(PersistenceManagerFactoryImpl.java:681)
at ejb.CustomersBean_2122496195_ConcreteImpl.jdoGetPersistenceManager(CustomersBean_2122496195_ConcreteImpl.java:862)
at ejb.CustomersBean_2122496195_ConcreteImpl.ejbFindByPrimaryKey(CustomersBean_2122496195_ConcreteImpl.java:417)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at com.sun.enterprise.security.SecurityUtil.invoke(SecurityUtil.java:147)
at com.sun.ejb.containers.EntityContainer.invokeFindByPrimaryKey(EntityContainer.java:738)
at com.sun.ejb.containers.EJBLocalHomeInvocationHandler.invoke(EJBLocalHomeInvocationHandler.java:181)
at $Proxy15.findByPrimaryKey(Unknown Source)
at ejb.CustomerFacadeBean.getCompanyInfo(CustomerFacadeBean.java:73)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at com.sun.enterprise.security.SecurityUtil$2.run(SecurityUtil.java:153)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.enterprise.security.application.EJBSecurityManager.doAsPrivileged(EJBSecurityManager.java:950)
at com.sun.enterprise.security.SecurityUtil.invoke(SecurityUtil.java:158)
at com.sun.ejb.containers.EJBObjectInvocationHandler.invoke(EJBObjectInvocationHandler.java:128)
at $Proxy18.getCompanyInfo(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at com.sun.corba.ee.impl.presentation.rmi.ReflectiveTie._invoke(ReflectiveTie.java:123)
at com.sun.corba.ee.impl.protocol.CorbaServerRequestDispatcherImpl.dispatchToServant(CorbaServerRequestDispatcherImpl.java:648)
at com.sun.corba.ee.impl.protocol.CorbaServerRequestDispatcherImpl.dispatch(CorbaServerRequestDispatcherImpl.java:192)
at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleRequestRequest(CorbaMessageMediatorImpl.java:1709)
at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleRequest(CorbaMessageMediatorImpl.java:1569)
at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleInput(CorbaMessageMediatorImpl.java:951)
at com.sun.corba.ee.impl.protocol.giopmsgheaders.RequestMessage_1_2.callback(RequestMessage_1_2.java:181)
at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleRequest(CorbaMessageMediatorImpl.java:721)
at com.sun.corba.ee.impl.transport.SocketOrChannelConnectionImpl.dispatch(SocketOrChannelConnectionImpl.java:469)
at com.sun.corba.ee.impl.transport.SocketOrChannelConnectionImpl.doWork(SocketOrChannelConnectionImpl.java:1258)
at com.sun.corba.ee.impl.orbutil.threadpool.ThreadPoolImpl$WorkerThread.run(ThreadPoolImpl.java:409)
javax.ejb.TransactionRolledbackLocalException: Exception thrown from bean; nested exception is: com.sun.jdo.api.persistence.support.JDOFatalInternalException: JDO76519: Failed to identify vendor type for the data store.
NestedException: java.sql.SQLException: Error in allocating a connection. Cause: Class name is wrong or classpath is not set for : org.gjt.mm.mysql.jdbc2.optional.MysqlDataSource
at com.sun.ejb.containers.BaseContainer.checkExceptionClientTx(BaseContainer.java:2674)
at com.sun.ejb.containers.BaseContainer.postInvokeTx(BaseContainer.java:2526)
at com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:819)
at com.sun.ejb.containers.EJBLocalHomeInvocationHandler.invoke(EJBLocalHomeInvocationHandler.java:199)
at $Proxy15.findByPrimaryKey(Unknown Source)
at ejb.CustomerFacadeBean.getCompanyInfo(CustomerFacadeBean.java:73)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at com.sun.enterprise.security.SecurityUtil$2.run(SecurityUtil.java:153)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.enterprise.security.application.EJBSecurityManager.doAsPrivileged(EJBSecurityManager.java:950)
at com.sun.enterprise.security.SecurityUtil.invoke(SecurityUtil.java:158)
at com.sun.ejb.containers.EJBObjectInvocationHandler.invoke(EJBObjectInvocationHandler.java:128)
at $Proxy18.getCompanyInfo(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at com.sun.corba.ee.impl.presentation.rmi.ReflectiveTie._invoke(ReflectiveTie.java:123)
at com.sun.corba.ee.impl.protocol.CorbaServerRequestDispatcherImpl.dispatchToServant(CorbaServerRequestDispatcherImpl.java:648)
at com.sun.corba.ee.impl.protocol.CorbaServerRequestDispatcherImpl.dispatch(CorbaServerRequestDispatcherImpl.java:192)
at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleRequestRequest(CorbaMessageMediatorImpl.java:1709)
at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleRequest(CorbaMessageMediatorImpl.java:1569)
at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleInput(CorbaMessageMediatorImpl.java:951)
at com.sun.corba.ee.impl.protocol.giopmsgheaders.RequestMessage_1_2.callback(RequestMessage_1_2.java:181)
at com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleRequest(CorbaMessageMediatorImpl.java:721)
at com.sun.corba.ee.impl.transport.SocketOrChannelConnectionImpl.dispatch(SocketOrChannelConnectionImpl.java:469)
at com.sun.corba.ee.impl.transport.SocketOrChannelConnectionImpl.doWork(SocketOrChannelConnectionImpl.java:1258)
at com.sun.corba.ee.impl.orbutil.threadpool.ThreadPoolImpl$WorkerThread.run(ThreadPoolImpl.java:409)NestedException: java.sql.SQLException: Error in allocating a connection. Cause: Class name is wrong or classpath is not set for : org.gjt.mm.mysql.jdbc2.optional.MysqlDataSourcePlease check that you have the driver in appserver's class path.
-
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,
SagarHi,
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. -
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]...
> -
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!!
Isidrogetter 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 2302hi 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 -
Problems accessing ejb 3.0 entity bean from project
I have written some code using ejb 3.0 and was previously accessing the entity bean without problem when both ejbs and the accessing code were in the same project. However I have moved the accessing code into a different project within the same application and now when the code tries to accessing the entity bean I get the following error:
com.colwilson.web.ingestion.IdentifiedException: java.lang.ClassCastException: __Proxy3
at com.colwilson.web.ingestion.IngestionHandler.recordArrived(IngestionHandler.java:140)
at com.colwilson.web.ingestion.IngestionHandler.main(IngestionHandler.java:52)
Caused by: java.lang.ClassCastException: __Proxy3
at com.evermind.server.ejb.StatelessSessionRemoteInvocationHandler.getFreshObject(StatelessSessionRemoteInvocationHandler.java:21)
at com.evermind.server.rmi.RecoverableRemoteInvocationHandler.getReplacementObject(RecoverableRemoteInvocationHandler.java:64)
at com.evermind.server.rmi.RecoverableRemoteInvocationHandler.handleRecovery(RecoverableRemoteInvocationHandler.java:41)
at com.evermind.server.rmi.RecoverableRemoteInvocationHandler.invoke(RecoverableRemoteInvocationHandler.java:30)
at com.evermind.server.ejb.StatelessSessionRemoteInvocationHandler.invoke(StatelessSessionRemoteInvocationHandler.java:43)
at __Proxy1.mergeEntity(Unknown Source)
at com.colwilson.web.ingestion.IngestionHandler.recordArrived(IngestionHandler.java:137)
... 1 more
Now, of course I could move the code back into the same project, but as I understand it that is just the point of ejbs. I'm looking up the entity bean thus:
final Context context = InitialContext();
ingestionSessionEJB =
(IngestionSessionEJB)context.lookup("IngestionSessionEJB");
It may be true that I don't understand the way lookup works, but to be honest I can't find the docs that explain what I've got wrong.
Please help.hi
Double Click on the project which is goin to use the project which contains bean from the Application Navigator window. The project properties window will open. Choose the "Dependencies" item from left panel. click on the radio "User Project Settings" and select another project which contain ejb which you're goin to access...
Best Of Luck
Ravi A. Trivedi -
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
SylvainSylvain,
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. -
Exception while accessing deployed entity bean (CMP)
Hi
PSB for the exception i get when i try to access a delpoyed entity bean
(CMP).
If any of you have got this exception and fixed it or have any idea of how
to fix it then please reply asap.
thanks.
java.lang.NullPointerException
at
com.netscape.server.deployment.PersistenceDeploymentDescriptorImpl.getBeanPr
operty(Unk
n Source)
at com.netscape.server.ejb.SQLPersistenceManager.init(Unknown
Source)
at
com.netscape.server.ejb.SQLPersistenceManagerFactory.addHome(Unknown Source)
at com.kivasoft.eb.EBHomeBase.initMeta(Unknown Source)
at com.kivasoft.eb.EBHomeBase.initTransport(Unknown Source)
at com.kivasoft.eb.EBActivatorCB.getEBHomenative(Native Method)
at com.kivasoft.eb.EBActivatorCB.getEBHome(Unknown Source)
at com.netscape.server.ejb.EjbContext.createHomeRef(Unknown Source)
at com.netscape.server.ejb.EjbContext.getHomeRef(Unknown Source)
at com.netscape.server.ejb.EjbContext.lookup(Unknown Source)
at com.netscape.server.jndi.RootContext.lookup(Unknown Source)
at com.netscape.server.jndi.RootContext.lookup(Unknown Source)
at javax.naming.InitialContext.lookup(InitialContext.java:357)
at samples.test.ejb.TestEJB.getGreeting(TestEJB.java:45)
at java.lang.reflect.Method.invoke(Native Method)
at
samples.test.ejb.ejb_skel_samples_test_ejb_TestEJB.getGreeting(ejb_skel_samp
les_test_e
TestEJB.java:80)
at
samples.test.ejb.ejb_kcp_skel_Test.getGreeting__indir_wstring__indir_wstring
(ejb_kcp_s
_Test.java:220)
at com.kivasoft.ebfp.FPRequest.invokenative(Native Method)
at com.kivasoft.ebfp.FPRequest.invoke(Unknown Source)
at
samples.test.ejb.ejb_kcp_stub_Test.getGreeting(ejb_kcp_stub_Test.java:327)
at samples.test.ejb.ejb_stub_Test.getGreeting(ejb_stub_Test.java:71)
at samples.test.servlet.TestServlet.doGet(TestServlet.java:62)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:865)
at
com.netscape.server.servlet.servletrunner.ServletInfo.service(Unknown
Source)
at
com.netscape.server.servlet.servletrunner.ServletRunner.execute(Unknown
Source)
at com.kivasoft.applogic.AppLogic.execute(Unknown Source)
at com.kivasoft.applogic.AppLogic.execute(Unknown Source)
at com.kivasoft.thread.ThreadBasic.run(Native Method)
at java.lang.Thread.run(Thread.java:479)
[04/Dec/2001 11:16:51:8] error: Exception Stack Trace:
com.netscape.server.ejb.PersistenceException
at com.netscape.server.ejb.SQLPersistenceManager.init(Unknown
Source)
at
com.netscape.server.ejb.SQLPersistenceManagerFactory.addHome(Unknown Source)
at com.kivasoft.eb.EBHomeBase.initMeta(Unknown Source)
at com.kivasoft.eb.EBHomeBase.initTransport(Unknown Source)
at com.kivasoft.eb.EBActivatorCB.getEBHomenative(Native Method)
at com.kivasoft.eb.EBActivatorCB.getEBHome(Unknown Source)
at com.netscape.server.ejb.EjbContext.createHomeRef(Unknown Source)
at com.netscape.server.ejb.EjbContext.getHomeRef(Unknown Source)
at com.netscape.server.ejb.EjbContext.lookup(Unknown Source)
at com.netscape.server.jndi.RootContext.lookup(Unknown Source)
at com.netscape.server.jndi.RootContext.lookup(Unknown Source)
at javax.naming.InitialContext.lookup(InitialContext.java:357)
at samples.test.ejb.TestEJB.getGreeting(TestEJB.java:45)
at java.lang.reflect.Method.invoke(Native Method)
at
samples.test.ejb.ejb_skel_samples_test_ejb_TestEJB.getGreeting(ejb_skel_samp
les_test_e
TestEJB.java:80)
at
samples.test.ejb.ejb_kcp_skel_Test.getGreeting__indir_wstring__indir_wstring
(ejb_kcp_s
_Test.java:220)
at com.kivasoft.ebfp.FPRequest.invokenative(Native Method)
at com.kivasoft.ebfp.FPRequest.invoke(Unknown Source)
at
samples.test.ejb.ejb_kcp_stub_Test.getGreeting(ejb_kcp_stub_Test.java:327)
at samples.test.ejb.ejb_stub_Test.getGreeting(ejb_stub_Test.java:71)
at samples.test.servlet.TestServlet.doGet(TestServlet.java:62)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:865)
at
com.netscape.server.servlet.servletrunner.ServletInfo.service(Unknown
Source)
at
com.netscape.server.servlet.servletrunner.ServletRunner.execute(Unknown
Source)
at com.kivasoft.applogic.AppLogic.execute(Unknown Source)
at com.kivasoft.applogic.AppLogic.execute(Unknown Source)
at com.kivasoft.thread.ThreadBasic.run(Native Method)
at java.lang.Thread.run(Thread.java:479)
got the Entity bean found ***************
got the Entity bean***************
[04/Dec/2001 11:16:51:8] error: EBFP-marshal_internal: internal exception
caught in kcp skeleton,
ception = java.lang.NullPointerException
[04/Dec/2001 11:16:51:8] error: Exception Stack Trace:
java.lang.NullPointerException
at java.util.Hashtable.get(Hashtable.java:321)
at com.netscape.server.ejb.SQLPersistenceManager.<init>(Unknown
Source)
at
com.netscape.server.ejb.SQLPersistenceManagerFactory.newInstance(Unknown
Source)
at
com.netscape.server.ejb.EntityDelegateManagerImpl.getPersistenceManager(Unkn
own Source
at
com.netscape.server.ejb.EntityDelegateManagerImpl.doPersistentFind(Unknown
Source)
at com.netscape.server.ejb.EntityDelegateManagerImpl.find(Unknown
Source)
at com.kivasoft.eb.EBHomeBase.findSingleByParms(Unknown Source)
at
samples.test.ejb.Entity.ejb_home_samples_test_ejb_Entity_TestEntityBean.find
ByPrimaryK
ejb_home_samples_test_ejb_Entity_TestEntityBean.java:126)
at
samples.test.ejb.Entity.ejb_kcp_skel_TestEntityHome.findByPrimaryKey__sample
s_test_ejb
tity_TestEntity__int(ejb_kcp_skel_TestEntityHome.java:266)
at com.kivasoft.ebfp.FPRequest.invokenative(Native Method)
at com.kivasoft.ebfp.FPRequest.invoke(Unknown Source)
at
samples.test.ejb.Entity.ejb_kcp_stub_TestEntityHome.findByPrimaryKey(ejb_kcp
stubTest
ityHome.java:338)
at
samples.test.ejb.Entity.ejb_stub_TestEntityHome.findByPrimaryKey(ejb_stub_Te
stEntityHo
java:85)
at samples.test.ejb.TestEJB.getGreeting(TestEJB.java:51)
at java.lang.reflect.Method.invoke(Native Method)
at
samples.test.ejb.ejb_skel_samples_test_ejb_TestEJB.getGreeting(ejb_skel_samp
les_test_e
TestEJB.java:80)
at
samples.test.ejb.ejb_kcp_skel_Test.getGreeting__indir_wstring__indir_wstring
(ejb_kcp_s
_Test.java:220)
at com.kivasoft.ebfp.FPRequest.invokenative(Native Method)
at com.kivasoft.ebfp.FPRequest.invoke(Unknown Source)
at
samples.test.ejb.ejb_kcp_stub_Test.getGreeting(ejb_kcp_stub_Test.java:327)
at samples.test.ejb.ejb_stub_Test.getGreeting(ejb_stub_Test.java:71)
at samples.test.servlet.TestServlet.doGet(TestServlet.java:62)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:865)
at
com.netscape.server.servlet.servletrunner.ServletInfo.service(Unknown
Source)
at
com.netscape.server.servlet.servletrunner.ServletRunner.execute(Unknown
Source)
at com.kivasoft.applogic.AppLogic.execute(Unknown Source)
at com.kivasoft.applogic.AppLogic.execute(Unknown Source)
at com.kivasoft.thread.ThreadBasic.run(Native Method)
at java.lang.Thread.run(Thread.java:479)
I could not find the Entity bean
java.rmi.RemoteException: internal error; nested exception is:
java.lang.NullPointerException
java.lang.NullPointerException
at java.util.Hashtable.get(Hashtable.java:321)
at com.netscape.server.ejb.SQLPersistenceManager.<init>(Unknown
Source)
at
com.netscape.server.ejb.SQLPersistenceManagerFactory.newInstance(Unknown
Source)
at
com.netscape.server.ejb.EntityDelegateManagerImpl.getPersistenceManager(Unkn
own Source
at
com.netscape.server.ejb.EntityDelegateManagerImpl.doPersistentFind(Unknown
Source)
at com.netscape.server.ejb.EntityDelegateManagerImpl.find(Unknown
Source)
at com.kivasoft.eb.EBHomeBase.findSingleByParms(Unknown Source)
at
samples.test.ejb.Entity.ejb_home_samples_test_ejb_Entity_TestEntityBean.find
ByPrimaryK
ejb_home_samples_test_ejb_Entity_TestEntityBean.java:126)
at
samples.test.ejb.Entity.ejb_kcp_skel_TestEntityHome.findByPrimaryKey__sample
s_test_ejb
tity_TestEntity__int(ejb_kcp_skel_TestEntityHome.java:266)
at com.kivasoft.ebfp.FPRequest.invokenative(Native Method)
at com.kivasoft.ebfp.FPRequest.invoke(Unknown Source)
at
samples.test.ejb.Entity.ejb_kcp_stub_TestEntityHome.findByPrimaryKey(ejb_kcp
stubTest
ityHome.java:338)
at
samples.test.ejb.Entity.ejb_stub_TestEntityHome.findByPrimaryKey(ejb_stub_Te
stEntityHo
java:85)
at samples.test.ejb.TestEJB.getGreeting(TestEJB.java:51)
at java.lang.reflect.Method.invoke(Native Method)
at
samples.test.ejb.ejb_skel_samples_test_ejb_TestEJB.getGreeting(ejb_skel_samp
les_test_e
TestEJB.java:80)
at
samples.test.ejb.ejb_kcp_skel_Test.getGreeting__indir_wstring__indir_wstring
(ejb_kcp_s
_Test.java:220)
at com.kivasoft.ebfp.FPRequest.invokenative(Native Method)
at com.kivasoft.ebfp.FPRequest.invoke(Unknown Source)
at
samples.test.ejb.ejb_kcp_stub_Test.getGreeting(ejb_kcp_stub_Test.java:327)
at samples.test.ejb.ejb_stub_Test.getGreeting(ejb_stub_Test.java:71)
at samples.test.servlet.TestServlet.doGet(TestServlet.java:62)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:865)
at
com.netscape.server.servlet.servletrunner.ServletInfo.service(Unknown
Source)
at
com.netscape.server.servlet.servletrunner.ServletRunner.execute(Unknown
Source)
at com.kivasoft.applogic.AppLogic.execute(Unknown Source)
at com.kivasoft.applogic.AppLogic.execute(Unknown Source)
at com.kivasoft.thread.ThreadBasic.run(Native Method)
at java.lang.Thread.run(Thread.java:479)
Regards
Sandhya SeetharamHi,
This seems to be the Hello world EJB application with a small
modification(probably an addition of test directory or a java file). I would
recomend you to go through every line of the document on deploying this
application. There is another posting regarding the same issue in this forum.
Regards
Raj
akhila wrote:
Hi
PSB for the exception i get when i try to access a delpoyed entity bean
(CMP).
If any of you have got this exception and fixed it or have any idea of how
to fix it then please reply asap.
thanks.
java.lang.NullPointerException
at
com.netscape.server.deployment.PersistenceDeploymentDescriptorImpl.getBeanPr
operty(Unk
n Source)
at com.netscape.server.ejb.SQLPersistenceManager.init(Unknown
Source)
at
com.netscape.server.ejb.SQLPersistenceManagerFactory.addHome(Unknown Source)
at com.kivasoft.eb.EBHomeBase.initMeta(Unknown Source)
at com.kivasoft.eb.EBHomeBase.initTransport(Unknown Source)
at com.kivasoft.eb.EBActivatorCB.getEBHomenative(Native Method)
at com.kivasoft.eb.EBActivatorCB.getEBHome(Unknown Source)
at com.netscape.server.ejb.EjbContext.createHomeRef(Unknown Source)
at com.netscape.server.ejb.EjbContext.getHomeRef(Unknown Source)
at com.netscape.server.ejb.EjbContext.lookup(Unknown Source)
at com.netscape.server.jndi.RootContext.lookup(Unknown Source)
at com.netscape.server.jndi.RootContext.lookup(Unknown Source)
at javax.naming.InitialContext.lookup(InitialContext.java:357)
at samples.test.ejb.TestEJB.getGreeting(TestEJB.java:45)
at java.lang.reflect.Method.invoke(Native Method)
at
samples.test.ejb.ejb_skel_samples_test_ejb_TestEJB.getGreeting(ejb_skel_samp
les_test_e
TestEJB.java:80)
at
samples.test.ejb.ejb_kcp_skel_Test.getGreeting__indir_wstring__indir_wstring
(ejb_kcp_s
_Test.java:220)
at com.kivasoft.ebfp.FPRequest.invokenative(Native Method)
at com.kivasoft.ebfp.FPRequest.invoke(Unknown Source)
at
samples.test.ejb.ejb_kcp_stub_Test.getGreeting(ejb_kcp_stub_Test.java:327)
at samples.test.ejb.ejb_stub_Test.getGreeting(ejb_stub_Test.java:71)
at samples.test.servlet.TestServlet.doGet(TestServlet.java:62)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:865)
at
com.netscape.server.servlet.servletrunner.ServletInfo.service(Unknown
Source)
at
com.netscape.server.servlet.servletrunner.ServletRunner.execute(Unknown
Source)
at com.kivasoft.applogic.AppLogic.execute(Unknown Source)
at com.kivasoft.applogic.AppLogic.execute(Unknown Source)
at com.kivasoft.thread.ThreadBasic.run(Native Method)
at java.lang.Thread.run(Thread.java:479)
[04/Dec/2001 11:16:51:8] error: Exception Stack Trace:
com.netscape.server.ejb.PersistenceException
at com.netscape.server.ejb.SQLPersistenceManager.init(Unknown
Source)
at
com.netscape.server.ejb.SQLPersistenceManagerFactory.addHome(Unknown Source)
at com.kivasoft.eb.EBHomeBase.initMeta(Unknown Source)
at com.kivasoft.eb.EBHomeBase.initTransport(Unknown Source)
at com.kivasoft.eb.EBActivatorCB.getEBHomenative(Native Method)
at com.kivasoft.eb.EBActivatorCB.getEBHome(Unknown Source)
at com.netscape.server.ejb.EjbContext.createHomeRef(Unknown Source)
at com.netscape.server.ejb.EjbContext.getHomeRef(Unknown Source)
at com.netscape.server.ejb.EjbContext.lookup(Unknown Source)
at com.netscape.server.jndi.RootContext.lookup(Unknown Source)
at com.netscape.server.jndi.RootContext.lookup(Unknown Source)
at javax.naming.InitialContext.lookup(InitialContext.java:357)
at samples.test.ejb.TestEJB.getGreeting(TestEJB.java:45)
at java.lang.reflect.Method.invoke(Native Method)
at
samples.test.ejb.ejb_skel_samples_test_ejb_TestEJB.getGreeting(ejb_skel_samp
les_test_e
TestEJB.java:80)
at
samples.test.ejb.ejb_kcp_skel_Test.getGreeting__indir_wstring__indir_wstring
(ejb_kcp_s
_Test.java:220)
at com.kivasoft.ebfp.FPRequest.invokenative(Native Method)
at com.kivasoft.ebfp.FPRequest.invoke(Unknown Source)
at
samples.test.ejb.ejb_kcp_stub_Test.getGreeting(ejb_kcp_stub_Test.java:327)
at samples.test.ejb.ejb_stub_Test.getGreeting(ejb_stub_Test.java:71)
at samples.test.servlet.TestServlet.doGet(TestServlet.java:62)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:865)
at
com.netscape.server.servlet.servletrunner.ServletInfo.service(Unknown
Source)
at
com.netscape.server.servlet.servletrunner.ServletRunner.execute(Unknown
Source)
at com.kivasoft.applogic.AppLogic.execute(Unknown Source)
at com.kivasoft.applogic.AppLogic.execute(Unknown Source)
at com.kivasoft.thread.ThreadBasic.run(Native Method)
at java.lang.Thread.run(Thread.java:479)
got the Entity bean found ***************
got the Entity bean***************
[04/Dec/2001 11:16:51:8] error: EBFP-marshal_internal: internal exception
caught in kcp skeleton,
ception = java.lang.NullPointerException
[04/Dec/2001 11:16:51:8] error: Exception Stack Trace:
java.lang.NullPointerException
at java.util.Hashtable.get(Hashtable.java:321)
at com.netscape.server.ejb.SQLPersistenceManager.<init>(Unknown
Source)
at
com.netscape.server.ejb.SQLPersistenceManagerFactory.newInstance(Unknown
Source)
at
com.netscape.server.ejb.EntityDelegateManagerImpl.getPersistenceManager(Unkn
own Source
at
com.netscape.server.ejb.EntityDelegateManagerImpl.doPersistentFind(Unknown
Source)
at com.netscape.server.ejb.EntityDelegateManagerImpl.find(Unknown
Source)
at com.kivasoft.eb.EBHomeBase.findSingleByParms(Unknown Source)
at
samples.test.ejb.Entity.ejb_home_samples_test_ejb_Entity_TestEntityBean.find
ByPrimaryK
ejb_home_samples_test_ejb_Entity_TestEntityBean.java:126)
at
samples.test.ejb.Entity.ejb_kcp_skel_TestEntityHome.findByPrimaryKey__sample
s_test_ejb
tity_TestEntity__int(ejb_kcp_skel_TestEntityHome.java:266)
at com.kivasoft.ebfp.FPRequest.invokenative(Native Method)
at com.kivasoft.ebfp.FPRequest.invoke(Unknown Source)
at
samples.test.ejb.Entity.ejb_kcp_stub_TestEntityHome.findByPrimaryKey(ejb_kcp
stubTest
ityHome.java:338)
at
samples.test.ejb.Entity.ejb_stub_TestEntityHome.findByPrimaryKey(ejb_stub_Te
stEntityHo
java:85)
at samples.test.ejb.TestEJB.getGreeting(TestEJB.java:51)
at java.lang.reflect.Method.invoke(Native Method)
at
samples.test.ejb.ejb_skel_samples_test_ejb_TestEJB.getGreeting(ejb_skel_samp
les_test_e
TestEJB.java:80)
at
samples.test.ejb.ejb_kcp_skel_Test.getGreeting__indir_wstring__indir_wstring
(ejb_kcp_s
_Test.java:220)
at com.kivasoft.ebfp.FPRequest.invokenative(Native Method)
at com.kivasoft.ebfp.FPRequest.invoke(Unknown Source)
at
samples.test.ejb.ejb_kcp_stub_Test.getGreeting(ejb_kcp_stub_Test.java:327)
at samples.test.ejb.ejb_stub_Test.getGreeting(ejb_stub_Test.java:71)
at samples.test.servlet.TestServlet.doGet(TestServlet.java:62)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:865)
at
com.netscape.server.servlet.servletrunner.ServletInfo.service(Unknown
Source)
at
com.netscape.server.servlet.servletrunner.ServletRunner.execute(Unknown
Source)
at com.kivasoft.applogic.AppLogic.execute(Unknown Source)
at com.kivasoft.applogic.AppLogic.execute(Unknown Source)
at com.kivasoft.thread.ThreadBasic.run(Native Method)
at java.lang.Thread.run(Thread.java:479)
I could not find the Entity bean
java.rmi.RemoteException: internal error; nested exception is:
java.lang.NullPointerException
java.lang.NullPointerException
at java.util.Hashtable.get(Hashtable.java:321)
at com.netscape.server.ejb.SQLPersistenceManager.<init>(Unknown
Source)
at
com.netscape.server.ejb.SQLPersistenceManagerFactory.newInstance(Unknown
Source)
at
com.netscape.server.ejb.EntityDelegateManagerImpl.getPersistenceManager(Unkn
own Source
at
com.netscape.server.ejb.EntityDelegateManagerImpl.doPersistentFind(Unknown
Source)
at com.netscape.server.ejb.EntityDelegateManagerImpl.find(Unknown
Source)
at com.kivasoft.eb.EBHomeBase.findSingleByParms(Unknown Source)
at
samples.test.ejb.Entity.ejb_home_samples_test_ejb_Entity_TestEntityBean.find
ByPrimaryK
ejb_home_samples_test_ejb_Entity_TestEntityBean.java:126)
at
samples.test.ejb.Entity.ejb_kcp_skel_TestEntityHome.findByPrimaryKey__sample
s_test_ejb
tity_TestEntity__int(ejb_kcp_skel_TestEntityHome.java:266)
at com.kivasoft.ebfp.FPRequest.invokenative(Native Method)
at com.kivasoft.ebfp.FPRequest.invoke(Unknown Source)
at
samples.test.ejb.Entity.ejb_kcp_stub_TestEntityHome.findByPrimaryKey(ejb_kcp
stubTest
ityHome.java:338)
at
samples.test.ejb.Entity.ejb_stub_TestEntityHome.findByPrimaryKey(ejb_stub_Te
stEntityHo
java:85)
at samples.test.ejb.TestEJB.getGreeting(TestEJB.java:51)
at java.lang.reflect.Method.invoke(Native Method)
at
samples.test.ejb.ejb_skel_samples_test_ejb_TestEJB.getGreeting(ejb_skel_samp
les_test_e
TestEJB.java:80)
at
samples.test.ejb.ejb_kcp_skel_Test.getGreeting__indir_wstring__indir_wstring
(ejb_kcp_s
_Test.java:220)
at com.kivasoft.ebfp.FPRequest.invokenative(Native Method)
at com.kivasoft.ebfp.FPRequest.invoke(Unknown Source)
at
samples.test.ejb.ejb_kcp_stub_Test.getGreeting(ejb_kcp_stub_Test.java:327)
at samples.test.ejb.ejb_stub_Test.getGreeting(ejb_stub_Test.java:71)
at samples.test.servlet.TestServlet.doGet(TestServlet.java:62)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:865)
at
com.netscape.server.servlet.servletrunner.ServletInfo.service(Unknown
Source)
at
com.netscape.server.servlet.servletrunner.ServletRunner.execute(Unknown
Source)
at com.kivasoft.applogic.AppLogic.execute(Unknown Source)
at com.kivasoft.applogic.AppLogic.execute(Unknown Source)
at com.kivasoft.thread.ThreadBasic.run(Native Method)
at java.lang.Thread.run(Thread.java:479)
Regards
Sandhya Seetharam -
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*** -
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!!!
-DanThe 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 -
RE: Accessing a CMP Entity Bean
Hi There,
I have written a couple of CMP entity beans. When I run the client application, I am getting a ORB minor code 257. The error message follows. My code works with both BMP entity beans and session beans. Can anyone help? Thanks in advance.
Aug 21, 2005 10:24:57 PM com.sun.corba.ee.impl.encoding.CDRInputStream_1_0 read_value
WARNING: "IOP00810257: (MARSHAL) Could not find class"
org.omg.CORBA.MARSHAL: vmcid: SUN minor code: 257 completed: Maybe
at com.sun.corba.ee.impl.logging.ORBUtilSystemException.couldNotFindClass(ORBUtilSystemException.java:7987)
at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.read_value(CDRInputStream_1_0.java:1013)
at com.sun.corba.ee.impl.encoding.CDRInputStream.read_value(CDRInputStream.java:259)
at com.sun.corba.ee.impl.io.IIOPInputStream.inputObjectField(IIOPInputStream.java:1989)
at com.sun.corba.ee.impl.io.IIOPInputStream.inputClassFields(IIOPInputStream.java:2213)
at com.sun.corba.ee.impl.io.IIOPInputStream.inputObject(IIOPInputStream.java:1221)
at com.sun.corba.ee.impl.io.IIOPInputStream.simpleReadObject(IIOPInputStream.java:400)
at com.sun.corba.ee.impl.io.ValueHandlerImpl.readValueInternal(ValueHandlerImpl.java:330)
at com.sun.corba.ee.impl.io.ValueHandlerImpl.readValue(ValueHandlerImpl.java:296)
at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.read_value(CDRInputStream_1_0.java:1034)
at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.read_value(CDRInputStream_1_0.java:879)
at com.sun.corba.ee.impl.encoding.CDRInputStream.read_value(CDRInputStream.java:255)
at com.sun.corba.ee.spi.servicecontext.UEInfoServiceContext.<init>(UEInfoServiceContext.java:30)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:494)
at com.sun.corba.ee.spi.servicecontext.ServiceContextData.makeServiceContext(ServiceContextData.java:114)
at com.sun.corba.ee.spi.servicecontext.ServiceContexts.unmarshal(ServiceContexts.java:195)
at com.sun.corba.ee.spi.servicecontext.ServiceContexts.get(ServiceContexts.java:365)
at com.sun.corba.ee.spi.servicecontext.ServiceContexts.get(ServiceContexts.java:353)
at com.sun.corba.ee.impl.protocol.CorbaClientRequestDispatcherImpl.processResponse(CorbaClientRequestDispatcherImpl.java:470)
at com.sun.corba.ee.impl.protocol.CorbaClientRequestDispatcherImpl.marshalingComplete(CorbaClientRequestDispatcherImpl.java:327)
at com.sun.corba.ee.impl.protocol.CorbaClientDelegateImpl.invoke(CorbaClientDelegateImpl.java:158)
at com.sun.corba.ee.impl.presentation.rmi.StubInvocationHandlerImpl.invoke(StubInvocationHandlerImpl.java:129)
at com.sun.corba.ee.impl.presentation.rmi.bcel.BCELStubBase.invoke(Unknown Source)
at ctaejb.entitybean.order._IOrderHome_DynamicStub.findByPrimaryKey(_IOrderHome_DynamicStub.java)
at mainapp.CTestApplication.main(CTestApplication.java:32)
Caused by: java.lang.ClassNotFoundException
... 27 more
org.omg.CORBA.UNKNOWN: vmcid: 0x0 minor code: 0 completed: Maybe
at com.sun.corba.ee.spi.servicecontext.UEInfoServiceContext.<init>(UEInfoServiceContext.java:34)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:494)
at com.sun.corba.ee.spi.servicecontext.ServiceContextData.makeServiceContext(ServiceContextData.java:114)
at com.sun.corba.ee.spi.servicecontext.ServiceContexts.unmarshal(ServiceContexts.java:195)
at com.sun.corba.ee.spi.servicecontext.ServiceContexts.get(ServiceContexts.java:365)
at com.sun.corba.ee.spi.servicecontext.ServiceContexts.get(ServiceContexts.java:353)
at com.sun.corba.ee.impl.protocol.CorbaClientRequestDispatcherImpl.processResponse(CorbaClientRequestDispatcherImpl.java:470)
at com.sun.corba.ee.impl.protocol.CorbaClientRequestDispatcherImpl.marshalingComplete(CorbaClientRequestDispatcherImpl.java:327)
at com.sun.corba.ee.impl.protocol.CorbaClientDelegateImpl.invoke(CorbaClientDelegateImpl.java:158)
at com.sun.corba.ee.impl.presentation.rmi.StubInvocationHandlerImpl.invoke(StubInvocationHandlerImpl.java:129)
at com.sun.corba.ee.impl.presentation.rmi.bcel.BCELStubBase.invoke(Unknown Source)
at ctaejb.entitybean.order._IOrderHome_DynamicStub.findByPrimaryKey(_IOrderHome_DynamicStub.java)
at mainapp.CTestApplication.main(CTestApplication.java:32)This is probably not the best forum to get an answer. Try this one instead:
http://forum.java.sun.com/forum.jspa?forumID=13
Its difficult to know exactly the source of your problem. If your code works for session beans and Entity beans using BMP then I can only think of the following:
In a CMP Bean, the ejbLoad and ejbStore methods do nothing. The container performs the load and store for you. I don't know whether leaving code in these methods will cause any problems though.
You will need to make a few changes to your ejbCreate method though. Suppose your ejbCreate method looks like this:
public PersonKey ejbCreate(String aFirstName, String aLastName) You still need to initialise the firstName and lastName fields in the bean.
firstName = aFirstName;
lastName = aLastName;Normally, the ejbCreate method returns the key value for the created object. Using CMP, you must return null. The container generates the new key value and returns it to the client.
Not sure if that will help. Post on the link above if not.
Simon -
Problems accessing tables in oracle database with ejb entity bean
I have created a simple server application that uses an entity bean (version 2.0) for an existing table in oracle database, and a session bean that is used as an outside interface for performing operations on that table.
after deploying the server and client application the client attempts to perform an operation with the session bean remote interface it obtained.
The session bean uses a locale interface to communicate with the entity bean, but when it tries to use its methods (create, findByXXX) it always get the following Exception: java.sql.SQLException: ORA-00942: table or view does not exist.
the table of course exists, and the username password I'm using has all the permissions needed for this table.
note - I'm using the Forte enterprise edition 4.0 as developer tool.
I'll be glad to get some help.
Here is the full stack trace of the exception:
javax.ejb.TransactionRolledbackLocalException: Exception thrown from bean; nested exception is: javax.ejb.EJBException: nested exception is: java.sql.SQLException: ORA-00942: table or view does not exist
javax.ejb.EJBException: nested exception is: java.sql.SQLException: ORA-00942: table or view does not exist
java.sql.SQLException: ORA-00942: table or view does not exist
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:168)
at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:208)
at oracle.jdbc.ttc7.Oall7.receive(Oall7.java:543)
at oracle.jdbc.ttc7.TTC7Protocol.doOall7(TTC7Protocol.java:1405)
at oracle.jdbc.ttc7.TTC7Protocol.parseExecuteDescribe(TTC7Protocol.java:643)
at oracle.jdbc.driver.OracleStatement.doExecuteQuery(OracleStatement.java:1674)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1870)
at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:363)
at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:314)
at com.sun.ejb.persistence.SQLEngine.ejb20Finder(SQLEngine.java:226)
at com.sun.ejb.persistence.PartitionImpl.ejbFinder(PartitionImpl.java:736)
at com.cti2.telco.core.ejb.entity.userInfo.UserInfoEJB_PM.ejbFindByEmail(UserInfoEJB_PM.java:393)
at com.cti2.telco.core.ejb.entity.userInfo.UserInfoEJB_PM_LocalHomeImpl.findByEmail(UserInfoEJB_PM_LocalHomeImpl.java:64)
at com.cti2.telco.core.ejb.UserManagerEJB.authenticate(UserManagerEJB.java:77)
at com.cti2.telco.core.ejb.UserManagerEJB.authenticate(UserManagerEJB.java:68)
at com.cti2.telco.core.ejb.UserManagerEJB_EJBLocalObjectImpl.authenticate(UserManagerEJB_EJB
LocalObjectImpl.java:63)
at com.cti2.telco.core.ejb.dispatch.TelcoFacadeEJB.userLogin(TelcoFacadeEJB.java:80)
at com.cti2.telco.core.ejb.dispatch.TelcoFacadeEJB_EJBObjectImpl.userLogin(TelcoFacadeEJB_EJBObjectImpl.java:24)
at com.cti2.telco.core.ejb.dispatch._TelcoFacadeEJB_EJBObjectImpl_Tie._invoke(Unknown Source)
at com.sun.corba.ee.internal.POA.GenericPOAServerSC.dispatchToServant(GenericPOAServerSC.java:519)
at com.sun.corba.ee.internal.POA.GenericPOAServerSC.internalDispatch(GenericPOAServerSC.java:204)
at com.sun.corba.ee.internal.POA.GenericPOAServerSC.dispatch(GenericPOAServerSC.java:112)
at com.sun.corba.ee.internal.iiop.ORB.process(ORB.java:273)
at com.sun.corba.ee.internal.iiop.RequestProcessor.process(RequestProcessor.java:84)
at com.sun.corba.ee.internal.orbutil.ThreadPool$PooledThread.run(ThreadPool.java:99)
...Well it seems like the problems has a simple explanation. The Forte assigns a default table name (<entityName>EJBTable) when creating an entity bean from an existsing table in DB (which is not the same as the one it was created from !!!). Also, for reason unknown, when you deploy these entity beans, it doesn't even create the new table under its new name (even if instructed to).
So using the Forte we managed to use successfuly only entity beans that were created "from scretch" (when deployed their tables are created).
Does anyone know how to change the default name the Forte uses, and make it work properly with entity beans created from an existsing table (without going over the xml's) ? -
JDBC issue when accessing an Entity Bean
Hi,
WLCS 3.1
WLS 5.1 sp6
Windows NT
Oracle 8.1.6
I am having problems with an Entity bean, I have originaly deployed and had it
running on cloudscape. I decided I need to deploy it to Oracle 8.1.6, on startup
of WLCS the bean was deployed to the connection pool correctly using Weblogic
JDriver.
The bit I cannot understand is when I try and do a FindByPrimaryKey on the Entity
Bean the following exception is thrown by oracle, which leads me to believe this
must be an Oracle/Jdbc problem.
Here you can see that the bean has been deployed on a valid connection pool.
Tue Sep 18 15:47:39 GMT+03:00 2001:<I> <EJB JAR deployment /export/home/mccann/tester2.jar>
EJB home interface: 'com.testerHome' deployed bound to the JNDI name
: 'tester'
Heres the exception raised when a findByPrimaryKey is invoked on the bean....
Tue Sep 18 15:47:57 GMT+03:00 2001:<I> <EJB JAR deployment /export/home/mccann/t
ester2.jar> Exception in non-transactional EJB invoke:
java.sql.SQLException: ORA-00942: table or view does not exist
at weblogic.db.oci.OciCursor.getCDAException(OciCursor.java:228)
at weblogic.jdbcbase.oci.Statement.executeUpdate(Statement.java:869)
at weblogic.jdbc.pool.PreparedStatement.executeUpdate(PreparedStatement.
java:65)
at com.testerEJBPSWebLogic_CMP_RDBMS.create(testerEJBPSWebLogic_CMP_RDBM
S.java:199)
at com.testerEJBPSWebLogic_CMP_RDBMS.create(testerEJBPSWebLogic_CMP_RDBM
S.java:162)
at weblogic.ejb.internal.EntityEJBContext.create(EntityEJBContext.java:1
18)
at weblogic.ejb.internal.StatefulEJBObject.postCreate(StatefulEJBObject.
java:268)
at com.testerEJBEOImpl.create(testerEJBEOImpl.java:61)
at com.testerEJBHomeImpl.create(testerEJBHomeImpl.java:32)
at com.testerEJBHomeImpl_WLSkel.invoke(testerEJBHomeImpl_WLSkel.java:68)
at weblogic.rmi.extensions.BasicServerObjectAdapter.invoke(BasicServerOb
jectAdapter.java:347)
at weblogic.rmi.extensions.BasicRequestHandler.handleRequest(BasicReques
tHandler.java:69)
at weblogic.rmi.internal.BasicExecuteRequest.execute(BasicExecuteRequest
.java:15)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:135)
Any help here would be great, this is annoying problem because the Entity bean
deploys fine and no issues are raised at startup time, so the table must of existed
and the structure must of been correct. But minutes after the server started I
ran my client which tried to invoke this bean with the above exception.
Thanks
Wayne.Hi Wayne,
I'd recommend you installing of latest SP for WL plus installing of Oracle
8.1.7 thing driver.
Regards,
Slava Imeshev
"Wayne Highland" <[email protected]> wrote in message
news:[email protected]...
>
Hi,
WLCS 3.1
WLS 5.1 sp6
Windows NT
Oracle 8.1.6
I am having problems with an Entity bean, I have originaly deployed andhad it
running on cloudscape. I decided I need to deploy it to Oracle 8.1.6, onstartup
of WLCS the bean was deployed to the connection pool correctly usingWeblogic
JDriver.
The bit I cannot understand is when I try and do a FindByPrimaryKey on theEntity
Bean the following exception is thrown by oracle, which leads me tobelieve this
must be an Oracle/Jdbc problem.
Here you can see that the bean has been deployed on a valid connectionpool.
>
Tue Sep 18 15:47:39 GMT+03:00 2001:<I> <EJB JAR deployment/export/home/mccann/tester2.jar>
EJB home interface: 'com.testerHome' deployed bound to the JNDI name
: 'tester'
Heres the exception raised when a findByPrimaryKey is invoked on thebean....
>
Tue Sep 18 15:47:57 GMT+03:00 2001:<I> <EJB JAR deployment/export/home/mccann/t
ester2.jar> Exception in non-transactional EJB invoke:
java.sql.SQLException: ORA-00942: table or view does not exist
at weblogic.db.oci.OciCursor.getCDAException(OciCursor.java:228)
atweblogic.jdbcbase.oci.Statement.executeUpdate(Statement.java:869)
atweblogic.jdbc.pool.PreparedStatement.executeUpdate(PreparedStatement.
java:65)
atcom.testerEJBPSWebLogic_CMP_RDBMS.create(testerEJBPSWebLogic_CMP_RDBM
S.java:199)
atcom.testerEJBPSWebLogic_CMP_RDBMS.create(testerEJBPSWebLogic_CMP_RDBM
S.java:162)
atweblogic.ejb.internal.EntityEJBContext.create(EntityEJBContext.java:1
18)
atweblogic.ejb.internal.StatefulEJBObject.postCreate(StatefulEJBObject.
java:268)
at com.testerEJBEOImpl.create(testerEJBEOImpl.java:61)
at com.testerEJBHomeImpl.create(testerEJBHomeImpl.java:32)
atcom.testerEJBHomeImpl_WLSkel.invoke(testerEJBHomeImpl_WLSkel.java:68)
atweblogic.rmi.extensions.BasicServerObjectAdapter.invoke(BasicServerOb
jectAdapter.java:347)
atweblogic.rmi.extensions.BasicRequestHandler.handleRequest(BasicReques
tHandler.java:69)
atweblogic.rmi.internal.BasicExecuteRequest.execute(BasicExecuteRequest
java:15)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:135)
Any help here would be great, this is annoying problem because the Entitybean
deploys fine and no issues are raised at startup time, so the table mustof existed
and the structure must of been correct. But minutes after the serverstarted I
ran my client which tried to invoke this bean with the above exception.
Thanks
Wayne.
Maybe you are looking for
-
Making a Digital Signature Form
Hi, I am brand new to this forum, and thought that I would give it a try. i am running Abobe Acrobat Pro 9.0. I have been tasked with making a document that is Digital Signature ready. In other works, I need to figure out how to make
-
An error occurred while ready from devices
I am using windows vista and trying to sync up to my pc. When I try to sync up, I get the message that an error occurred while reading from device and an error occurred while writing to the device. I have two iPods. One iPod had a restore done to it.
-
Is it possible to add a caption on each photo of my album ? Thank u
Hello, Is it possible to add a caption on each photo of my album Iphoto ? Thank you for your help.
-
Flash with full path link does not work, does anyone know how?
Hey guys do not think many people now needed it, but to kill me and I can not. I need the following: Place a swf with the full path of another server. Until then beauty is only put http://www.outrodominio.com.br/flash/arquivo.swf right? to ai beauty,
-
Blackberry data transfer?????
Doe anyone know what this is and how to get rid of it? Thanks This message is used to carry data between the BlackBerry handheld and an associated server. Please do not delete, move or respond to this message - it will be processed by the server. BE