Hello,

 

I am new to Jackrabbit and am looking forward to use 2.0 final release
in our project. When I am trying beta5 in Websphere6.1 (EJB feature pack
installed) Session bean, I got problems in JTA transactions. It would be
really great if any of you can provide some help!

 

What I am trying to do is to make a new version by adding some nodes to
another node "/data", which works all fine in JSE:

 

VersionManager.checkout("/data");

//adding new nodes to "/data"

Session.save();

VersionManager.checkin("/data");

 

If I annotate my method with TransactionAttributeType.NOT_SUPPORTED, the
thread hangs forever in the Session.save() method.

 

If I annotate my method with TransactionAttributeType.REQUIRED, I got
the following error messages:

 

[2010-01-14 18:38:05,932] [m Pool : 0] ERROR BundleDbPersistenceManager
- rollback failed

[2010-01-14 18:38:05,932] [m Pool : 0] ERROR BundleDbPersistenceManager
-        Reason: DSRA9350E: Operation Connection.rollback is not allowed
during a global transaction.

[2010-01-14 18:38:05,932] [m Pool : 0] ERROR BundleDbPersistenceManager
-    State/Code: null/0

[2010-01-14 18:38:06,432] [m Pool : 0] ERROR BundleDbPersistenceManager
- rollback failed

[2010-01-14 18:38:06,432] [m Pool : 0] ERROR BundleDbPersistenceManager
-        Reason: DSRA9350E: Operation Connection.rollback is not allowed
during a global transaction.

[2010-01-14 18:38:06,432] [m Pool : 0] ERROR BundleDbPersistenceManager
-    State/Code: null/0

Caused by: javax.jcr.RepositoryException: Unable to update item: node /

                at
org.apache.jackrabbit.core.ItemImpl.save(ItemImpl.java:1130)

                at
org.apache.jackrabbit.core.SessionImpl.save(SessionImpl.java:919)

                at
com.fiserv.repository.jackrabbit.JRUtils.makeVersion(JRUtils.java:306)

                ... 34 more

Caused by: org.apache.jackrabbit.core.state.ItemStateException:
DSRA9250E: Operation setAutoCommit is not allowed during a global
transaction for Shareable Connections.

                at
org.apache.jackrabbit.core.persistence.bundle.BundleDbPersistenceManager
.store(BundleDbPersistenceManager.java:583)

                at
org.apache.jackrabbit.core.state.SharedItemStateManager$Update.end(Share
dItemStateManager.java:732)

                at
org.apache.jackrabbit.core.state.SharedItemStateManager.update(SharedIte
mStateManager.java:1109)

                at
org.apache.jackrabbit.core.state.LocalItemStateManager.update(LocalItemS
tateManager.java:351)

                at
org.apache.jackrabbit.core.state.XAItemStateManager.update(XAItemStateMa
nager.java:354)

                at
org.apache.jackrabbit.core.state.LocalItemStateManager.update(LocalItemS
tateManager.java:326)

                at
org.apache.jackrabbit.core.state.SessionItemStateManager.update(SessionI
temStateManager.java:331)

                at
org.apache.jackrabbit.core.ItemImpl.save(ItemImpl.java:1124)

                ... 36 more

Caused by: java.sql.SQLException: DSRA9250E: Operation setAutoCommit is
not allowed during a global transaction for Shareable Connections.

                at
com.ibm.ws.rsadapter.jdbc.WSJdbcConnection.createSharingException(WSJdbc
Connection.java:1192)

                at
com.ibm.ws.rsadapter.jdbc.WSJdbcConnection.setAutoCommit(WSJdbcConnectio
n.java:2620)

                at
org.apache.jackrabbit.core.persistence.bundle.BundleDbPersistenceManager
.store(BundleDbPersistenceManager.java:562)

                ... 43 more

Caused by: javax.resource.spi.SharingViolationException: DSRA9250E:
Operation setAutoCommit is not allowed during a global transaction for
Shareable Connections.

                at
com.ibm.ws.rsadapter.jdbc.WSJdbcConnection.createSharingException(WSJdbc
Connection.java:1193)

                ... 45 more

 

The FAQ/wiki page doesn't help and the mailing list archive doesn't help
either...

 

Thanks in advance,

Xuetao Niu

 

P.S. I expect to use mssql database to do all persistence, here is the
configuration file I am using:

 

<Repository>

    <!--

        virtual file system where the repository stores global state

        (e.g. registered namespaces, custom node types, etc.)

    -->

    <FileSystem
class="org.apache.jackrabbit.core.fs.db.MSSqlFileSystem">

        <param name="driver" value="javax.naming.InitialContext"/>

            <param name="url"
value="java:comp/env/jdbc/RtdeDataSource"/>

            <param name="schema" value="mssql"/>

    </FileSystem>

      <PersistenceManager
class="org.apache.jackrabbit.core.persistence.bundle.MSSqlPersistenceMan
ager">

            <param name="driver" value="javax.naming.InitialContext"/>

                  <param name="url"
value="java:comp/env/jdbc/RtdeDataSource"/>  

                  <param name="schema" value="mssql"/>

            <param name="externalBLOBs" value="false"/>

        </PersistenceManager>

    <!--

        security configuration

    -->

    <Security appName="Jackrabbit">

        <!--

            access manager:

            class: FQN of class implementing the AccessManager interface

        -->

        <AccessManager
class="org.apache.jackrabbit.core.security.simple.SimpleAccessManager">

            <!-- <param name="config" value="${rep.home}/access.xml"/>
-->

        </AccessManager>

 

        <LoginModule
class="org.apache.jackrabbit.core.security.simple.SimpleLoginModule">

           <!-- anonymous user name ('anonymous' is the default value)
-->

           <param name="anonymousId" value="anonymous"/>

           <!--

              default user name to be used instead of the anonymous user

              when no login credentials are provided (unset by default)

           -->

           <!-- <param name="defaultUserId" value="superuser"/> -->

        </LoginModule>

    </Security>

 

    <!--

        location of workspaces root directory and name of default
workspace

    -->

    <Workspaces rootPath="${rep.home}/workspaces"
defaultWorkspace="default"/>

    <!--

        workspace configuration template:

        used to create the initial workspace if there's no workspace yet

    -->

    <Workspace name="${wsp.name}">

        <!--

            virtual file system of the workspace:

            class: FQN of class implementing the FileSystem interface

        -->

        <FileSystem
class="org.apache.jackrabbit.core.fs.db.MSSqlFileSystem">

            <param name="driver" value="javax.naming.InitialContext"/>

                  <param name="url"
value="java:comp/env/jdbc/RtdeDataSource"/>

                  <param name="schema" value="mssql"/>

            <param name="schemaObjectPrefix" value="ws_"/>

        </FileSystem>

        <!--

            persistence manager of the workspace:

            class: FQN of class implementing the PersistenceManager
interface

        -->

        <PersistenceManager
class="org.apache.jackrabbit.core.persistence.bundle.MSSqlPersistenceMan
ager">

            <param name="driver" value="javax.naming.InitialContext"/>

                  <param name="url"
value="java:comp/env/jdbc/RtdeDataSource"/>  

                  <param name="schema" value="mssql"/>

            <param name="externalBLOBs" value="false"/>        

            <param name="schemaObjectPrefix" value="ws_"/>

            <param name="externalBLOBs" value="false"/>

        </PersistenceManager>

        <!--

            Search index and the file system it uses.

            class: FQN of class implementing the QueryHandler interface

        -->

        <SearchIndex
class="org.apache.jackrabbit.core.query.lucene.SearchIndex">

            <param name="path" value="${wsp.home}/index"/>

        </SearchIndex>

    </Workspace>

 

    <!--

        Configures the versioning

    -->

    <Versioning rootPath="${rep.home}/version">

        <!--

            Configures the filesystem to use for versioning for the
respective

            persistence manager

        -->

        <FileSystem
class="org.apache.jackrabbit.core.fs.db.MSSqlFileSystem">

            <param name="driver" value="javax.naming.InitialContext"/>

                  <param name="url"
value="java:comp/env/jdbc/RtdeDataSource"/>

                  <param name="schema" value="mssql"/>  

            <param name="schemaObjectPrefix" value="version_"/>

        </FileSystem>

        

        <!--

            Configures the persistence manager to be used for persisting
version state.

            Please note that the current versioning implementation is
based on

            a 'normal' persistence manager, but this could change in
future

            implementations.

        -->

        <PersistenceManager
class="org.apache.jackrabbit.core.persistence.bundle.MSSqlPersistenceMan
ager">

            <param name="driver" value="javax.naming.InitialContext"/>

                  <param name="url"
value="java:comp/env/jdbc/RtdeDataSource"/> 

                  <param name="schema" value="mssql"/>         

            <param name="schemaObjectPrefix" value="version_"/>

            <param name="externalBLOBs" value="false"/>

        </PersistenceManager>

    </Versioning>

 

    <!--

        Search index for content that is shared repository wide

        (/jcr:system tree, contains mainly versions)

    -->

    <SearchIndex
class="org.apache.jackrabbit.core.query.lucene.SearchIndex">

        <param name="path" value="${rep.home}/repository/index"/>

    </SearchIndex>

</Repository>

Reply via email to