[jboss-user] [Persistence, JBoss/CMP, Hibernate, Database] - Ejb3Configuration => creating em and emf
olvin
do-not-reply at jboss.com
Mon Oct 15 10:30:41 EDT 2007
Hello,
I don't want to use anymore the persistence.xml file because the use of jar-file doesn't work (with relative path) if I have the entities on another jar-file in the same ear.
So I'm trying to create my own entityManagerFactory and entityManager to inject them into JNDI.
So the code is above.
But I have still this warning and no SQL Query works ! :
"WARN [AbstractEntityManagerImpl] Calling joinTransaction() on a non JTA EntityManager"
So, how can I force the transaction-type to JTA ??? Or another solution ?
Thanks,
Olv
| public boolean addEMToJNDI(String datasourceName)
| {
| try
| {
| //DataSource ds = (DataSource) JndiContext.lookup(datasourceName);
| Ejb3Configuration ejbconf = new Ejb3Configuration();
| //ejbconf.setDataSource(ds);
| ejbconf.setProperty("hibernate.session_factory_name", "persistence.units:ear=sts-sal.ear,unitName=PU-SQLBase-SAL57094");
| ejbconf.setProperty("hibernate.connection.datasource", datasourceName);
| ejbconf.setProperty("hibernate.connection.driver_class", "jdbc.gupta.sqlbase.SqlbaseDriver");
| ejbconf.setProperty("hibernate.transaction.factory_class", "org.hibernate.ejb.transaction.JoinableCMTTransactionFactory");
| ejbconf.setProperty("hibernate.transaction.manager_lookup_class", "org.hibernate.transaction.JBossTransactionManagerLookup");
| ejbconf.setProperty("hibernate.query.jpaql_strict_compliance", "true");
| ejbconf.setProperty("hibernate.cache.provider_class", "org.hibernate.cache.HashtableCacheProvider");
| ejbconf.setProperty("hibernate.dialect", "stesud.hibernate.dialect.SQLBaseDialect");
| ejbconf.setProperty("hibernate.show_sql", "false");
| ejbconf.setProperty("hibernate.hbm2ddl.auto", "none");
| //ejbconf.setProperty("hibernate.ejb.naming_strategy", "com.fcl.greenfield.naming.FCLNamingStrategy");
| // Find all our persistent classes from ".jar"
| JarVisitor.Filter[] filters = new JarVisitor.Filter[2];
| filters[0] = new JarVisitor.PackageFilter(false, null)
| {
|
| public boolean accept(String javaElementName)
| {
| return true;
| }
| };
| filters[1] = new JarVisitor.ClassFilter(false, new Class[]{Entity.class, MappedSuperclass.class, Embeddable.class})
| {
|
| public boolean accept(String javaElementName)
| {
| return true;
| }
| };
|
| // Add all persistent classes to EJB3 config
| JarVisitor j = JarVisitor.getVisitor(Thread.currentThread().getContextClassLoader().getResource("sts-sal-common.jar"), filters);
| @SuppressWarnings(value = "unchecked")
| Set<JarVisitor.Entry>[] entries = (Set<JarVisitor.Entry>[]) j.getMatchingEntries();
| List<String> classes = new ArrayList<String>();
| for (int i = 0; i < entries.length; i++)
| {
| for (JarVisitor.Entry c : entries)
| {
| CalcLogger.getLogger().info("Found entity " + c.getName());
| ejbconf.addAnnotatedClass(Class.forName(c.getName()));
| }
| }
| CalcLogger.getLogger().debug("Building SessionFactory => em");
| EntityManagerFactory emf = ejbconf.buildEntityManagerFactory();
| ManagedEntityManagerFactory memf = new ManagedEntityManagerFactory(emf, "test");
| InjectedEntityManagerFactory iemf = new InjectedEntityManagerFactory(memf);
| EntityManager em = iemf.createEntityManager();
| CalcLogger.getLogger().debug("Adding EntityManagers and EntityManagerFactories to JNDI");
| JndiContext.addToJndi(GlobalConstants.PU_FACTORY_HEAD_JNDI_NAME.concat("/").concat(datasourceName.substring(datasourceName.length() - 8)), iemf);
| JndiContext.addToJndi(GlobalConstants.PU_HEAD_JNDI_NAME.concat("/").concat(datasourceName.substring(datasourceName.length() - 8)), em);
| CalcLogger.getLogger().info("EntityManagers and EntityManagerFactories added to JNDI");
| return true;
| }
| catch (ClassNotFoundException ex)
| {
| CalcLogger.getLogger().log(TraceLevel.ERROR, null, ex);
| return false;
| }
| catch (IOException ex)
| {
| CalcLogger.getLogger().log(TraceLevel.ERROR, null, ex);
| return false;
| }
| catch (Exception ex)
| {
| CalcLogger.getLogger().log(TraceLevel.ERROR, null, ex);
| return false;
| }
| }
|
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4095273#4095273
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4095273
More information about the jboss-user
mailing list