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

Reply via email to