[Persistence] - Re: how to create PersistenceUnit and map to dataSource prog
by javatwo
Thanks for help.
If one peristence unit is mapped to many data sources(with same tables), is there any problems with Hibernate caching?
We tried the following in a stateless session bean:
Map configOverrides = new HashMap();
EntityManagerFacotry emf = Persistence.createEntityManagerFactory("unit1", configOverrides);
But got exception:
javax.persistence.PersistenceException: [PersistenceUnit: unit1] Unable to build EntityManagerFactory
<persistence-unit name="unit1">
| <jta-data-source>java:/dataSource1</jta-data-source>
|
| <properties>
| <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/>
| <property name="hibernate.hbm2ddl.auto" value="update"/>
| <property name="hibernate.show_sql" value="false"/>
| </properties>
| </persistence-unit>
But the following works.
@PersistenceContext (unitName="unit1")
| protected EntityManager em;
What is the right way to create entityManagerFactory? Thanks!
Dave
View the original post : http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4266927#4266927
Reply to the post : http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=4266927
14 years, 11 months
[JBoss Microcontainer Users] - Re: How to get DeploymentUnit?
by alesj
"Juergen.Zimmermann" wrote :
| So my 1st problem is: how to get the jndi name when the interface of an EJB is available?
|
Dunno, this is EJB question not MC. ;-)
Either ask on their forum or check Weld-int
where, afair, something similar had to be implemented.
"Juergen.Zimmermann" wrote :
|
| | DeploymentUnit du = ???; // How to get DeploymentUnit? Via ClassLoader?
| |
|
| ClassLoader cl = clazz.getClassLoader();
| Module module = ClassLoading.getModuleForClassLoader(cl);
| if (module instanceof AbstractDeploymentClassLoaderPolicyModule)
| {
| AbstractDeploymentClassLoaderPolicyModule deploymentModule = (AbstractDeploymentClassLoaderPolicyModule)module;
| DeploymentUnit unit = deploymentModule.getDeploymentUnit();
|
This way you get the deployment unit owning the classloader/module,
but to actually get the right deployment unit you would need to check the whole hierarchy of this unit.
e.g.
get class's source location, and check it against unit's and sub-units classpath roots.
View the original post : http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4266915#4266915
Reply to the post : http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=4266915
14 years, 11 months
[JBoss Microcontainer Users] - Re: How to get DeploymentUnit?
by Juergen.Zimmermann
I've to implement a class as follows:
| import java.lang.reflect.Type;
| import javax.ejb.EJB;
| import javax.naming.Context;
| import javax.naming.InitialContext;
| import javax.naming.NamingException;
| import javax.ws.rs.ext.Provider;
| import com.sun.jersey.core.spi.component.ComponentContext;
| import com.sun.jersey.spi.inject.Injectable;
| import com.sun.jersey.spi.inject.InjectableProvider;
|
| @Provider
| public class EJBProvider implements InjectableProvider<EJB, Type> {
| public Injectable<Object> getInjectable(ComponentContext componentCtx,
| EJB ejbAnnotation,
| Type type) {
| if (!(type instanceof Class<?>))
| return null;
|
| Class<?> clazz = (Class<?>) type;
|
| String beanInterface = ejbAnnotation.beanInterface().getName();
| if (Object.class.getName().equals(beanInterface)) {
| beanInterface = clazz.getName();
| }
|
| String jndiName = ???; // get jndi name via beanInterface
|
| Context ctx = null;
| try {
| ctx = new InitialContext();
| Object obj = ctx.lookup(jndiName);
|
| return new Injectable<Object>() {
| public Object getValue() {
| return obj;
| }
| };
| }
| catch (NamingException e) { /* error handling */ }
| finally { /* close ctx */ }
| }
| }
So my 1st problem is: how to get the jndi name when the interface of an EJB is available?
I was trying the following where I only would need the DeploymentUnit object. Perhaps there are alternatives. Any hint is highly appreciated!
//import org.jboss.deployers.structure.spi.DeploymentUnit;
| //import org.jboss.ejb3.common.resolvers.plugins.FirstMatchEjbReferenceResolver;
| //import org.jboss.ejb3.common.resolvers.spi.EjbReference;
| //import org.jboss.ejb3.common.resolvers.spi.EjbReferenceResolver;
|
| EjbReference ref = new EjbReference(ejbAnnotation.beanName(),
| beanInterface,
| ejbAnnotation.mappedName());
| EjbReferenceResolver resolver = new FirstMatchEjbReferenceResolver();
|
| DeploymentUnit du = ???; // How to get DeploymentUnit? Via ClassLoader?
|
| String jndiName = resolver.resolveEjb(du, ref);
|
View the original post : http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4266911#4266911
Reply to the post : http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=4266911
14 years, 11 months