JSP class loader

          Hi,
          I have a static block within a JSP page that get executed twice when it's being executed!
          Based on the output, you can see that it's being loaded by two separated class loaders:
          'weblogic.utils.classloaders.RecursiveReloadOnModifyClassLoader$Slave' and 'weblogic.servlet.jsp.OneOffJspLoader'.
          Can anyone shed some light on this issue? I can see that this might cause a lot
          of problem if the logic relies on the static block only executing once.
          thanks,
          -vu
          /** Code starts here **/
          <%!
          static
               System.out.println("\n\nThis is the static block!!!!");
               try {
          System.out.println("Static classloader: " +
          Class.forName("jsp_servlet._helloworld").getClassLoader().getClass().getName()
          + "\n\n");
               catch (java.lang.ClassNotFoundException cne) { }
          %>
          <%
               System.out.println("Hello World.");
               System.out.println("Class name: " + this.getClass().getName());
               System.out.println("Class loader: " +
          page.getClass().getClassLoader().getClass().getName());
          %>
          /** code ends here **/
          /** Program's Output to Stdout **/
          This is the static block!!!!
          Static classloader: weblogic.utils.classloaders.RecursiveReloadOnModifyClassLoader$Slave
          This is the static block!!!!
          Static classloader: weblogic.servlet.jsp.OneOffJspLoader
          Hello World.
          Class name: jsp_servlet._helloworld
          Class loader: weblogic.servlet.jsp.OneOffJspLoader
          /** End OUtput **/
          

          Well, I wouldn't say expected - obviously this poster (and others)
          don't expect it, and correct is debatable.
          Why in the *&^%* is it necessary to load the class twice? And I
          don't mean two hours apart either - when you hit a JSP for the
          first time, it gets loaded twice - one right after the other.
          This wastes time and memory. When the JVMs and WLS clusters are
          failing (and they are) because of too much class loading - it is
          a big problem.
          Mike
          "Cameron Purdy" <[email protected]> wrote:
          >Don't rely on static code only being executed once. What
          >you are seeing is
          >not only legal, it is expected and correct behavior.
          >
          >BTW - don't put static blocks in your JSP page. Use lazy
          >initializers that
          >store the result in app scope if you have to.
          >
          >Peace,
          >
          >--
          >Cameron Purdy
          >Tangosol, Inc.
          >http://www.tangosol.com
          >+1.617.623.5782
          >WebLogic Consulting Available
          >
          >
          >"Vu Nguyen" <[email protected]> wrote in message
          >news:[email protected]...
          >>
          >> Hi,
          >>
          >> I have a static block within a JSP page that get executed
          >twice when it's
          >being executed!
          >> Based on the output, you can see that it's being loaded
          >by two separated
          >class loaders:
          >> 'weblogic.utils.classloaders.RecursiveReloadOnModifyClassLoader$Slave'
          >and
          >'weblogic.servlet.jsp.OneOffJspLoader'.
          >> Can anyone shed some light on this issue? I can see
          >that this might
          >cause a lot
          >> of problem if the logic relies on the static block only
          >executing once.
          >>
          >> thanks,
          >> -vu
          >>
          >>
          >>
          >> /** Code starts here **/
          >> <%!
          >> static
          >> {
          >> System.out.println("\n\nThis is the static block!!!!");
          >> try {
          >> System.out.println("Static classloader:
          >" +
          >>
          >Class.forName("jsp_servlet._helloworld").getClassLoader().getClass().getName
          >()
          >> + "\n\n");
          >> }
          >> catch (java.lang.ClassNotFoundException cne) { }
          >> }
          >> %>
          >>
          >> <%
          >> System.out.println("Hello World.");
          >> System.out.println("Class name: " + this.getClass().getName());
          >> System.out.println("Class loader: " +
          >> page.getClass().getClassLoader().getClass().getName());
          >> %>
          >> /** code ends here **/
          >>
          >>
          >> /** Program's Output to Stdout **/
          >> This is the static block!!!!
          >> Static classloader:
          >weblogic.utils.classloaders.RecursiveReloadOnModifyClassLoader$Slave
          >>
          >>
          >>
          >>
          >> This is the static block!!!!
          >> Static classloader: weblogic.servlet.jsp.OneOffJspLoader
          >>
          >>
          >> Hello World.
          >> Class name: jsp_servlet._helloworld
          >> Class loader: weblogic.servlet.jsp.OneOffJspLoader
          >>
          >> /** End OUtput **/
          >
          >
          

Similar Messages

  • Jsp on iplanet 6.0 sp7 error: unable to load jsp class

    I am having trouble to install astraweb on iplanet with following error
    [06/Apr/2005:08:46:38] info (21397): WebApp service: uri = /astraweb/ contextPath = /astraweb servletPath = /index.jsp pathInfo = null servletName = jsp
    [06/Apr/2005:08:46:38] info (21397): JSP11 Log:JspEngine --> /index.jsp
    [06/Apr/2005:08:46:38] info (21397): JSP11 Log: ServletPath: /index.jsp
    [06/Apr/2005:08:46:38] info (21397): JSP11 Log: PathInfo: null
    [06/Apr/2005:08:46:38] info (21397): JSP11 Log: RealPath: /opt/iplanet60sp7/docs/astraweb/index.jsp
    [06/Apr/2005:08:46:38] info (21397): JSP11 Log: RequestURI: /astraweb/
    [06/Apr/2005:08:46:38] info (21397): JSP11 Log: QueryString: null
    [06/Apr/2005:08:46:38] info (21397): JSP11 Log:Classpath according to the Servlet Engine is: /opt/iplanet60sp7/docs/astraweb/WEB-INF/classes:/opt/iplanet60sp7/docs/astraweb/WEB-INF/lib/Basej4.jar:/opt/iplanet60sp7/docs/astraweb/WEB-INF/lib/commons-fileupload-1.0.jar:/opt/iplanet60sp7/docs/astraweb/WEB-INF/lib/hsi.jar:/opt/iplanet60sp7/docs/astraweb/WEB-INF/lib/net.jar:/opt/iplanet60sp7/docs/astraweb/WEB-INF/lib/oreilly.jar:
    [06/Apr/2005:08:46:38] info (21397): JSP11 Log:unable to load jsp class: jsps.index_jsp
    [06/Apr/2005:08:46:38] failure (21397): Internal error: exception thrown from the servlet service function (uri=/astraweb/): java.lang.NullPointerException, Stack: java.lang.NullPointerException
    at org.apache.jasper.servlet.JspServlet$JspServletWrapper.isJspFileModified(JspServlet.java:231)
    at org.apache.jasper.servlet.JspServlet$JspServletWrapper.loadJSP(JspServlet.java:199)
    at org.apache.jasper.servlet.JspServlet$JspServletWrapper.access$4(JspServlet.java:171)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:486)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:596)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
    at com.iplanet.server.http.servlet.NSServletRunner.invokeServletService(NSServletRunner.java:919)
    at com.iplanet.server.http.servlet.WebApplication.service(WebApplication.java:1058)
    at com.iplanet.server.http.servlet.NSServletRunner.ServiceWebApp(NSServletRunner.java:981)
    Any idea? Thanks

    In the course of your troubleshooting to date, have you worked through the following document, Jeff?
    iTunes for Windows: "Unable to load data class" or "Unable to load provider data" sync services alert

  • Weblogic Class Loader issues.

    Hi all!
    Let me explain my problem.
    I have an EJB which has in its same Java package some support classes
    & also a startup class. I created an EJB jar file (containing the home,
    remote, bean, the deployment descriptors & the container generated stubs)
    for deployment. I also compiled all the support classes & the startup class
    into the /weblogic/myserver/serverclasses directory. I also added the
    required entries in the weblogic.properties file for the startup class.
    Now the problem is that the support classes & the startup class contain
    methods & constructors which have package level access (i.e the default
    access in Java). At runtime, when my bean tries to access one of these
    methods, an IllegalAccessException is thrown.
    I understand that this exception is thrown when one tries to access a
    method which should not be accessed (like private/protected/cross-package
    access). However, both the EJB & these classes are in the same package.
    So this should not be thrown.
    Now the next thing I thought is that the EJB & the support classes are
    being loaded by 2 different classloaders. I guess the classes under
    /weblogic/myserver/serverclasses are being loaded by the WebLogic
    Server ClassLoader & the EJB bean classes are being loaded by the
    specialized EJB ClassLoader.
    Now my question is,
    1) Is it the case that the WebLogic Server does not recognize that the
    EJB Bean class is in the same package as the support classes because
    they are loaded by 2 separate class loaders? Please note that the EJB
    jar file does not contain any support classes - so there is no
    duplicate classes here.
    2) Is this a bug?
    3) What should I do to prevent this problem?
    Some workarounds that I have done are:
    1) Copied the Bean.class (implementation class of EJB bean) into the
    serverclasses directory. Now the server does not throw any
    IllegalAccessException. -- This, however, does not appeal as a solution
    since it looks like the Bean class is now being loaded by the WebLogic
    Class Loader instead of from the EJB jar file.
    2) I changed all the default package access methods to public methods.
    Works like a charm. -- Problem is that this is a third party set of classes
    which I would like to avoid modifying.
    Hope this is not too confusing. Please let me know if you need any further info.
    Thanks much in advance,
    --Das

    You have to tell WLAS where to load your new classes. You can change
              workingDir of your JSP configuration in weblogic.properties to point to your
              new class directory.
              Cheers - Wei
              Hyung-Jin Kim <[email protected]> wrote in message
              news:[email protected]..
              > It seems that if I compile a class that a JSP uses while Weblogic is
              > running, Weblogic's class loader has this nasty habit of caching/writing
              > the class that already has loaded into memory into:
              >
              > weblogic/myServer/classfiles
              >
              > Weblogic then refers to the older class file under the above directory
              > when the server is started again. Is there any way to turn this "class
              > loader caching" off in Weblogic? Thanks!
              >
              > -hjk
              >
              

  • Weblogic Class Loading issue

    Note: I am not sure what is the best suitable subject for this issue.
    Stack Trace:
    Error 1)
    &lt;Dec 30, 2011 11:02:51 AM GMT+05:30&gt; &lt;Error&gt; &lt;HTTP&gt; &lt;BEA-101017&gt; &lt;[ServletContext@29472630[app:EM11X module:Web path:/Web spec-version:2.5], request: weblogic.servlet.internal.ServletRequestImpl@14d05d1[
    POST /Web/GenerateMealPlanAction.do HTTP/1.1
    Via: 1.1 INDCHN-MGMT01
    Cookie: org.ditchnet.jsp.tabs:CommercialFormulaTabs=; org.ditchnet.jsp.tabs:KitchenTabs=; JSESSIONID=sZQFT9MJQc6vS6MCSXtdjWwSTLCcG6nqL12Fdyj1NFHcp4WnpkCB!1348500068
    Referer: http://130.78.88.83:7001/Web/GenerateMealPlanAction.do?vo.viewCode=generateMealPlanFrame&method=1&&menu_id=DS_DFLT&module_id=DS&function_id=DS_GEN_MEAL_PLAN&function_name=Generate%20Meal%20Plan&function_type=R&access=YYYYN&desktopFlag=N&vo.functionId=DS_GEN_MEAL_PLAN
    Content-Type: application/x-www-form-urlencoded
    User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; InfoPath.1)
    Accept: image/gif, image/jpeg, image/pjpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*
    Accept-Language: en-us
    Pragma: no-cache
    Connection: Keep-Alive
    Content-Length: 488
    ]] Root cause of ServletException.
    java.lang.IllegalArgumentException: Cannot invoke com.vo.GenerateMealPlanVO.setServingDate on bean class 'class com.vo.GenerateMealPlanVO' - argument type mismatch - had objects of type &quot;java.lang.String&quot; but expected signature &quot;com.core.util.Date&quot;
         at org.apache.commons.beanutils.PropertyUtilsBean.invokeMethod(PropertyUtilsBean.java:2181)
         at org.apache.commons.beanutils.PropertyUtilsBean.setSimpleProperty(PropertyUtilsBean.java:2141)
         at org.apache.commons.beanutils.PropertyUtilsBean.setNestedProperty(PropertyUtilsBean.java:1948)
         at org.apache.commons.beanutils.PropertyUtilsBean.setProperty(PropertyUtilsBean.java:2054)
         at org.apache.commons.beanutils.BeanUtilsBean.setProperty(BeanUtilsBean.java:1015)
         Truncated. see log file for complete stacktrace
    Caused By: java.lang.IllegalArgumentException: argument type mismatch
         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
         at java.lang.reflect.Method.invoke(Method.java:597)
         at org.apache.commons.beanutils.PropertyUtilsBean.invokeMethod(PropertyUtilsBean.java:2155)
         Truncated. see log file for complete stacktrace
    &gt;
    Error 2)
    &lt;Dec 30, 2011 11:11:19 AM GMT+05:30&gt; &lt;Error&gt; &lt;HTTP&gt; &lt;INDCHN-EPORT01&gt; &lt;AdminServer&gt; &lt;[ACTIVE] ExecuteThread: '0' for queue: 'weblogic.kernel.Default (self-tuning)'&gt; &lt;&lt;WLS Kernel&gt;&gt; &lt;&gt; &lt;&gt; &lt;1325223679258&gt; &lt;BEA-101017&gt; &lt;[ServletContext@29472630[app:EM11X module:Web path:/Web spec-version:2.5], request: weblogic.servlet.internal.ServletRequestImpl@1da8bfe[
    POST /Web/LookupAction.do HTTP/1.1
    Via: 1.1 INDCHN-MGMT01
    Cookie: org.ditchnet.jsp.tabs:CommercialFormulaTabs=; org.ditchnet.jsp.tabs:KitchenTabs=; JSESSIONID=GhG4T9TJ0ytD8dhRSGBFv2c3v1hNLftTTCJQHp6Qn9C5SnMGTVYF!1348500068
    Referer: http://130.78.88.83:7001/Web/core/lookup/jsp/LookupCriteria.jsp?undefined
    Content-Type: application/x-www-form-urlencoded
    User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; InfoPath.1)
    Accept: */*
    Accept-Language: en-us
    Pragma: no-cache
    Connection: Keep-Alive
    Content-Length: 304
    ]] Root cause of ServletException.
    java.lang.ClassCastException: [Ljava.lang.String; cannot be cast to java.lang.String
         at com.lookup.pojo.web.LookupAction.doActionQuery(LookupAction.java:107)
         at com.core.pojo.web.BaseAction.execute(BaseAction.java:97)
         at org.springframework.web.struts.DelegatingActionProxy.execute(DelegatingActionProxy.java:106)
         at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:421)
         at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:226)
         at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1164)
         at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:415)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
         at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)
         at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
         at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:300)
         at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:183)
         at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3717)
         at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3681)
         at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
         at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120)
         at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2277)
         at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2183)
         at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1454)
         at weblogic.work.ExecuteThread.execute(ExecuteThread.java:209)
         at weblogic.work.ExecuteThread.run(ExecuteThread.java:178)
    &gt;
    [b]Analysis:
    Migrating J2EE Application from Oracle 10g Application Server to Oracle 11g Weblogic Server. I am stuck with above two issues. This issue not present while running in Oracle 10g Application Server
    1) I was thinking it is something to do with JSTL versions and the below command is executed to make the JSTL version to jstl 1.1.2
    java weblogic.Deployer -adminurl t3://localhost:7001 -user weblogic -password weblogic -deploy -library D:/Oracle/Middleware/wlserver_10.3/common/deployable-libraries/jstl-1.1.2.war
    The problem remains same.
    2) Now &lt;wls:prefer-web-inf-classes&gt;true&lt;/wls:prefer-web-inf-classes&gt; is added to weblogic.xml to make the Web application to load application specific libraries from WEB-INF/lib directory.
    The problem remains same.
    3) I checked Class Loader Analysis Tool and found conflicting classes and based on CAT recommendation the below list is added to weblogic.xml and &lt;wls:prefer-web-inf-classes&gt;true&lt;/wls:prefer-web-inf-classes&gt; is removed since both cannot co-exist.
         &lt;wls:prefer-application-packages&gt;
                   &lt;wls:package-name&gt;antlr.*&lt;/wls:package-name&gt;
                   &lt;wls:package-name&gt;antlr.collections.*&lt;/wls:package-name&gt;
                   &lt;wls:package-name&gt;antlr.collections.impl.*&lt;/wls:package-name&gt;
                   &lt;wls:package-name&gt;antlr.debug.misc.*&lt;/wls:package-name&gt;
                   &lt;wls:package-name&gt;com.mysql.jdbc.*&lt;/wls:package-name&gt;
                   &lt;wls:package-name&gt;javax.ejb.*&lt;/wls:package-name&gt;
                   &lt;wls:package-name&gt;javax.ejb.spi.*&lt;/wls:package-name&gt;
                   &lt;wls:package-name&gt;javax.enterprise.deploy.*&lt;/wls:package-name&gt;
                   &lt;wls:package-name&gt;javax.jms.*&lt;/wls:package-name&gt;
                   &lt;wls:package-name&gt;javax.management.j2ee.*&lt;/wls:package-name&gt;
                   &lt;wls:package-name&gt;javax.resource.*&lt;/wls:package-name&gt;
                   &lt;wls:package-name&gt;javax.resource.cci.*&lt;/wls:package-name&gt;
                   &lt;wls:package-name&gt;javax.resource.spi.*&lt;/wls:package-name&gt;
                   &lt;wls:package-name&gt;javax.security.jacc.*&lt;/wls:package-name&gt;
                   &lt;wls:package-name&gt;javax.servlet.*&lt;/wls:package-name&gt;
                   &lt;wls:package-name&gt;javax.servlet.http.*&lt;/wls:package-name&gt;
                   &lt;wls:package-name&gt;javax.servlet.jsp.*&lt;/wls:package-name&gt;
                   &lt;wls:package-name&gt;javax.transaction.*&lt;/wls:package-name&gt;
                   &lt;wls:package-name&gt;javax.transaction.xa.*&lt;/wls:package-name&gt;
                   &lt;wls:package-name&gt;javax.xml.*&lt;/wls:package-name&gt;
                   &lt;wls:package-name&gt;javax.xml.datatype.*&lt;/wls:package-name&gt;
                   &lt;wls:package-name&gt;javax.xml.namespace.*&lt;/wls:package-name&gt;
                   &lt;wls:package-name&gt;javax.xml.parsers.*&lt;/wls:package-name&gt;
                   &lt;wls:package-name&gt;javax.xml.registry.*&lt;/wls:package-name&gt;
                   &lt;wls:package-name&gt;javax.xml.transform.*&lt;/wls:package-name&gt;
                   &lt;wls:package-name&gt;javax.xml.validation.*&lt;/wls:package-name&gt;
                   &lt;wls:package-name&gt;javax.xml.xpath.*&lt;/wls:package-name&gt;
                   &lt;wls:package-name&gt;oracle.core.lmx.*&lt;/wls:package-name&gt;
                   &lt;wls:package-name&gt;oracle.core.lvf.*&lt;/wls:package-name&gt;
                   &lt;wls:package-name&gt;oracle.jdbc.*&lt;/wls:package-name&gt;
                   &lt;wls:package-name&gt;oracle.jdbc.aq.*&lt;/wls:package-name&gt;
                   &lt;wls:package-name&gt;oracle.jdbc.connector.*&lt;/wls:package-name&gt;
                   &lt;wls:package-name&gt;oracle.jdbc.dcn.*&lt;/wls:package-name&gt;
                   &lt;wls:package-name&gt;oracle.jdbc.diagnostics.*&lt;/wls:package-name&gt;
                   &lt;wls:package-name&gt;oracle.jdbc.driver.*&lt;/wls:package-name&gt;
                   &lt;wls:package-name&gt;oracle.jdbc.internal.*&lt;/wls:package-name&gt;
                   &lt;wls:package-name&gt;oracle.jdbc.oci.*&lt;/wls:package-name&gt;
                   &lt;wls:package-name&gt;oracle.jdbc.oracore.*&lt;/wls:package-name&gt;
                   &lt;wls:package-name&gt;oracle.jdbc.pool.*&lt;/wls:package-name&gt;
                   &lt;wls:package-name&gt;oracle.jdbc.rowset.*&lt;/wls:package-name&gt;
                   &lt;wls:package-name&gt;oracle.jdbc.util.*&lt;/wls:package-name&gt;
                   &lt;wls:package-name&gt;oracle.jdbc.xa.*&lt;/wls:package-name&gt;
                   &lt;wls:package-name&gt;oracle.jpub.runtime.*&lt;/wls:package-name&gt;
                   &lt;wls:package-name&gt;oracle.jsp.provider.*&lt;/wls:package-name&gt;
                   &lt;wls:package-name&gt;oracle.net.ano.*&lt;/wls:package-name&gt;
                   &lt;wls:package-name&gt;oracle.net.aso.*&lt;/wls:package-name&gt;
                   &lt;wls:package-name&gt;oracle.net.jdbc.*&lt;/wls:package-name&gt;
                   &lt;wls:package-name&gt;oracle.net.jndi.*&lt;/wls:package-name&gt;
                   &lt;wls:package-name&gt;oracle.net.ns.*&lt;/wls:package-name&gt;
                   &lt;wls:package-name&gt;oracle.net.nt.*&lt;/wls:package-name&gt;
                   &lt;wls:package-name&gt;oracle.net.resolver.*&lt;/wls:package-name&gt;
                   &lt;wls:package-name&gt;oracle.security.o3logon.*&lt;/wls:package-name&gt;
                   &lt;wls:package-name&gt;oracle.security.o5logon.*&lt;/wls:package-name&gt;
                   &lt;wls:package-name&gt;oracle.sql.*&lt;/wls:package-name&gt;
                   &lt;wls:package-name&gt;oracle.sql.converter.*&lt;/wls:package-name&gt;
                   &lt;wls:package-name&gt;org.apache.commons.*&lt;/wls:package-name&gt;
                   &lt;wls:package-name&gt;org.apache.derby.*&lt;/wls:package-name&gt;
                   &lt;wls:package-name&gt;org.apache.oro.*&lt;/wls:package-name&gt;
                   &lt;wls:package-name&gt;org.apache.xerces.*&lt;/wls:package-name&gt;
                   &lt;wls:package-name&gt;org.apache.xmlcommons.*&lt;/wls:package-name&gt;
                   &lt;wls:package-name&gt;org.gjt.mm.*&lt;/wls:package-name&gt;
                   &lt;wls:package-name&gt;org.joda.time.*&lt;/wls:package-name&gt;
                   &lt;wls:package-name&gt;org.w3c.dom.*&lt;/wls:package-name&gt;
                   &lt;wls:package-name&gt;org.xml.sax.*&lt;/wls:package-name&gt;
              &lt;/wls:prefer-application-packages&gt;
    The problem remains same.
    Your help is greatly appreciated as I am stuck with this issue.

    No I cannot ignore this error while deplyment. I'm not able to deploy the war.
    More ovet this needs to be working as during startup, the servlet loads some xml files and convert into tables for the kiosk in the airport to be working.
    Edited by: [email protected] on Mar 27, 2009 12:24 PM

  • Class loader question

    Hi,
    I got NoClassDefFoundError and when I use ClasspathDebug jsp it shows that the class is loaded by "java.net.URLClassLoader". I put the jar file containing the class in <domain>/lib directory. According to docs the jar under <domain>/lib should be loaded by system class loader. what is "java.net.URLClassLoader"? why isn't system loader loading my class? I am using wls91. Thanks
    weblogic.servlet.jsp.TagFileClassLoader
    weblogic.utils.classloaders.ChangeAwareClassLoader
    weblogic.utils.classloaders.GenericClassLoader
    weblogic.utils.classloaders.GenericClassLoader
    java.net.URLClassLoader
    sun.misc.Launcher$AppClassLoader
    sun.misc.Launcher$ExtClassLoader
    Bootstrap classloader

    I'm not sure from reply 2 whether you figured out what's going on or not. It sounds like you did, but just in case...
    The null/primordial/bootstrap class loader loads classes in the core API--stuff it finds in the ext dir(s?) (e.g. rt.jar)--Object, String, java.util.*, java.sql.*, etc. It has no parent. It is the root of the normal delegating classloader tree.
    The system classloader is the one that uses classpath to load your classes and 3rd party classes. Everything not in the core API, as long as neither you nor those other classes explicitly specify a different classloader.
    The way the normal delegation mechanism works is that a request to load a class is first passed to the loader that loaded the current class. This loader first gives its parent a chance to load it, and so on up the tree to the primordial loader.
    Once it hits the root (null/primordial/bootstrap), that classloader tries to load it. If it can't (and the primordial loader can't, in fact, load your class, since it's not in the ext dir), then it hands it back to its child. This continues down the line, with the parent getting first shot at loading, then the child trying if the parent fails.
    The primordial loader (which loaded the JdbcOdbcDriver) can't load your class. It hands it back to its child--the system classloader--which can and does load it, using classpath.
    I hope that answers any lingering questions, if there were in fact such questions.

  • Jsp configuration load on start up in web.xml

    Is my configuration for jsp correct.i want my JSP to be loaded after servlet initialised.What changes i need to do to make it work on any server..like tomcat or websphere
    <!-- JSP CONFIGURATION -->
    <jsp-file>/hello.jsp</jsp-file>
    <load-on-startup>2</load-on-startup>
    <!-- SERVLET CONFIGURATION -->
    <servlet>
    <servlet-name>MyServlet</servlet-name>
    <servlet-class>com.example.HelloServlet</servlet-class>
    <!-- or -->
    <jsp-file>/hello.jsp</jsp-file>
    <!-- optional and one only, greater value than 0 means don't wait for the first request load it beforehand -->
    <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
    <servlet-name>MyServlet</servlet-name>
    <url-pattern>*.do</url-pattern>
    </servlet-mapping>
    Message was edited by:
    raghuveer_vellanki

    when you give a load on startup value as 1 for a servlet declaration in the web.xml the Server calls your servlet when u start it, and calls means the server loads your servlet anc calls the init method. so u may do whatever you like in init method like starting some other application, setting some parameters , etc

  • New to dynamic class loading - could you help me?

    Hi all!
    Thanks so much for taking a minute to read my post.
    I am a rookie at java and programming.
    I have a program that needs to load a class (or java file) dynamically during runtime. (At least I think that is what it needs to do.)
    I want the user of the program to be able to specify a .java or a .class file either somewhere on the local disk or network, but not necessarily in the same location as the program itself. Once that file is selected, I would like the program to be able to use that file as if it were a .class file created in the working directory when the program was compiled and created.
    I have read a lot of the forums, and I think I need to write my own class loader. I tried creating a class loader, and the code is shown below. (I borrowed this code from some of the other forums I've read.)
    Here is my problem.
    1. Should I be trying to extend the ClassLoader class? Am I on the right track?
    2. If I am on the right track, should I require the user of my program to select a previously compiled ".class" file? Or should I ask them to indicate a ".java" file, and try to compile the java file with the program?
    3. I'm sure that if the above two questions are answered, the solution to this problem will become obvious. But for clarity, I should mention that with the current code (below), I keep getting a java.lang.NoClassDefFoundError inside the class FileClassLoader at the line:
    c = defineClass (classname, buff, 0, buff.length); Obviously, I am not providing the right information to this FileClassLoader in order to create the class. Can you help me out?
    Thank you in advance!
    I really appreciate it!
    Best Regards,
    Julia
    class SampleClass
      public void sampleMethod()
       final JFileChooser fc = new JFileChooser();
       int returnVal = fc.showOpenDialog(optionPane);
       if (returnVal == JFileChooser.APPROVE_OPTION) {
         File file = fc.getSelectedFile();
         try
            FileClassLoader loader = new FileClassLoader(file);
               Class cl = loader.loadClass(file.getName(),false);
            }catch ( ClassNotFoundException e ) {
           System.out.println("ClassNotFoundException");
         }catch (IllegalAccessException e) {
           System.out.println("IllegalAccess");      
         }catch( InstantiationException e) {
           System.out.println("Can't Instantiate That");
    class FileClassLoader extends ClassLoader
         private File file;
         public FileClassLoader (File thisFile)
              this.file = thisFile;
         protected synchronized Class loadClass(String s, boolean bool) throws ClassNotFoundException
              Class c = null;
              try {
                   int size = (int)file.length();
                   byte buff[] = new byte[size];
                   FileInputStream fis = new FileInputStream(file);
                   DataInputStream dis = new DataInputStream (fis);
                   dis.readFully (buff);
                   dis.close();
                   String classname = null;
                   String filename = file.getName();
                   int i = filename.lastIndexOf('.');
                   if(i>0 && i<filename.length()-1)
                        classname = filename.substring(0,i);
                   c = defineClass (classname, buff, 0, buff.length);
                   resolveClass (c);
              } catch (java.io.IOException e) {
                   e.printStackTrace();
              return c;
    }

    Hi!
    If you really need to do that, you can give a look at my previous post at:
    http://forum.java.sun.com/thread.jsp?forum=4&thread=285674
    You can play with the code to suit your needs.
    Hope this helps.

  • Weblogic Class Loader caching/writing classes to weblogic/myServer/classfiles

    It seems that if I compile a class that a JSP uses while Weblogic is
              running, Weblogic's class loader has this nasty habit of caching/writing
              the class that already has loaded into memory into:
              weblogic/myServer/classfiles
              Weblogic then refers to the older class file under the above directory
              when the server is started again. Is there any way to turn this "class
              loader caching" off in Weblogic? Thanks!
              -hjk
              

    You have to tell WLAS where to load your new classes. You can change
              workingDir of your JSP configuration in weblogic.properties to point to your
              new class directory.
              Cheers - Wei
              Hyung-Jin Kim <[email protected]> wrote in message
              news:[email protected]..
              > It seems that if I compile a class that a JSP uses while Weblogic is
              > running, Weblogic's class loader has this nasty habit of caching/writing
              > the class that already has loaded into memory into:
              >
              > weblogic/myServer/classfiles
              >
              > Weblogic then refers to the older class file under the above directory
              > when the server is started again. Is there any way to turn this "class
              > loader caching" off in Weblogic? Thanks!
              >
              > -hjk
              >
              

  • Fetching record from table and displaying in JSP while loading page -struts

    Hi all,
    I have a problem relating to struts .
    I am fetching records from database and I want to diaplay those records in corresponding fields in the jsp page.
    I am using Struts MVC Framework.
    I am giving the sample code below.
    In my action class i am giving the following code.
    String sql="Select empname from emp where empcode='1' ";
    ResultSet rs=S.executeQuery(sql);
    if(rs.next()){
    EditForm e=new EditForm();
    e.setEmpname(rs.getString(1));
    In my Action Form
    I gave setter and getter methods for Empname
    public String getEmpname() {
    return empname;
    public void setEmpname(String empname) {
    this.empname = empname;
    In my jsp gave
    <html:form method="POST" action="submitForm.do?action=1" >
    <html:text property="empname" />
    </html:form>
    The targets given are correct and it is being redirected.
    But the value is not displaying in the textbox while the jsp is loading.
    There is a record for the sql query.
    Anybody please help me out
    It is very urgent
    Thank You
    Parvathy

    Now in the following code, why are u creating a new form?
    Why dont you use the form which is input to the Action Class's execute methof?
    if(rs.next()){
    EditForm e=new EditForm();
    e.setEmpname(rs.getString(1));
    }Thanks and regards,
    Pazhanikanthan. P

  • WS 7.0 seemingly not honoring class-loader delegate="false"

    I have a JSF web application that I ship with MyFaces jars.
    I have added a sun-web.xml file in WEB-INF telling the server not to delegate class loading to its parent classloader.
    However, it seems that the server chooses to use the JSF implementation that comes with the server (lib/jsf-api.jar and lib/jsf-impl.jar).
    Of course, the exact same application worked perfectly with WS 6.1 (but JSF was not included in the server distribution).
    Is there something I am missing?

    Here is a sample index.jsp I use to determine where my classes come from.
    When I type something like "javax.faces.FactoryFinder" it finds the class in
    Classloader: sun.misc.Launcher$AppClassLoader@1ba34f2
    URL=jar:file:/C:/soft/SunWebServer7/lib/jsf-api.jar!/javax/faces/FactoryFinder.class
    This is not what I expected, since I embedded an alternate JSF implementation in my web application.
    Strangely enough, when I embed, say, ant in my webapp, it's the right class that is found, not the one in the lib/ directory on the server.
    Does JSF have a special status?
    <%@page contentType="text/html; charset=ISO-8859-1"%>
    <%@page import="java.net.URL"%>
    <%@page import="java.io.ByteArrayOutputStream"%>
    <%@page import="java.io.PrintStream"%>
    <html>
    <head>
    <title>Test Sun Server 7.0</title>
    </head>
    <body>
    Only a static text.
    <br>
    <form>Resource:<input type="text" name="classname"></input><br>
    <input type="submit"></input><br>
    </form>
    <%
          String us = "<null>";
          String c = "<null>";
          try {
            c = request.getParameter("classname");
            Class cl = Class.forName(c);
            out.println("Classloader: " + cl.getClassLoader() + "<br>");
            String[] parts = c.split("\\.");
            String small = parts[parts.length - 1];
            URL u = cl.getResource(small + ".class");
            us = u.toString();
          } catch (Throwable t) {
            ByteArrayOutputStream baos = new ByteArrayOutputStream(4096);
            PrintStream o = new PrintStream(baos);
            t.printStackTrace(o);
            o.flush();
            o.close();
            us = baos.toString();
            us = us.replaceAll("\\n", "<br>");
    %>
    <br>
    <br>
    CLASS=<%=c%><br>
    URL=<%=us%><br>
    </body>
    </html>

  • How to load a class dynamically in the current/system class loader

    I need to dynamically load a new jdbc driver jar to the current/system class loader... Please note that creating a new classloader will not help since the DriverManager refers to the systemclassloader itself.
    Restarting the application by appending the jar to its classpath will solve the problem but I want to avoid doing this.

    Did you then create a ClassLoader to load the JDBC
    driver and then install it into the system as
    directed by the JDBC specification (ie
    Class.forName(someClassName))?
    And then try to use it from a class loaded fromsome
    other ClassLoader (i.e. the system class loader)?
    If you did not try this please explain why not.O.K. I just looked at the source to
    java.sql.DriverManager. I did not know what I was
    talking about, as what I suggested above will not
    work.
    This is my new Idea:
    Create a URLClassLoader to load the JDBC driver also
    in this ClassLoader you need to place a helper class
    that does the following:
    public class Helper {
    public Driver getJDBCDriver(String driverClassName,
    String url) {
    try {
    Class.forName(driverClassName);
    Driver d = DriverManager.getDriver(url);
    return d;
    catch(Exception ex) {
    ex.printStackTrace();
    return null;
    }Now create an instance of the Helper class in the new
    ClassLoader, and call its getJDBCDriver method to get
    an instance of the driver (you will probably have to
    create an interface in the root class loader that the
    Helper implements so that you can easily call it).
    Now from the root classloader you can make calls
    directly to the returned Driver and bypass the
    DriverManager and its restrictions on cross
    ClassLoader access.
    The only catch here is that you would have to call to
    the returned Driver directly and not use the Driver
    Manager.This sounds like will work but I did not want to load DriverManager in a new classloader.. I did a hack
    I unzip the jar dynamically in a previously known location (which I included in my classpath when launching the app). The classLoader finds the class now though it did not exist when the app was launched !
    A hack of-course but works eh ..

  • Error building project using kXML2 - "Class loading error: Wrong name"

    Hi,
    I'm testing the XML-Parser KXML2 and downloaded the latest package, but the minimal version (kxml2-min.zip). I put this file into the directory "%j2mewtk%\apps\KxmlTest\lib" and wrote the lines
    import org.kxml2.io.*;
    import org.xmlpull.v1.*;
    When I try to build the project with the Wireless Toolkit (v1.04) it spits out the following error:
    Error preverifying class kxml2.io.KXmlParser
    Class loading error: Wrong name
    com.sun.kvem.ktools.ExecutionException: Preverifier returned 1
    Build failed
    I also tried the full package "kxml2.zip" but the same error occurs.
    How can I get rid of this? Thanks in advance!

    Okay, finally worked it out (hopefully). I unpacked the archive to a directory (say "%J2MEWTK%\apps\KxmlTest\tmpclasses") and then preverified them "manually":
    %J2SDK%\bin\preverify.exe -classpath "%J2MEWTK%\apps\KxmlTest\tmpclasses";"%J2MEWTK%\lib\midpapi.zip" org.kxml2.io.KXmlParser
    %J2SDK%\bin\preverify.exe -classpath "%J2MEWTK%\apps\KxmlTest\tmpclasses";"%J2MEWTK%\lib\midpapi.zip" org.xmlpull.v1.XmlPullParser
    %J2SDK%\bin\preverify.exe -classpath "%J2MEWTK%\apps\KxmlTest\tmpclasses";"%J2MEWTK%\lib\midpapi.zip" org.xmlpull.v1.XmlPullParserException
    Then I packed them again to a jar-file:
    %J2SDK%\bin\jar.exe -cvf kxml2-min.jar %J2MEWTK%\apps\KxmlTest\tmpclasses\output\.
    That was all!

  • Need help to set values from web.xml in a jsp class

    Hey :-)
    I`m trying to get value from my web.xml file into a jsp class. The problem is that the value always retur null. My web.xml file is replaced in the WEB-INF directory where should be. Here is my web.xml
    <servlet>
    <servlet-name>Html</servlet-name>
    <servlet-class>Html</servlet-class>
    <init-param>
    <param-name>html_test</param-name>
    <param-value>Value I want have in my jsp class
    </param-value>
    </init-param>
    </servlet>
    And her i my java class who don`t work:
    import javax.servlet.jsp.*;
    import javax.servlet.jsp.tagext.*;
    import javax.servlet.ServletConfig;
    public class Html extends BodyTagSupport
    String title="";
    String html_test;
    ServletConfig config;
    public void doInitBody() throws JspException
    html_test = config.getInitParameter("html_test");
    }//End of method doInitBody()
    public int doStartTag() throws JspException
    try
    JspWriter out = pageContext.getOut();
    out.print( "<HTML>\n" );
    out.print( "<HEAD><TITLE>" + title + "</TITLE></HEAD>\n" );
    out.print( "<BODY>\n" );
    out.print( "<BR><H1>" + html_test + "</H1>" );
    And here are my html_test variable return null.
    I hope somone can help me, duke dollars will be given away for the solution answer.
    paulsep

    Nothing seems to work, have change the string and rewritten the web.xml file to:
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <!DOCTYPE web-app
    PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
    "http://java.sun.com/dtd/web-app_2_3.dtd">
    <web-app>
              <context-param>
                   <param-name>html_test</param-name>
                   <param-value>Value I want have in my jsp class</param-value>
              </context-param>
    </web-app>

  • Performance issues with class loader on Windows server

    We are observing some performance issues in our application. We are Using weblogic 11g with Java6 on a windows 2003 server
    The thread dumps indicate many threads are waiting in queue for the native file methods:
    "[ACTIVE] ExecuteThread: '106' for queue: 'weblogic.kernel.Default (self-tuning)'" RUNNABLE
         java.io.WinNTFileSystem.getBooleanAttributes(Native Method)
         java.io.File.exists(Unknown Source)
         weblogic.utils.classloaders.ClasspathClassFinder.getFileSource(ClasspathClassFinder.java:398)
         weblogic.utils.classloaders.ClasspathClassFinder.getSourcesInternal(ClasspathClassFinder.java:347)
         weblogic.utils.classloaders.ClasspathClassFinder.getSource(ClasspathClassFinder.java:316)
         weblogic.application.io.ManifestFinder.getSource(ManifestFinder.java:75)
         weblogic.utils.classloaders.MultiClassFinder.getSource(MultiClassFinder.java:67)
         weblogic.application.utils.CompositeWebAppFinder.getSource(CompositeWebAppFinder.java:71)
         weblogic.utils.classloaders.MultiClassFinder.getSource(MultiClassFinder.java:67)
         weblogic.utils.classloaders.MultiClassFinder.getSource(MultiClassFinder.java:67)
         weblogic.utils.classloaders.CodeGenClassFinder.getSource(CodeGenClassFinder.java:33)
         weblogic.utils.classloaders.GenericClassLoader.findResource(GenericClassLoader.java:210)
         weblogic.utils.classloaders.GenericClassLoader.getResourceInternal(GenericClassLoader.java:160)
         weblogic.utils.classloaders.GenericClassLoader.getResource(GenericClassLoader.java:182)
         java.lang.ClassLoader.getResourceAsStream(Unknown Source)
         javax.xml.parsers.SecuritySupport$4.run(Unknown Source)
         java.security.AccessController.doPrivileged(Native Method)
         javax.xml.parsers.SecuritySupport.getResourceAsStream(Unknown Source)
         javax.xml.parsers.FactoryFinder.findJarServiceProvider(Unknown Source)
         javax.xml.parsers.FactoryFinder.find(Unknown Source)
         javax.xml.parsers.DocumentBuilderFactory.newInstance(Unknown Source)
         org.ajax4jsf.context.ResponseWriterContentHandler.<init>(ResponseWriterContentHandler.java:48)
         org.ajax4jsf.context.ViewResources$HeadResponseWriter.<init>(ViewResources.java:259)
         org.ajax4jsf.context.ViewResources.processHeadResources(ViewResources.java:445)
         org.ajax4jsf.application.AjaxViewHandler.renderView(AjaxViewHandler.java:193)
         org.apache.myfaces.lifecycle.RenderResponseExecutor.execute(RenderResponseExecutor.java:41)
         org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:140)
    On googling this seems to be an issue with java file handling on windows servers and I couldn't find a solution yet. Any recommendation or pointer is appreciated

    Hi shubhu,
    I just analyzed your partial Thread Dump data, the problem is that the ajax4jsf framework ResponseWriterContentHandler triggers internally a new instance of the DocumentBuilderFactory; every time; triggering heavy IO contention because of Class loader / JAR file search operations.
    Too many of these IO operations under heavy load will create excessive contention and severe performance degradation; regardless of the OS you are running your JVM on.
    Please review the link below and see if this is related to your problem.. This is a known issue in JBOSS JIRA when using RichFaces / ajaxJSF.
    https://issues.jboss.org/browse/JBPAPP-6166
    Regards,
    P-H
    http://javaeesupportpatterns.blogspot.com/

  • How can I make server use single class loader for several applications

    I have several web/ejb applications. These applications use some common libraries and should share instances of classes from those libraries.
    But applications are being deployed independently thus packaging all them to EAR is not acceptable.
    I suppose the problem is that each application uses separate class loader.
    How can I make AS use single class loader for a set of applications?
    Different applications depend on different libraries so I need a way that will not share library for all applications on the domain but only for some exact applications.
    When I placed common jar to *%domain%/lib* - all works. But that jar is shared between all applications on the domain.
    When I tried to place common jar to *%domain%/lib/applibs* and specified --libraries* attribute on deploying I got exception
    java.lang.ClassCastException: a.FirstDao cannot be cast to a.FirstDaoHere http://download.oracle.com/docs/cd/E19879-01/820-4336/6nfqd2b1t/index.html I read:
    If multiple applications or modules refer to the same libraries, classes in those libraries are automatically shared.
    This can reduce the memory footprint and allow sharing of static information.Does it mean that classes should be able to be casted ?

    You didn't specify which version of the application server you are using, but the config is similar as long as you know what to look for. Basically, you need to change the classloader delegation. Here's how it is done in 8.2
    http://download.oracle.com/docs/cd/E19830-01/819-4721/beagb/index.html

Maybe you are looking for