Hi,

2017-06-01 18:26 GMT+03:00 Hassan Khan <hassankhan...@gmail.com>:
>
> Any pointers to the problem .. pls... Have extended webapploader and use

Instead of extending the class loader you might consider the new Web
Application Resources feature:
http://tomcat.apache.org/tomcat-8.5-doc/config/resources.html

Regards,
Violeta

> the below function for adding jar in tomcat 6... for tomcat 8.5 the jar
are
> loading but not getting included in the classpath somehow...
> /**
>      * reflectively add a jar to the classloader. This only works when
> called after super.start() has completed.
>      */
>     private void addJar(final File jarRealFile) {
>         try {
>             final String jarPath = getFilePathRelativeToBase(jarRealFile);
>             final JarFile jarFile = new JarFile(jarRealFile);
>             final ClassLoader cl = getClassLoader();
>             if (cl instanceof WebappClassLoader) {
>                 final WebappClassLoader wcl = (WebappClassLoader) cl;
>                 final Class<?> clazz = WebappClassLoader.class;
>                 final Method addJar = clazz.getDeclaredMethod("addJar",
new
> Class[]{String.class, JarFile.class, File.class});
>                 addJar.setAccessible(true);
>                 addJar.invoke(wcl, jarPath, jarFile, jarRealFile);
>             }
>             log("added jar " + jarRealFile.getCanonicalPath());
>         }
>         catch (IOException e) {
>             log("Exception accessing jar file: " + jarRealFile + ": " +
> e.getMessage());
>         }
>         catch (SecurityException e) {
>             log("Exception finding method in WebappClassLoader to add jar
> file: " + jarRealFile + ": " + e.getMessage());
>         }
>         catch (NoSuchMethodException e) {
>             log("Exception finding method in WebappClassLoader to add jar
> file: " + jarRealFile + ": " + e.getMessage());
>         }
>         catch (IllegalArgumentException e) {
>             log("Exception calling method in WebappClassLoader to add jar
> file: " + jarRealFile + ": " + e.getMessage());
>         }
>         catch (IllegalAccessException e) {
>             log("Exception calling method in WebappClassLoader to add jar
> file: " + jarRealFile + ": " + e.getMessage());
>         }
>         catch (InvocationTargetException e) {
>             log("Exception calling method in WebappClassLoader to add jar
> file: " + jarRealFile + ": " + e.getMessage());
>         }
>     }
>
> Thanks
>
>
>
>
> On Wed, May 31, 2017 at 5:13 PM, Hassan Khan <hassankhan...@gmail.com>
> wrote:
>
> > So the precise exception is Only a type can be imported. ABC resolves
to a
> > package..
> >
> > Stacktrace is :
> >     at org.apache.jasper.compiler.DefaultErrorHandler.javacError(
> > DefaultErrorHandler.java:102)
> >     at org.apache.jasper.compiler.ErrorDispatcher.javacError(
> > ErrorDispatcher.java:212)
> >     at org.apache.jasper.compiler.JDTCompiler.generateClass(
> > JDTCompiler.java:457)
> >     at org.apache.jasper.compiler.Compiler.compile(Compiler.java:377)
> >     at org.apache.jasper.compiler.Compiler.compile(Compiler.java:349)
> >     at org.apache.jasper.compiler.Compiler.compile(Compiler.java:333)
> >     at org.apache.jasper.JspCompilationContext.compile(
> > JspCompilationContext.java:600)
> >     at org.apache.jasper.servlet.JspServletWrapper.service(
> > JspServletWrapper.java:368)
> >     at org.apache.jasper.servlet.JspServlet.serviceJspFile(
> > JspServlet.java:385)
> >     at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:329)
> >     at javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
> >     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(
> > ApplicationFilterChain.java:231)
> >     at org.apache.catalina.core.ApplicationFilterChain.doFilter(
> > ApplicationFilterChain.java:166)
> >     at org.apache.catalina.core.ApplicationDispatcher.invoke(
> > ApplicationDispatcher.java:728)
> >     at org.apache.catalina.core.ApplicationDispatcher.doInclude(
> > ApplicationDispatcher.java:590)
> >     at org.apache.catalina.core.ApplicationDispatcher.include(
> > ApplicationDispatcher.java:524)
> >     at org.apache.jasper.runtime.JspRuntimeLibrary.include(
> > JspRuntimeLibrary.java:895)
> >     at org.apache.jsp.iNexx.common._005fshinglesTop_jsp._
> > jspService(_005fshinglesTop_jsp.java:385) ==> JSP page called from the
> > main webapp referencing the modular apps
> >
> >
> >
> > On Wed, May 31, 2017 at 5:05 PM, Hassan Khan <hassankhan...@gmail.com>
> > wrote:
> >
> >> Hi,
> >>
> >> We have a main webapp (Tomcat\Webapp) that has many modular webapps (
> >> (Tomcat\Webapp\app\) under it that can be removed and added by the
user.
> >> The main webapp has the service and connectors , but the modular
webapps
> >> do not need it.
> >>
> >> The problem is currently when the main webapp tries to access a jar in
> >> the modular webapps lib dir... we have a class not found exception..
that
> >> is why we need to load the jars from the modular webapps Web-INF\lib
> >> directory.
> >>
> >> Thanks
> >>
> >>
> >>
> >> On Wed, May 31, 2017 at 5:00 PM, Aurélien Terrestris <
> >> aterrest...@gmail.com> wrote:
> >>
> >>> hi
> >>>
> >>> what are you trying to do exactly ?
> >>>
> >>> If you just need to start one webapp after another one in a precise
> >>> order,
> >>> you need as many Services (+Connector on a different port, + Host) as
> >>> webapps.
> >>>
> >>> A.T.
> >>>
> >>>
> >>>
> >>>
> >>>
> >>> 2017-05-31 22:48 GMT+02:00 Hassan Khan <hassankhan...@gmail.com>:
> >>>
> >>> > Hi,
> >>> >
> >>> > We have the following structure for webapps in tomcat 6.
> >>> >
> >>> > Tomcat > Webapp > Application 1 >WEB-INF >lib
> >>> > Tomcat > Webapp > Application 1 > Application >WEB-INF> lib
> >>> >
> >>> >
> >>> > The  Tomcat > Webapp > Application 1 >WEB-INF >lib gets loaded with
> >>> > addwebapp() function..
> >>> > but for Tomcat > Webapp > Application 1 > Application >WEB-INF> lib
,
> >>> we
> >>> > wrote a custom webapploader that extended WebappLoader.
> >>> >
> >>> > Now we are upgrading to tomcat 8.5....
> >>> >
> >>> > Wanted to know if any other way to accomplish the same task.
> >>> >
> >>> > Was working on using the same extended loader .. but the start()
> >>> function
> >>> > has changed to InternalStart() and getting a exception as below:
> >>> > Caused by: org.apache.catalina.LifecycleException: An invalid
> >>> Lifecycle
> >>> > transition was attempted ([after_start]) for component
> >>> > [WebappLoader[/SandBox/Primar]] in state [STARTING_PREP]
> >>> >
> >>> >  Any pointer are appreciated.. not that familiar with extending
apache
> >>> > classes.
> >>> >
> >>> > Thanks
> >>> > Hassan
> >>> >
> >>> >
> >>> >
> >>> >
> >>> > On Wed, May 31, 2017 at 4:42 PM, Hassan Khan <
hassankhan...@gmail.com>
> >>> > wrote:
> >>> >
> >>> > > Hi,
> >>> > >
> >>> > > We have the following structure for webapp in tomcat 6.
> >>> > >
> >>> > > Tomcat > Webapp > Application 1 > Application >WEB-INF> lib
> >>> > >
> >>> > > T
> >>> > > he Alpp
> >>> > >
> >>> > > --
> >>> > > Hassan Khan
> >>> > >
> >>> >
> >>> >
> >>> >
> >>> > --
> >>> > Hassan Khan
> >>> >
> >>>
> >>
> >>
> >>
> >> --
> >> Hassan Khan
> >>
> >
> >
> >
> > --
> > Hassan Khan
> >
>
>
>
> --
> Hassan Khan

Reply via email to