Hi,

@Ruchira
I will debug the jars that we use in the tomgery app deployment and update
with the results.

@Dilshan
I am using that JaggeryContextListener in a jar which is created by
Ruchira. You can find the source code of that jar here[1].

@Dakshika
With the integration with JSR-223, Jaggery will use Nashorn from JDK8
onwards and will fallback to JDK's embeded Rhino version with JDK7 or
below. With the above Jaggery core minimisations, a Jaggery app can be even
deployed on top of tomcat, subjecting to a WEB-INF directory which contains
jaggery core jars and web.xml. For more details please refer this link[2].

[1]
https://github.com/ruchiraw/jaggery/blob/master/components/jaggery-core/org.jaggeryjs.apps/src/main/java/org/jaggeryjs/apps/JaggeryContextListener.java
[2] http://osdir.com/ml/carbon-wso2-architecture/2014-06/msg00000.html


On Sat, Jun 21, 2014 at 9:46 PM, Dilshan Edirisuriya <dils...@wso2.com>
wrote:

> Hi,
>
> Whats there at line 27 of JaggeryContextListener.java? Where can we find
> the source for this?
>
> Regards,
>
> Dilshan
>
>
> On Sat, Jun 21, 2014 at 1:31 PM, Mohamed Nasmin <nasmin1...@gmail.com>
> wrote:
>
>> According to our earlier conversation I am following the below
>> progression to accomplish the project. Sorry for the lengthy email.
>>
>> *Task1. Check whether the app in the tomcat webapps is jaggery app or not
>> before it gets deployed/initialized*
>>
>> I trigger the BEFORE_START_EVENT by configuring the tomcat lifecycle
>> listener with context.xml in the tomcat. The context can listen to the
>> lifecycle listener by putting jar inside lib folder of tomcat. That jar
>> should contain the tomcat listener. Also we need to define that class in
>> the context.xml like below (For more details please refer this mail with
>> subject Tomcat Lifecycle listener how to.).
>>
>> <Listener className="org.jaggery.tomcat.listener.TomcatListener" />
>>
>> When an application is started to deploy BEFORE_START_EVENT will be
>> occurred. we check that event get the standard context of that event. To
>> find out whether it is a jaggery context or not we identify the
>> jaggery.conf in that app folder.
>>
>> Code :
>>
>> public void lifecycleEvent(LifecycleEvent event) {
>>
>>         String type = event.getType();
>>         if (Lifecycle.BEFORE_START_EVENT.equals(type)) {
>>             LOGGER.log(Level.INFO, "BEFORE START EVENT triggered.");
>>             Lifecycle source = event.getLifecycle();
>>
>>             if (source instanceof StandardContext) {
>>
>>                 StandardContext standardContext = (StandardContext)
>> source;
>>                 boolean exists = isJaggeryApp(standardContext);
>>
>>                 if (!exists) {
>>                     System.out.println("This is not a Jaggery app");
>>                 } else {
>>                     System.out.println("This is a Jaggery app");
>>                 }
>>             }
>>         }
>>     }
>>
>>  public boolean isJaggeryApp(StandardContext standardContext) {
>>
>>         String contextPath = standardContext.getPath();
>>         String catalinaPath = System.getProperty("catalina.base");
>>
>>         try{
>>         File file = new File(catalinaPath + File.separator + "webapps" +
>> contextPath + File.separator + "jaggery.conf");
>>         boolean exists = file.exists();
>>         }
>>         catch (Exception e){
>>             e.printStackTrace();
>>         }
>>
>>         if (!exists) {
>>             return false;
>>         } else {
>>             return true;
>>         }
>>
>>     }
>>
>> Output:
>>
>> INFO: Deploying web application directory
>> /home/nasmin/tomcat/apache-tomcat-7.0.54/webapps/demo3
>> Jun 20, 2014 10:25:40 PM org.jaggery.tomcat.listener.TomcatListener
>> lifecycleEvent
>> INFO: BEFORE START EVENT triggered.
>> This is a Jaggery app
>>
>> *Task2. How to put the jars in the tomcat that apps can see*
>>
>> After finding the jaggery app in the tomcat we need to assign some jar
>> which will be required to get new jaggery engine. So we can put the in a
>> directory in the tomcat and we need to mention that in the
>> catalina.properties like below.
>>
>>
>> common.loader=${catalina.base}/lib,${catalina.base}/lib/*.jar,${catalina.home}/lib,${catalina.home}/lib/*.jar,${catalina.base}/jaggery/lib,${catalina.base}/jaggery/lib/*.jar,${catalina.home}/jaggery/lib,${catalina.home}/jaggery/lib/*.jar
>>
>> *Task3. Register a jaggery servlet listener if it is a jaggery app *
>>
>> Afterwards we need to register our jaggery servlet listener to the
>> jaggery app. I did by adding application listener to the jaggery standard
>> context and I added application paramaeter which we had in the web.xml.
>> Here I got an exception like below. Please advice on this.
>>
>> Code:
>>
>>
>> standardContext.addApplicationListener("org.jaggeryjs.apps.JaggeryContextListener");
>>
>> ApplicationParameter applicationParameter = new ApplicationParameter();
>> applicationParameter.setName("jaggery.initializer");
>> applicationParameter.setValue("server://engines/index.js");
>> standardContext.addApplicationParameter(applicationParameter);
>>
>> ApplicationParameter applicationParameter1 = new ApplicationParameter();
>> applicationParameter1.setName("jaggery.development");
>> applicationParameter1.setValue("true");
>> standardContext.addApplicationParameter(applicationParameter1);
>>
>> ApplicationParameter applicationParameter2 = new ApplicationParameter();
>> applicationParameter2.setName("jaggery.engine.pool.max.active");
>> applicationParameter2.setValue("5000");
>> standardContext.addApplicationParameter(applicationParameter2);
>>
>> ApplicationParameter applicationParameter3 = new ApplicationParameter();
>> applicationParameter3.setName("jaggery.executor.pool.max");
>> applicationParameter3.setValue("5000");
>> standardContext.addApplicationParameter(applicationParameter3);
>>
>> Output:
>>
>> INFO: Deploying web application directory
>> /home/nasmin/tomcat/apache-tomcat-7.0.54/webapps/demo5
>> Jun 20, 2014 10:25:39 PM org.jaggery.tomcat.listener.TomcatListener
>> lifecycleEvent
>> INFO: BEFORE START EVENT triggered.
>> This is a Jaggery app
>> Jun 20, 2014 10:25:40 PM org.apache.catalina.core.StandardContext
>> listenerStart
>> SEVERE: Exception sending context initialized event to listener instance
>> of class org.jaggeryjs.apps.JaggeryContextListener
>> java.lang.NullPointerException
>>     at
>> org.jaggeryjs.apps.JaggeryContextListener.contextInitialized(JaggeryContextListener.java:27)
>>     at
>> org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4973)
>>     at
>> org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5467)
>>     at
>> org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
>>     at
>> org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
>>     at
>> org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
>>     at
>> org.apache.catalina.core.StandardHost.addChild(StandardHost.java:632)
>>     at
>> org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1247)
>>     at
>> org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1898)
>>     at
>> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
>>     at java.util.concurrent.FutureTask.run(FutureTask.java:262)
>>     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)
>>
>> Jun 20, 2014 10:25:40 PM org.apache.catalina.core.StandardContext
>> startInternal
>> SEVERE: Error listenerStart
>>
>> I attached the tomcat directory structure for the jaggery app with this
>> email. Also we have a remaining task that we need put context parameters in
>> a separate property file and make it available for the app deployment. Here
>> I hard coded those parameters. Please advice on this issue.
>>
>> Thanks in advance.
>>
>> _______________________________________________
>> Dev mailing list
>> Dev@wso2.org
>> http://wso2.org/cgi-bin/mailman/listinfo/dev
>>
>>
>
>
> --
> Dilshan Edirisuriya
> Senior Software Engineer - WSO2
> Mob: + 94 777878905
> http://wso2.com/
>
_______________________________________________
Dev mailing list
Dev@wso2.org
http://wso2.org/cgi-bin/mailman/listinfo/dev

Reply via email to