2008-09-13 19 views
5

İmzalı bir Java uygulaması çalıştırıyorsam, uzak kaynaklardan (aynı etki alanında, belki de aynı ana bilgisayarda) ek sınıflar yükleyebilir ve çalıştırabilir miyim?İmzalı bir uygulamadan Java sınıfları yükleme

Bunu, sayfaları değiştirmeden veya geçerli uygulamayı durdurmadan yapmak istiyorum. Elbette, tüm sınıfların toplam büyüklüğü hepsini bir kerede yüklemek için çok büyük.

Bunu yapmanın bir yolu var mı? İmzalı uygulamalarla bunu yapmanın ve "güven" durumlarını korumanın bir yolu var mı?

cevap

5

Uygulamaların uygulamalarda tembel yüklü olduğunu düşünüyorum. talep üzerine yükleniyor.

Her neyse, eğer sınıflar bir kavanozun dışındaysa, uygulama sınıfı yükleyicisini kullanabilir ve isme göre yükleyebilirsiniz. Ör:

ClassLoader loader = this.getClass().getClassLoader(); 
Class clazz = loader.loadClass("acme.AppletAddon"); 

Seni kavanoza (ler) in url (ler) ile URLClassLoader yeni bir örneğini oluşturmak için gereken düşünüyorum bir kavanoz sınıfları yüklemek istiyorsanız.

URL[] urls = new URL[]{new URL("http://localhost:8080/addon.jar")}; 
URLClassLoader loader = URLClassLoader.newInstance(urls,this.getClass().getClassLoader()); 
Class clazz = loader.loadClass("acme.AppletAddon"); 

Varsayılan olarak, uygulamaların yeni sınıf yükleyicileri oluşturması yasaktır. Ancak, uygulamanızı imzalarsanız ve yeni sınıf yükleyicileri oluşturma iznini eklerseniz bunu yapabilirsiniz.

+0

Teşekkürler, URLClassLoader istediğim gibi görünüyor. İmza zincirini sağlam tutabildiğimden emin olmalıyım. –

+1

Ebeveyn (yükleyici) uygulaması imzalandıktan sonra çalıştı. Ancak, çocuk (yüklenen) kavanozlar, imzalandıkları halde güvenlik izinleri almazlar. –

0

Mümkün olduğu gibi geliyor (ama hiç yapmadım). Uzak Yöntem Çağrısına bir göz attınız mı (RMI)?

+0

RMI, yönettiğim yön değil ama yine de teşekkürler. –

2

Evet, uygulamanızı çalıştırdığınız ana bilgisayara URL bağlantılarını açabilirsiniz. HTTP URL'leri ile bir sınıf yükleyicisi oluşturabilir veya sınıfları (kavanoz olarak) kullanıcı makinesine indirebilir ve sınıf yolunda bu kavanozlarla bir sınıf yükleyicisi oluşturabilirsiniz. Uygulama durmayacak ve başka bir sayfa yüklemeniz gerekmez.

Sorunun ikinci kısmı hakkında, güven hakkında, kullanıcı uygulamanıza erişim izni verdiğinde, bir şey indirebilir, evet, herhangi bir şey, yerel makineye gitmek ister. UI tasarımınız buna izin veriyorsa, muhtemelen ne yaptığına dair kullanıcıyı bilgilendirebilirsiniz.

Bu yardımcı olur umarım.

+0

Parlak, teşekkürler. Keşke her iki cevabı kabul edebilirim/birleştirebilirdim. –

+0

Maalesef, jassuncao'nun yanıtını belirttiğim gibi, yüklenen uygulamacığı şu ana kadar uygun izinlere sahip değil. –

İlgili konular