![]() |
![]() |
|
|
Generating a Server Enterprise Java Bean-based Application
This type of application produces Java classes that comprise an EJB application, similar to a Client EJB application, but acting as a remote server from the viewpoint of the mainframe. The classes process service requests originating from the mainframe (remote) system, known as "inbound" requests, and transfer data records to and from the mainframe. From the viewpoint of the Java classes, they receive EJB method requests. From the viewpoint of the mainframe application, it invokes remote DPL or IMS programs.
Action List
Before you build a Server Enterprise Java Bean-based application, see the following action list and refer to the appropriate information sources.
Prerequisites
Before you start programming your Server Enterprise Java Bean-based application, you should complete the following tasks:
Components of an eGen COBOL Server EJB Script
The following listing shows the contents of a complete script for defining a server EJB application.
Listing 4-1 Sample Server EJB Script
1 #--------------------------------------------------------
2 # empserver.egen
3 # JAM script for an employee record.
4 #
5 # $Id: empserver.egen, v 1.1 2000/01/21 23:20:40
6 #-------------------------------------------------------------
7
8 # DataViews (typed data records)
9
10 view sample.EmployeeRecord (Comment 1)
11 from emprec.cpy
12
13 # Clients and servers (Comment 2)
14
15 server ejb sample.SampleServer my.sampleServer (Comment 3)
16 {
17 method newEmployee (EmployeeRecord)(Comment 4)
18 returns EmployeeRecord
19 }
20
21 # End
Table 4-1 refers to the numbered comments in Listing 4-1.
Processing the Script
Issue the following command to process the script.
Listing 4-2 Sample Script Process Command
egencobol empserver.egen
emprec.cpy, Lines: 21, Errors: 0, Warnings: 0
Generating sample.EmployeeRecord...
Generating group emp-name
Generating group emp-addr
Generating SampleServer...
Working with Generated Files
The empserver.egen script command generates the following files.
SampleServer.java Source File
The following listing shows the content of the generated SampleServer.java source file.
Listing 4-3 Sample SampleServer.java Contents
// SampleServer.java
//
// EJB Remote Interface generated by eGenCobol on 24-Jan-2000.
package sample;
// Imports
import javax.ejb.EJBObject;
...
/** Remote Interface for SampleServer EJB. */
public interface SampleServer
extends gwObject
{
//dispatch
byte[] dispatch(byte[] commarea, Object future)
throws RemoteException, UnexpectedException;
}
// End SampleServer.java
SampleServerBean.java Source File
The following listing shows the contents of the generated SampleServerBean.java source file.
Listing 4-4 Sample SampleServerBean.java Contents
// SampleServerBean.java
//
EJB generated by eGenCobol on 24-Jan-2000.
package Sample;
// Imports
import com.bea.jam.egen.EgenServerBean;
...
/** EJB implementation. */
public class SampleServerBean
extends EgenServerBean
{
// dispatch
public byte[] dispatch (byte[] commarea, Object future)
throws IOException
{
...
}
/**
* Do the actual work for a newEmployee operation.
* NOTE: This routine should be overridden to do actual work
*/
EmployeeRecord newEmployee (EmployeeRecord commarea)
{
return new EmployeeRecord();
}
}
//End SampleServerBean.java
SampleServerHome.java Source File
The following listing shows the contents of the generated SampleServerHome.java source file.
Listing 4-5 Sample SampleServerHome.java Contents
// SampleServerHome.java
//
// EJB Home interface generated by eGenCobol on 24-Jan-2000.
package Sample;
//Imports
import javax.ejb.EJBHome;
...
/** Home interface for SampleServer EJB. */
public interface SampleServerHome
extends EJBHome
{
//create
SampleServer create()
throws CreateException, RemoteException;
}
// End SampleServerHome.java
SampleServer-jar.xml Source File
The following listing shows the contents of the generated SampleServer-jar.xml deployment descriptor file.
Listing 4-6 Sample SampleServer-jar.xml Contents
<?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>
<session>
<ejb-name>SampleServer</ejb-name>
<home>sample.SampleServerHome</home>
<remote>sample.SampleServer</remote>
<ejb-class>sample.SampleServerBean</ejb-class>
<session-type>Stateless</session-type>
<transaction-type>Container</transaction-type>
</session>
</enterprise-beans>
<assembly-descriptor>
<container-transaction>
<method>
<ejb-name>SampleServer</ejb-name>
<method-intf>Remote</method-intf>
<method-name>*</method-name>
</method>
<trans-attribute>NotSupported</trans-attribute>
</container-transaction>
</assembly-descriptor>
</ejb-jar>
wl-SampleServer-jar.xml Source File
The following listing shows the contents of the generated wl-SampleServer-jar.xml source file. To use this file, copy it to weblogic-ejb-jar.xml
Listing 4-7 Sample wl-SampleServer-jar.xml Contents
<?xml version="1.0"?>
<!DOCTYPE weblogic-ejb-jar PUBLIC '-//BEA Systems, Inc.//DTD WebLogic 5.1.0 EJB//EN' 'http://www.bea.com/servers/wls510/dtd/weblogic-ejb-jar.dtd'>
<weblogic-ejb-jar>
<weblogic-enterprise-bean>
<ejb-name>SampleServer</ejb-name>
<caching-descriptor>
<max-beans-in-free-pool>50</max-beans-in-free-pool>
</caching-descriptor>
<jndi-name>my.sampleBean</jndi-name>
</weblogic-enterprise-bean>
</weblogic-ejb-jar>Script Comments
Customizing a Server Enterprise Java Bean-Based Application
The generated server enterprise Java bean-based applications are only intended for customizing, since they perform no real work without customization.
This section describes the way that generated server EJB code can be customized.
The following figure illustrates the relationships and inheritance hierarchy between the JAM classes comprising the application.
Figure 4-1 The JAM Server EJB Class Hierarchy
The generated Java code for a client EJB application is a class that inherits class EgenServerBean. The EgenServerBean class is provided in the JAM distribution jar file. This base class, illustrated in the following listing, provides the basic framework for an EJB. It provides the required methods for a Stateless Session EJB. Listing 4-8 EgenServerBean.java Base Class The generated class, illustrated in the following listing, adds the methods specific to this EJB. Listing 4-9 Generated SampleServerBean.java Class The following listing shows an example ExtSampleServerBean class that extends the generated SampleServerBean class, providing an implementation of the newEmployee() method. The example method prints a message indicating that a newEmployee request has been received. Listing 4-10 Sample ExtSampleServerBean.java Contents Once it has been written, the ExtSampleServerBean class and the other EJB Java source files must be compiled and deployed in the same manner as other EJBs. Before deploying, the deployment descriptor must be modified; the ejb-class must be set to the name of your extended EJB implementation class.
//==========================================================
// EgenServerBean.java
// The base class for generated server EJB's.
//
//===============================================================package com.bea.jam.egen;
abstract public class EgenServerBean
implements SessionBean
{
// Implementation of ejbActivate(), ejbRemove(),
// ejbPassivate(),
// setSessionContext() and ejbCreate().
... // Variables
protected transient SessionContext m_context;
protected transient Properties m_properties;
}// End EgenServerBean.java
// SampleServerBean.java
//
// EJB generated by eGenCobol on 03-Feb-00.
//package Sample;
//Imports
//
import java.io.IOException;
import java.util.Hashtable;
import com.bea.sna.jcrmgw.snaException;
import com.bea.base.io.MainframeWriter
import com.bea.base.io.MainframeReader;
import com.bea.jam.egen.EgenServerBean;
import com.bea.jam.egen.InboundDispatcher;/**
* EJB implementation
*/
public class SampleServerBean extends EgenServerBean
{
// dispatch
//
public byte[] dispatch(byte[] commarea, Object future)
throws IOException
{
EmployeeRecord inputBuffer
= new EmployeeRecord (new
MainframeReader (commarea));
EmployeeRecord result = newEmployee (inputBuffer);;
return result.toByteArray (new MainframeWriter());
} /**
* Do the actual work for a newEmployee operation.
* NOTE: This routine should be overridden to do actual work
*/
EmployeeRecord newEmployee(EmployeeRecord commarea)
{
return new EmployeeRecord();
}
}// END SampleServerBean.java
// ExtSampleServerBean.java
//package sample;
/**
* EJB implementation
*/
public class ExtSampleServerBean extends SampleServerBean
{
public EmployeeRecord newEmployee (EmployeeRecord in)
{
System.out.println("New Employee: " +
+in.getEmpRecord()in.getEmpName().getEmpNameFirst()
+ " "
+ in.getEmpRecord().getEmpname().getEmpNameLast());
return in;
}
}// END ExtSampleServerBean.java
Compiling and Deploying
Refer to the BEA WebLogic server documentation for more information. The sample file provided with WebLogic Server contains a build script for reference.
What Do I Do Next?
Refer to BEA Java Adapter for Mainframe Scenarios for detailed examples of some of the application models discussed in this guide.
![]() |
![]() |
![]() |
|
Copyright © 2001 BEA Systems, Inc. All rights reserved.
|