紹介
同じ Ear の中に含まれていない他の Jar にある bean を参照することは、ひとつの Ear に含まれる場合ほど単純ではありません。目的達成には(私の知る限り)3つの方法があります。
参照される bean を持つ Jar
Java のコード
Code Block |
---|
@Stateless(name="JmsDispatcherGate")
public class JmsDispatcherGateImpl implements DispatcherGateLocal, DispatcherGateRemote {
|
Code Block |
---|
@Local
public interface DispatcherGateLocal {
|
Code Block |
---|
@Remote
public interface DispatcherGateRemote {
|
Geronimo 固有の 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>
|
@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>
|
@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>
|
@EJB(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>
|