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