You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by db...@apache.org on 2007/05/30 23:03:05 UTC
svn commit: r542932 - in
/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful:
StatefulContainer.java StatefulInstanceManager.java
Author: dblevins
Date: Wed May 30 14:03:04 2007
New Revision: 542932
URL: http://svn.apache.org/viewvc?view=rev&rev=542932
Log:
Remove/transaction restriction only applies to component interfaces, does not apply to business interface removes. See EJB 3.0 section 4.4.4
Do not associate the BeanEntry (i.e. bean instance) with a transaction during a create. See EJB 3.0 Figure 5
Modified:
incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulContainer.java
incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulInstanceManager.java
Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulContainer.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulContainer.java?view=diff&rev=542932&r1=542931&r2=542932
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulContainer.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulContainer.java Wed May 30 14:03:04 2007
@@ -65,7 +65,7 @@
private static final Logger logger = Logger.getInstance("OpenEJB", "org.apache.openejb.util.resources");
private final Object containerID;
- private final TransactionManager transactionManager;
+ private final TransactionManager transactionManager;
private final SecurityService securityService;
private final StatefulInstanceManager instanceManager;
// todo this should be part of the constructor
@@ -305,7 +305,8 @@
try {
checkAuthorization(deploymentInfo, callMethod, callInterface);
- if (instanceManager.getBeanTransaction(callContext) != null) {
+ InterfaceType type = deploymentInfo.getInterfaceType(callInterface);
+ if (type.isComponent() && instanceManager.getBeanTransaction(callContext) != null) {
throw new ApplicationException(new RemoveException("A stateful EJB enrolled in a transaction can not be removed"));
}
@@ -332,7 +333,6 @@
} catch(InvalidateReferenceException e){
throw e;
} catch(ApplicationException e){
- InterfaceType type = deploymentInfo.getInterfaceType(callInterface);
if (type.isBusiness()){
retain = deploymentInfo.retainIfExeption(runMethod);
throw e;
Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulInstanceManager.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulInstanceManager.java?view=diff&rev=542932&r1=542931&r2=542932
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulInstanceManager.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/stateful/StatefulInstanceManager.java Wed May 30 14:03:04 2007
@@ -382,10 +382,12 @@
}
if (entry.beanTransaction == null) {
- try {
- entry.beanTransaction = transactionManager.getTransaction();
- } catch (javax.transaction.SystemException se) {
- throw new SystemException("TransactionManager failure");
+ if (callContext.getCurrentOperation() != Operation.CREATE){
+ try {
+ entry.beanTransaction = transactionManager.getTransaction();
+ } catch (javax.transaction.SystemException se) {
+ throw new SystemException("TransactionManager failure");
+ }
}
// only put in LRU if no current transaction