Solved

How do I dynamically load/unload Component (jar file) in my java application?

Posted on 2007-12-06
15
6,611 Views
Last Modified: 2013-12-17
My Application demands some components (jar files) to be loaded/unloaded dynamically on request. For example, I have module1.jar and module2.jar etc and on demand my application should be able to load/unload  module1.jar or module2.jar files or both. Could you guys please help me with any java code example of load/unload jar files dynamically (i.e. without restarting the server). Again, please I need sample code for doing this.

Thanks in advance for your help.

Open in new window

0
Comment
Question by:shilpa_rajith
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 6
  • 5
  • 2
  • +1
15 Comments
 
LVL 86

Expert Comment

by:CEHJ
ID: 20419706
Loading modules is in the offing for the coming version of Java, but for now, you can load classes dynamically by calling Class.forName or using an explicit classloader. You can keep your classes in jars and they can be either in or out of the classpath. If the latter, load them with a JarURLConnection
0
 
LVL 86

Expert Comment

by:CEHJ
ID: 20419721
0
Get 15 Days FREE Full-Featured Trial

Benefit from a mission critical IT monitoring with Monitis Premium or get it FREE for your entry level monitoring needs.
-Over 200,000 users
-More than 300,000 websites monitored
-Used in 197 countries
-Recommended by 98% of users

 
LVL 86

Expert Comment

by:CEHJ
ID: 20419742
Sorry - i meant URLClassLoader not JarURLConnection
0
 

Author Comment

by:shilpa_rajith
ID: 20419926
Thanks a lot for you quick response and sorry for not very descriptive on the question. First, the jar file can be of the same module but diff. versions. i.e. I want to unload Module1.jar version 1 and load latest of the same module say Module1.jar version 2. Second, How to unload a jar file?
Google search returned "Apache Felix OSGi" framework. I never used this. Did you guys ever used this framework? Please provide some code example as It will help me implement it fast.

Thanks a lot in advance.
0
 
LVL 92

Expert Comment

by:objects
ID: 20424012
to unload a jar you need to delete the classloader used to load (thus do not use the system classloader)

http://site.red-illusions.dk/2006/11/04/simple-dynamic-loadingunloading-of-code/
0
 

Author Comment

by:shilpa_rajith
ID: 20540108
Hi Guys,

Sorry for getting back on this late.

What I want here is, Instead of placing a JAR file in lib folder of a webapp, the app should be able to load it dynamically and entire application should be able to refer to it. I want to achieve the same effect of having a JAR file in lib folder of a webapp but dynamically.

Thanks a lot in advance.
0
 

Author Comment

by:shilpa_rajith
ID: 20774842

Thanks a lot to all experts for sending in your responses. I am closing this as I couldn't find an appropriate answer to my question. Probably I will post the question again more clearly may be with example.
Thanks all again.
0
 
LVL 86

Expert Comment

by:CEHJ
ID: 20775981
>>I am closing this as I couldn't find an appropriate answer to my question.

All the answers look pretty relevant to me ;-)
0
 

Author Comment

by:shilpa_rajith
ID: 20812214

Dear CEHJ,

I am not sure how to achieve the requirement  i posted on 12.28.2007. i.e get the effect of placing a jar file in lib folder.
e.g. i want to load a jar file in a method say loadJarFile(String jarfilename) and refer to the classes in it in another method (in diff. package) say useClassOfJarFile() method without referring to the URLClassloader object created in loadJarFile() method. Other way of saying is, instead of placing a jar file in lib folder of a webapp, I want to load it dynamically and refer to its classes anywhere in the app. how to achieve this?

Thanks,
Rajith
0
 
LVL 86

Accepted Solution

by:
CEHJ earned 300 total points
ID: 20813074
You can use reflection to call the methods of any classes that are loaded dynamically, so it's perfectly possible. What's not possible is to declare classes in the code that are not loadable at the entry point (or before) of your application
0
 

Author Comment

by:shilpa_rajith
ID: 20899639

Thanks a lot for the responses. Sorry, I didn't find proper solution to my request. I would like to close/delete this question and would consider putting new one. Thanks again.
0
 
LVL 86

Expert Comment

by:CEHJ
ID: 20913276
shilpa_rajith, you should realize how this site works. You have had a lot of help from experts on this question. The fact that you don't like the answers is not really relevant. The answer 'it can't be done' IS AN ANSWER
0

Featured Post

VIDEO: THE CONCERTO CLOUD FOR HEALTHCARE

Modern healthcare requires a modern cloud. View this brief video to understand how the Concerto Cloud for Healthcare can help your organization.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

This guide will walk you through the essential considerations and tech stack for building scalable websites. Know how to grow your business the smart way!
Curious about the latest ransomware attack? Check out our timeline of events surrounding the spread of this new virus along with tips on how to mitigate the damage.
Use Wufoo, an online form creation tool, to make powerful forms. Learn how to selectively show certain fields based on user input using rules to gather relevant information and data from your forms. The rules feature provides you with an opportunity…
Michael from AdRem Software explains how to view the most utilized and worst performing nodes in your network, by accessing the Top Charts view in NetCrunch network monitor (https://www.adremsoft.com/). Top Charts is a view in which you can set seve…
Suggested Courses

636 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question