Hi Rick and all,

The Orion Primer is located at:

   http://www.znerd.demon.nl/orion-primer/

The URL Rick gave contained a small typo :)

Ernst


Rick Bergami wrote:
> This is a very simple example and I'm sure can use alot of work:
> 
> Deploying Entity Beans:
> 
> First I would follow the orion primer located at
> http://www.zdnerd.demon.nl/orion-primer and set up a session bean.  Most
> of the instructions following assume you have this application setup
> with the same directory structure.  We going to create a bean with 1
> field: long id (primary key) .
> 
> 1) Create your bean (using the ejbmaker tool in the orion directory will
> do most of the work for you.  Use java –jar orion.jar  in the orion
> directory to start it).  Let’s call them TestEnt (Remote interface),
> TestEntEJB (Bean), TestEntHome (Home interface), TestEntPK (Primary
> key).  The source files should be in your
> \orion-primer\src\java\hello\ejb\ (assuming they are in a package
> hello.ejb.) directory following the orion-primer tutorial.  We will make
> a servlet called TestEntServlet in \orion-primer\src\java\hello\web\
> (assuming they are in a package hello.web.) to create the TestEnt
> instance.
> 
> Below is the source code for all five classes:
> 
> TestEnt.class (remote interface):
> 
> import java.rmi.RemoteException;
> import javax.ejb.*;
> 
> public interface TestEnt extends EJBObject
> {
>  public long getId() throws RemoteException;
> }
> 
> TestEntBean.class (Bean):
> 
> package hello.ejb;
> 
> import java.rmi.*;
> import javax.ejb.*;
> 
> public class TestEntBean implements EntityBean {
>   private EntityContext entityContext;
>   public long id;
> 
> 
>   public void ejbActivate() throws RemoteException {
>   }
> 
>   public void ejbLoad() throws RemoteException {
>   }
> 
>   public void ejbPassivate() throws RemoteException {
>   }
> 
>   public void ejbRemove() throws RemoteException, RemoveException {
>   }
> 
>   public void ejbStore() throws RemoteException {
>   }
> 
>   public void setEntityContext(EntityContext context) throws
> RemoteException {
>     entityContext = context;
>   }
> 
>   public void unsetEntityContext() throws RemoteException {
>     entityContext = null;
>   }
> 
>   public TestEntPK ejbCreate(long id) throws CreateException  {
>   this.id = id;
>   return null; // Return null when using CMP
>  }
> 
>  public void ejbPostCreate(long id)  {
>  }
> 
>   public void setId(long newId) {
>     id = newId;
>   }
> 
>   public long getId() {
>     return id;
>   }
> }
> 
> 
> TestEntHome.class (Home interface):
> 
> import javax.ejb.*;
> import java.rmi.RemoteException;
> 
> public interface TestEntHome extends EJBHome
> {
>  public TestEnt create(long id) throws CreateException, RemoteException;
> 
>  public TestEnt findByPrimaryKey(long key) throws RemoteException,
> FinderException;
> }
> 
> TestEntPK.class (Primary Key):
> 
> package hello.ejb;
> 
> public class TestEntPK {
> 
>   public TestEntPK() {
>   }
> 
>   public long id;
> }
> 
> TestEntServlet.class (Servlet):
> 
> package hello.web;
> 
> import java.io.IOException;
> import java.util.Date;
> import java.util.Properties;
> import javax.naming.*;
> import javax.servlet.*;
> import javax.servlet.http.*;
> import javax.rmi.PortableRemoteObject;
> import hello.ejb.TestEnt;
> import hello.ejb.TestEntHome;
> 
> public class TestEntServlet extends HttpServlet {
> 
>    // constructor
>    public TestEntServlet() {
>       super();
>       trace("<init>");
>    }
> 
>    // A reference to the remote `Hello' object
>    protected TestEnt _testEnt;
> 
>    // Initializes this servlet
>    public void init(ServletConfig config) throws ServletException {
>       super.init(config);
>       trace("init");
> 
> 
>    }
> 
>    // Handles the HTTP GET request
>    public void doGet(HttpServletRequest request, HttpServletResponse
> response)
>    throws ServletException, IOException {
>       trace("doGet");
> 
>       // Get the initial JNDI context using our settings
>       Context context;
>       try {
>          context = new InitialContext();
>       }
>       catch (Throwable exception) {
>          throw new ServletException(
>             "Unable to get initial JNDI context: " +
> exception.toString());
>       }
> 
>       // Get a reference to the TestEnt home interface
>       TestEntHome testEntHome;
>       try {
>          Object boundObject =
> context.lookup("java:comp/env/ejb/TestEntHome");
>          testEntHome = (TestEntHome)
> PortableRemoteObject.narrow(boundObject,TestEntHome.class);
>       }
>       catch (Throwable exception) {
>          exception.printStackTrace();
>          throw new ServletException(
>             "Unable to get home interface here: " +
> exception.toString());
>       }
> 
>       ServletOutputStream out = response.getOutputStream();
> 
>       response.setContentType("text/html");
> 
>       // Get a reference to a TestEnt instance
>       System.out.println("about to create TestEnt bean");
>       try {
>          _testEnt =
> testEntHome.create(Long.parseLong(request.getParameter("ID")));
>          System.out.println("created testEnt bean");
>          out.println("<HTML><BODY bgcolor=\"#FFFFFF\">");
>          out.println("Time stamp: " + new Date().toString());
>          out.println("<BR>Created bean (row) with the id of: " +
> request.getParameter("ID"));
>          out.println("</BODY>");
>          out.println("</HTML>");
>       }
>       catch (Throwable exception) {
>          throw new ServletException(
>             "Unable to create TestEnt instance: " +
> exception.toString());
>       }
> 
> 
> 
> 
> 
> 
>    }
> 
>    // Displays a trace message to System.out
>    private void trace(String methodName) {
>       System.out.print(methodName);
>       System.out.println("() called");
>    }
> 
> }
> 
> 
> 
> 2) Modify your \orion-primer\src\xml\ejb\ejb-jar.xml to look like the
> following:
> 
> <?xml version="1.0"?>
> <!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Enterprise
> JavaBeans 1.1//EN" "http://java.sun.com/j2ee/dtds/ejb-jar_1_1.dtd">
> <ejb-jar>
>           <enterprise-beans>
>         <entity>
>              <ejb-name>hello.ejb.TestEnt</ejb-name>
>              <home>hello.ejb.TestEntHome</home>
>              <remote>hello.ejb.TestEnt</remote>
>              <ejb-class>hello.ejb.TestEntBean</ejb-class>
>              <persistence-type>Container</persistence-type>
>              <prim-key-class>hello.ejb.TestEntPK</prim-key-class>
>              <reentrant>False</reentrant>
>              <cmp-field>
>                <field-name>id</field-name>
>              </cmp-field>
>           </entity>
>           <session>
>             <description></description>
>             <display-name>hello.ejb.Hello</display-name>
>             <ejb-name>hello.ejb.Hello</ejb-name>
>             <home>hello.ejb.HelloHome</home>
>             <remote>hello.ejb.Hello</remote>
>             <ejb-class>hello.ejb.HelloBean</ejb-class>
>             <session-type>Stateless</session-type>
>          </session>
>      </enterprise-beans>
>       <assembly-descriptor>
>          <container-transaction>
>            <method>
>              <ejb-name>TestEntBean</ejb-name>
>              <method-name>*</method-name>
>            </method>
>            <trans-attribute>Required</trans-attribute>
>          </container-transaction>
>          <security-role>
>             <description>Users</description>
>             <role-name>users</role-name>
>          </security-role>
>          <method-permission>
>             <description>Restricted</description>
>             <role-name>users</role-name>
>             <method>
>                <ejb-name>hello.Hello</ejb-name>
>                <method-name>*</method-name>
>             </method>
>          </method-permission>
>       </assembly-descriptor>
> 
> </ejb-jar>
> 
> 
> 3) Modify your \orion-primer\src\xml\web\web.xml to look like the
> following:
> 
> <?xml version="1.0"?>
> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application
> 2.2//EN" "http://java.sun.com/j2ee/dtds/web-app_2_2.dtd">
> 
> <web-app>
>    <display-name>Orion Primer Web Application</display-name>
>    <servlet>
>       <servlet-name>hello.web.HelloServlet</servlet-name>
>       <description>Servlet that calls the Hello bean</description>
>       <servlet-class>hello.web.HelloServlet</servlet-class>
>    </servlet>
>    <servlet>
>       <servlet-name>hello.web.TestEntServlet</servlet-name>
>       <description>Servlet that calls the Test bean</description>
>       <servlet-class>hello.web.TestEntServlet</servlet-class>
>    </servlet>
> 
> 
>    <ejb-ref>
>       <ejb-ref-name>ejb/HelloHome</ejb-ref-name>
>       <ejb-ref-type>Session</ejb-ref-type>
>       <home>hello.ejb.HelloHome</home>
>       <remote>hello.ejb.Hello</remote>
>    </ejb-ref>
>    <ejb-ref>
>       <ejb-ref-name>ejb/TestEntHome</ejb-ref-name>
>       <ejb-ref-type>Entity</ejb-ref-type>
>       <home>hello.ejb.TestEntHome</home>
>       <remote>hello.ejb.TestEnt</remote>
>     </ejb-ref>
> 
> 
>    <servlet-mapping>
>       <servlet-name>hello.web.HelloServlet</servlet-name>
>       <url-pattern>/</url-pattern>
>    </servlet-mapping>
>    <servlet-mapping>
>       <servlet-name>hello.web.TestEntServlet</servlet-name>
>       <url-pattern>/</url-pattern>
>    </servlet-mapping>
> </web-app>
> 
> 4) Run ant from the orion-primer directory.
> 5) Start up orion server from the \orion\ directory (java –jar
> orion.jar).  This should deploy the application and create a directory
> directory/file
> \orion\application-deployments\orion-primer\orion-primer-ejb.jar\orion-ejb-jar.xml.
> This is the file you modify to map the bean to the database.  It should
> look like:
> 
> <?xml version="1.0"?>
> <!DOCTYPE orion-ejb-jar PUBLIC "-//Evermind//DTD Enterprise JavaBeans
> 1.1 runtime//EN" "http://www.orionserver.com/dtds/orion-ejb-jar.dtd">
> 
> <orion-ejb-jar deployment-version="1.0.3" deployment-time="e1298911c3">
>  <enterprise-beans>
>   <entity-deployment name="hello.ejb.TestEnt"
> location="hello.ejb.TestEnt" wrapper="EntityHomeWrapper1"
> table="TestEnt" data-source="jdbc/DefaultEJBDS">
>    <primkey-mapping>
>     <cmp-field-mapping>
>      <fields>
>       <cmp-field-mapping name="id" persistence-name="id" />
>      </fields>
>     </cmp-field-mapping>
>    </primkey-mapping>
>   </entity-deployment>
>   <session-deployment name="hello.ejb.Hello" location="hello.ejb.Hello"
> wrapper="SessionHomeWrapper3" timeout="1200"
> persistence-filename="hello.ejb.Hello" />
>  </enterprise-beans>
>  <assembly-descriptor>
>   <security-role-mapping name="users">
>   </security-role-mapping>
>   <default-method-access>
>    <security-role-mapping impliesAll="true" />
>   </default-method-access>
>  </assembly-descriptor>
> </orion-ejb-jar>
> 
> 6) In your browser type: http://localhost/servlet/TestEntServlet?ID=1.
> This should create a row in the TestEnt table (specified in the xml file
> above) with an id of 1.
> 
> 
> 

Reply via email to