programmera.net -> ejb -> normal     för utskrift      info@programmera.net

HelloServerProject

1. Skapa projektet HelloServerProject
2. Skapa klassen HelloStatelessBean
3. Implementera bönans metoder
4. Skapa ejb-jar.xml
5. Skapa jboss.xml
6. Skapa en JAR
7. Sjösätt JARen

1. Skapa projektet HelloServerProject

Nu när vi är klara med projektet "HelloInterfaceProject" är det dags att skapa "HelloServerProject". Vi öppnar Eclipse och skapar projektet. I detta projekt ska vi inkludera vårt nyss skapade "HelloInterfaceProject", se nedan:



Glöm inte att addera "j2ee.jar" från "SUN J2EE SDK", se nedan:



2. Skapa klassen HelloStatelessBean

Nu skapar vi själva bönan. Vi döper den till "HelloStatelessBean".

  1. Högerklicka på "HelloServerProject"
  2. Välj "New - Class"
  3. Jag använder paketet "net.programmera.hello.ejb_server" och döper klassen till "HelloStatelessBean".
  4. Jag väljer att implementera gränssnittet "javax.ejb.SessionBean" genom att klicka på "Add" under "Extended interfaces".
Se bild:



Nu ser det ut såhär:



Klicka "Finish"..

3. Implementera bönans metoder

Vi implementerar de nödvändiga metoderna för "HelloStatelessBean". De metoder vi måste uppdatera är:

  1. hello(String name) måste implementeras (från HelloStateless)
  2. ejbCreate() måste implementeras (från HelloStatelessHome)
  3. ejbSetSessionContext() måste implementeras så att Context-objektet sparas.
se nedan:

/*
 * Created on 2006-feb-03
 */
package net.programmera.hello.ejb_server;

import javax.ejb.EJBException;
import javax.ejb.SessionBean;
import javax.ejb.SessionContext;

/**
 * @author Olle
 */
public class HelloStatelessBean implements SessionBean {
	// Store the Context in a specific variable
    private SessionContext context = null;
   
    // ------ Mehtods from HelloStateless --------
    /* 
     * This method corresponds to hello() in HelloStateless interface.
	 * This is the only business method in this class.
	 */
    public String hello(String name){
    	return "Hello "+name+", from www.programmera.net!";
    }
    
    // ------ Mehtods from HelloStatelessHome --------
	/* 
	 * This metod corresponds to create() in the HelloStatelessHome interface.
	 * This method has to be implemented.
	 */
    public void ejbCreate(){
    	// Do nothing
    }
    
    // ------ Mehtods from SessionBean --------
	/* (non-Javadoc)
	 * @see javax.ejb.SessionBean#ejbActivate()
	 */
	public void ejbActivate() throws EJBException {
		// TODO Auto-generated method stub

	}

	/* (non-Javadoc)
	 * @see javax.ejb.SessionBean#ejbPassivate()
	 */
	public void ejbPassivate() throws EJBException {
		// TODO Auto-generated method stub

	}

	/* (non-Javadoc)
	 * @see javax.ejb.SessionBean#ejbRemove()
	 */
	public void ejbRemove() throws EJBException {
		// TODO Auto-generated method stub

	}

	/* (non-Javadoc)
	 * @see javax.ejb.SessionBean#setSessionContext(javax.ejb.SessionContext)
	 */
	public void setSessionContext(SessionContext arg0) throws EJBException {
		this.context = arg0;
	}

}

4. Skapa ejb-jar.xml

Vi skapar en mapp genom att högerklicka på projektet och välja New - Folder, döp mappen "META-INF":



Högerklicka på mappen META-INF och välj New - File, döp filen till "ejb-jar.xml":



Skriv följande:

<?xml version="1.0"?>
<!DOCTYPE ejb-jar PUBLIC 
"-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN" 
"http://java.sun.com/dtd/ejb-jar_2_0.dtd">

<ejb-jar>
 <enterprise-beans>
  <session>
     <description>Hello world ejb, used for testing</description>
     <display-name>HelloStatelessDisplayName</display-name>
     <ejb-name>HelloStateless</ejb-name>
     <ejb-class>net.programmera.hello.ejb_server.HelloStatelessBean</ejb-class>
     <home>net.programmera.hello.ejb_interface.HelloStatelessHome</home>
     <remote>net.programmera.hello.ejb_interface.HelloStateless</remote>
     <session-type>Stateless</session-type>
     <transaction-type>Container</transaction-type>
   </session>
  </enterprise-beans>
</ejb-jar>

5. Skapa jboss.xml

För att JBoss ska hitta vår böna behöver vi en extra fil "jboss.xml". Denna fil ligger utanför EJB-specen och kommer alltså se annorlunda ut om du väljer att sjösätta på någon annan typ av Java EE server. För att skapa filen, högerklicka på mappen META-INF och välj New - File, döp filen till "jboss.xml". Skriv följande:

<?xml version="1.0"?>
<!DOCTYPE jboss PUBLIC "-//JBoss//DTD JBOSS 4.0//EN"
  "http://www.jboss.org/j2ee/dtd/jboss_4_0.dtd">

<jboss>
  <enterprise-beans>
    <session>
      <ejb-name>HelloStateless</ejb-name>
      <jndi-name>ejb/HelloStateless</jndi-name>      
    </session>
  </enterprise-beans>
</jboss>

6. Skapa en JAR

Nu är vi klara med utvecklingen av bönan och det är dags att skapa en JAR som vi sedan ska sjösätta i EJB-behållaren. Högerklicka på projektet och välj export. Välj "JAR file" och klicka Next, se bilden:



Klicka i så att "HelloInterfaceProject" kommer med. Döp filen till "HelloServer.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 behöver ingen "main()"-fil till denna JAR, så klicka bara Finish:



Kontrollera att filen C:/workspace/HelloServer.jar existerar. I så fall är det klart.

  • OBS: Om du får felet "Resource is out of sync with the file system " betyder det att du har ändrat en fil utanför Eclipse (troligtvis någon av XML-filerna). Gör en refresh på projektet, exportera igen, och felet kommer att försvinna.

7. Sjösätt JARen

Nu är det dags att sjösätta "HelloServer.jar" i JBoss. JBoss har "hot deploy" vilket innebär att man kan sjösätta under tiden servern kör.

  1. Starta JBoss
  2. Lägg "HelloServer.jar" i mappen D:\Program\JBoss402\jboss-4.0.2\server\default\deploy
Om allt går bra så får vi följande utskrift:

15:54:20,218 INFO  [EjbModule] Deploying HelloStateless
15:54:20,500 INFO  [EJBDeployer] Deployed: file:/D:/Program/JBoss402/jboss-4.0.2
/server/default/deploy/HelloServer.jar
Du kan surfa in på URLen  http://localhost:8080/jmx-console/  för att se om din böna har kommit upp, se bilden: