Hi, Chanika, please check on this. We once talked with Sameera on what is we are suppose to use here, and we did the changes according to that.
Cheers, Anjana. On Wed, Aug 28, 2013 at 3:44 PM, Vijayaratha Vijayasingam <[email protected]>wrote: > Hi all; > The reason is, there are "Axis2ConfigurationContextObserver" > implementations at Event +datasource components and where, tenantID/domain > is set to "currentContext()" > > eg: PrivilegedCarbonContext.getCurrentContext().setTenantId(tenantId, > true); > > Changed that to "ThreadLocalCarbonContext" and now issue is solved. > > eg: > PrivilegedCarbonContext.getThreadLocalCarbonContext().setTenantId(tenantId, > true); > > @senaka,anjana.. > I have attached the patch which contains above change..Please check and > let us know if there any issue.. > Else, we will commit that to branch > > Thanks. > > > On 27 August 2013 17:47, Vijayaratha Vijayasingam <[email protected]> wrote: > >> >> Hi all; >> We are facing a severe blocker in APIM 4.2.0 based product.. >> When we publish an API from publisher to gateway following error[1] is >> thrown and APIs are not deployed in tenant space. >> >> *what we do is* >> >> In the Admin service (RESTAPI admin) we set tenant domain explicitly and >> creating CarbonContext using getThreadLocalCarbonContext(). (Because >> there is an issue at AbstarctAdmin service, where it creates CarbonContext >> using PrivilegedCarbonContext.getCurrentContext, and that always contains >> SuperTenant domain in it. This was discussed at the last release time and >> as a solution we overwrites that method from our end to use >> PrivilegedCarbonContext.getThreadLocalCarbonContext() ) >> >> Our sample AdminService code is; >> >> public boolean addApiForTenant(String apiData, String tenantDomain) >> throws APIException { >> try { >> PrivilegedCarbonContext.startTenantFlow(); >> >> PrivilegedCarbonContext.getThreadLocalCarbonContext().setTenantDomain(tenantDomain, >> >> true); >> boolean status = addApiFromString(apiData); >> return status; >> } finally { >> PrivilegedCarbonContext.endTenantFlow(); >> } >> } >> >> //overwriting this >> protected ConfigurationContext getConfigContext() { >> ..................................................................... >> PrivilegedCarbonContext carbonContext = >> PrivilegedCarbonContext.getThreadLocalCarbonContext(); >> String domain = carbonContext.getTenantDomain(); >> if (domain != null && >> !MultitenantConstants.SUPER_TENANT_DOMAIN_NAME.equals(domain)) { >> System.out.println(" Tenant domain *********" +domain); >> return TenantAxisUtils.getTenantConfigurationContext(domain, >> mainConfigContext); >> ..................................................... >> } >> >> Can anyone point us, what we do wrong here? >> >> Thanks.. >> >> >> [1] >> 2013-08-27 16:55:49,126] INFO - CarbonAuthenticationUtil >> '[email protected] [-1234]' logged in at [2013-08-27 16:55:49,125+0530] >> Tenant domain *********test.com >> [2013-08-27 16:55:49,152] ERROR - EventAxis2ConfigurationContextObserver >> Error in setting tenant information >> java.lang.NullPointerException: Tenant domain has not been set in >> CarbonContext >> at >> org.wso2.carbon.caching.impl.CacheManagerFactoryImpl.getCacheManager(CacheManagerFactoryImpl.java:79) >> at >> org.wso2.carbon.user.core.authorization.PermissionTree.getPermissionTreeCache(PermissionTree.java:91) >> at >> org.wso2.carbon.user.core.authorization.PermissionTree.updatePermissionTree(PermissionTree.java:905) >> at >> org.wso2.carbon.user.core.authorization.JDBCAuthorizationManager.isRoleAuthorized(JDBCAuthorizationManager.java:117) >> at >> org.wso2.carbon.event.core.internal.CarbonEventBroker.initializeTenant(CarbonEventBroker.java:97) >> at >> org.wso2.carbon.event.core.internal.builder.EventAxis2ConfigurationContextObserver.creatingConfigurationContext(EventAxis2ConfigurationCont >> extObserver.java:30) >> at >> org.wso2.carbon.core.multitenancy.utils.TenantAxisUtils.doPreConfigContextCreation(TenantAxisUtils.java:507) >> at >> org.wso2.carbon.core.multitenancy.utils.TenantAxisUtils.createTenantConfigurationContext(TenantAxisUtils.java:302) >> at >> org.wso2.carbon.core.multitenancy.utils.TenantAxisUtils.getTenantConfigurationContext(TenantAxisUtils.java:135) >> at >> org.wso2.carbon.rest.api.service.RestApiAdmin.getConfigContext(RestApiAdmin.java:750) >> at >> org.wso2.carbon.rest.api.service.RestApiAdmin.getAxisConfig(RestApiAdmin.java:731) >> at >> org.wso2.carbon.rest.api.service.RestApiAdmin.getLock(RestApiAdmin.java:713) >> at >> org.wso2.carbon.rest.api.service.RestApiAdmin.getApiByName(RestApiAdmin.java:417) >> at >> org.wso2.carbon.rest.api.service.RestApiAdmin.getApiForTenant(RestApiAdmin.java:445) >> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) >> at >> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) >> at >> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) >> at java.lang.reflect.Method.invoke(Method.java:597) >> at >> org.apache.axis2.rpc.receivers.RPCUtil.invokeServiceClass(RPCUtil.java:212) >> at >> org.apache.axis2.rpc.receivers.RPCMessageReceiver.invokeBusinessLogic(RPCMessageReceiver.java:117) >> at >> org.apache.axis2.receivers.AbstractInOutMessageReceiver.invokeBusinessLogic(AbstractInOutMessageReceiver.java:40) >> at >> org.apache.axis2.receivers.AbstractMessageReceiver.receive(AbstractMessageReceiver.java:110) >> at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:180) >> at >> org.apache.axis2.transport.http.HTTPTransportUtils.processHTTPPostRequest(HTTPTransportUtils.java:172) >> at >> org.apache.axis2.transport.http.AxisServlet.doPost(AxisServlet.java:146) >> at >> org.wso2.carbon.core.transports.CarbonServlet.doPost(CarbonServlet.java:231) >> at javax.servlet.http.HttpServlet.service(HttpServlet.java:755) >> at javax.servlet.http.HttpServlet.service(HttpServlet.java:848) >> at >> org.eclipse.equinox.http.servlet.internal.ServletRegistration.service(ServletRegistration.java:61) >> at >> org.eclipse.equinox.http.servlet.internal.ProxyServlet.processAlias(ProxyServlet.java:128) >> at >> org.eclipse.equinox.http.servlet.internal.ProxyServlet.service(ProxyServlet.java:68) >> at javax.servlet.http.HttpServlet.service(HttpServlet.java:848) >> at >> org.wso2.carbon.tomcat.ext.servlet.DelegationServlet.service(DelegationServlet.java:68) >> at >> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) >> at >> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) >> at >> org.wso2.carbon.tomcat.ext.filter.CharacterSetFilter.doFilter(CharacterSetFilter.java:61) >> at >> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) >> at >> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) >> at >> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222) >> at >> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) >> at >> org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) >> at >> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) >> at >> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99) >> at >> org.wso2.carbon.tomcat.ext.valves.CompositeValve.continueInvocation(CompositeValve.java:178) >> at >> org.wso2.carbon.tomcat.ext.valves.CarbonTomcatValve$1.invoke(CarbonTomcatValve.java:47) >> at >> org.wso2.carbon.webapp.mgt.TenantLazyLoaderValve.invoke(TenantLazyLoaderValve.java:56) >> at >> org.wso2.carbon.tomcat.ext.valves.TomcatValveContainer.invokeValves(TomcatValveContainer.java:47) >> at >> org.wso2.carbon.tomcat.ext.valves.CompositeValve.invoke(CompositeValve.java:141) >> at >> org.wso2.carbon.tomcat.ext.valves.CarbonStuckThreadDetectionValve.invoke(CarbonStuckThreadDetectionValve.java:156) >> at >> org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936) >> at >> org.wso2.carbon.tomcat.ext.valves.CarbonContextCreatorValve.invoke(CarbonContextCreatorValve.java:52) >> at >> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) >> at >> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) >> at >> org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004) >> at >> org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589) >> at >> org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1653) >> at >> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895) >> at >> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918) >> at java.lang.Thread.run(Thread.java:662) >> [2013-08-27 16:55:49,168] INFO - TenantAxisConfigurator Creating tenant >> AxisConfiguration for tenant: test.com[1] >> [2013-08-27 16:55:49,458] INFO - UserStoreConfigurationDeployer User >> Store Configuration Deployer initiated. >> [2013-08-27 16:55:50,236] INFO - TenantServiceBusInitializer Intializing >> the ESB Configuration for the tenant domain : test.com >> [2013-08-27 16:55:50,239] INFO - SynapseControllerFactory Using Synapse >> home : C:\Users\TOSH\Desktop\WSO2AM~1.0\bin\..\repository\tenants\1 >> [2013-08-27 16:55:50,240] INFO - SynapseControllerFactory Using >> synapse.xml location : >> C:\Users\TOSH\Desktop\WSO2AM~1.0\bin\..\repository\tenants\1\s >> ynapse-configs\default >> [2013-08-27 16:55:50,241] INFO - SynapseControllerFactory Using server >> name : synapse.test.com >> [2013-08-27 16:55:50,244] INFO - SynapseControllerFactory The timeout >> handler will run every : 15s >> [2013-08-27 16:55:50,247] INFO - Axis2SynapseController Initializing >> Synapse at : Tue Aug 27 16:55:50 IST 2013 >> [2013-08-27 16:55:50,255] INFO - CarbonSynapseController Loading the >> mediation configuration from the file system >> [2013-08-27 16:55:50,257] INFO - MultiXMLConfigurationBuilder Building >> synapse configuration from the synapse artifact repository at : >> C:\Users\TOSH\ >> Desktop\WSO2AM~1.0\bin\..\repository\tenants\1\synapse-configs\default >> [2013-08-27 16:55:50,283] INFO - SynapseConfigurationBuilder Loaded >> Synapse configuration from the artifact repository at : >> C:\Users\TOSH\Desktop\WSO >> 2AM~1.0\bin\..\repository\tenants\1\synapse-configs\default >> [2013-08-27 16:55:50,284] INFO - Axis2SynapseController Loading mediator >> extensions... >> [2013-08-27 16:55:50,290] INFO - Axis2SynapseController Deploying the >> Synapse service... >> [2013-08-27 16:55:50,291] INFO - Axis2SynapseController Deploying Proxy >> services... >> [2013-08-27 16:55:50,292] INFO - Axis2SynapseController Deploying >> EventSources... >> [2013-08-27 16:55:50,295] INFO - ServerManager Server ready for >> processing... >> [2013-08-27 16:55:50,343] WARN - MediationStatisticsServiceComponent >> Couldn't find the mediation statistics store for tenant id: 1 >> [2013-08-27 16:55:50,382] INFO - PermissionUpdater Permission cache >> updated for tenant 1 >> [2013-08-27 16:55:50,384] ERROR - TenantAxisUtils Error occurred while >> running deployment for tenant test.com >> java.lang.NullPointerException: Tenant domain has not been set in >> CarbonContext >> at >> org.wso2.carbon.caching.impl.CacheManagerFactoryImpl.getCacheManager(CacheManagerFactoryImpl.java:79) >> at >> org.wso2.carbon.registry.core.utils.RegistryUtils.getCacheManager(RegistryUtils.java:288) >> at >> org.wso2.carbon.registry.core.utils.RegistryUtils.getResourceCache(RegistryUtils.java:271) >> at >> org.wso2.carbon.registry.core.caching.CacheBackedRegistry.getCache(CacheBackedRegistry.java:62) >> at >> org.wso2.carbon.registry.core.caching.CacheBackedRegistry.resourceExists(CacheBackedRegistry.java:246) >> at >> org.wso2.carbon.registry.core.session.UserRegistry.resourceExists(UserRegistry.java:629) >> at >> org.wso2.carbon.datasource.DataSourceInformationManager.populateDataSourceInformation(DataSourceInformationManager.java:62) >> at >> org.wso2.carbon.datasource.multitenancy.DataSourceInitializer.createdConfigurationContext(DataSourceInitializer.java:73) >> at >> org.wso2.carbon.core.multitenancy.utils.TenantAxisUtils.createTenantConfigurationContext(TenantAxisUtils.java:342) >> at >> org.wso2.carbon.core.multitenancy.utils.TenantAxisUtils.getTenantConfigurationContext(TenantAxisUtils.java:135) >> at >> org.wso2.carbon.rest.api.service.RestApiAdmin.getConfigContext(RestApiAdmin.java:750) >> at >> org.wso2.carbon.rest.api.service.RestApiAdmin.getAxisConfig(RestApiAdmin.java:731) >> at >> org.wso2.carbon.rest.api.service.RestApiAdmin.getLock(RestApiAdmin.java:713) >> at org.wso2.carbo >> >> -- >> -Ratha >> mobile: (+94)755906608 >> > > > > -- > -Ratha > mobile: (+94)755906608 > -- *Anjana Fernando* Technical Lead WSO2 Inc. | http://wso2.com lean . enterprise . middleware
_______________________________________________ Dev mailing list [email protected] http://wso2.org/cgi-bin/mailman/listinfo/dev
