Hi,

I would like to know how to use existing ejb3 entity beans in seam as a seam 
component? Lets assume the following scenario:

I have a simple ejb3 package deployed in JBoss, which provides a persistent 
context (unitName = "openep") and a simple entity bean named User. Lets call 
this package PACKAGE_A.

The User entity in PACKAGE_A has no @Name and @Scope annotations, so it is not 
a seam component. For the User entity in PACKAGE_A I don't want to have any 
dependencies to seam. It is just a plain entity bean.

In a second package (PACKAGE_B), which is actually a seam application packaged 
as an ear, I want to use the existing entity bean from PACKAGE_A as a seam 
component. My application in PACKAGE_B is basically equivalent to the seam 
registration example except that I want to use my existing User entity from 
PACKAGE_A.

My naive approach to make this existing User entity a seam component was to 
create a SeamUser class, which extends the existing User entity from PACKAGE_A.


  | @Name("user")
  | @Scope(SESSION)
  | public class SeamUser extends User {
  | 
  |     private static final long serialVersionUID = -6805341268455291354L;
  | 
  | }
  | 

My registration action in PACKAGE_B looks like this:


  | @Stateless
  | @Name("register")
  | public class RegisterAction implements Register {
  | 
  |     @In
  |     @Valid
  |     private SeamUser user;
  | 
  |     @PersistenceContext(unitName = "openep")
  |     private EntityManager em;
  | 
  |     @IfInvalid(outcome = Outcome.REDISPLAY)
  |     public String register() {
  |         em.persist(user);
  |         return "success";
  |     }
  | 
  | }
  | 

The deployment of PACKAGE_B works but when I try to register a new user I will 
get a


  |   javax.ejb.EJBException: java.lang.IllegalArgumentException: Unknown 
entity: com.openep.registration.SeamUser
  | 

exception when calling em.persist(user). I tried to cast SeamUser to User but 
this leads to the same exception.


  | ...
  | em.persist((User)user);
  | ...
  | 

The following code works and does exacly what I want, but I like to know if 
there is a more elegant way to do it?


  | @Stateless
  | @Name("register")
  | public class RegisterAction implements Register {
  | 
  |     @In
  |     @Valid
  |     private SeamUser user;
  | 
  |     @PersistenceContext(unitName = "openep")
  |     private EntityManager em;
  | 
  |     @IfInvalid(outcome = Outcome.REDISPLAY)
  |     public String register() {
  |         User myUser = new User(user.getUsername(), user.getPassword());
  |         em.persist(myUser);
  |         return "success";
  |     }
  | 
  | }
  | 

I hope that someone can give me a hint.

Best regards, René

View the original post : 
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3942853#3942853

Reply to the post : 
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3942853


-------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid0709&bid&3057&dat1642
_______________________________________________
JBoss-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/jboss-user

Reply via email to