Hi Mahesh

When we register an osgi service to a bundle, Any component can retrieve it. 
Usually we do it in Service Component where we write the scr references. And we 
keep reference to an object of the service and we use only inside the given 
component. If we need it in another component we retrieve same from there too. 
That's how its done in java components. But when it comes to a web application 
(or jiggery application) since they are not running in osgi framework they 
cannot refer to the osgi services in the same manner. So we retrieve it from 
carbon context.

We have done this call every where in our application.


CarbonContext.getThreadlocalCarbonContext().getOSGIService(“<service name>”)


You have to retrieve the service in the above manner in your code.


Hope the explanation is clear to you.






Thanks & Regards
Danushka Fernando
Senior Software Engineer
WSO2 inc. http://wso2.com/
Mobile : +94716332729





From: Mahesh Chinthaka
Sent: ‎Friday‎, ‎June‎ ‎12‎, ‎2015 ‎10‎:‎36‎ ‎AM
To: WSO2 Developers' List





Hi ,



Im trying to call a java method from a jaggery module.

We have called same method from java side like follows

AppFactoryS4ListenersUtil.getTenantRegistryLoader().loadTenantRegistry(tenantId);





my jaggery code is like follows




var tenantId=getTenantId();



var s4util = 
Packages.org.wso2.carbon.appfactory.stratos.util.AppFactoryS4ListenersUtil;

s4util.getTenantRegistryLoader().loadTenantRegistry(tenantId);





And Im getting following error








TID: [0] [AF] [2015-06-12 10:22:05,387] ERROR 
{org.jaggeryjs.jaggery.core.manager.WebAppManager} -  
org.mozilla.javascript.EcmaError: TypeError: Cannot call property 
getTenantRegistryLoader in object [JavaPackage 
org.wso2.carbon.appfactory.stratos.util.AppFactoryS4ListenersUtil]. It is not a 
function, it is "object". (/appmgt/modules/manager/manager.jag#331) 
{org.jaggeryjs.jaggery.core.manager.WebAppManager}

org.jaggeryjs.scriptengine.exceptions.ScriptException: 
org.mozilla.javascript.EcmaError: TypeError: Cannot call property 
getTenantRegistryLoader in object [JavaPackage 
org.wso2.carbon.appfactory.stratos.util.AppFactoryS4ListenersUtil]. It is not a 
function, it is "object". (/appmgt/modules/manager/manager.jag#331)

        at 
org.jaggeryjs.scriptengine.engine.RhinoEngine.execScript(RhinoEngine.java:571)

        at 
org.jaggeryjs.scriptengine.engine.RhinoEngine.exec(RhinoEngine.java:273)

        at 
org.jaggeryjs.jaggery.core.manager.WebAppManager.execute(WebAppManager.java:541)

        at 
org.jaggeryjs.jaggery.core.JaggeryServlet.doPost(JaggeryServlet.java:29)

        at javax.servlet.http.HttpServlet.service(HttpServlet.java:755)

        at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)

        at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)

        at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)

        at 
org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:749)

        at 
org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:487)

        at 
org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:379)

        at 
org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:339)

        at 
org.jaggeryjs.jaggery.core.JaggeryFilter.doFilter(JaggeryFilter.java:21)

        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.runWorker(ThreadPoolExecutor.java:1145)

        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)

        at java.lang.Thread.run(Thread.java:744)

Caused by: org.mozilla.javascript.EcmaError: TypeError: Cannot call property 
getTenantRegistryLoader in object [JavaPackage 
org.wso2.carbon.appfactory.stratos.util.AppFactoryS4ListenersUtil]. It is not a 
function, it is "object". (/appmgt/modules/manager/manager.jag#331)

        at 
org.mozilla.javascript.ScriptRuntime.constructError(ScriptRuntime.java:3687)

        at 
org.mozilla.javascript.ScriptRuntime.constructError(ScriptRuntime.java:3665)

        at 
org.mozilla.javascript.ScriptRuntime.typeError(ScriptRuntime.java:3693)

        at 
org.mozilla.javascript.ScriptRuntime.typeError3(ScriptRuntime.java:3719)

        at 
org.mozilla.javascript.ScriptRuntime.notFunctionError(ScriptRuntime.java:3786)

        at 
org.mozilla.javascript.ScriptRuntime.getPropFunctionAndThisHelper(ScriptRuntime.java:2269)

        at 
org.mozilla.javascript.ScriptRuntime.getPropFunctionAndThis(ScriptRuntime.java:2251)

        at 
org.mozilla.javascript.optimizer.OptRuntime.callProp0(OptRuntime.java:83)

        at 
org.jaggeryjs.rhino.appmgt.modules.manager.c1._c_anonymous_17(/appmgt/modules/manager/manager.jag:331)

        at 
org.jaggeryjs.rhino.appmgt.modules.manager.c1.call(/appmgt/modules/manager/manager.jag)

        at 
org.mozilla.javascript.ScriptRuntime.applyOrCall(ScriptRuntime.java:2430)

        at org.mozilla.javascript.BaseFunction.execIdCall(BaseFunction.java:269)

        at 
org.mozilla.javascript.IdFunctionObject.call(IdFunctionObject.java:97)

        at org.mozilla.javascript.optimizer.OptRuntime.call2(OptRuntime.java:42)

        at 
org.jaggeryjs.rhino.appmgt.modules.manager.c0._c_anonymous_14(/appmgt/modules/manager/module.jag:61)

        at 
org.jaggeryjs.rhino.appmgt.modules.manager.c0.call(/appmgt/modules/manager/module.jag)

        at 
org.mozilla.javascript.optimizer.OptRuntime.callProp0(OptRuntime.java:85)

        at 
org.jaggeryjs.rhino.appmgt.jagg.c5._c_anonymous_1(/appmgt/jagg/jaggery_acs.jag:52)

        at org.jaggeryjs.rhino.appmgt.jagg.c5.call(/appmgt/jagg/jaggery_acs.jag)

        at org.mozilla.javascript.optimizer.OptRuntime.call0(OptRuntime.java:23)

        at 
org.jaggeryjs.rhino.appmgt.jagg.c5._c_script_0(/appmgt/jagg/jaggery_acs.jag:23)

        at org.jaggeryjs.rhino.appmgt.jagg.c5.call(/appmgt/jagg/jaggery_acs.jag)

        at 
org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:394)

        at 
org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:3091)

        at org.jaggeryjs.rhino.appmgt.jagg.c5.call(/appmgt/jagg/jaggery_acs.jag)

        at org.jaggeryjs.rhino.appmgt.jagg.c5.exec(/appmgt/jagg/jaggery_acs.jag)

        at 
org.jaggeryjs.scriptengine.engine.RhinoEngine.execScript(RhinoEngine.java:567)








Any idea on resolving this ??
-- 


Mahesh Chinthaka Vidanagama | Software Engineer
WSO2, Inc | lean. enterprise. middleware.
#20, Palm Grove, Colombo 03, Sri Lanka
Mobile: +94 71 63 63 083 | Work: +94 112 145 345 
Email: [email protected] | Web: www.wso2.com
_______________________________________________
Dev mailing list
[email protected]
http://wso2.org/cgi-bin/mailman/listinfo/dev

Reply via email to