Zdalny klient w technologii JEE

0

Witam.
Wiele się naczytałem na temat wspaniałości korporacyjnego wydania JAVY, natomiast w żadnej z książek (zgromadziłem ich 4 na temat JEE) ani co gorsza, w tutorialu Sun'a poświęconym wydaniu JEE 5.0 nie znalazłem sposobu na uruchomienie na jednym komputerze aplikacji klienckiej wywołującej metody zdalnych interfejsówkomponentów sesyjnych działających w ramach serwera JEE (w moim przypadku GlassFish) na innej maszynie. Czy ktoś z Braci Programistycznej pomoże/naprowadzi na temat zespolenia tych komponentów? Będę bardzo wdzięczny, bo czas nagli, a sprawa jest paląca.. ;-)
Pozdrawiam

0

Witam,
na czym polega problem (konkretnie). Czy umiesz uruchomic serwer + klient na jednej maszynie ?

Pozdrawiam

0

jesli chcesz uzywac ejb to sprawa przy uzyciu glassfisha nie jest trudna piszesz komponent korzystajacy z interfejsu a klient wywoluje metody znajac interfejs. Polecam forum glassfisha http://forums.java.net/jive/forum.jspa?forumID=56&start=0 . Jesli bedziesz mial jakies konkretne pytania to pisz wieczorem na gg 6375754

0

Dzięki za szybkie odpowiedzi. Koziołek super przykład, właśnie o to mi chodziło. Jeśli chodzi o klienta i serwer na jednej maszynie to tak , wszystko śmiga. Chodzi właśnie o to, co Koziołek ujął jako komunikację przez web services, jednak w jaki jeszcze inny sposób można to zrealizować? Słyszałem o metodzie RMI, ale nie za bardzo wiem, na czym ona polega. Może jakiś przykład...? ;-)

0

przykladow znajdziesz sporo w google ; ) serwera RMI w 'czystej' postaci nie uruchomisz na glassfishu, a co za tym idzie stracisz wiele zalet serwera aplikacyjnego.

0

W Javie EE do wywoływania metod służą zdalne i lokalne interfejsy sesji (lokalne jeżeli w tym samym JVM).

Najpierw potrzebujesz instancji InitialContext
http://java.sun.com/products/jndi/javadoc/javax/naming/InitialContext.html

Hashtable env = new Hashtable();
env.put(Context.PROVIDER_URL, "IP:PORT");  //tu podajemy adres serwera
env.put(Context.SECURITY_PRINCIPAL, "MyUserName");
env.put(Context.SECURITY_CREDENTIALS, "MyPassword");
Context ctx = new InitialContext(env);

Później na ctx możemy czegoś szukać:

ZdalnaSesja sesja = (ZdalnaSesja) ctx.lookup("Sesja"); // to samo co mappedName w beanie
Uzytkownik = sesja.uzytkownik(Jaś Fasola);

@Remote
public interface ZdalnaSesja { //Musi byc Remote ! 
    public Uzytkownik uzytkownik(String l);
    (...)
}

Na serwerze

@Stateless(mappedName="Sesja")
@TransactionManagement(value=TransactionManagementType.CONTAINER)
public class SesjaBean implements ZdalnaSesja {
    @javax.persistence.PersistenceContext(unitName="Jakis persistance unit to laczenia z baza")
    private EntityManager em;

    public Uzytkownik uzytkownik(String l) {
        return em.find(Uzytkownik.class, l);
    }

   (...)
}

Btw. Jak użyć adnotacji @ejb zamiast ręcznie szukać w kontekście?

0

Przykład super - wielkie dzięki. Ale nurtuje mnie jeszcze jedna sprawa. W baaaaaardzo obszernej dokumentacji Sun'a dotyczącej platformy JEE 5.0 i serwera aplikacyjnego GlassFish zdefiniowano kilka rodzajów komponetów JEE: JSP i serwlety, komponent aplikacji klienckiej oraz EJB(session i message driven). Jeżeli na jednej stacji stoi serwer JEE wraz z ziarnami EJB, to w jaki sposób zainstalować aplikację kliencką na zdalnej końcówce (ona też jest komponentem JEE!) ? Czy na końcówkach też potrzebujemy zainstalowanego serwera aplikacji? Moje pytania mogą wydać się trywialne, za co przepraszam zaprawionych w boju Forumowiczów, ale na taki problem trafiłem po raz pierwszy...

0

hm moge sie mylic ale do aplikacji klienckiej musza byc dodane pewne jary z bibliotek glassfisha (chyba kolo 40mb!)

0

Klient posługuje się interfejsem z adnotacją @Remote, która należy do Javy EE, więc musi mieć jakiegoś jara z Javy EE. Lepiej go chyba jednak wziąć z SDK EE, niż Glassfisha.

W każdym razie, klient łączy się serwerem używając JNDI i RMI. Wydaje mi się, że obie te technologie należą do Javy SE.

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