Using Seam 2.0 GA on WebLogic 9.2, I am trying to simply populate a dropdown list with
values from a database table. The code to do so is in a Seam-managed persistence
component and has been tested and found to work. My Facelet then calls on this component
to populate the dropdown. When I do so, I get this:
| Caused by: java.sql.SQLException: Transaction BEA1-02F463ADA554FEA2ACBA not active
anymore. tx status = Marked rollback.
[Reason=weblogic.transaction.internal.AppSetRollbackOnlyException]
| at weblogic.jdbc.jts.Driver.getTransaction(Driver.java:564)
| at weblogic.jdbc.jts.Driver.connect(Driver.java:121)
| at weblogic.jdbc.common.internal.RmiDataSource.getConnection(RmiDataSource.java:359)
| at
org.hibernate.connection.DatasourceConnectionProvider.getConnection(DatasourceConnectionProvider.java:69)
| at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:423)
| at org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:144)
| at
org.hibernate.jdbc.AbstractBatcher.prepareQueryStatement(AbstractBatcher.java:139)
| at org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1547)
| at org.hibernate.loader.Loader.doQuery(Loader.java:673)
| at
org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:236)
| at org.hibernate.loader.Loader.doList(Loader.java:2220)
| at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2104)
| at org.hibernate.loader.Loader.list(Loader.java:2099)
| at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:378)
| at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:338)
| at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:172)
| at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1121)
| at org.hibernate.impl.QueryImpl.list(QueryImpl.java:79)
| at org.hibernate.ejb.QueryImpl.getResultList(QueryImpl.java:66)
| at
gov.nist.srm.persistence.QueryServiceImpl.getTechnicalCategories(QueryServiceImpl.java:31)
| at
jrockit.reflect.VirtualNativeMethodInvoker.invoke(Ljava.lang.Object;[Ljava.lang.Object;)Ljava.lang.Object;(Unknown
Source)
| at
java.lang.reflect.Method.invoke(Ljava.lang.Object;[Ljava.lang.Object;I)Ljava.lang.Object;(Unknown
Source)
| at org.jboss.seam.util.Reflections.invoke(Reflections.java:21)
| at
org.jboss.seam.intercept.RootInvocationContext.proceed(RootInvocationContext.java:31)
| at
org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:56)
| at
org.jboss.seam.transaction.RollbackInterceptor.aroundInvoke(RollbackInterceptor.java:31)
| at
org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)
| at
org.jboss.seam.core.BijectionInterceptor.aroundInvoke(BijectionInterceptor.java:46)
| at
org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)
| at
org.jboss.seam.transaction.TransactionInterceptor$1.work(TransactionInterceptor.java:38)
|
|
As I said, this is a basic readonly operation from the database. At no point do I call
for any rollback. Also, the datasource has been tested in the WebLogic console and found
to work.
Here are the properties in persistence.xml:
| <properties>
| <property name="hibernate.dialect"
value="org.hibernate.dialect.Oracle9Dialect"/>
| <property name="hibernate.cache.provider_class"
value="org.hibernate.cache.HashtableCacheProvider"/>
| <property name="hibernate.transaction.manager_lookup_class"
value="org.hibernate.transaction.WeblogicTransactionManagerLookup"/>
| <property name="hibernate.transaction.factory_class"
value="org.hibernate.transaction.CMTTransactionFactory"/>
| </properties>
|
Finally, here is the code:
| @Name("queryService")
| public class QueryServiceImpl extends Object implements QueryService, Serializable {
| @Transactional(TransactionPropagationType.SUPPORTS)
| public List<Category> getCategories() { ... }
| .
| .
| .
| }
|
And here is the reference in the Facelet:
| <select jsfc="h:selectOneMenu" id="categoryDropdown"
value="#{myAction.category}">
| <s:selectItems value="#{queryService.categories}"
var="category" label="#{category.name}" noSelectionLabel=""
/>
| </select>
|
I should note that if I remove that @Transactional annotation, there is no change.
Any insight into what causes this bizarre rollback on WebLogic is appreciated. Please let
me know if you need more information.
Thanks.
View the original post :
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4129493#...
Reply to the post :
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&a...