This week's book giveaway is in the Kotlin forum.
We're giving away four copies of Kotlin for Android App Development and have Peter Sommerhoff on-line!
See this thread for details.
Win a copy of Kotlin for Android App Development this week in the Kotlin forum!
  • Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Campbell Ritchie
  • Liutauras Vilda
  • Devaka Cooray
  • Jeanne Boyarsky
  • Bear Bibeault
Sheriffs:
  • Junilu Lacar
  • Paul Clapham
  • Knute Snortum
Saloon Keepers:
  • Ron McLeod
  • Tim Moores
  • Stephan van Hulst
  • salvin francis
  • Carey Brown
Bartenders:
  • Tim Holloway
  • Frits Walraven
  • Ganesh Patekar

Container Error in FindBy methods in JBoss  RSS feed

 
Ranch Hand
Posts: 162
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hi
I have an error in an entity bean that i have deployed on JBoss 2.4.4. I have implemented a findByName method in my BMP entity Bean. In the method which takes a non pk string field and checks the database ( successfully ) for entries and creates a Enumeration of primary key classes.
When the client calls this method it gets back an enumeration containing bean types but each of the fields in the bean type are null.
from my debugging code i discivered that, as expected, the PK constructor is called then the beans ejbLoad method is called. Although the id pk field is set in the PrimaryKey class this does not filter through to the bean and consequently the select in load cannot find the entry. This seems to me as if the container is not setting the id field in the bean.
As you can see from my deployment file i have set the PK class.
<entity>
<description>UserImpl</description>
<ejb-name>UserImpl</ejb-name>
<home>com.users.EJB.UserHome</home>
<remote>com.users.EJB.User</remote>
<ejb-class>com.users.EJB.UserImpl</ejb-class>
<reentrant>false</reentrant>
<persistence-type>Bean</persistence-type>
<prim-key-class>com.users.EJB.UserPK</prim-key-class>
<prim-key-field>id</prim-key-field>

<resource-ref>
<description>Datasource for the Database</description>
<res-ref-name>java:/OracleDB</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>

</entity>
Both the pk and the bean class have a field id which is public. The PK class constructor takes an integer in and sets the id with it.
can anybody please offer me any suggestions as to why i cannot get this method to work. any help would be appreciated.
David
 
Greenhorn
Posts: 23
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
in ejbLoad and ejbRemove you need to get the Primarykey instance from EntityContext only!
Check if you are trying to use your local class variable holding the primary key instance.
public void ejbLoad()
{
PKClass pk = e_ctx.getPrimaryKey();
}
 
seshu kumar
Greenhorn
Posts: 23
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
in ejbLoad and ejbRemove you need to get the Primarykey instance from EntityContext only!
Check if you are trying to use your local class variable holding the primary key instance.
public void ejbLoad()
{
PKClass pk = e_ctx.getPrimaryKey();
//Then use the pk to load the
//entity from database
//.......
}
 
David Rocks
Ranch Hand
Posts: 162
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
cheers seshu. i now have a slight problem with bean locking in my activate method. on this line
id = new Integer( (String)context.getPrimaryKey() ).intValue() ;
i get an exception, see below. i don't know how i could have locked the bean, container transaction probably. i would think it is a depoyment config thing but i am not to sure. has anybody seen this and know how to fix it?
thanks for any help.
[INFO,Default] UserEntityBean::ejbActivate()
[ERROR,UserImpl] TRANSACTION ROLLBACK EXCEPTION:
javax.transaction.TransactionRolledbackException: removing bean lock and it has tx set!; nested exception is:
java.lang.IllegalStateException: removing bean lock and it has tx set!
java.lang.IllegalStateException: removing bean lock and it has tx set!
at org.jboss.ejb.plugins.lock.QueuedPessimisticEJBLock.removeRef(QueuedPessimisticEJBLock.java:441)
at org.jboss.ejb.BeanLockManager.removeLockRef(BeanLockManager.java:78)
at org.jboss.ejb.plugins.EntityLockInterceptor.invoke(EntityLockInterceptor.java:142)
at org.jboss.ejb.plugins.TxInterceptorCMT.invokeNext(TxInterceptorCMT.java:138)
at org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxInterceptorCMT.java:602)
at org.jboss.ejb.plugins.TxInterceptorCMT.invoke(TxInterceptorCMT.java:100)
at org.jboss.ejb.plugins.SecurityInterceptor.invoke(SecurityInterceptor.java:127)
at org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:170)
at org.jboss.ejb.EntityContainer.invoke(EntityContainer.java:428)
at org.jboss.ejb.plugins.jrmp.server.JRMPContainerInvoker.invoke(JRMPContainerInvoker.java:504)
at org.jboss.ejb.plugins.jrmp.interfaces.GenericProxy.invokeContainer(GenericProxy.java:335)
at org.jboss.ejb.plugins.jrmp.interfaces.EntityProxy.invoke(EntityProxy.java:133)
at $Proxy97.getId(Unknown Source)
at com.users.EJB.UserManagerSessionBean.isValidUser(UserManagerSessionBean.java:81)
at java.lang.reflect.Method.invoke(Native Method)
at org.jboss.ejb.StatelessSessionContainer$ContainerInterceptor.invoke(StatelessSessionContainer.java:542)
at org.jboss.ejb.plugins.StatelessSessionInstanceInterceptor.invoke(StatelessSessionInstanceInterceptor.java:82)
[ June 20, 2002: Message edited by: David Raid ]
 
The only taste of success some people get is to take a bite out of you. Or this tiny ad:
Enterprise Java integration with Delphi and Free Pascal applications - new release 2019.02
https://coderanch.com/t/705708/Enterprise-Java-integration-Delphi-Free
  • Post Reply Bookmark Topic Watch Topic
  • New Topic
Boost this thread!