Hi Kito, I just got two days from my employer to debug it out, and frankly spoken the WAS toolchain did not work for me, I got the server up and running standalone, but I could not deploy the hello world war (ran out of time to investigate that further probably a missing config entry)
The combination with Eclipse did not work at all for me.
Have in mind I am not an expert on WAS I never really have used it.
If anyone from the IBM guys is reading this, I could need some help here. Ext-Scripting would be a great extension for WAS if it could be made to run on it.

Anyways:

But I was able to debug the thing out for WAS Liberty profile as well as Glassfish, here is the info on WAS LB (Glassfish should now work out of the box with the latest snapshot and myfaces in)

I noticed that WAS LB does not unpack the wars as other app servers do, hence the compilation failed due to the compiler not having the jars available.
What you can do is following

a) Build the latest snapshot from the trunk, should be self contained within the maven repos, so no additional work is needed mvn clean install should suffice.

b) Replace the 1.0.2 jars with the ones from the Snapshot

in your web.xml add following:

   <context-param>
<description>Some containers do not expand their war/ear files and do not return a proper classpath for the
        compilers.
For those you can set an additional classpath as comma separated list of paths so that the compiler can pick up dependencies from other directories. Wildcarding regarding jar and zip files is allowed.
        </description>

<param-name>org.apache.myfaces.extensions.scripting.ADDITIONAL_CLASSPATH</param-name>

<param-value>/whatever/myfaces20-extscript-helloworld/target/myfaces20-extscript-helloworld-1.0.4-SNAPSHOT/WEB-INF/lib/*.jar,

/whatever/myfaces20-extscript-helloworld/target/myfaces20-extscript-helloworld-1.0.4-SNAPSHOT/WEB-INF/classes</param-value>
    </context-param>


adjust the paths to your needs so that the compiler can pick up the paths with the jars as needed. This works at least under WAS liberty profile, give it a shot with the snapshot release. also one change, the servlet filter is not needed anymore, it still is in with auto setup, but you wont need the filter in your web.xml anymore, it either is picked up doing nothing or not does not matter.
(I will remove the servlet filter asap to avoid confusion)

Werner



Am 11.09.12 15:35, schrieb Kito Mann:
Hello Werner,

Have you had a chance to debug this yet?
___

Kito D. Mann | @kito99 | Author, JSF in Action
Virtua, Inc. | http://www.virtua.com | JSF/Java EE training and consulting
http://www.JSFCentral.com - JavaServer Faces FAQ, news, and info | @jsfcentral
+1 203-404-4848 x246

* Listen to the latest headlines in the JSF and Java EE newscast:
http://blogs.jsfcentral.com/JSFNewscast/
* Sign up for the JSFCentral Newsletter: http://oi.vresp.com/?fid=ac048d0e17


On Tue, Sep 4, 2012 at 3:15 PM, Werner Punz <[email protected]> wrote:
Ext-scripting registers short lived classloaders which register the newly to
be loaded classes and drops the classloaders afterwards.
(so called throw away classloaders)

there is no long lived classloader pushed into the system on top of it to
avoid container problems.

Either way thanks for all the links and debugging hints, I will have a look
at it.

Werner


Am 04.09.12 21:09, schrieb Rohit Kelapure:

For further classloader debugging you can enable the WebSphere Classloader
viewer service which will show you the exact set of classes loaded in your
app. I also suggest enabling verbose classloading.
In order to reload the class in WAS, the application classloader needs to
be unloaded and reloaded back again. Not sure how Ext-Scripting achieves
this.
If you are interested in further deep dive debugging these are the steps
...


     -

        MustGather:
http://www-01.ibm.com/support/docview.wss?uid=swg21196187
        -

           Diagnostic Trace > com.ibm.ws.classloader.*=all
           -

           JVM > Verbose class loading
           -

           JVM > Custom Properties -> ws.ext.debug=true


     -

        Verbose class loading:

http://publib.boulder.ibm.com/infocenter/wasinfo/v6r1/topic/com.ibm.websphere.nd.multipl<http://publib.boulder.ibm.com/infocenter/wasinfo/v6r1/topic/com.ibm.websphere.nd.multiplatform.doc/info/ae/ae/urun_rconfproc_jvm.html>

atform.doc/info/ae/ae/urun_rconfproc_jvm.html<http://publib.boulder.ibm.com/infocenter/wasinfo/v6r1/topic/com.ibm.websphere.nd.multiplatform.doc/info/ae/ae/urun_rconfproc_jvm.html>
        -

           Prints each class that was loaded and the absolute path of the
JAR.


     -

        ws.ext.debug goes to native_stdout.log or SystemOut.log
        -

           See also ws.ext.dirs in SystemOut.log which is the classpath
           passed into com.ibm.ws.bootstrap.ExtClassLoader (which
details of which are
           printed due to ws.ext.debug).
           -

        On the IBM JDK, use -Dibm.cl.verbose=classpattern
        -

           classpattern example: com.ibm.msg.client.commonservices.trace*
           -

              Takes any regular expression.
              -

           Normally goes to native_stdout.log, but sometimes goes to
           SystemOut.log.
           -

           Shows verbose debug for sun.misc.Launcher$ExtClassLoader and
           sun.misc.Launcher$AppClassLoader classloaders.
           -

              Remember that just because a class is not found in these two
              classloaders, does not mean it is not found at all. After
it is not found
              in AppClassLoader, it may delegate up, for example to
              com.ibm.ws.bootstrap.ExtClassLoader, and that's why
classloader trace, and
              for com.ibm.ws.bootstrap.ExtClassLoader in particular,
ws.ext.debug are
              useful.
              -

        From the DMGR, use the Class Loader Viewer under Troubleshooting.
        Drill down to a particular application in a server, and you can
export the
        table as XML to send to others.
        -

           There are two tabs, Hierarchy and Search order. View both and
           export both.
           -

           By default, the class loader viewer just shows which JARs get
           loaded into which classloader. You can also view which
classes get loaded
           into which classloader by clicking Table View > Enable the
class loader
           viewer service to view the list of classes loaded. Click here
to enable. >
           Enable service at server startup > Restart the server
           -

              This can be enabled/disabled in Application Server >
Additional
              Properties > Class loader viewer service
              -

           Common search order (#6 = EAR, #7 = WAR):
           -

              1 - JDK Extension - sun.misc.Launcher$ExtClassLoader
              -

              2 - JDK Application - sun.misc.Launcher$AppClassLoader
              -

              3 - OSGI -
              org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader
              -

              4 - Extension - com.ibm.ws.bootstrap.ExtClassLoader
              -

              5 - WAS Protection Class Loader -
              com.ibm.ws.classloader.ProtectionClassLoader
              -

              6 - Module - com.ibm.ws.classloader.CompoundClassLoader
              -

              7 - Module – com.ibm.ws.classloader.CompoundClassLoader


     -

        Background
        -



http://publib.boulder.ibm.com/infocenter/javasdk/v5r0/topic/com.ibm.java.doc.diagnostics.50/diag/understanding/class_loader.html
           -



http://publib.boulder.ibm.com/infocenter/javasdk/v5r0/topic/com.ibm.java.doc.diagnosti<http://publib.boulder.ibm.com/infocenter/javasdk/v5r0/topic/com.ibm.java.doc.diagnostics.50/diag/tools/javadump_tags_classes.html>

cs.50/diag/tools/javadump_tags_classes.html<http://publib.boulder.ibm.com/infocenter/javasdk/v5r0/topic/com.ibm.java.doc.diagnostics.50/diag/tools/javadump_tags_classes.html>


     -

        http://www-128.ibm.com/developerworks/java/library/j-dclp1/
        -

        http://www-128.ibm.com/developerworks/java/library/j-dclp2.html
        -

        http://www-128.ibm.com/developerworks/java/library/j-dclp3/
        -

        http://www-128.ibm.com/developerworks/java/library/j-dclp4/
        -

        http://www.redbooks.ibm.com/redpapers/pdfs/redp4307.pdf
        -



http://www.ibm.com/developerworks/websphere/library/techarticles/0112_deboer/deboer.html

-cheers,
Rohit


On Tue, Sep 4, 2012 at 2:38 PM, Kito Mann <[email protected]> wrote:

On Tue, Sep 4, 2012 at 2:36 PM, Rohit Kelapure <[email protected]>
wrote:

WAS 8 is free for developers. No license needed.
See  http://www.ibm.com/developerworks/downloads/ws/wasdevelopers/

What is the exact symptom of the problem ?


Basically, Ext-Scripting thinks it is re-loading classes, but it has no
affect on the runtime. It's almost like it's using the wrong class loader
or something.


-cheers,
ROhit


On Tue, Sep 4, 2012 at 2:30 PM, Werner Punz <[email protected]>

wrote:


The config looks correct to me
I guess that we will have an incompatibility with WAS then.
I have tested the code only on servlet runners like tomcat and Jetty.
I will try to get hold on a WAS 8.0 testlicense to debug that out.
Won´t happen this week anymore though due to time constraints.
Are you running in an EAR environment or simple WAR environment?



Werner

Am 04.09.12 17:02, schrieb Kito Mann:

   Hello Werner,


Thanks for looking into this. Here is the web.xml. I just realized

that

it's set to Servlet 2.5 instead of 3.0; could that be the problem?

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/**2001/XMLSchema-instance<

http://www.w3.org/2001/XMLSchema-instance>

"
       xmlns="http://java.sun.com/**xml/ns/javaee<

http://java.sun.com/xml/ns/javaee>"

xmlns:web="
http://java.sun.com/xml/ns/**javaee/web-app_2_5.xsd<

http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd>

"
       xsi:schemaLocation="http://**java.sun.com/xml/ns/javaee<

http://java.sun.com/xml/ns/javaee>

http://java.sun.com/xml/ns/**javaee/web-app_2_5.xsd<

http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd>

"
       id="WebApp_ID" version="2.5">

       <filter>
           <filter-name>scriptingFilter</**filter-name>

<filter-class>org.apache.**myfaces.extensions.scripting.**servlet.**
ScriptingServletFilter</**filter-class>
       </filter>
       <filter-mapping>
           <filter-name>scriptingFilter</**filter-name>
           <url-pattern>/faces/*</url-**pattern>
           <dispatcher>REQUEST</**dispatcher>
           <dispatcher>FORWARD</**dispatcher>
           <dispatcher>INCLUDE</**dispatcher>
           <dispatcher>ERROR</dispatcher>
       </filter-mapping>
       <context-param>
           <description> Initializes the plugins for our scripting

support

</description>
           <param-name>org.apache.**myfaces.FACES_INIT_PLUGINS</**
param-name>

<param-value>org.apache.**myfaces.extensions.scripting.**servlet.**
StartupServletContextPluginCha**inLoader</param-value>
       </context-param>

       <context-param>
           <description>Additional comma separated loader paths to
allow
direct editing on the sources directory instead of the deployment dir
</description>

<param-name>org.apache.**myfaces.extensions.scripting.**
java.LOADER_PATHS</param-name>
           <param-value>C:/workspaces/**src</param-value>
       </context-param>

       <context-param>
           <param-name>**log4jConfigLocation</param-**name>
           <param-value>/WEB-INF/log4j.**properties</param-value>
       </context-param>

       <context-param>
           <param-name>javax.faces.**PROJECT_STAGE</param-name>
           <param-value>Development</**param-value>
       </context-param>
       <context-param>

   <param-name>javax.faces.**FACELETS_REFRESH_PERIOD</**param-name>

           <param-value>1</param-value>
       </context-param>
       <context-param>
           <param-name>javax.faces.STATE_**SAVING_METHOD</param-name>
           <param-value>server</param-**value>
       </context-param>
       <context-param>

<param-name>javax.faces.**validator.DISABLE_DEFAULT_**
BEAN_VALIDATOR</param-name>
           <param-value>true</param-**value>
       </context-param>
       <context-param>

<param-name>org.apache.**myfaces.NUMBER_OF_VIEWS_IN_**
SESSION</param-name>
           <param-value>25</param-value>
       </context-param>
       <context-param>
           <param-name>javax.faces.**FACELETS_LIBRARIES</param-**name>
           <param-value>/WEB-INF/custom.**taglib.xml</param-value>
       </context-param>
       <context-param>

   <param-name>javax.faces.**VALIDATE_EMPTY_FIELDS</param-**name>

           <param-value>true</param-**value>
       </context-param>
       <context-param>

<param-name>javax.faces.**PARTIAL_STATE_SAVING</param-**name>
           <param-value>true</param-**value>
       </context-param>

       <context-param>
           <param-name>primefaces.THEME</**param-name>
           <param-value>none</param-**value>
       </context-param>

       <context-param>
           <param-name>primefaces.SUBMIT<**/param-name>
           <param-value>partial</param-**value>
       </context-param>

       <context-param>

<param-name>org.apache.**myfaces.SERIALIZE_STATE_IN_**
SESSION</param-name>
           <param-value>false</param-**value>
       </context-param>
       <context-param>



<param-name>org.apache.**myfaces.COMPRESS_STATE_IN_**SESSION</param-name>

           <param-value>false</param-**value>
       </context-param>
       <context-param>

<param-name>org.apache.**myfaces.NUMBER_OF_SEQUENTIAL_**
VIEWS_IN_SESSION</param-name>
           <param-value>7</param-value>
       </context-param>
       <context-param>

<param-name>org.apache.**myfaces.USE_FLASH_SCOPE_PURGE_**
VIEWS_IN_SESSION</param-name>
           <param-value>true</param-**value>
       </context-param>
       <context-param>
           <param-name>org.apache.**myfaces.ADD_RESOURCE_CLASS</**
param-name>

<param-value>org.apache.**myfaces.component.html.util.**
StreamingAddResource</param-**value>
       </context-param>
       <context-param>

   <param-name>org.apache.**myfaces.USE_ENCRYPTION</param-**name>

           <param-value>false</param-**value>
       </context-param>
       <filter>
           <display-name>LoginFilter</**display-name>
           <filter-name>LoginFilter</**filter-name>
           <filter-class>

gov.nh.dhhs.newheights.**presentation.framework.**
application.filter.LoginFilter
           </filter-class>
       </filter>
       <filter-mapping>
           <filter-name>LoginFilter</**filter-name>
           <servlet-name>Faces Servlet</servlet-name>
       </filter-mapping>
       <listener>
           <listener-class>

org.apache.myfaces.webapp.**StartupServletContextListener<**
/listener-class>
       </listener>
       <servlet>
           <servlet-name>Faces Servlet</servlet-name>
           <servlet-class>javax.faces.**webapp.FacesServlet</servlet-**
class>
           <load-on-startup>1</load-on-**startup>
       </servlet>
       <servlet-mapping>
           <servlet-name>Faces Servlet</servlet-name>
           <url-pattern>/faces/*</url-**pattern>
       </servlet-mapping>
       <servlet-mapping>
           <servlet-name>Faces
               Servlet
           </servlet-name>
           <url-pattern>*.jsf</url-**pattern>
       </servlet-mapping>
       <servlet-mapping>
           <servlet-name>Faces Servlet</servlet-name>
           <url-pattern>*.faces</url-**pattern>
       </servlet-mapping>
       <servlet-mapping>
           <servlet-name>Faces Servlet</servlet-name>
           <url-pattern>*.xhtml</url-**pattern>
       </servlet-mapping>
       <mime-mapping>
           <extension>png</extension>
           <mime-type>image/png</mime-**type>
       </mime-mapping>
       <login-config>
           <auth-method>FORM</auth-**method>
           <realm-name>developinjava</**realm-name>
           <form-login-config>
               <form-login-page>/login.xhtml<**/form-login-page>
               <form-error-page>/error.jspx</**form-error-page>
           </form-login-config>
       </login-config>
       <error-page>
           <exception-type>java.lang.**Exception</exception-type>
           <location>/faces/error.xhtml</**location>
       </error-page>
       <error-page>
           <error-code>500</error-code>
           <location>/faces/error.xhtml</**location>
       </error-page>
       <session-config>
           <session-timeout>30</session-**timeout>
       </session-config>
</web-app>
___

Kito D. Mann | @kito99 | Author, JSF in Action
Virtua, Inc. | http://www.virtua.com | JSF/Java EE training and
consulting
http://www.JSFCentral.com - JavaServer Faces FAQ, news, and info |
@jsfcentral
+1 203-404-4848 x246

* Listen to the latest headlines in the JSF and Java EE newscast: *
http://blogs.jsfcentral.com/**JSFNewscast/*<

http://blogs.jsfcentral.com/JSFNewscast/*>

* Sign up for the JSFCentral Newsletter: http://oi.vresp.com/?fid=**
ac048d0e17 <http://oi.vresp.com/?fid=ac048d0e17>



On Mon, Sep 3, 2012 at 7:59 AM, Werner Punz <[email protected]>
wrote:

   Am 03.09.12 13:52, schrieb Werner Punz:


   Am 31.08.12 21:44, schrieb Kito Mann:


    I'm trying to get MyFaces Extensions-Scripting running on RAD 8.0

with


WAS
8.0 on Win 7 (no this isn't my choice of tools...) The goal is to

use

the
dynamic Java class loading to avoid the hideously long WAS publish
times.
For the most part, everything is working fine now, and

Ext-Scripting

notices when the class has changed and outputs the full list of

classes

that are being loaded to the console. Unfortunately, the changes

aren't

being picked up by the application. I've tried several different
scenarios
(using a specific LOADER_PATH, the default WEB-INF/java path,

changing

the
publishing settings, turning Build Automatically on or off, etc.),

but

I
haven't had any luck. Perhaps WAS is doing something different at

the

classloader level than Ext-Scripting expects? Any ideas?
___

Kito D. Mann | @kito99 | Author, JSF in Action
Virtua, Inc. | http://www.virtua.com | JSF/Java EE training and
consulting
http://www.JSFCentral.com - JavaServer Faces FAQ, news, and info |
@jsfcentral
+1 203-404-4848 x246

* Listen to the latest headlines in the JSF and Java EE newscast: *
http://blogs.jsfcentral.com/****JSFNewscast/*<

http://blogs.jsfcentral.com/**JSFNewscast/*>

<http://blogs.**jsfcentral.com/JSFNewscast/*<

http://blogs.jsfcentral.com/JSFNewscast/*>


* Sign up for the JSFCentral Newsletter:
http://oi.vresp.com/?fid=****ac048d0e17<

http://oi.vresp.com/?fid=**ac048d0e17>

<http://oi.vresp.**com/?fid=ac048d0e17<

http://oi.vresp.com/?fid=ac048d0e17>



    Mhh Hi Kito, currently Ext-Scripting is not tested on WAS,

normally

it

should be picked up, normally the files should be picked up as soon

as

you have the loader path set or WEB-INF/java is set.
Sorry for not having been able to test Ext-Scripting on the big

irons

currently.


    Also I forgot, can you post your web.xml configuration?

You might have missed the init plugin for myfaces.


Werner















Reply via email to