Hi.
I'm using JBoss-4.0.4RC1 with EJB-3.0_RC4-PFD.
It is not possible to get an EntityManagerFactory via JNDI lookup!
Here is the code inside my session bean:
// Create entity manager via entity manager factory
| EntityManagerFactory emf =
(EntityManagerFactory)getSessionContext().lookup("java:/EntityManagerFactory/"
+ unitName);
| EntityManager entityManager = emf.createEntityManager();
(I prefer this way, to get an EntityManager, to have the ability to define an
extended EntityManager for SFSBs.)
That's the corresponding persistence.xml:
<?xml version="1.0" encoding="UTF-8"?>
|
| <entity-manager>
| <!-- Entity Manager definition -->
| <persistence-unit name="LibraryDB1" transaction-type="JTA">
| <!-- Entity classes -->
| <jar-file>../library.jar</jar-file>
| <!-- Data source name -->
| <jta-data-source>java:/LibraryDB1</jta-data-source>
|
| <properties>
| <!-- JNDI entry to get the Entity Manager Factory via
lookup -->
| <property name="jboss.entity.manager.factory.jndi.name"
value="java:/EntityManagerFactory" />
|
| <property name="hibernate.dialect"
value="org.hibernate.dialect.PostgreSQLDialect" />
| <property name="hibernate.hbm2ddl.auto" value="update"
/>
| </properties>
| </persistence-unit>
| </entity-manager>
That's the logging of JBoss when deploying my JAR files (consider the
red-colored line):
10:45:22,564 INFO [Ejb3AnnotationHandler] found EJB3: ejbName=LibraryBean,
class=control.LibraryBean, type=STATELESS
| 10:45:22,564 INFO [Ejb3Deployment] EJB3 deployment time took: 32
| 10:45:22,579 INFO [JmxKernelAbstraction] installing MBean:
jboss.j2ee:service=EJB3,jar=library.jar,name=LibraryBean with dependencies:
| 10:45:22,735 INFO [EJB3Deployer] Deployed:
file:/D:/EnterpriseApplications/JBoss/4.0.4RC1/server/default/deploy/library.jar
| 10:45:22,782 INFO [TomcatDeployer] deploy, ctxPath=/library,
warUrl=.../tmp/deploy/tmp52626library-exp.war/
| 10:45:38,157 FATAL [PersistenceXmlLoader] LibraryDB1 JTA
| 10:45:38,157 INFO [Ejb3Deployment] EJB3 deployment time took: 0
| 10:45:38,173 INFO [JmxKernelAbstraction] installing MBean:
persistence.units:unitName=LibraryDB1 with dependencies:
| 10:45:38,173 INFO [JmxKernelAbstraction]
jboss.jca:name=LibraryDB1,service=DataSourceBinding
| 10:45:38,188 INFO [Ejb3Configuration] found EJB3 Entity bean:
business.Article
| 10:45:38,188 INFO [Ejb3Configuration] found EJB3 Entity bean:
business.Author
| 10:45:38,204 INFO [AnnotationBinder] Binding entity from annotated class:
business.Article
| 10:45:38,204 INFO [EntityBinder] Bind entity business.Article on table
ARTICLES
| 10:45:38,391 INFO [AnnotationBinder] Binding entity from annotated class:
business.Author
| 10:45:38,391 INFO [EntityBinder] Bind entity business.Author on table
AUTHORS
| 10:45:38,391 INFO [CollectionBinder] Mapping collection:
business.Author.articles -> ARTICLES
| 10:45:38,407 INFO [ConnectionProviderFactory] Initializing connection
provider: org.hibernate.ejb.connection.InjectedDataSourceConnectionProvider
| 10:45:38,423 INFO [InjectedDataSourceConnectionProvider] Using provided
datasource
| 10:45:38,423 INFO [SettingsFactory] RDBMS: PostgreSQL, version: 8.1.0
| 10:45:38,423 INFO [SettingsFactory] JDBC driver: PostgreSQL Native Driver,
version: PostgreSQL 8.1devel JDBC3 with SSL (build 403)
| 10:45:38,423 INFO [Dialect] Using dialect:
org.hibernate.dialect.PostgreSQLDialect
| 10:45:38,423 INFO [TransactionFactoryFactory] Using default transaction
strategy (direct JDBC transactions)
| 10:45:38,423 INFO [TransactionManagerLookupFactory] instantiating
TransactionManagerLookup:
org.hibernate.transaction.JBossTransactionManagerLookup
| 10:45:38,423 INFO [TransactionManagerLookupFactory] instantiated
TransactionManagerLookup
| 10:45:38,423 INFO [SettingsFactory] Automatic flush during
beforeCompletion(): enabled
| 10:45:38,423 INFO [SettingsFactory] Automatic session close at end of
transaction: disabled
| 10:45:38,423 INFO [SettingsFactory] JDBC batch size: 15
| 10:45:38,423 INFO [SettingsFactory] JDBC batch updates for versioned data:
disabled
| 10:45:38,423 INFO [SettingsFactory] Scrollable result sets: enabled
| 10:45:38,423 INFO [SettingsFactory] JDBC3 getGeneratedKeys(): disabled
| 10:45:38,423 INFO [SettingsFactory] Connection release mode:
after_statement
| 10:45:38,423 INFO [SettingsFactory] Default batch fetch size: 1
| 10:45:38,423 INFO [SettingsFactory] Generate SQL with comments: disabled
| 10:45:38,423 INFO [SettingsFactory] Order SQL updates by primary key:
disabled
| 10:45:38,423 INFO [SettingsFactory] Query translator:
org.hibernate.hql.ast.ASTQueryTranslatorFactory
| 10:45:38,423 INFO [ASTQueryTranslatorFactory] Using
ASTQueryTranslatorFactory
| 10:45:38,423 INFO [SettingsFactory] Query language substitutions: {}
| 10:45:38,423 INFO [SettingsFactory] Second-level cache: enabled
| 10:45:38,423 INFO [SettingsFactory] Query cache: disabled
| 10:45:38,423 INFO [SettingsFactory] Cache provider:
org.hibernate.cache.HashtableCacheProvider
| 10:45:38,423 INFO [SettingsFactory] Optimize cache for minimal puts:
disabled
| 10:45:38,423 INFO [SettingsFactory] Structured second-level cache entries:
disabled
| 10:45:38,423 INFO [SettingsFactory] Statistics: disabled
| 10:45:38,423 INFO [SettingsFactory] Deleted entity synthetic identifier
rollback: disabled
| 10:45:38,423 INFO [SettingsFactory] Default entity-mode: pojo
| 10:45:38,423 INFO [SessionFactoryImpl] building session factory
| 10:45:38,501 INFO [SessionFactoryObjectFactory] Not binding factory to
JNDI, no JNDI name configured
| 10:45:38,501 INFO [SchemaUpdate] Running hbm2ddl schema update
| 10:45:38,501 INFO [SchemaUpdate] fetching database metadata
| 10:45:38,501 INFO [SchemaUpdate] updating schema
| 10:45:38,563 INFO [TableMetadata] table found: public.articles
| 10:45:38,563 INFO [TableMetadata] columns: [title, articleid, authorid,
body]
| 10:45:38,563 INFO [TableMetadata] foreign keys: [fke566c23dd993b37f]
| 10:45:38,563 INFO [TableMetadata] indexes: [articles_pkey]
| 10:45:38,595 INFO [TableMetadata] table found: public.authors
| 10:45:38,595 INFO [TableMetadata] columns: [userid, authorid, name]
| 10:45:38,595 INFO [TableMetadata] foreign keys: []
| 10:45:38,595 INFO [TableMetadata] indexes: [authors_pkey]
| 10:45:38,595 INFO [SchemaUpdate] schema update complete
| 10:45:38,595 INFO [NamingHelper] JNDI InitialContext
properties:{java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory,
java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces}
| 10:45:38,595 INFO [EJB3Deployer] Deployed:
file:/D:/EnterpriseApplications/JBoss/4.0.4RC1/server/default/deploy/LibraryDB1.jar
The following error occurs when executing the session bean:
INFO [main] (Client.java:96) - Entering application:
| DEBUG [main] (SecurityAssociation.java:143) - Using ThreadLocal: false
| javax.ejb.EJBException: java.lang.NullPointerException
| at
org.jboss.ejb3.tx.Ejb3TxPolicy.handleExceptionInOurTx(Ejb3TxPolicy.java:69)
| at org.jboss.aspects.tx.TxPolicy.invokeInOurTx(TxPolicy.java:83)
| at
org.jboss.aspects.tx.TxInterceptor$Required.invoke(TxInterceptor.java:192)
| at
org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:98)
| at
org.jboss.aspects.tx.TxPropagationInterceptor.invoke(TxPropagationInterceptor.java:76)
| at
org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:98)
| at
org.jboss.ejb3.stateless.StatelessInstanceInterceptor.invoke(StatelessInstanceInterceptor.java:54)
| at
org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:98)
| at
org.jboss.aspects.security.AuthenticationInterceptor.invoke(AuthenticationInterceptor.java:78)
| at
org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:98)
| at
org.jboss.ejb3.ENCPropagationInterceptor.invoke(ENCPropagationInterceptor.java:47)
| at
org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:98)
| at
org.jboss.ejb3.asynchronous.AsynchronousInterceptor.invoke(AsynchronousInterceptor.java:106)
| at
org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:98)
| at
org.jboss.ejb3.stateless.StatelessContainer.dynamicInvoke(StatelessContainer.java:219)
| at org.jboss.aop.Dispatcher.invoke(Dispatcher.java:107)
| at
org.jboss.aspects.remoting.AOPRemotingInvocationHandler.invoke(AOPRemotingInvocationHandler.java:82)
| at org.jboss.remoting.ServerInvoker.invoke(ServerInvoker.java:580)
| at org.jboss.remoting.ServerInvoker.invoke(ServerInvoker.java:450)
| at
org.jboss.remoting.transport.socket.ServerThread.processInvocation(ServerThread.java:290)
| at
org.jboss.remoting.transport.socket.ServerThread.dorun(ServerThread.java:330)
| at
org.jboss.remoting.transport.socket.ServerThread.run(ServerThread.java:202)
| Caused by: java.lang.NullPointerException
| at control.LibraryBean.getEntityManager(LibraryBean.java:37)
| at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
| at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
| at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
| at java.lang.reflect.Method.invoke(Method.java:585)
| at
org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:109)
| at
org.jboss.ejb3.AllowedOperationsInterceptor.invoke(AllowedOperationsInterceptor.java:47)
| at
org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:98)
| at org.jboss.aspects.tx.TxPolicy.invokeInOurTx(TxPolicy.java:79)
| at
org.jboss.aspects.tx.TxInterceptor$Required.invoke(TxInterceptor.java:192)
| at
org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:98)
| at
org.jboss.aspects.tx.TxPropagationInterceptor.invoke(TxPropagationInterceptor.java:76)
| at
org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:98)
| at
org.jboss.ejb3.stateless.StatelessInstanceInterceptor.invoke(StatelessInstanceInterceptor.java:54)
| at
org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:98)
| at
org.jboss.aspects.security.AuthenticationInterceptor.invoke(AuthenticationInterceptor.java:78)
| at
org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:98)
| at
org.jboss.ejb3.ENCPropagationInterceptor.invoke(ENCPropagationInterceptor.java:47)
| at
org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:98)
| at
org.jboss.ejb3.asynchronous.AsynchronousInterceptor.invoke(AsynchronousInterceptor.java:106)
| at
org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:98)
| at
org.jboss.ejb3.stateless.StatelessContainer.dynamicInvoke(StatelessContainer.java:219)
| at org.jboss.aop.Dispatcher.invoke(Dispatcher.java:107)
| at
org.jboss.aspects.remoting.AOPRemotingInvocationHandler.invoke(AOPRemotingInvocationHandler.java:82)
| at org.jboss.remoting.ServerInvoker.invoke(ServerInvoker.java:580)
| at org.jboss.remoting.ServerInvoker.invoke(ServerInvoker.java:450)
| at
org.jboss.remoting.transport.socket.ServerThread.processInvocation(ServerThread.java:290)
| at
org.jboss.remoting.transport.socket.ServerThread.dorun(ServerThread.java:330)
| at
org.jboss.remoting.transport.socket.ServerThread.run(ServerThread.java:202)
| at
org.jboss.remoting.RemoteClientInvoker.invoke(RemoteClientInvoker.java:163)
| at org.jboss.remoting.Client.invoke(Client.java:258)
| at org.jboss.remoting.Client.invoke(Client.java:221)
| at
org.jboss.aspects.remoting.InvokeRemoteInterceptor.invoke(InvokeRemoteInterceptor.java:41)
| at
org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:88)
| at
org.jboss.aspects.tx.ClientTxPropagationInterceptor.invoke(ClientTxPropagationInterceptor.java:46)
| at
org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:88)
| at
org.jboss.aspects.security.SecurityClientInterceptor.invoke(SecurityClientInterceptor.java:40)
| at
org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:88)
| at
org.jboss.ejb3.remoting.IsLocalInterceptor.invoke(IsLocalInterceptor.java:65)
| at
org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:88)
| at
org.jboss.ejb3.stateless.StatelessRemoteProxy.invoke(StatelessRemoteProxy.java:102)
| at $Proxy0.getEntityManager(Unknown Source)
| at client.Client.createAuthors(Client.java:56)
| at client.Client.main(Client.java:101)DEBUG [main] (Client.java:247) -
invoke called, but our invoker is disconnected, discarding and fetching another
fresh invoker for: InvokerLocator [socket://129.103.124.235:3873/]
| DEBUG [main] (RemoteClientInvoker.java:248) - connect called for: [EMAIL
PROTECTED]
BTW: It is possible to get an EntityManager via injection:
@PersistenceContext(unitName="LibraryDB1") private EntityManager entityManager;
But that's not suitable for my application which must be able to dynamically
create databases!
Any ideas?
Holger
View the original post :
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3920363#3920363
Reply to the post :
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3920363
-------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc. Do you grep through log files
for problems? Stop! Download the new AJAX search engine that makes
searching your log files as easy as surfing the web. DOWNLOAD SPLUNK!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=103432&bid=230486&dat=121642
_______________________________________________
JBoss-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/jboss-user