[
http://jira.jboss.com/jira/browse/JBSEAM-456?page=all ]
Guy Veraghtert reopened JBSEAM-456:
-----------------------------------
You are completely right, we will file a bug report to the GlassFish-team.
Thx for the workaround, however, the workaround contains a bug on GlassFish, well, in
fact, the EJB-class does:
In org.jboss.seam.util.EJB the EJBContext is looked up using name:
java:comp.ejb3/EJBContext. This works fine on JBoss, but not on GlassFish (resulting in a
NameNotFoundException). The EJB-spec states (section 16.15, p.451) :
"The container must make a component's EJBContext interface available either
through injection
using the Resource annotation or in JNDI under the name java:comp/EJBContext. "
Patched locally this way in class org.jboss.seam.util.EJB:
public static final String STANDARD_EJBCONTEXT_NAME =
"java:comp/EJBContext";
public static EJBContext getEJBContext() throws NamingException
{
try
{
return (EJBContext) Naming.getInitialContext().lookup(STANDARD_EJBCONTEXT_NAME);
}
catch (NameNotFoundException nnfe)
{
return (EJBContext) Naming.getInitialContext().lookup(EJBCONTEXT_NAME);
}
}
Interceptor tries to access UserTransaction interface, but this is
not allowed for CMT
--------------------------------------------------------------------------------------
Key: JBSEAM-456
URL:
http://jira.jboss.com/jira/browse/JBSEAM-456
Project: JBoss Seam
Issue Type: Bug
Components: Core
Affects Versions: 1.1.0.BETA1
Environment: Glassfish
Reporter: Guy Veraghtert
Assigned To: Gavin King
Priority: Critical
Fix For: 1.1.0.BETA2
In method getEntityManager() in class ManagedPersistenceContext a call is made to the
UserTransaction interface: getStatus(). According to the EJB 3.0 specification (p.81) this
is not allowed for CMT. Seam requires the usage of CMT.
(Occurs when adding @In to an entityManager-field, according to seam doc 11.4).
Patched locally in class ManagedPersistenceContext :
@Unwrap
public EntityManager getEntityManager() throws NamingException, SystemException
{
if ( !Lifecycle.isDestroying() /*&& Transactions.isTransactionActive()*/ )
{
try
{
entityManager.joinTransaction();
} catch (TransactionRequiredException e) {
}
}
return entityManager;
}
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira