Hi All,
Just curious with JBoss Stateless Session Bean. I currently have jboss-4.0.3SP1
running as my application server. Then I try to deploy a simple stateless
session bean.
I have 2 interfaces (home and remote) and the bean class as follows
| //PlayerHome.java
|
| package jndi.bean;
|
| import java.rmi.RemoteException;
|
| import javax.ejb.CreateException;
| import javax.ejb.EJBHome;
|
| public interface PlayerHome extends EJBHome {
| public Player create() throws RemoteException, CreateException;
| }
|
|
| //Player.java
| package jndi.bean;
|
| import java.rmi.RemoteException;
|
| import javax.ejb.EJBObject;
|
| public interface Player extends EJBObject {
| public String getPlayerID() throws RemoteException;
|
| public void setPlayerID(String playerid) throws RemoteException;
| }
|
|
| //PlayerBean.java
| package jndi.bean;
|
| import java.rmi.RemoteException;
| import java.util.*;
|
| import javax.ejb.EJBException;
| import javax.ejb.SessionBean;
| import javax.ejb.SessionContext;
|
| public class PlayerBean implements SessionBean {
| private String playerID;
| private String position;
| private String playerName;
| private int salary;
|
| Collection objCollection;
|
| public String getPlayerID()
| {
| return playerID;
| }
|
| public void setPlayerID(String playeridvalue)
| {
| playerID = playeridvalue;
| }
|
| public String getPlayerName() {
| return playerName;
| }
|
| public void setPlayerName(String playerName) {
| this.playerName = playerName;
| }
|
| public String getPosition() {
| return position;
| }
|
| public void setPosition(String position) {
| this.position = position;
| }
|
| public int getSalary() {
| return salary;
| }
|
| public void setSalary(int salary) {
| this.salary = salary;
| }
|
| public void setSessionContext(SessionContext arg0) throws EJBException,
RemoteException {
| // TODO Auto-generated method stub
|
| }
|
| public void ejbCreate() {
|
| }
|
| public void ejbRemove(){
| // TODO Auto-generated method stub
|
| }
|
| public void ejbActivate() throws EJBException, RemoteException {
| // TODO Auto-generated method stub
|
| }
|
| public void ejbPassivate() throws EJBException, RemoteException {
| // TODO Auto-generated method stub
|
| }
| }
|
|
and the deployment descriptor
| <?xml version="1.0" encoding="UTF-8"?>
| <ejb-jar id="ejb-jar_ID" version="2.1"
| xmlns="http://java.sun.com/xml/ns/j2ee"
| xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
| xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/ejb-jar_2_1.xsd">
| <description>jBoss test application</description>
| <display-name>Player Test</display-name>
| <enterprise-beans>
| <session>
| <ejb-name>PlayerBean</ejb-name>
| <home>jndi.bean.PlayerHome</home>
| <remote>jndi.bean.Player</remote>
| <ejb-class>jndi.bean.PlayerBean</ejb-class>
| <session-type>Stateless</session-type>
| <transaction-type>Bean</transaction-type>
| </session>
| </enterprise-beans>
| </ejb-jar>
|
and all the code deployed successfully.... I try to access that from the client
| //PlayerTest.java
| import java.util.*;
|
| import javax.naming.InitialContext;
| import javax.rmi.PortableRemoteObject;
|
| import jndi.bean.*;
|
| public class PlayerTest {
|
| public static void main(String[] args) {
|
| try
| {
| Properties prop = new Properties();
| prop.setProperty("java.naming.factory.initial",
|
"org.jnp.interfaces.NamingContextFactory");
| prop.setProperty("java.naming.provider.url",
| "192.168.100.34:1099");
|
| InitialContext ctx = new InitialContext(prop);
|
| Object ref = ctx.lookup("PlayerBean");
|
| PlayerHome myHome = (PlayerHome)
PortableRemoteObject.narrow(ref,PlayerHome.class);
|
| Player myplayer = (Player) myHome.create();
|
| myplayer.setPlayerID("J-001");
|
| System.out.println(myplayer.getPlayerID());
| }
| catch(Exception e)
| {
| e.printStackTrace();
| }
|
| }
| }
|
it will print :
anonymous wrote :
| J-001
|
as the result.
Then.... I try to call it without set any value ... so I remove the following
code from PlayerTest.java
| myplayer.setPlayerID("J-001");
|
What I expected is a null value. But it comes out "J-001" as the result. Then I
try to access from another client.... still got "J-001".
How is it happen ? Is there something wrong about my code ? Why JBoss cache the
Stateless while it should be removed after a client instance is remove ?
Regards,
Feris
View the original post :
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3942554#3942554
Reply to the post :
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3942554
-------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
JBoss-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/jboss-user