Jednoduchý EJB3 klient v JBoss AS

V tomto mini-tutoriálu chci ukázat postup, jak vytvořit jednoduchý session EJB3 bean a klienta k němu jako J2SE aplikaci.

Session Bean

Pomocí vašeho vývojového prostředí založte nový projekt s podporou J2EE a vložte do něj nový session bean, rozhraní a implementace je velmi jednoduchá:

package com.zapletalovi.tests;
 
public interface ExampleTimer {
    void scheduleTimer(long milliseconds);
}

Příklad jsem vzal z vynikajícího repozitáře příkladů z JBosse, který doporučuji zkouknout. Je tam spoustu zajímavých informací a hlavně funkčních příkladů.

Ještě než se pustíme do implementace, je nutné v souboru jmx-console-users.properties v dané doméně (například JBOSS_HOME\server\default\conf\props) nastavit heslo pro uživatele admin, budete jej potřebovat při vytváření runtime JBoss konfigurace v IDE.

package com.zapletalovi.tests;
 
import javax.annotation.Resource;
import javax.ejb.*;
import java.util.Date;
 
@Stateless
@Remote(ExampleTimer.class)
@Local(ExampleTimer.class)
public class ExampleTimerBean implements ExampleTimer {
    private
    @Resource
    SessionContext ctx;
 
    public void scheduleTimer(long milliseconds) {
        ctx.getTimerService().createTimer(new Date(new Date().getTime() + milliseconds), "Hello World");
    }
 
    @Timeout
    public void timeoutHandler(Timer timer) {
        System.out.println("---------------------");
        System.out.println("* Received Timer event: " + timer.getInfo());
        System.out.println("---------------------");
 
        timer.cancel();
    }
}

Pro úspěšné zkompilování je nutné J2EE API a přidání podpory pro AS. Projekt sestavte a dejte si pozor, aby adresáře, které z IDE „vypadnou“ měly „příponu“ .ear respektive .jar (pro J2EE aplikaci a pro EJB). JBoss to vyžaduje, například IntelliJ IDEA adresáře vytváří jako „MyBeanEJB“, pro spuštění pod JBossem potřebujeme „MyBean.EJB“. Druhou možností (například u Netbeans) je deployment archívů, což je malinko pomalejší.

Spusťte JBoss AS a proveďte deployment J2EE aplikace. Nyní naprogramujeme J2SE klienta, vytvořte nový modul nebo projekt:

package cz.zapletalovi.tests;
 
import com.zapletalovi.tests.ExampleTimer;
 
import javax.ejb.EJBAccessException;
import javax.naming.Context;
import javax.naming.InitialContext;
import java.util.Properties;
 
public class ExampleTimerClient {
    public static void main(String[] args) throws Exception {
        Properties env = new Properties();
        env.setProperty(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory");
        env.setProperty(Context.PROVIDER_URL, "jnp://localhost:1099");
        InitialContext ctx = new InitialContext(env);
        ExampleTimer timer = (ExampleTimer) ctx.lookup("ExampleTimerBean/remote");
 
        try {
            System.out.println("Starting timer bean...");
            timer.scheduleTimer(10000); // 10 sekund
            System.out.println("Started...");
        }
        catch (EJBAccessException ex) {
            System.out.println("Saw expected SecurityException: " + ex.getMessage());
        }
    }
}

Aby se projekt spustil, potřebujeme:

  • javaee.jar (podpora pro J2EE)
  • JBoss AS (vše ze složky JBOSS_HOME\lib)
  • JBoss client libraries (vše ze složky JBOSS_HOME\client)

Spustíme klienta a je to. Jedná se o jednoduchý session bean s podporou časovače.

Diskuze

achyleos, 23.01.2008 09:03:

Zajimava ukazka ne ze bych to shanel ale dalo mi to inspiraci… dik

 
If you can't read the letters on the image, download this .wav file to get them read to you.
pridej.cz
blog/jednoduchy_ejb3_klient_v_jboss_as.txt · Poslední úprava: 29.05.2008 09:04 (external edit)
Creative Commons License Valid CSS Driven by DokuWiki Recent changes RSS feed Valid XHTML 1.0