Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 5.3

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
xml
<?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
xml
xml
<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
xml
xml
<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
xml
xml
<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>