You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

86 lines
2.3 KiB
Java

Equalizer bean
package com.ack.j2ee.ejb.session;
import java.rmi.RemoteException;
import javax.ejb.CreateException;
import javax.ejb.EJBException;
import javax.ejb.RemoveException;
import javax.ejb.SessionBean;
import javax.ejb.SessionContext;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.rmi.PortableRemoteObject;
/**
*
<session>
<display-name>Equalizer</display-name>
...
<ejb-ref>
<description>one the top CIA informers</description>
<ejb-ref-name>cia/grass</ejb-ref-name>
<ejb-ref-type>Session</ejb-ref-type>
<home>com.ack.j2ee.ejb.session.EqualizerHome</home>
<remote>com.ack.j2ee.ejb.session.Equalizer</remote>
<ejb-link>Equalizer</ejb-link>
</ejb-ref>
</session>
*/
public class EqualizerBean implements SessionBean {
private SessionContext sessionContext;
public String getTimeOfHit() throws RemoteException {
Informer informer = null;
try {
InitialContext ctx = new InitialContext();
// note that by making the Informer session bean an ejb link,
// it can be accessed from within its naming environment,
// that is 'java:comp/env' by using the name specified
// within its deployment descriptor, that is 'cia/grass'
Object ejbObject = ctx.lookup( "java:comp/env/cia/grass" );
// then its business as usual once we have the ejbObject
InformerHome home = (InformerHome) PortableRemoteObject.
narrow( ejbObject, InformerHome.class );
informer = home.create();
return "Assassination Time: " + informer.getTheTime();
}
catch( NamingException nex ) {
throw new EJBException( "cannot find informer", nex );
}
catch( CreateException cex ) {
throw new EJBException( "problem getting informed", cex );
}
finally {
if( informer != null ) {
try {
informer.remove();
}
catch( RemoveException rex ) {
throw new EJBException( "problem getting rid of informer", rex );
}
}
}
}
public void ejbCreate() throws CreateException {
}
public void ejbRemove() {
}
public void ejbActivate() {
}
public void ejbPassivate() {
}
public void setSessionContext( SessionContext sessionContext ) {
this.sessionContext = sessionContext;
}
}