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 >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>> >>>>> >>>>> >>>> >>> >> > >

