Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

The moduleId Order/OrderEAR/5.0/car is the configuration for the Order.ear. The ejb module declares a dependency on the console.dbpool/OrderDS/1.0/rar configuration in <sys:dependencies> section. This is the moduleId of the database pool that connects to the DB2 database where the order details are stored.

JEE Application Client deployment plan

JEE application modules run in client container and also have access to server environment. Usually, JEE client applications are created to administer the running enterprise applications in the server. Client modules run in a separate JVM and connect to enterprise application resources but have access to all the application resources in standard JEE way.

The JEE client module requires application-client.xml as deployment descriptor and geronimo-application-client.xml as deployment plan. In the application-client.xml, the required ejb names, security role names, resources names etc., are declared while in geronimo-application-client.xml, the declared names are mapped to actual resources in server.

The following is the deployment descriptor of the JEE application client module that looks up an ejb and calls a method on it. The ejb converts the Indian Rupess (Rs.) into American Dollars ($). The client sends a double value which is Indian Rupees to ejb. The ejb returns equivalent American Dollars as double value.

Code Block
XML
XML
borderStylesolid
titleapplication-client.xml

<?xml version="1.0" encoding="UTF-8"?>

<application-client xmlns="http://java.sun.com/xml/ns/javaee" 
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
  http://java.sun.com/xml/ns/javaee/application-client_5.xsd"
  version="5">
    
  <ejb-ref>
    <ejb-ref-name>ejb/Converter</ejb-ref-name>
    <ejb-ref-type>Session</ejb-ref-type>
    <remote>examples.appclient.Converter</remote>
  </ejb-ref>

</application-client>

The application client declares the ejb name ejb/Converter through <ejb-ref>> .. </ejb-ref> elements.

Following is the corresponding deployment plan of the JEE client module.

Code Block
XML
XML
borderStylesolid
titlegeronimo-application-client.xml

<?xml version="1.0" encoding="UTF-8"?>

<application-client xmlns="http://geronimo.apache.org/xml/ns/j2ee/application-client-2.0"
  xmlns:sys="http://geronimo.apache.org/xml/ns/deployment-1.2"
  xmlns:naming="http://geronimo.apache.org/xml/ns/naming-1.2"
  xmlns:security="http://geronimo.apache.org/xml/ns/security-2.0"
  xmlns:connector="http://geronimo.apache.org/xml/ns/j2ee/connector-1.2">
 
 <sys:client-environment>
  <sys:moduleId>
  <sys:groupId>Converter</sys:groupId>
  <sys:artifactId>Converter-app-client</sys:artifactId>
  <sys:version>3.0</sys:version>
  <sys:type>jar</sys:type>
  </sys:moduleId>
</sys:client-environment>
  
  <sys:server-environment> 
   <sys:moduleId>
   <sys:groupId>Converter</sys:groupId>
   <sys:artifactId>Converter-app-client-server</sys:artifactId>
   <sys:version>3.0</sys:version>
   <sys:type>jar</sys:type>
   </sys:moduleId>    		
  </sys:server-environment> 
    
     <ejb-ref>
     	<ref-name>ejb/Converter</ref-name>
     	<naming:pattern>
         <naming:groupId>Converter</naming:groupId>
         <naming:artifactId>ConverterEAR</naming:artifactId>
         <naming:version>5.0</naming:version>
         <naming:module>ConverterEJB.jar</naming:module>
         <naming:name>ConverterBean</naming:name>
       </naming:pattern>
     </ejb-ref>
     
</application-client>

Observe the various xml elements and schemas to which they belong. The plan defines the client environment and the server environment configurations. The server environment configuration runs in the server where as the client environment configuration runs in the client JVM. In the above plan, the ejb name ejb/Converter is mapped to ConverterBean ejb in the ConverterEAR.

The below is the client code that looks up the ejb and calls the method on it.

Code Block
JAVA
JAVA
borderStylesolid
titleConverterClient.java

package examples.appclient.client;
import javax.naming.Context;
import javax.naming.InitialContext;
import examples.appclient.Converter;

public class ConverterClient {

 //The remote interface of the ConverterBean packaged with the
 //JEE client jar
   private static Converter converter;

   private static double amount = 50;
   public static void main(String[] args) {
    amount = Double.parseDouble(args[0]);
    doConversion();
   }

    public static void doConversion() {
     try {
            
        Context context = new InitialContext();
        converter = (Converter) 
                 context.lookup("java:comp/env/ejb/Converter");
        double dollars = converter.getDollars(amount);
        System.out.println("Rs " + amount + " is " + dollars + " Dollars.");
        System.exit(0);
            
        } catch (Exception ex) {
            System.err.println("Caught an unexpected exception!");
            ex.printStackTrace();
        }
    }
}

The META-INF/MANIFEST.MF file should contain the following entry for the client to run.

Code Block
XML
XML
borderStylesolid
titlegeronimo-application-client.xml

Manifest-Version: 1.0
Main-Class: examples.appclient.client.ConverterClient
Warning

Do not forget to insert a new line after the Main-Class: entry in the MANIFEST.MF file.

The JEE client is created by packaging META-INF/application-client.xml, META-INF/geronimo-application-client.xml, {{ ConverterClient.class}}, {{ Converter.class}} and META-INF/MANIFEST.MF files into a jar file.

The following steps illustrates the procedure.

No Format
bgColor#000000
borderStylesolid

C:\temp\ConverterEJBClient>jar -cvf ConverterEJBClient.jar *
added manifest
adding: examples/(in = 0) (out= 0)(stored 0%)
adding: examples/appclient/(in = 0) (out= 0)(stored 0%)
adding: examples/appclient/client/(in = 0) (out= 0)(stored 0%)
adding: examples/appclient/client/ConverterClient.class(in = 1716) (out= 936)(deflated 45%)
adding: examples/appclient/Converter.class(in = 146) (out= 131)(deflated 10%)
adding: META-INF/application-client.xml(in = 510) (out= 252)(deflated 50%)
adding: META-INF/geronimo-application-client.xml(in = 2049) (out= 474)(deflated 76%)
ignoring entry META-INF/MANIFEST.MF

The following command illustrates the deployment and running of the client module.

No Format
bgColor#000000
borderStylesolid

C:\\Geronimo-2.1\bin>deploy.bat --user system --password manager deploy C:\temp\ConverterEJBClient.jar
Using GERONIMO_BASE: C:\Geronimo-2.1
Using GERONIMO_HOME: C:\Geronimo-2.1
Using GERONIMO_TMPDIR: var\temp
Using JRE_HOME: C:\JDK\jre
Deployed Converter/Converter-app-client-server/3.0/jar

C:\Geronimo-2.1\bin>java -Djava.endorsed.dirs="C:\Geronimo-2.1\lib\endorsed" -jar
C:\Geronimo-2.1\bin\client.jar Converter/Converter-app-client/3.0/jar 100

Rs 100.0 is 4000.0 Dollars.

Code Block