Introduction
Referring to beans from other Jar not included in the same Ear is not as simple as in case they are included in one Ear. There are three ways to accomplish this purpose.
Jar with referred bean
Java code
| Code Block |
|---|
@Stateless(name="JmsDispatcherGate")
public class JmsDispatcherGateImpl implements DispatcherGateLocal, DispatcherGateRemote {
|
| Code Block |
|---|
@Local
public interface DispatcherGateLocal {
|
| Code Block |
|---|
@Remote
public interface DispatcherGateRemote {
|
Geronimo's specific XML
| Code Block |
|---|
|
<?xml version="1.0" encoding="UTF-8"?>
<openejb-jar xmlns="http://www.openejb.org/xml/ns/openejb-jar-2.1" xmlns:pkgen="http://www.openejb.org/xml/ns/pkgen-2.0" xmlns:sec="http://geronimo.apache.org/xml/ns/security-2.0" xmlns:sys="http://geronimo.apache.org/xml/ns/deployment-1.2">
<sys:environment>
<sys:moduleId>
<sys:groupId>my.app.dispatcher</sys:groupId>
<sys:artifactId>Dispatcher</sys:artifactId>
<sys:version>1.0</sys:version>
<sys:type>jar</sys:type>
</sys:moduleId>
</sys:environment>
</openejb-jar>
|
Referring with @EJB(mappedName="...") + openejb-jar.xml
| Code Block |
|---|
package my.app.services;
@Stateless(name = "Sender")
public class SenderImpl {
@EJB(mappedName="Dispatcher/JmsDispatcherGate")
private DispatcherGateRemote dispatcherGate = null;
|
| Code Block |
|---|
|
<openejb-jar xmlns="http://www.openejb.org/xml/ns/openejb-jar-2.1"
xmlns:nam="http://geronimo.apache.org/xml/ns/naming-1.2"
xmlns:pkgen="http://www.openejb.org/xml/ns/pkgen-2.0"
xmlns:sec="http://geronimo.apache.org/xml/ns/security-2.0"
xmlns:sys="http://geronimo.apache.org/xml/ns/deployment-1.2">
<sys:environment>
<sys:moduleId>
<sys:groupId>my.app.services</sys:groupId>
<sys:artifactId>Services</sys:artifactId>
<sys:version>1.0</sys:version>
<sys:type>jar</sys:type>
</sys:moduleId>
<!-- only dependency is required -->
<sys:dependencies>
<sys:dependency>
<sys:groupId>my.app.dispatcher</sys:groupId>
<sys:artifactId>Dispatcher</sys:artifactId>
<sys:version>1.0</sys:version>
<sys:type>jar</sys:type>
</sys:dependency>
</sys:dependencies>
</sys:environment>
</openejb-jar>
|
Referring with @EJB(name="") + openejb-jar.xml
| Code Block |
|---|
package my.app.services;
@Stateless(name = "Sender")
public class SenderImpl {
@EJB(name="dispatcher")
private DispatcherGateRemote dispatcherGate = null;
|
| Code Block |
|---|
|
<openejb-jar xmlns="http://www.openejb.org/xml/ns/openejb-jar-2.1"
xmlns:nam="http://geronimo.apache.org/xml/ns/naming-1.2"
xmlns:pkgen="http://www.openejb.org/xml/ns/pkgen-2.0"
xmlns:sec="http://geronimo.apache.org/xml/ns/security-2.0"
xmlns:sys="http://geronimo.apache.org/xml/ns/deployment-1.2">
<sys:environment>
<sys:moduleId>
<sys:groupId>my.app.services</sys:groupId>
<sys:artifactId>Services</sys:artifactId>
<sys:version>1.0</sys:version>
<sys:type>jar</sys:type>
</sys:moduleId>
<sys:dependencies>
<sys:dependency>
<sys:groupId>my.app.dispatcher</sys:groupId>
<sys:artifactId>Dispatcher</sys:artifactId>
<sys:version>1.0</sys:version>
<sys:type>jar</sys:type>
</sys:dependency>
</sys:dependencies>
</sys:environment>
<enterprise-beans>
<session>
<ejb-name>Sender</ejb-name>
<ejb-ref>
<!-- @EJB(name="dispatcher") DispatcherGateRemote dispatcherGateRemote; -->
<ref-name>dispatcher</ref-name>
<nam:pattern xmlns:nam="http://geronimo.apache.org/xml/ns/naming-1.1">
<nam:artifactId>Dispatcher</nam:artifactId>
<nam:name>JmsDispatcherGate</nam:name>
</nam:pattern>
</ejb-ref>
</session>
</enterprise-beans>
</openejb-jar>
|
Referring with @EJB(no name) + openejb-jar.xml
| Code Block |
|---|
package my.app.services;
@Stateless(name = "Sender")
public class SenderImpl {
@EJB
private DispatcherGateRemote dispatcherGate = null;
...
}
|
| Code Block |
|---|
|
<openejb-jar xmlns="http://www.openejb.org/xml/ns/openejb-jar-2.1"
xmlns:nam="http://geronimo.apache.org/xml/ns/naming-1.2"
xmlns:pkgen="http://www.openejb.org/xml/ns/pkgen-2.0"
xmlns:sec="http://geronimo.apache.org/xml/ns/security-2.0"
xmlns:sys="http://geronimo.apache.org/xml/ns/deployment-1.2">
<sys:environment>
<sys:moduleId>
<sys:groupId>my.app.services</sys:groupId>
<sys:artifactId>Services</sys:artifactId>
<sys:version>1.0</sys:version>
<sys:type>jar</sys:type>
</sys:moduleId>
<sys:dependencies>
<sys:dependency>
<sys:groupId>my.app.dispatcher</sys:groupId>
<sys:artifactId>Dispatcher</sys:artifactId>
<sys:version>1.0</sys:version>
<sys:type>jar</sys:type>
</sys:dependency>
</sys:dependencies>
</sys:environment>
<enterprise-beans>
<session>
<ejb-name>Sender</ejb-name>
<ejb-ref>
<!-- @EJB DispatcherGateRemote dispatcherGateRemote; -->
<ref-name>my.app.services.SenderImpl/dispatcherGate</ref-name>
<nam:pattern xmlns:nam="http://geronimo.apache.org/xml/ns/naming-1.1">
<nam:artifactId>Dispatcher</nam:artifactId>
<nam:name>JmsDispatcherGate</nam:name>
</nam:pattern>
</ejb-ref>
</session>
</enterprise-beans>
</openejb-jar>
|