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".
- Högerklicka på "HelloServerProject"
- Välj "New - Class"
- Jag använder paketet "net.programmera.hello.ejb_server" och döper klassen till "HelloStatelessBean".
- 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:
- hello(String name) måste implementeras (från HelloStateless)
- ejbCreate() måste implementeras (från HelloStatelessHome)
- 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.
- Starta JBoss
- 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: