...
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 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 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 | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
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 | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
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 borderStyle solid
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 | ||||
---|---|---|---|---|
| ||||
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 |
---|