7. Make process

Example 1.7. Workshop File Structure

<your EJB Workshop root directory>
   |
   +----- EnterpriseArchives
   |  +----- J2EE_RI
   |     |----- AboutBean.ear
   |     |----- AboutBeanClient.jar
   |   
   +----- source 1        
   |  +----- nl
   |    +----- datraverse
   |      +----- workshop
   |        +----- ejb
   |          +----- beans
   |            +----- <BeanName> 2
   |              +----- <BeanName>*.java
   |              +----- <BeanName>.makefile 3
   |              +----- META-INF 
   |                +----- ejb-jar.xml
   |
   +----- target
      |----- <BeanName>Bean.jar
      +----- nl
        +----- datraverse
          +----- workshop
            +----- ejb
              +----- beans
                 +----- <BeanName>*.class
1

Directory containing all sourcecode you write in this workshop.

2

Directory named after the EJB you are writing containing the sourcecode for that Bean.

3

Makefile used to generate classes and jar-files for this JavaBean in the target directory.

Example 1.8. About.makefile

############################################################################
# File         : About.makefile
# Function     : Make products of About EJB
# Dependencies : NMAKE.EXE (Microsoft)
# Environment  : %JAVA_HOME%, %J2EE_HOME%
############################################################################

#----------------------------------------------------
# Set the name of the JavaBean you are going to make
#----------------------------------------------------
BEAN=About

#----------------------------------------------------
# All code to follow need not to be changed if you 
# adhere to the workshop directory structure and 
# naming convention

#----------------------------------------------------
# Inference Rules
#----------------------------------------------------
.SUFFIXES: .class .java

#----------------------------------------------------
# Tools
#----------------------------------------------------
JAVAC=$(JAVA_HOME)\bin\javac
JAVAJAR=$(JAVA_HOME)\bin\jar

#----------------------------------------------------
WS_HOME=..\..\..\..\..\..\..
CLASSFILES=$(WS_HOME)\target
CLSPTH=$(CLASSFILES);$(J2EE_HOME)\lib\j2ee.jar
URLPATH=nl\datraverse\workshop\ejb\beans

T=$(CLASSFILES)\$(URLPATH)
S=.

#----------------------------------------------------
JAR=$(BEAN)Bean
HOME=$(BEAN)Home
IMPLEMENTATION=$(BEAN)EJB
CLIENT=$(BEAN)Client

#----------------------------------------------------
all: jar client

jar: $(CLASSFILES)\$(JAR).jar 
client: $(CLASSFILES)\$(CLIENT).class

#----------------------------------------------------
{$(S)}.java{$(T)}.class:
   $(JAVAC) $(S)\$(@B).java -d $(CLASSFILES) -classpath $(CLSPTH)

#----------------------------------------------------
$(CLASSFILES)\$(CLIENT).class: $(S)\$(CLIENT).java
   $(JAVAC) $(S)\$(@B).java -d $(CLASSFILES) -classpath $(CLSPTH)

#----------------------------------------------------
$(CLASSFILES)\$(JAR).jar: $(T)\$(BEAN).class \
                          $(T)\$(HOME).class \
                          $(T)\$(IMPLEMENTATION).class
   $(JAVAJAR) cf $(CLASSFILES)\$(JAR).jar META-INF\*.*
   @cd $(CLASSFILES) 
   $(JAVAJAR) uf $(JAR).jar $(URLPATH)\$(BEAN)*.class
   @cd ..\sources\$(URLPATH)\$(BEAN) 

#----------------------------------------------------
showjar:
   @cd $(CLASSFILES)
   @$(JAVAJAR) tf $(JAR).jar

#----------------------------------------------------
cleanjar:
   cd $(CLASSFILES)
   del $(JAR).jar

#----------------------------------------------------
clean:
   cd $(CLASSFILES)
   del $(JAR).jar
   del $(CLIENT).class
   del $(URLPATH)\$(BEAN)*.class

#-----------------------
# end of makefile