Solved

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

Posted on 2007-12-06
15
6,412 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
  • 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 9

Expert Comment

by:ysnky
ID: 20419717
0
 
LVL 86

Expert Comment

by:CEHJ
ID: 20419721
0
 
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 9

Expert Comment

by:ysnky
ID: 20422334
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
Why You Should Analyze Threat Actor TTPs

After years of analyzing threat actor behavior, it’s become clear that at any given time there are specific tactics, techniques, and procedures (TTPs) that are particularly prevalent. By analyzing and understanding these TTPs, you can dramatically enhance your security program.

 

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

How your wiki can always stay up-to-date

Quip doubles as a “living” wiki and a project management tool that evolves with your organization. As you finish projects in Quip, the work remains, easily accessible to all team members, new and old.
- Increase transparency
- Onboard new hires faster
- Access from mobile/offline

Join & Write a Comment

Suggested Solutions

Today, still in the boom of Apple, PC's and products, nearly 50% of the computer users use Windows as graphical operating systems. If you are among those users who love windows, but are grappling to keep the system's hard drive optimized, then you s…
It’s a strangely common occurrence that when you send someone their login details for a system, they can’t get in. This article will help you understand why it happens, and what you can do about it.
This video teaches viewers about errors in exception handling.
An overview on how to enroll an hourly employee into the employee database and how to give them access into the clock in terminal.

707 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

Need Help in Real-Time?

Connect with top rated Experts

20 Experts available now in Live!

Get 1:1 Help Now