programmera.net -> ejb -> normal för utskrift | info@programmera.net |
HelloClientProject
1. Skapa projektet HelloClientProject 2. Skapa klassen HelloStatelessClient 3. Skriv koden 4. Testkör i Eclipse 5. Skapa en JAR 6. Provkör HelloClient.jar |
1. Skapa projektet HelloClientProject
Nu när vi är klara med projektet "HelloServerProject" är det dags att skapa "HelloClientProject". Vi öppnar Eclipse och skapar projektet. I detta projekt ska vi också inkludera "HelloInterfaceProject", se nedan:
För att klienten ska fungera måste följande klasser inkluderas:
se nedan:
2. Skapa klassen HelloStatelessClient
Nu skapar vi klassen:
Se bild:
Klicka "Finish"..
3. Skriv koden
Nu skriver vi klientens kod, se nedan:
För säkerhets skull kan du kolla att de JBoss-specifika parametrarna stämmer med innehållet i filen JBOSS_HOME/server/default/conf/jndi.properties:
/*
* Created on 2006-feb-03
*/
package net.programmera.hello.ejb_client;
// JNDI imports
import java.util.Properties;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
// EJB imports
import javax.rmi.PortableRemoteObject;
// Interfaces from the project HelloInterfaceProject
import net.programmera.hello.ejb_interface.HelloStateless;
import net.programmera.hello.ejb_interface.HelloStatelessHome;
/**
* @author Olle
*/
public class HelloStatelessClient {
// JBoss specific parameters
private static final String JBOSS_INITIAL_CONTEXT_FACTORY = "org.jnp.interfaces.NamingContextFactory";
private static final String JBOSS_PROVIDER_URL = "localhost:1099";
private static final String JBOSS_URL_PKG_PREFIXES = "org.jboss.naming:org.jnp.interfaces";
/*
* main()
*
* Calls the HelloStateless EJB.
*/
public static void main(String[] args) {
System.out.println("1. Client starts");
try{
System.out.println("2. Get context");
Context context = getContext();
System.out.println("3. Lookup object using JNDI");
Object objref = context.lookup("ejb/HelloStateless");
System.out.println("4. Narrow to Home class");
HelloStatelessHome hh = (HelloStatelessHome)
PortableRemoteObject.narrow(objref, HelloStatelessHome.class);
System.out.println("5. Create Bean");
HelloStateless h = (HelloStateless) hh.create();
System.out.println("6. Call business method");
System.out.println("Out:"+h.hello("Olle"));
}catch(Exception e){
e.printStackTrace();
}
}
/*
* getContext()
*
* How to get the context is Server specific.
* This is a valid implementation for the JBoss 4.0 application server.
*/
public static Context getContext() throws NamingException{
Properties props = new Properties();
props.put(javax.naming.Context.INITIAL_CONTEXT_FACTORY, JBOSS_INITIAL_CONTEXT_FACTORY);
props.put(javax.naming.Context.PROVIDER_URL, JBOSS_PROVIDER_URL);
props.put(javax.naming.Context.URL_PKG_PREFIXES, JBOSS_URL_PKG_PREFIXES );
return new InitialContext(props);
}
}
# DO NOT EDIT THIS FILE UNLESS YOU KNOW WHAT YOU ARE DOING
#
java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces
4. Testkör i Eclipse
Välj Run - Run... Välj att skapa en konfiguration under Java Applications:
Om allt är korrekt får du följande utskrift:
5. Skapa en JAR
Det är dags att skapa en JAR som ska innehålla projektet. Högerklicka på projektet och välj export. Välj "JAR file" och klicka Next, se bilden:
Döp filen till "HelloClient.jar" och klicka Next, se bilden:
Vi vill inte skapa en JAR om det finns kompileringsfel, så klicka bort Export class with compile errors. Spara en beskrivning av hur JAR-filen byggdes i en fil "BuildDesc.jardesc" och klicka Next, se bilden:
Vi ska ha en "main()"-fil till denna JAR, så välj klassen "HelloStatelessClient" och klicka sedan Finish:
Kontrollera att filen C:/workspace/HelloClient.jar existerar.
Klart!
6. Provkör HelloClient.jar
Kontrollera att du har rätt CLASSPATH:
Kör programmet:
C:\workspace>echo %CLASSPATH%
D:\Program\Sun\J2EE1_4_03\lib\j2ee.jar;
D:\Program\JBoss402\jboss-4.0.2\client\jbossall-client.jar;
D:\Program\JBoss402\jboss-4.0.2\server\default\lib\jboss-j2ee.jar