SlideShare a Scribd company logo
OoA | State Street Hangzhou




Jun 08, 2012




                                             1
ClassLoader In Cloud
         Architecture Group| Stack & Cloud




Company Internal
AGENDA
       ClassLoader overview
             Class Loader Hierarchy
             Dynamical Class Loading

       ClassLoader in Tomcat
             Class Loader Hierarchy
             Servlet loading

       ClassLoader in Cloud
             Class Loader configuration
             Issue && solution




Company Internal
CLASSLOADER OVERVIEW -- CLASS LOADER
     HIERARCHY




Company Internal
CLASSLOADER OVERVIEW – DYNAMICAL CLASS
     LOADING



      System ClassLoader
           ClassLoader.getSystemClassLoader()

      Current class ClassLoader
                   Class.forName(String className)
                   Class.getResource(String name)

      Current thread context ClassLoader
                   Thread.currentThread().getContextClassLoader()




Company Internal
CLASSLOADER OVERVIEW – CONTEXT CLASS LOADER



    Q: When should I use thread.getContextClassLoader()?


    A: The classloading delegation model doesn’t work

               API (Application Programming Interface)
                               VS
               SPI (Service Provider Interface)
                      E.g. JDBC/JNDI/JAXB




Company Internal
CLASSLOADER IN TOMCAT -- CLASS LOADER
     HIERARCHY




Company Internal
CLASSLOADER IN TOMCAT –
     CLASSLOADER&&WEBAPPLOADER




Company Internal
CLASSLOADER IN TOMCAT – LOAD SERVLET CLASS




Company Internal
CLASSLOADER IN CLOUD


     shared.loader=
     ${catalina.home}/webapps/cashpro/WEB-INF/lib/*.jar,
     ${catalina.home}/webapps/cashpro/WEB-INF/classes/,
     ${catalina.home}/osa_lib,
     ${catalina.home}/osa_lib/*.jar




Company Internal
CLASSLOADER IN CLOUD – DIFFERENT CLASSLOADER


     <servlet>                                   <servlet id="XMLServlet">
     <servlet-name>QuartzInitializer</servlet-   <servlet-name>XMLServlet</servlet-
     name>                                       name>
     <display-name>Quartz Initializer            <display-name>XML Servlet</display-
     Servlet</display-name>                      name>
     <servlet-class>                             <description>XML Adapter servlet with
     com.ssc.cashpro.quartz.CashproJobStarter    both request and response in
     </servlet-class>                            XML</description>
     <load-on-startup>3</load-on-startup>        <servlet-
     <init-param>                                class>com.ssc.faw.controller.XMLServlet
     <param-name>shutdown-on-unload</param-      </servlet-class>
     name>                                       <load-on-startup>2</load-on-startup>
     <param-value>true</param-value>             </servlet>
     </init-param>
     <init-param>
     <param-name>start-scheduler-on-
     load</param-name>
     <param-value>true</param-value>
     </init-param>
     </servlet>



Company Internal
CLASSLOADER IN CLOUD -- ISSUE

       “Incorrect” value for static variable in servlet class

       java.lang.ClassCastException: ABC cannot be cast to ABC




Company Internal
CLASSLOADER IN CLOUD -- SOLUTION




                   put osa_framework.jar under WEB-INF/lib/




Company Internal
Company Internal

More Related Content

PDF
Passing java arrays in oracle stored procedure from mule esb flow
PPTX
Jsp and jstl
PPTX
JDBC ppt
PPT
JDBC Java Database Connectivity
PDF
Weblogic domain
PPTX
DataBase Connectivity
PPTX
Hibernate example1
Passing java arrays in oracle stored procedure from mule esb flow
Jsp and jstl
JDBC ppt
JDBC Java Database Connectivity
Weblogic domain
DataBase Connectivity
Hibernate example1

What's hot (20)

PPTX
Interface callable statement
PPTX
Cis 274 intro
PPTX
Jdbc in servlets
PPS
Jdbc api
PPT
Java database connectivity with MYSQL
KEY
JDBC Basics (In 20 Minutes Flat)
PPTX
Mule jdbc
PPT
Java Database Connectivity
PPTX
Java database connectivity
PPTX
1. java database connectivity (jdbc)
PPTX
Java ain't scary - introducing Java to PL/SQL Developers
PPT
Jdbc ppt
PPTX
Spring boot Under Da Hood
PPTX
3 jdbc api
PPT
Jdbc connectivity
PPTX
Java database connectivity with MySql
PPTX
Java Database Connectivity (JDBC)
PDF
Introduction to JDBC and database access in web applications
PDF
JavaFX Enterprise (JavaOne 2014)
Interface callable statement
Cis 274 intro
Jdbc in servlets
Jdbc api
Java database connectivity with MYSQL
JDBC Basics (In 20 Minutes Flat)
Mule jdbc
Java Database Connectivity
Java database connectivity
1. java database connectivity (jdbc)
Java ain't scary - introducing Java to PL/SQL Developers
Jdbc ppt
Spring boot Under Da Hood
3 jdbc api
Jdbc connectivity
Java database connectivity with MySql
Java Database Connectivity (JDBC)
Introduction to JDBC and database access in web applications
JavaFX Enterprise (JavaOne 2014)
Ad

Similar to Class loader in_cloud (20)

PDF
Servlets 3.0 - Asynchronous, Extensibility, Ease-of-use @ JavaOne Brazil 2010
PDF
Spring into rails
PPT
B2 2006 tomcat_clusters
PDF
Bt0083 server side programing 2
PDF
Java EE 6 - Deep Dive - Indic Threads, Pune - 2010
ODP
Java EE 6 = Less Code + More Power (Tutorial) [5th IndicThreads Conference O...
PDF
JavaOne India 2011 - Servlets 3.0
PPTX
Do you really get class loaders?
PPTX
Slaven tomac unit testing in angular js
PDF
Writing Plugged-in Java EE Apps: Jason Lee
PDF
Dropwizard and Friends
PDF
Rest web service_with_spring_hateoas
PDF
Java Interview Questions Answers Guide
ODT
Perils Of Url Class Loader
PPTX
Dropwizard Introduction
PDF
Soft-Shake 2016 : Jigsaw est prêt à tuer le classpath
PPTX
Serverless archtiectures
PDF
S314011 - Developing Composite Applications for the Cloud with Apache Tuscany
PPTX
Infrastructure-as-Code (IaC) using Terraform
KEY
App Engine ja Night Sapporo #1
Servlets 3.0 - Asynchronous, Extensibility, Ease-of-use @ JavaOne Brazil 2010
Spring into rails
B2 2006 tomcat_clusters
Bt0083 server side programing 2
Java EE 6 - Deep Dive - Indic Threads, Pune - 2010
Java EE 6 = Less Code + More Power (Tutorial) [5th IndicThreads Conference O...
JavaOne India 2011 - Servlets 3.0
Do you really get class loaders?
Slaven tomac unit testing in angular js
Writing Plugged-in Java EE Apps: Jason Lee
Dropwizard and Friends
Rest web service_with_spring_hateoas
Java Interview Questions Answers Guide
Perils Of Url Class Loader
Dropwizard Introduction
Soft-Shake 2016 : Jigsaw est prêt à tuer le classpath
Serverless archtiectures
S314011 - Developing Composite Applications for the Cloud with Apache Tuscany
Infrastructure-as-Code (IaC) using Terraform
App Engine ja Night Sapporo #1
Ad

Class loader in_cloud

  • 1. OoA | State Street Hangzhou Jun 08, 2012 1
  • 2. ClassLoader In Cloud Architecture Group| Stack & Cloud Company Internal
  • 3. AGENDA  ClassLoader overview  Class Loader Hierarchy  Dynamical Class Loading  ClassLoader in Tomcat  Class Loader Hierarchy  Servlet loading  ClassLoader in Cloud  Class Loader configuration  Issue && solution Company Internal
  • 4. CLASSLOADER OVERVIEW -- CLASS LOADER HIERARCHY Company Internal
  • 5. CLASSLOADER OVERVIEW – DYNAMICAL CLASS LOADING System ClassLoader ClassLoader.getSystemClassLoader() Current class ClassLoader Class.forName(String className) Class.getResource(String name) Current thread context ClassLoader Thread.currentThread().getContextClassLoader() Company Internal
  • 6. CLASSLOADER OVERVIEW – CONTEXT CLASS LOADER Q: When should I use thread.getContextClassLoader()? A: The classloading delegation model doesn’t work API (Application Programming Interface) VS SPI (Service Provider Interface) E.g. JDBC/JNDI/JAXB Company Internal
  • 7. CLASSLOADER IN TOMCAT -- CLASS LOADER HIERARCHY Company Internal
  • 8. CLASSLOADER IN TOMCAT – CLASSLOADER&&WEBAPPLOADER Company Internal
  • 9. CLASSLOADER IN TOMCAT – LOAD SERVLET CLASS Company Internal
  • 10. CLASSLOADER IN CLOUD shared.loader= ${catalina.home}/webapps/cashpro/WEB-INF/lib/*.jar, ${catalina.home}/webapps/cashpro/WEB-INF/classes/, ${catalina.home}/osa_lib, ${catalina.home}/osa_lib/*.jar Company Internal
  • 11. CLASSLOADER IN CLOUD – DIFFERENT CLASSLOADER <servlet> <servlet id="XMLServlet"> <servlet-name>QuartzInitializer</servlet- <servlet-name>XMLServlet</servlet- name> name> <display-name>Quartz Initializer <display-name>XML Servlet</display- Servlet</display-name> name> <servlet-class> <description>XML Adapter servlet with com.ssc.cashpro.quartz.CashproJobStarter both request and response in </servlet-class> XML</description> <load-on-startup>3</load-on-startup> <servlet- <init-param> class>com.ssc.faw.controller.XMLServlet <param-name>shutdown-on-unload</param- </servlet-class> name> <load-on-startup>2</load-on-startup> <param-value>true</param-value> </servlet> </init-param> <init-param> <param-name>start-scheduler-on- load</param-name> <param-value>true</param-value> </init-param> </servlet> Company Internal
  • 12. CLASSLOADER IN CLOUD -- ISSUE  “Incorrect” value for static variable in servlet class  java.lang.ClassCastException: ABC cannot be cast to ABC Company Internal
  • 13. CLASSLOADER IN CLOUD -- SOLUTION put osa_framework.jar under WEB-INF/lib/ Company Internal