Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.java.programmer > #29583
| From | Josip Almasi <joe@vrspace.org> |
|---|---|
| Newsgroups | comp.lang.java.programmer |
| Subject | Re: dealing with ClassLoaders... |
| Date | 2014-08-08 11:53 +0200 |
| Organization | B.net Hrvatska d.o.o. |
| Message-ID | <ls26n0$jrp$1@gregory.bnet.hr> (permalink) |
| References | <slrnltl6t2.fp3.avl@login.logic.tuwien.ac.at> <lrg69c$6r3$1@gregory.bnet.hr> <slrnltv8mj.fp3.avl@login.logic.tuwien.ac.at> |
On 08/04/2014 05:12 PM, Andreas Leitgeb wrote: > Josip Almasi <joe@vrspace.org> wrote: >> On 07/31/2014 09:40 PM, Andreas Leitgeb wrote: >>> The classloader tutorials I skimmed so far seem to imply, that >>> a custom classloader is only appropriate to enable classloading >>> from sources that the system classloader cannot handle itself. >> Nah, it's also appropriate for context isolation. > > But it seems like it doesn't really make it easy to use it > that way. Noone said it's easy;) >>> Is there a clean way to keep classes of a given package confined >>> to some custom classloader, in order to control the classes' and >>> their statics' scope/lifetime? >> Yep, just don't break delegation model. >> Model says something like, a classloader should ask parent classloader >> if it has already loaded the class. >> So, make sure you respect that rule. > > The twist in my case comes from the fact, that the parent *could* > theoretically have loaded one of my special classes, but that would > just indicate a programming error (aka Bug), so I'd rather have the > compiler or at least the VM report a strange ClassCastException > than silently use one of my classes loaded by wrong classloader. Don't worry, it won't be silent:> Mess up anything, and you get strange ClassCastExceptions. >> Also, make sure your loaders don't load the same packages. > This I don't understand. > While my "special classes" happen to be in a specific package, > I don't see, why packages as such would be relevant. I'd expect > that even within the same package I should (in principle) be > allowed to have some classes loaded through parent and others > through custom classloader. Well your classes 'happen' to be in specific packages, but I think you should use that to your advantage, to avoid confussion and classloader bugs. It gets ugly when equals() starts throwing up. Better have clearly divided responsibilities. > I'd welcome hints for how to improve the "classname -> byte[]" step. I used something like JarEntry entry = (JarEntry) jarFile.getEntry( name+".class" ); InputStream stream = jarFile.getInputStream(entry); int size = (int) entry.getSize(); byte[] code = new byte[size]; I also stated with URL but gave it up, because of unknown length. If I really wanted to load classes remotelly, I'd download jars first then load classes from local copies. Regards...
Back to comp.lang.java.programmer | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
dealing with ClassLoaders... Andreas Leitgeb <avl@auth.logic.tuwien.ac.at> - 2014-07-31 19:40 +0000
Re: dealing with ClassLoaders... Martin Gregorie <martin@address-in-sig.invalid> - 2014-07-31 20:44 +0000
Re: dealing with ClassLoaders... Andreas Leitgeb <avl@auth.logic.tuwien.ac.at> - 2014-08-01 14:22 +0000
Re: dealing with ClassLoaders... Andreas Leitgeb <avl@auth.logic.tuwien.ac.at> - 2014-08-01 21:10 +0000
Re: dealing with ClassLoaders... Eric Sosman <esosman@comcast-dot-net.invalid> - 2014-08-01 17:32 -0400
Re: dealing with ClassLoaders... Joerg Meier <joergmmeier@arcor.de> - 2014-08-02 01:21 +0200
Re: dealing with ClassLoaders... Andreas Leitgeb <avl@auth.logic.tuwien.ac.at> - 2014-08-02 00:00 +0000
Re: dealing with ClassLoaders... Martin Gregorie <martin@address-in-sig.invalid> - 2014-08-01 21:45 +0000
Re: dealing with ClassLoaders... Andreas Leitgeb <avl@auth.logic.tuwien.ac.at> - 2014-08-01 23:14 +0000
Re: dealing with ClassLoaders... Martin Gregorie <martin@address-in-sig.invalid> - 2014-08-02 00:35 +0000
Re: dealing with ClassLoaders... Andreas Leitgeb <avl@auth.logic.tuwien.ac.at> - 2014-08-05 15:38 +0000
Re: dealing with ClassLoaders... Silvio <silvio@internet.com> - 2014-08-01 13:31 +0200
Re: dealing with ClassLoaders... Silvio <silvio@internet.com> - 2014-08-01 13:37 +0200
Re: dealing with ClassLoaders... Andreas Leitgeb <avl@auth.logic.tuwien.ac.at> - 2014-08-01 16:06 +0000
Re: dealing with ClassLoaders... "Chris Uppal" <chris.uppal@metagnostic.REMOVE-THIS.org> - 2014-08-01 13:19 +0100
Re: dealing with ClassLoaders... Andreas Leitgeb <avl@auth.logic.tuwien.ac.at> - 2014-08-01 15:51 +0000
Re: dealing with ClassLoaders... Josip Almasi <joe@vrspace.org> - 2014-08-01 15:55 +0200
Re: dealing with ClassLoaders... Andreas Leitgeb <avl@auth.logic.tuwien.ac.at> - 2014-08-04 15:12 +0000
Re: dealing with ClassLoaders... Mike Amling <mamling@chaff.us> - 2014-08-04 19:53 -0500
Re: dealing with ClassLoaders... Andreas Leitgeb <avl@auth.logic.tuwien.ac.at> - 2014-08-05 15:16 +0000
Re: dealing with ClassLoaders... Josip Almasi <joe@vrspace.org> - 2014-08-08 11:53 +0200
Re: dealing with ClassLoaders... Andreas Leitgeb <avl@auth.logic.tuwien.ac.at> - 2014-08-08 18:46 +0000
Re: dealing with ClassLoaders... Josip Almasi <joe@vrspace.org> - 2014-08-10 13:22 +0200
Re: dealing with ClassLoaders... Andreas Leitgeb <avl@auth.logic.tuwien.ac.at> - 2014-08-12 17:16 +0000
csiph-web