EJB3 sessions
hi all .............
here is my small example :
1.Fierst Remote Interface Code:
import javax.ejb.Remote;
@Remote
public interface Person {
public void addPersonName(String a);
public void printNames();
}
2. And It's Implementation : Code:
import java.util.ArrayList;
import javax.ejb.Remote;
import javax.ejb.Stateful;
import javax.ejb.TransactionAttribute;
import javax.ejb.TransactionAttributeType;
@Stateful
@Remote(Person.class)
public class PersonBean implements Person
{
ArrayList<String> list = new ArrayList<String>();
@TransactionAttribute(TransactionAttributeType.REQUIRED)
public void addPersonName(String name)
{
list.add(name);
}
@TransactionAttribute(TransactionAttributeType.SUPPORTS)
public void printNames()
{
for (int i = 0; i < list.size(); i++)
{
System.out.println("Name = "+list.get(i));
}
}
}
3. Second Remote Interface : Code:
import javax.ejb.Remote;
@Remote
public interface UsePerson {
public void callPrint()throws Exception;
}
4. And It's Implementation : Code:
@Stateful
@Remote(Fasade.class)
public class UsePersonBean implements UsePerson
{
@EJB
Person person;
@TransactionAttribute(TransactionAttributeType.REQUIRED)
public void callPrint() throws Exception
{
try
{
test.printNames();
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
5. Client code : Code:
public class TestClient
{
public static void main(String[] args)
{
try
{
Properties jndiProps = new Properties();
jndiProps.setProperty(Context.INITIAL_CONTEXT_FACTORY,
"org.jnp.interfaces.NamingContextFactory");
jndiProps.setProperty(Context.URL_PKG_PREFIXES,
"org.jboss.naming:org.jnp.interface");
jndiProps.setProperty(Context.PROVIDER_URL,
"jnp://127.0.0.1:1099");
InitialContext ctx = new InitialContext(jndiProps);
UsePerson useperson = (UsePerson) ctx.lookup("UsePersonBean/remote");
Person person = (Person) ctx.lookup("PersonBean/remote");
person.addPersonName("Piter");
person.addPersonName("John");
person.addPersonName("Miles");
person.addPersonName("Trubambas"); // :)
useperson .callPrint();
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
my task is that i want to get current Person reference in UsePersonBean which created by client.
i think @EJB annotation alwayes makes new reference.
could anybody tell me how i can get current session objects ?
like HTTPSession in Servlets ....
is it right if i use Code:
private @Resource SessionContext ctx;
but somewhere i found that "private @Resource SessionContext ctx;" and "@EJB annotation" are the same.
thanks.
Message was edited by:
Girl

