Uploaded image for project: 'Jackrabbit Content Repository'
  1. Jackrabbit Content Repository
  2. JCR-861 Connector should support LocalTransaction as well as XATransaction
  3. JCR-3475

Workaround force LocalTX to a GlobalTX with a UserTX throws Exception in Events

    XMLWordPrintableJSON

    Details

    • Type: Sub-task
    • Status: Closed
    • Priority: Major
    • Resolution: Invalid
    • Affects Version/s: 2.4.2
    • Fix Version/s: None
    • Component/s: jackrabbit-jca
    • Labels:
      None
    • Environment:
      zLinux
      Webshere 8.5
      Jackrabbit deployed as (XA) resource adapter
      jndi datasources (non XA as jackrabbit requests)
      database db2 (version 9)
      repository.xml attached
      servlet code attached

      Description

      Because Our Applicationserver optimizes the web accesses throug the webdav-api to local transaction, we are trying to use a servlet filter that wraps a Usertransaction around every http requests. This results in the use of Glocal transactions. So far so good, it works in all normal jackrabbit accesses. But not with observation events! In case of event listening on repository changes the folowing exception occures:

      [11/19/12 12:41:24:421 CET] 000000a3 servlet E com.ibm.ws.webcontainer.servlet.ServletWrapper service SRVE0068E: An exception was thrown by one of
       the service methods of the servlet [JCRWebdavServer] in application [eQuest-jackrabbit-webdav]. Exception created : [java.lang.IllegalStateException: I
      nactive logical session handle called
              at org.apache.jackrabbit.jca.JCAManagedConnection.getSession(JCAManagedConnection.java:237)
              at org.apache.jackrabbit.jca.JCASessionHandle.getSession(JCASessionHandle.java:90)
              at org.apache.jackrabbit.jca.JCASessionHandle.getUserID(JCASessionHandle.java:104)
              at org.apache.jackrabbit.server.jcr.JCRWebdavServer$SessionCache.getUserID(JCRWebdavServer.java:409)
              at org.apache.jackrabbit.server.jcr.JCRWebdavServer$SessionCache.get(JCRWebdavServer.java:239)
              at org.apache.jackrabbit.server.jcr.JCRWebdavServer$SessionCache.access$200(JCRWebdavServer.java:165)
              at org.apache.jackrabbit.server.jcr.JCRWebdavServer.attachSession(JCRWebdavServer.java:103)
              at org.apache.jackrabbit.webdav.server.AbstractWebdavServlet.service(AbstractWebdavServlet.java:247)
              at javax.servlet.http.HttpServlet.service(HttpServlet.java:668)
              at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1214)
              at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:774)
              at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:456)
              at com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.handleRequest(ServletWrapperImpl.java:178)
      

      I hope that somebody can help us solving/working around this one! We would be willing to do the testing an debugging if necessary. But we do not have the time to dig into the code and solve it ourself.
      If somebody helps us getting Jackrabbit running XA under Webspere, i will go to the Management and try to get a donation to Apache-Jackrabbit.

        Attachments

        1. repository.xml
          7 kB
          Richard van Nieuwenhoven
        2. EquestJackrabbitFilter.java
          1 kB
          Richard van Nieuwenhoven

          Activity

            People

            • Assignee:
              c_koell Claus Köll
              Reporter:
              ritchie.adesso Richard van Nieuwenhoven
            • Votes:
              1 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: