Friends,

I have an entity bean which calls a stateless session bean's method from
within its ejbCreate method.  I need to ensure the highest level of
transaction isolation (serializable) for the database read performed in
the session bean method.  Because a connection's isolation level must be
set outside of any transaction, I assume I am forced to use bean managed
transaction for this session bean.   When I attempt to run this (using
jdk1.2.2 from sun, linux RedHat6.2, Orion1.2.9, Postgres7 database) I
get a java.sql.SQLException (stack trace below).

I am setting the isolation level right after I first get a connection
from the data-source, and I do no updates and start no transactions in
my session bean before setting this level.

When I use Sybase instead of Postgres, I get a bit further, but end up
getting a different exception (Stack trace follows below).  From some
debug statements, I've managed to deduce that when I first get the
UserTransaction (in the business method of the Session Bean), it has
Status.STATUS_ACTIVE.  It stays this way through beginning a
transaction, performing updates and selects from Sybase, and committing
the transaction.  However, after commit() is called, the status is
Status.STATUS_NO_TRANSACTION.  When this method completes, and the
EntityBean's ejbCreate method resumes, I get an OrionRemoteException
(that's the second stacktrace given).

It seems to me that when the Session Bean's method begins, the client
transaction has NOT been suspended.  This seems to be in violation of
the spec.  What gives?  Has anyone ever managed to use bean managed
transactions using Orion and these databases?


----------------Using Posgres7 --------------------------

javax.transaction.TransactionRolledbackException: java.sql.SQLException:
ERROR:  SET TRANSACTION ISO
LATION LEVEL must be called before any query

        at com.evermind.server.ejb.EJBUtils.getUserException(JAX)
        at
MessageNumberManager_StatelessSessionBeanWrapper15.nextMessageNumber(MessageNumberManager

_StatelessSessionBeanWrapper15.java:49)
        at
com.dbusa.ejb.message.MessageBean.ejbCreate(MessageBean.java:84)
        at
MessageHome_EntityHomeWrapper55.create(MessageHome_EntityHomeWrapper55.java:647)

        at
com.dbusa.util.message.MessageCreator.createMessage(MessageCreator.java:83)

        at
com.dbusa.util.message.MessageCreator.createMessage(MessageCreator.java:57)

        at java.lang.reflect.Method.invoke(Native Method)
        at
org.webmacro.util.PropertyOperator.invoke(PropertyOperator.java:788)
        at
org.webmacro.util.DirectAccessor.get(PropertyOperator.java:1012)
        at
org.webmacro.util.PropertyOperator.getProperty(PropertyOperator.java:535)

        at
org.webmacro.util.PropertyOperator.getProperty(PropertyOperator.java:89)

        at org.webmacro.Context.getLocal(Context.java:401)
        at org.webmacro.Context.getProperty(Context.java:339)
        at
org.webmacro.engine.PropertyVariable.getValue(PropertyVariable.java:28)
        at org.webmacro.engine.Variable.evaluate(Variable.java:128)
        at org.webmacro.engine.Variable.write(Variable.java:156)
        at org.webmacro.engine.Block.write(Block.java:56)
        at org.webmacro.engine.IfDirective.write(IfDirective.java:161)
        at org.webmacro.engine.Block.write(Block.java:56)
        at org.webmacro.engine.IfDirective.write(IfDirective.java:154)
        at org.webmacro.engine.Block.write(Block.java:56)
        at org.webmacro.engine.WMTemplate.write(WMTemplate.java:251)
        at
org.apache.turbine.services.webmacro.TurbineWebMacroService.handleRequest(TurbineWebMacro

Service.java:237)
        at
org.apache.turbine.services.webmacro.TurbineWebMacroService.handleRequest(TurbineWebMacro

Service.java:208)
        at
org.apache.turbine.services.webmacro.TurbineWebMacro.handleRequest(TurbineWebMacro.java:1

07)
        at
org.apache.turbine.modules.screens.WebMacroSiteScreen.buildWMTemplate(WebMacroSiteScreen.

java:192)
        at
org.apache.turbine.modules.screens.WebMacroSiteScreen.buildTemplate(WebMacroSiteScreen.ja

va:145)
        at
org.apache.turbine.modules.screens.TemplateScreen.doBuild(TemplateScreen.java:124)

        at org.apache.turbine.modules.Screen.build(Screen.java:100)
        at
org.apache.turbine.modules.ScreenLoader.eval(ScreenLoader.java:126)
        at
org.apache.turbine.modules.layouts.WebMacroSiteLayout.doBuild(WebMacroSiteLayout.java:106

)
        at org.apache.turbine.modules.Layout.build(Layout.java:93)
        at
org.apache.turbine.modules.LayoutLoader.exec(LayoutLoader.java:120)
        at
org.apache.turbine.modules.pages.DefaultPage.doBuild(DefaultPage.java:171)

        at org.apache.turbine.modules.Page.build(Page.java:92)
        at
org.apache.turbine.modules.PageLoader.exec(PageLoader.java:119)
        at org.apache.turbine.Turbine.doGet(Turbine.java:366)


---------------Using Sybase ------------------

com.evermind.server.rmi.OrionRemoteException: User interference with CMP
transaction (illegal termin
ation of transaction)
        at
MessageHome_EntityHomeWrapper55.create(MessageHome_EntityHomeWrapper55.java:834)

        at
com.dbusa.util.message.MessageCreator.createMessage(MessageCreator.java:83)

        at
com.dbusa.util.message.MessageCreator.createMessage(MessageCreator.java:57)

        at java.lang.reflect.Method.invoke(Native Method)
        at
org.webmacro.util.PropertyOperator.invoke(PropertyOperator.java:788)
        at
org.webmacro.util.DirectAccessor.get(PropertyOperator.java:1012)
        at
org.webmacro.util.PropertyOperator.getProperty(PropertyOperator.java:535)

        at
org.webmacro.util.PropertyOperator.getProperty(PropertyOperator.java:89)

        at org.webmacro.Context.getLocal(Context.java:401)
        at org.webmacro.Context.getProperty(Context.java:339)
        at
org.webmacro.engine.PropertyVariable.getValue(PropertyVariable.java:28)
        at org.webmacro.engine.Variable.evaluate(Variable.java:128)
        at org.webmacro.engine.Variable.write(Variable.java:156)
        at org.webmacro.engine.Block.write(Block.java:56)
        at org.webmacro.engine.IfDirective.write(IfDirective.java:161)
        at org.webmacro.engine.Block.write(Block.java:56)
        at org.webmacro.engine.IfDirective.write(IfDirective.java:154)
        at org.webmacro.engine.Block.write(Block.java:56)
        at org.webmacro.engine.WMTemplate.write(WMTemplate.java:251)
        at
org.apache.turbine.services.webmacro.TurbineWebMacroService.handleRequest(TurbineWebMacro

Service.java:237)
        at
org.apache.turbine.services.webmacro.TurbineWebMacroService.handleRequest(TurbineWebMacro

Service.java:208)
        at
org.apache.turbine.services.webmacro.TurbineWebMacro.handleRequest(TurbineWebMacro.java:1

07)
        at
org.apache.turbine.modules.screens.WebMacroSiteScreen.buildWMTemplate(WebMacroSiteScreen.

java:192)
        at
org.apache.turbine.modules.screens.WebMacroSiteScreen.buildTemplate(WebMacroSiteScreen.ja

va:145)
        at
org.apache.turbine.modules.screens.TemplateScreen.doBuild(TemplateScreen.java:124)

        at org.apache.turbine.modules.Screen.build(Screen.java:100)
        at
org.apache.turbine.modules.ScreenLoader.eval(ScreenLoader.java:126)
        at
org.apache.turbine.modules.layouts.WebMacroSiteLayout.doBuild(WebMacroSiteLayout.java:106

)
        at org.apache.turbine.modules.Layout.build(Layout.java:93)
        at
org.apache.turbine.modules.LayoutLoader.exec(LayoutLoader.java:120)
        at
org.apache.turbine.modules.pages.DefaultPage.doBuild(DefaultPage.java:171)

        at org.apache.turbine.modules.Page.build(Page.java:92)
        at
org.apache.turbine.modules.PageLoader.exec(PageLoader.java:119)
        at org.apache.turbine.Turbine.doGet(Turbine.java:366)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java)
--
Daniel G. Koulomzin
Digital Media On Demand
244 Brighton Ave. 3rd Floor
Allston MA 02134



Reply via email to