This Confluence has been LDAP enabled, if you are an ASF Committer, please use your LDAP Credentials to login. Any problems file an INFRA jira ticket please.

Child pages
  • 9.8. Jar から Jar への EJB の参照 (ear なし)
Skip to end of metadata
Go to start of metadata

紹介

同じ Ear の中に含まれていない他の Jar にある bean を参照することは、ひとつの Ear に含まれる場合ほど単純ではありません。目的達成には(私の知る限り)3つの方法があります。

参照される bean を持つ Jar

Java のコード

@Stateless(name="JmsDispatcherGate")
public class JmsDispatcherGateImpl implements DispatcherGateLocal, DispatcherGateRemote {
@Local
public interface DispatcherGateLocal {
@Remote
public interface DispatcherGateRemote {

Geronimo 固有の 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>

@EJB(mappedName="...") + openejb-jar.xml による参照

package my.app.services;

@Stateless(name = "Sender")
public class SenderImpl {

	@EJB(mappedName="Dispatcher/JmsDispatcherGate")
	private DispatcherGateRemote dispatcherGate = null;
<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>

@EJB(name="") + openejb-jar.xml による参照

package my.app.services;

@Stateless(name = "Sender")
public class SenderImpl {

	@EJB(name="dispatcher")
	private DispatcherGateRemote dispatcherGate = null;
<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>

@EJB(name なし) + openejb-jar.xml による参照

package my.app.services;

@Stateless(name = "Sender")
public class SenderImpl {

	@EJB
	private DispatcherGateRemote dispatcherGate = null;
<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>
  • No labels