Hey Mark, Any clues, how to proceed with this for embedded?
Thanks Chirag On Wed, 22 Jul, 2020, 7:31 pm Chirag Dewan, <chirag.dewa...@gmail.com> wrote: > I tried that with standalone Tomcat and it works. I can deploy Jersey-1 > and Jersey-2 apps together. > > I was wondering whether Loader with delegate=false work in context for > embedded? > > Thanks > Chirag > > On Wed, 22 Jul, 2020, 5:03 pm Mark Thomas, <ma...@apache.org> wrote: > >> On 22/07/2020 11:35, Chirag Dewan wrote: >> > Thanks for a very quick reply Mark. >> > >> > The Tomcat version is 8.5.46. >> > >> > Though I do plan to upgrade to 9.0.36 in the coming weeks. >> >> OK. Both behave the same way which makes things easier. >> >> See the source code for full details but the summary is: >> >> First Tomcat checks if the requested class is available from the same >> class loader that loaded java.lang.String. If it is, it loads it from >> that class loader. This prevents web applications over-ridding Java SE >> classes. >> >> If the class has not been loaded yet, Tomcat then checks to see if it is >> a class that Tomcat is expected to provide. If it is, it uses the common >> class loader to load it. >> >> If the class isn't loaded the following search order is used: >> - WEB-INF/classes >> - WEB-INF/lib >> - $CATALINA_BASE/lib (for classes) >> - $CATALINA_BASE/lib (for JARs) >> - bootstrap / classpath >> >> Embedded scenarios tend not to set up the same class loader structure as >> stand alone Tomcat. Often, they use a single class loader for >> everything. I'd check that your scenario works in a stand alone Tomcat >> first and once you have that working, transfer it to embedded with >> particular attention to class loader configuration. >> >> Mark >> >> >> > >> > Chirag >> > >> > On Wed, 22 Jul, 2020, 4:03 pm Mark Thomas, <ma...@apache.org> wrote: >> > >> >> On 22/07/2020 11:18, Chirag Dewan wrote: >> >>> Hi, >> >>> >> >>> Due to some backward compatibility concerns, I need to support both >> >>> Jersey-1 and Jersey-2 on the same Tomcat instance. This is an embedded >> >>> tomcat which runs inside a JVM application. >> >>> >> >>> Since, Jersey-1 and Jersey-2 have different JAXRS versions, I tried >> to >> >>> remove both jsr311 and javax.ws.rs-2 from my JVMs classpath. And >> instead >> >>> packaged these in the WAR/WEB-INF\lib along with jersey version >> specific >> >>> jars like jersey-core-1.x, jersey-common-2.x etc. >> >>> >> >>> Now when I start my Jersey-1 application, it couldn't find >> >>> javax.ws.rs.ext.MessageBodyReader. >> >>> >> >>> I read Classloader HOW-TO and although it says that the order of >> loading >> >>> JavaEE classes is bootstrap first, it never says anything about >> WEB-INF >> >> as >> >>> a source for these jars. >> >>> >> >>> So if there any way I can load javax.* classes from WEB-INF\lib? >> >> >> >> Tomcat version? >> >> >> >> Different Tomcat versions have taken different approaches to >> >> implementing this requirement. A recent(ish) implementation should be >> >> fine but with the exact version number we can give a better answer. >> >> >> >> Mark >> >> >> >> --------------------------------------------------------------------- >> >> To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org >> >> For additional commands, e-mail: users-h...@tomcat.apache.org >> >> >> >> >> > >> >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org >> For additional commands, e-mail: users-h...@tomcat.apache.org >> >>