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