Pluginy do aplikacj webowej (tomcat)

Odpowiedz Nowy wątek
2014-12-31 18:49
0

Witam
szukam rozwiązania problemu (oszczędzenia sobie roboty) : )
W uproszczeniu - mam aplikację internetową, w której użytkownik pracuje z obiektem jakiegoś typu.
Na tych obiektach wykonywane są pewnie standardowe operacje, ale istnieje czasem potrzeba np. zależnie od pewnych właściwości obiektu dodatkowych ruchów
Taki plugin byłby opcjonalny, musiałby by być w jakiś sposób znaleziony i wykonany.
Dodatkowo jak to wgrywać (zcalać z programem)?

Pozostało 580 znaków

2015-01-01 14:52
0

Najprościej to interfejs oraz Class.forName który spróbuje znaleźć klasę jak jest na classpath, instancja i rzutujesz na interfejs i możesz korzystać. Wgrywanie wtedy odbywa się poprzez dołączenie jara do wara jako np lib

Ja masz springa to zrobi Ci to z automatu

Pozostało 580 znaków

2015-01-01 16:43
0

Cześć
wyczytałem trochę na temat o którym mówisz - chcę to napisać sam.
Doszedłem do ściany tzn. (w eclipse)
zrobiłem trzy projekty

  • aplikację
  • plugin
  • interfejsy (implementsy dzielone między plugin i aplikację)

nie wiem jakie klasy mam w plugie (user może je nazywać dowolnie, mają tylko implementować interfejs)
chciałbym w jarze mieć tylko jedną klasę (implementująca interfejs) - niestety przy tworzeniu obiektu z jara, krzyczy że klasy interfejsu nie ma (mimo że jest w głównej aplikacji w takim samym pakiecie)
Co z tym zrobić?

edytowany 1x, ostatnio: jastu, 2015-01-01 16:45

Pozostało 580 znaków

2015-01-01 17:06
0

Interfejs ma być jeden a nie sobie go kopiujesz...
Aplikacja ma zaleznosc do Interfejsow
Plugin ma zaleznosc do Interfejsow

Przy wypuszczaniu wersji z aplikacji dajesz zaleznosci do pluginow...

Pozostało 580 znaków

2015-01-01 18:28
0

ok, jest prawie dobrze
zostało mi jeszcze jedno - plugin implementuje interfejs, ale po załadowaniu mojej klasy pluginu lista interfejsów jest pusta?

 
ClassLoader loader = new URLClassLoader(urls);
Class cls = loader.loadClass(fullyQualifiedName);
Class[] intfs = cls.getInterfaces();
edytowany 3x, ostatnio: bogdans, 2015-01-01 21:03

Pozostało 580 znaków

2015-01-01 18:54
0

Nasz gdzieś błąd,... to jest niemożliwe

Pozostało 580 znaków

2015-01-01 20:29
0

ok, teraz zwraca interfejs prawidłowo, ale mam nowy problem : )
z tego zestawu klas dzielonego między aplikację www i pluginy jest brana klasa interfejsu
jak sprawdzam, czy klasa z jara implementuje interfejs, to zawsze mam że nie implementuje (zawsze false)
tzn.

 
Class<?> cls; // importowana klasa
Class<?> j = pl.test.MojInterface.class;
for (Class<?> i : cls.getInterfaces()) {
    if (i.equals(j.class)) {
        return true;
    }
}
return false;

//edit
kontekst classloadera!
teraz jest ok

edytowany 2x, ostatnio: jastu, 2015-01-01 22:15
Wstawiaj kod w znaczniki &lt;code=java&gt;&lt;/code&gt; - bogdans 2015-01-01 21:04

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0