GithubHelp home page GithubHelp logo

test-classloader's Introduction

Overview

There are 4 eclipse projects in this repository:

  • fake-storm: plays the role of Storm
  • user-topology: plays the role of User Topology
  • testlib-storm: plays the role of Storm's dependency
  • testlib-user: plays the role of User Topology's dependency, it is almost the same as testlib-storm, just the implementation of Man#hello is different.

Preparation

Before run the test, build the jar for user-topology and testlib-user, and put the two jars into /tmp folder, TopologyClassLoader will try to load the classes there.

So the jars in /tmp are:

$ ls /tmp/*.jar
/tmp/testlib-user.jar  /tmp/user-topology.jar

These two jars contains the User Topology's code and its dependencies.

Run the test

cd fake-storm
java -cp bin:../testlib-storm/bin/ 
     -Djava.system.class.loader=xumingmingv.classloader.TopologyClassLoader 
     xumingmingv.classloader.StormCore

-cp bin:../testlib-storm/bin/ specifies the Fake Storm Core Class and its dependencies.

Result

ClassLoader xumingmingv.classloader.StormCore
StormCore: StormCore classloader: sun.misc.Launcher$AppClassLoader@1ef6a746
StormCore: IPerson classloader: sun.misc.Launcher$AppClassLoader@1ef6a746
StormCore: Man classloader: sun.misc.Launcher$AppClassLoader@1ef6a746
StormCore: ISpout classloader: sun.misc.Launcher$AppClassLoader@1ef6a746
StormCore: UserSpout classloader: xumingmingv.classloader.TopologyClassLoader@67386000
StormCore: Man#hello: I am Man (testlib-storm)
UserSpout: UserSpout classloader: xumingmingv.classloader.TopologyClassLoader@67386000
UserSpout: IPerson classloader: xumingmingv.classloader.TopologyClassLoader@67386000
UserSpout: Man classloader: xumingmingv.classloader.TopologyClassLoader@67386000
UserSpout: ISpout classloader: sun.misc.Launcher$AppClassLoader@1ef6a746
UserSpout: Man#hello: I am Man (testlib-user)

We can see that the dependency is isolated from these two lines:

StormCore: Man#hello: I am Man (testlib-storm)
UserSpout: Man#hello: I am Man (testlib-user)

test-classloader's People

Contributors

xumingming avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.