]
Roland R?z commented on EJBTHREE-681:
-------------------------------------
This jacc initialisation error can occur also when using dependency injection over
different jar files.
A possible workaround is checking before each access if the context policy in not
committed and commit in this case the policy.
Ejb 3 Deployment separated into different jars that have persistence
dependencies cause a jacc initialisation error
-------------------------------------------------------------------------------------------------------------------
Key: EJBTHREE-681
URL:
http://jira.jboss.com/jira/browse/EJBTHREE-681
Project: EJB 3.0
Issue Type: Bug
Affects Versions: EJB 3.0 RC8 - FD
Reporter: Roland R?z
We separated the jboss trails deployment into two different jar's (persistence and
stateless session beans).
The ear (ejb3-trials-ear.ear) contains two jar modules (ejb3-trials-ejb.jar &
ejb3-trials-persistence.jar). The ejb3-trials-ejb.jar is deployed as fist module but it
has a dependency to the ejb3-trials-persistence.jar because it uses the EntityManager from
ejb3-trials-persistence.
Therefore the ejb container of ejb3-trials-ejb.jar is started after the
ejb3-trials-ejb.jar modules. This causes an error with the jacc initialisation. The policy
is committed before the ejb container could register is permissions. When the stateless
ejb containers add the permissions afterwards, the committed policy will be removed and
never committed again.
Because the ejb module commits the jacc policy, the ejb containers providing the
permissions must be stated before the module.
Here the steps:
Ejb3Deployment.registerEJBContainer()
object name :
jboss.j2ee:service=EJB3,ear=ejb3-trials-ear.ear,jar=ejb3-trials-ejb.jar,name=EntityCalculator
dependencies :
persistence.units:ear=ejb3-trials-ear.ear,unitName=ejb3-trials-persistence
Ejb3Module.startService()
service name : jboss.j2ee:service=EJB3,module=ejb3-trials-ejb.jar
- JACC contextID ejb3-trials-ejb.jar is commited
-> This is an error because it should be waited until ALL container of this module are
started
Ejb3Module.startService()
service name: jboss.j2ee:service=EJB3,module=ejb3-trials-persistence.jar
- dependencie from jar=ejb3-trials-ejb.jar to ejb3-trials-persistence.jar is
resolved and the stateless container is started
StatelessContainer.start()
ejb3-trials-ejb.jar
- JACC contextID ejb3-trials-ejb.jar
Adds stuff to the policy
Ejb3Module.startService()
service name: jboss.j2ee:service=EJB3,module=ejb3-trials-persistence.jar
08:36:44,308 INFO [org.jboss.deployment.EARDeployer] Init J2EE application:
file:/C:/eplatform/jboss/4.0/server/eplatform-development/deploy/ejb3-trials-ear.ear
08:36:44,428 WARN [org.jboss.deployment.MainDeployer] Found non-jar deployer for
ejb3-trials-persistence.jar: MBeanProxyExt[jboss.ejb3:service=EJB3Deployer]
08:36:44,438 WARN [org.jboss.deployment.MainDeployer] Found non-jar deployer for
ejb3-trials-persistence.jar: MBeanProxyExt[jboss.ejb3:service=EJB3Deployer]
08:36:44,599 INFO [org.jboss.ejb3.Ejb3Deployment] EJB3 deployment time took: 111
08:36:44,689 INFO [org.jboss.ejb3.Ejb3Deployment] EJB3 deployment time took: 50
08:36:44,759 INFO [org.jboss.deployment.ClientDeployer] Client ENC bound under:
ejb3-trials-client
08:36:44,789 INFO [org.jboss.ejb3.JmxKernelAbstraction] installing MBean:
jboss.j2ee:ear=ejb3-trials-ear.ear,jar=ejb3-trials-ejb.jar,name=EntityCalculator,service=EJB3
with dependencies:
08:36:44,789 INFO [org.jboss.ejb3.JmxKernelAbstraction]
persistence.units:ear=ejb3-trials-ear.ear,unitName=ejb3-trials-persistence
08:36:44,809 DEBUG
[com.winterthur.jackpot.security.jacc.JackpotPolicyConfiguration.ejb3-trials-ear.ear]
linkConfiguration, linkTo: ejb3-trials-ejb.jar
08:36:44,809 DEBUG
[com.winterthur.jackpot.security.jacc.JackpotPolicyConfiguration.ejb3-trials-ejb.jar]
commit
08:36:44,809 INFO [org.jboss.ejb3.EJB3Deployer] Deployed:
file:/C:/eplatform/jboss/4.0/server/eplatform-development/tmp/deploy/tmp11029ejb3-trials-ear.ear-contents/ejb3-trials-ejb.jar
08:36:44,819 INFO [org.jboss.ejb3.JmxKernelAbstraction] installing MBean:
persistence.units:ear=ejb3-trials-ear.ear,unitName=ejb3-trials-persistence with
dependencies:
08:36:44,819 INFO [org.jboss.ejb3.JmxKernelAbstraction]
jboss.jca:name=DefaultDS,service=ManagedConnectionFactory
08:36:44,849 INFO [org.hibernate.ejb.Ejb3Configuration] Processing PersistenceUnitInfo
[
name: ejb3-trials-persistence
...]
08:36:44,859 INFO [org.hibernate.ejb.Ejb3Configuration] found EJB3 Entity bean:
trail.entity.beans.Record
08:36:44,869 INFO [org.hibernate.ejb.Ejb3Configuration] found EJB3 Entity bean:
trail.entity.beans.TimedRecord
08:36:44,869 INFO [org.hibernate.ejb.Ejb3Configuration] found EJB3 Entity bean:
trail.entity.beans.Investor
08:36:44,869 INFO [org.hibernate.ejb.Ejb3Configuration] found EJB3 Entity bean:
trail.entity.beans.Fund
08:36:44,869 WARN [org.hibernate.ejb.Ejb3Configuration] Persistence provider caller does
not implements the EJB3 spec correctly. PersistenceUnitInfo.getNewTempClassLoader() is
null.
08:36:44,899 INFO [org.hibernate.cfg.Configuration] Reading mappings from resource:
META-INF/orm.xml
08:36:44,899 INFO [org.hibernate.ejb.Ejb3Configuration] [PersistenceUnit:
ejb3-trials-persistence] no META-INF/orm.xml found
08:36:44,919 INFO [org.hibernate.cfg.AnnotationBinder] Binding entity from annotated
class: trail.entity.beans.Record
08:36:44,919 INFO [org.hibernate.cfg.annotations.EntityBinder] Bind entity
trail.entity.beans.Record on table record
08:36:44,959 INFO [org.hibernate.cfg.AnnotationBinder] Binding entity from annotated
class: trail.entity.beans.TimedRecord
08:36:44,969 INFO [org.hibernate.cfg.AnnotationBinder] Binding entity from annotated
class: trail.entity.beans.Investor
08:36:44,969 INFO [org.hibernate.cfg.annotations.EntityBinder] Bind entity
trail.entity.beans.Investor on table investor
08:36:44,969 INFO [org.hibernate.cfg.AnnotationBinder] Binding entity from annotated
class: trail.entity.beans.Fund
08:36:44,979 INFO [org.hibernate.cfg.annotations.EntityBinder] Bind entity
trail.entity.beans.Fund on table FUND
08:36:45,089 INFO [org.hibernate.connection.ConnectionProviderFactory] Initializing
connection provider: org.hibernate.ejb.connection.InjectedDataSourceConnectionProvider
08:36:45,089 INFO [org.hibernate.ejb.connection.InjectedDataSourceConnectionProvider]
Using provided datasource
08:36:45,089 INFO [org.hibernate.cfg.SettingsFactory] RDBMS: DB2/SUN, version: SQL08022
08:36:45,089 INFO [org.hibernate.cfg.SettingsFactory] JDBC driver: IBM DB2 JDBC
Universal Driver Architecture, version: 2.8.46
08:36:45,089 INFO [org.hibernate.dialect.Dialect] Using dialect:
org.hibernate.dialect.FirebirdDialect
08:36:45,099 INFO [org.hibernate.transaction.TransactionFactoryFactory] Transaction
strategy: org.hibernate.ejb.transaction.JoinableCMTTransactionFactory
08:36:45,099 INFO [org.hibernate.transaction.TransactionManagerLookupFactory]
instantiating TransactionManagerLookup:
org.hibernate.transaction.JBossTransactionManagerLookup
08:36:45,099 INFO [org.hibernate.transaction.TransactionManagerLookupFactory]
instantiated TransactionManagerLookup
08:36:45,099 INFO [org.hibernate.cfg.SettingsFactory] Automatic flush during
beforeCompletion(): disabled
08:36:45,099 INFO [org.hibernate.cfg.SettingsFactory] Automatic session close at end of
transaction: disabled
08:36:45,099 INFO [org.hibernate.cfg.SettingsFactory] Scrollable result sets: enabled
08:36:45,099 INFO [org.hibernate.cfg.SettingsFactory] JDBC3 getGeneratedKeys():
disabled
08:36:45,099 INFO [org.hibernate.cfg.SettingsFactory] Connection release mode: auto
08:36:45,099 INFO [org.hibernate.cfg.SettingsFactory] Default batch fetch size: 1
08:36:45,099 INFO [org.hibernate.cfg.SettingsFactory] Generate SQL with comments:
disabled
08:36:45,099 INFO [org.hibernate.cfg.SettingsFactory] Order SQL updates by primary key:
disabled
08:36:45,099 INFO [org.hibernate.cfg.SettingsFactory] Query translator:
org.hibernate.hql.ast.ASTQueryTranslatorFactory
08:36:45,099 INFO [org.hibernate.hql.ast.ASTQueryTranslatorFactory] Using
ASTQueryTranslatorFactory
08:36:45,099 INFO [org.hibernate.cfg.SettingsFactory] Query language substitutions: {}
08:36:45,099 INFO [org.hibernate.cfg.SettingsFactory] Second-level cache: enabled
08:36:45,099 INFO [org.hibernate.cfg.SettingsFactory] Query cache: disabled
08:36:45,099 INFO [org.hibernate.cfg.SettingsFactory] Cache provider:
org.hibernate.cache.HashtableCacheProvider
08:36:45,099 INFO [org.hibernate.cfg.SettingsFactory] Optimize cache for minimal puts:
disabled
08:36:45,099 INFO [org.hibernate.cfg.SettingsFactory] Structured second-level cache
entries: disabled
08:36:45,099 INFO [org.hibernate.cfg.SettingsFactory] Statistics: disabled
08:36:45,099 INFO [org.hibernate.cfg.SettingsFactory] Deleted entity synthetic
identifier rollback: disabled
08:36:45,099 INFO [org.hibernate.cfg.SettingsFactory] Default entity-mode: pojo
08:36:45,119 INFO [org.hibernate.impl.SessionFactoryImpl] building session factory
08:36:45,229 INFO [org.hibernate.impl.SessionFactoryObjectFactory] Not binding factory
to JNDI, no JNDI name configured
08:36:45,240 INFO [org.hibernate.util.NamingHelper] JNDI InitialContext
properties:{java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory,
java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces}
08:36:45,280 DEBUG
[com.winterthur.jackpot.jboss.transport.Ejb3SubjectDelegationCheckInterceptor]
Ejb3SubjectDelegationCheckInterceptor is enabled.
08:36:45,530 DEBUG
[com.winterthur.jackpot.security.jacc.JackpotPolicyConfiguration.ejb3-trials-ejb.jar]
addToUncheckedPolicy, p=(javax.security.jacc.EJBMethodPermission EntityCalculator
getFunds,,)[*:getFunds()]
08:36:45,530 INFO [org.jboss.ejb3.EJBContainer] STARTED EJB:
trail.entity.basic.EntityCalculator ejbName: EntityCalculator
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: