Oracle8i Enterprise JavaBeans Developer's Guide and Reference Release 3 (8.1.7) Part Number A83725-01 |
|
Overview ======== This example show two beans: Foo and Bar. In the example, the Bar bean inherits from the Foo bean. The required coding and the effects of this bean inheritance are demonstrated in this example. Source Files ============ Client.java ----------- You invoke the client program from a command prompt, and pass it four arguments, the - service URL (service ID, hostname, port, and SID if port is a listener) - name of the published bean to lookup and instantiate - username - password that authenticates the client to the Oracle8i database server For example: % java -classpath LIBs Client sess_iiop://localhost:2222 /test/myHello scott tiger where LIBs is the classpath that must include $ORACLE_HOME/lib/aurora_client.jar #If using Java 2, use classes12.zip instead of classes111.zip $ORACLE_HOME/jdbc/lib/classes111.zip $ORACLE_HOME/lib/vbjorb.jar $ORACLE_HOME/lib/vbjapp.jar $JAVA_HOME/lib/classes.zip (Note: for NT users, the environment variables would be %ORACLE_HOME% and %JAVA_HOME%.) The client code performs the following steps: - gets the arguments passed on the command line - creates a new JNDI Context (InitialContext()) - looks up the published bean to find and activate its home interface - using the home interface, instantiates through its create() method a new bean object, hello - invokes the helloWorld() method on the hello object and prints the results The printed output is: Hello World Hello World from bar Hello World 2 from bar Hello World from bar foo.ejb ------- The Foo bean deployment descriptor. See ../helloworld/readme.txt for a more complete description of a typical example deployment descriptor. bar.ejb ------- The bar bean deployment descriptor. inheritance/FooHome.java ------------------------ The Foo bean home interface. Specifies a single no-parameter create() method. inheritance/Foo.java -------------------- The Foo remote interface. Note that only a single method, hello(), is specified. inheritance/BarHome.java ------------------------ The Bar bean home interface. Specifies a single no-parameter create() method. inheritance/Bar.java -------------------- The Bar remote interface. Note that only a single method, hello2(), is specified. inheritanceServer/FooBean.java ------------------------------ The Foo bean implementation. Implements the hello() method of inheritance/Foo.java, returning a String greeting. inheritanceServer/BarBean.java ------------------------------ The Bar bean implementation. Implements both the hello() method inherited from FooBean, as well as the hello2() method specified in inheritance/Bar.java. Note that this bean extends FooBean, so it does not implement SessionBean or any of its methods, such as ejbRemove(0, ejbActivate(), and so on, which is normally a requirement of a session bean. This is because BarBeam inherits the implementation of these from FooBean. Compiling and Running the Example ================================= UNIX ---- Enter the command 'make all' or simply 'make' in the shell to compile, load, and deploy the objects, and run the client program. Other targets are 'run' and 'clean'. Make sure that a shell environment variable ORACLE_HOME is set to point to the home location of the Oracle installation. This is operating system dependent, so see the Installation documentation that came with your system for the location. Also, review the README file for the Oracle database, and the README file for the CORBA/EJB server (the Oracle8i ORB), for additional up-to-date information. Windows NT ---------- On Windows NT, run the batch file makeit.bat from a DOS command prompt to compile, load, and deploy the objects. Run the batch file runit.bat to run the client program, and see the results. Make sure that the environment variables %ORACLE_HOME%, %CLASSPATH%, and %SERVICE% are set appropriately for the DOS command window. You can set these as either user or system environment variables from the Control Panel. Double click on System in the Control Panel then on the Environment tab to set these variables. Start a new DOS window after setting environment variable values. See the Installation documentation that came with your Oracle8i system for the values of these variables. Also, review the README file for the Oracle database, and the README file for the CORBA/EJB server (the Oracle8i ORB), for additional up-to-date information. You can also set an environment variable %JAVA_HOME% to point to the root of your Java JDK. For example, SET JAVA_HOME=C:\JDK1.1.6.
import inheritanceServer.*; import inheritance.*; import oracle.aurora.jndi.sess_iiop.ServiceCtx; import javax.naming.Context; import javax.naming.InitialContext; import java.util.Hashtable; public class Client { public static void main(String[] args) throws Exception { if (args.length != 5) { System.out.println("usage: Client serviceURL fooBeanName " + "barBeanName username password"); System.exit(1); } String serviceURL = args [0]; String fooBeanName = args [1]; String barBeanName = args[2]; String username = args[3]; String password = args[4]; Hashtable env = new Hashtable(); env.put(Context.URL_PKG_PREFIXES, "oracle.aurora.jndi"); env.put(Context.SECURITY_PRINCIPAL, username); env.put(Context.SECURITY_CREDENTIALS, password); env.put(Context.SECURITY_AUTHENTICATION, ServiceCtx.NON_SSL_LOGIN); Context ic = new InitialContext(env); // Get a foo object from a foo published bean FooHome home = (FooHome) ic.lookup(serviceURL + fooBeanName); Foo foo = home.create(); System.out.println(foo.hello()); // Get a bar object from a bar published bean BarHome barHome = (BarHome) ic.lookup(serviceURL + barBeanName); Bar bar = barHome.create(); System.out.println(bar.hello()); System.out.println(bar.hello2()); // Get a foo object from a bar published bean BarHome fooBarHome = (BarHome)ic.lookup(serviceURL + barBeanName); Foo fooBar = (Foo) fooBarHome.create(); System.out.println(fooBar.hello()); } }
package inheritance; import javax.ejb.EJBHome; import javax.ejb.CreateException; import java.rmi.RemoteException; public interface FooHome extends EJBHome { public Foo create () throws RemoteException, CreateException; }
package inheritance; import javax.ejb.EJBHome; import javax.ejb.CreateException; import java.rmi.RemoteException; public interface FooHome extends EJBHome { public Foo create () throws RemoteException, CreateException; }
package inheritance; import javax.ejb.EJBObject; import java.rmi.RemoteException; public interface Foo extends EJBObject { public String hello () throws RemoteException; }
package inheritance; import javax.ejb.EJBObject; import java.rmi.RemoteException; public interface Foo extends EJBObject { public String hello () throws RemoteException; }
package inheritanceServer; import java.rmi.RemoteException; import javax.ejb.*; import oracle.aurora.jndi.sess_iiop.*; public class FooBean implements SessionBean { // Methods of the interface public String hello () throws RemoteException { return "Hello World"; } // Methods of the SessionBean public void ejbCreate () throws RemoteException, CreateException { } public void ejbRemove() { } public void setSessionContext (SessionContext ctx) { } public void ejbActivate () { } public void ejbPassivate () { } }
package inheritanceServer; import java.rmi.RemoteException; import javax.ejb.*; import oracle.aurora.jndi.sess_iiop.*; public class FooBean implements SessionBean { // Methods of the interface public String hello () throws RemoteException { return "Hello World"; } // Methods of the SessionBean public void ejbCreate () throws RemoteException, CreateException { } public void ejbRemove() { } public void setSessionContext (SessionContext ctx) { } public void ejbActivate () { } public void ejbPassivate () { } }
|
Copyright © 1996-2000, Oracle Corporation. All Rights Reserved. |
|