XOG operation on Websphere/Weblogic J2EE environment is throwing Cannot Determine TenantInstance in Multitenant Mode

Document ID : KB000048784
Last Modified Date : 14/02/2018
Show Technical Document Details

Description:

When xogging a file on Websphere/Weblogic J2EE environment, the operation is failing with an error similar to this:

ERROR 2013-01-10 13:18:39,781 [WebContainer : 5] niku.xog (none:none:none:none) Exception occurred while processing client request
java.lang.RuntimeException: Cannot Determine TenantInstance in Multitenant Mode.
at com.niku.union.utility.MultitenancyErrorReportingHelper.reportError(MultitenancyErrorReportingHelper.java:193)
at com.niku.union.utility.UtilityThreadLocal.reportFailureError(UtilityThreadLocal.java:622)
at com.niku.union.utility.UtilityThreadLocal.getTenantInstance(UtilityThreadLocal.java:577)
at com.niku.union.utility.UtilityThreadLocal.getTenantId(UtilityThreadLocal.java:517)
at com.niku.union.utility.caching.CacheController$TenantCache.getTenantId(CacheController.java:2076)
at com.niku.union.utility.caching.CacheController$TenantCache.getCache(CacheController.java:2096)
at com.niku.union.utility.caching.CacheController$TenantCache.get(CacheController.java:2119)
at com.niku.union.utility.caching.CacheController$TenantCache.access$100(CacheController.java:2052)
at com.niku.union.utility.caching.CacheController.get(CacheController.java:375)
at com.niku.union.utility.caching.CacheController.getSessionTimeout(CacheController.java:1796)
at com.niku.union.utility.caching.CacheController.get(CacheController.java:387)
at com.niku.security.cache.UserSessionCache.get(UserSessionCache.java:148)
at com.niku.security.service.AuthenticationService.get(AuthenticationService.java:166)
at com.niku.security.service.AuthenticationService.get(AuthenticationService.java:148)
at com.niku.xog.service.XOGSOAPServlet.processMessage(XOGSOAPServlet.java:244)
at com.niku.xog.service.XOGSOAPServlet.doPost(XOGSOAPServlet.java:91)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:738)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:831)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1657)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1597)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:104)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain._doFilter(WebAppFilterChain.java:77)
at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:908)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:934)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:502)
at com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.handleRequest(ServletWrapperImpl.java:181)
at com.ibm.ws.webcontainer.servlet.CacheServletWrapper.handleRequest(CacheServletWrapper.java:91)
at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:864)
at com.ibm.ws.webcontainer.WSWebContainer.handleRequest(WSWebContainer.java:1592)
at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:186)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:452)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewRequest(HttpInboundLink.java:511)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.processRequest(HttpInboundLink.java:305)
at com.ibm.ws.http.channel.inbound.impl.HttpICLReadCallback.complete(HttpICLReadCallback.java:83)
at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:165)
at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217)
at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161)
at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:138)
at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:204)
at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:775)
at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:905)
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1646)

Solution:

This is a known Clarity defect:

CLRT-71459 XOG operation in a J2EE environment throws a Multitenant RuntimeException because the tenant context is not present

Steps to Reproduce:

  1. Modify the properties.xml file to have app and app2( You may not need to do this to show the problem)
  2. Package the app into an ear archive and deploy it WAS v7 for a 13.0.1 env. Set the -Dcom.niku.union.instanceId=app2 in the JVM parameters for WAS( You might also not need this)
  3. Run the xogclient with the attached cmn_users_read.xml with the attached xogloop.bat and the attached test.properties file modified for the test setup


Expected Result: That the xog runs without error.
Actual Result: The exception in the description is thrown multiple times.

This defect is currently in Development review for a resolution.