Hi

I have not much experience with MDBs.

I need to use EntityManager in combination with a MDB. As I have seen here in 
forum an other user have used this in the same way as follow:

MDB
package de.oats.business.mdb;
  | 
  | import javax.annotation.Resource;
  | import javax.ejb.ActivationConfigProperty;
  | import javax.ejb.MessageDriven;
  | import javax.ejb.MessageDrivenContext;
  | import javax.jms.Message;
  | import javax.jms.MessageListener;
  | import javax.jms.ObjectMessage;
  | 
  | import org.jboss.annotation.ejb.PoolClass;
  | import org.jboss.seam.annotations.In;
  | 
  | 
  | @MessageDriven(name="QueryMessageBean", activationConfig = {
  |     @ActivationConfigProperty(propertyName="destinationType", 
propertyValue="javax.jms.Queue"),
  |     @ActivationConfigProperty(propertyName="destination", 
propertyValue="queue/oatsMessageQueue")
  | 
  | })
  | @PoolClass(value=org.jboss.ejb3.StrictMaxPool.class, maxSize=1)
  | public class QueryMessageBean implements MessageListener {
  | 
  |     @Resource
  |     private MessageDrivenContext context;
  |     @In(create=true)
  |     private UserQuery userquery;
  | 
  |     public void onMessage(Message message) {
  |             QueryTest name = null;
  |             
  |         try {
  |             if (message instanceof ObjectMessage) {
  |                 ObjectMessage objMessage = (ObjectMessage) message;
  |                 Object obj = objMessage.getObject();
  |                 if (obj instanceof QueryTest) {
  |                     name = (QueryTest) obj;
  |                     userquery.setSqlQuery(name.getSqlQuery());
  |                     userquery.query();
  |                  } else {
  |                     System.err.println("Expecting ProcessDTO in Message");
  |                 }
  |             } else {
  |                 System.err.println("Expecting Object Message");
  |             }
  |         } catch (Throwable t) {
  |             t.printStackTrace();
  |             context.setRollbackOnly();
  |         }
  |     }     
  | }
  | 
  | 

SLSB
package de.oats.business.mdb;
  | 
  | import java.io.Serializable;
  | import java.sql.Connection;
  | import java.sql.ResultSet;
  | import java.sql.Statement;
  | import java.util.Date;
  | 
  | import javax.ejb.Stateless;
  | import javax.persistence.EntityManager;
  | import javax.persistence.PersistenceContext;
  | 
  | import org.jboss.seam.annotations.In;
  | import org.jboss.seam.annotations.Name;
  | 
  | import de.oats.model.QueryResult;
  | 
  | @Stateless
  | @Name("userQuery")
  | public class UserQueryBean implements UserQuery{
  |     
  |     private String sqlQuery;
  |     
  |     private static Connection con = null;
  |     @PersistenceContext
  |     private EntityManager entityManager;
  |     
  |     public UserQueryBean() {
  |             super();
  |     }
  | 
  |     public String query(){
  |             ResultSet rs;
  |             Statement stmt;
  |             try {
  |                     con = MysqlCon.getConnection();
  |                     stmt = con.createStatement();
  |                     
  |                     rs = stmt.executeQuery(sqlQuery);
  |                     QueryResult qrslt = null;
  |                     while(rs.next()){
  |                             qrslt = new QueryResult();
  |                             qrslt.setAnzahl(rs.getLong("anzahl"));
  |                             qrslt.setY20gpnum(rs.getString("y20gpnum"));
  |                             qrslt.setLat(rs.getDouble("lat"));
  |                             qrslt.setLon(rs.getDouble("lon"));
  |                             
  |                             entityManager.persist(qrslt);
  |                     }
  |                     entityManager.flush();
  |             } catch (Exception e) {
  |                     // TODO Auto-generated catch block
  |                     e.printStackTrace();
  |             }
  |             return "5 seconds for " +kindOfQuery;
  |     }
  |     public void setSqlQuery(String sqlQuery) {
  |             this.sqlQuery = sqlQuery;
  |     }
  | 
  | }
  | 

But userquery is always null in spite of @In(create=true)

An other try was to put EntityManager in the ObjectMessage(UserTest) - here is 
null value on entityManager.

Use Seam 2.0 (seam generatet project) and jboss-4.2.1.GA

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

Reply to the post : 
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4103224
_______________________________________________
jboss-user mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/jboss-user

Reply via email to