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