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:

  1. "j2ee.jar" från "SUN J2EE SDK"
  2. "jbossall-client.jar" på sökvägen JBOSS_HOME/client/jbossall-client.jar
se nedan:



2. Skapa klassen HelloStatelessClient

Nu skapar vi klassen:

  1. Högerklicka på "HelloClientProject"
  2. Välj "New - Class"
  3. Jag använder paketet "net.programmera.hello.ejb_client" och döper gränssnittet till "HelloStatelessClient".
  4. Jag klickar i så att klasser får en "main()"-metod.
Se bild:



Klicka "Finish"..

3. Skriv koden

Nu skriver vi klientens kod, se nedan:

/*
 * 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);	
	}
}

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:

# 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:
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
Kör programmet: