How can I inject an EJB from another application on the same GlassFish Server?(如何从同一GlassFish服务器上的另一个应用程序注入EJB?)
问题描述
我的本地GlassFish服务器上运行着两个应用程序。一辆租自行车,一辆买火车票。我现在想从火车应用程序调用一个远程EJB,以允许在选定的时间内租赁自行车,但我不确定如何做到这一点。我已经尝试了几种不同的方法。这两个应用程序位于不同的包中,火车应用程序必须知道自行车远程接口,但我不知道如何实现这一点。
远程接口(自行车APP):
@Remote
public interface FahrradRemote {
public List<Fahrrad> findAvaible(Date start, Date end);
public void addAuftrag(Fahrrad fahrrad, Date startDate, Date endDate);
public boolean login(String name, String passwort);
}
我要调用的自行车EJB:
@Stateless(name="FahrradService",mappedName="FahrradService")
public class FahrradService implements javax.ejb.SessionBean, FahrradRemote, Serializable {
@PersistenceContext
private EntityManager em;
Kunde customer;
...
}
列车APP开始:
@Named
@SessionScoped
public class BahnPM implements Serializable {
private String startStation;
private String zielStation;
private String loginName;
private String loginPasswort;
private String customerName;
private String startDateString;
private Date startDate;
private List<Fahrt> available;
private List stations;
@EJB
private BahnService service;
@EJB(mappedName="FahrradService")
private static FahrradRemote fahrradService;
public BahnPM() {
}
...
}
我收到错误是找不到类异常,我可以理解,因为它是另一个应用程序,我的培训应用程序不知道"FahrradRemote",但是我如何注入EJB?
推荐答案
在您的自行车应用程序中,您必须:
- 从
interface FahrradRemote
中删除 - 将
@Remote
批注添加到FahrradService
EJB
@Remote
批注
您可以按照此代码片段操作:
@Remote(FahrradRemote.class)
@Stateless
public class FahrradService implements FahrradRemote, Serializable {
.... // your code
}
(如果您使用的是EJB 3.x,则不需要EJB显式实现SessionBean接口)
在您的火车应用程序中:
@EJB(name="FahrradService")
private FahrradRemote fahrradService;
(使用name
属性代替mappedName
,无状态ejb中不能有静电属性)
最后,您必须告诉容器在哪里查找EJB实现:创建描述符glassfish-ejb-jar.xml
,并在glassfish-ejb-jar
标记内放置以下内容:
<enterprise-beans>
<ejb>
<ejb-name>BahnPM</ejb-name>
<ejb-ref>
<ejb-ref-name>FahrradService</ejb-ref-name>
<jndi-name>java:global/MyRemoteBeanModule/MyRemoteBean</jndi-name>
</ejb-ref>
</ejb>
</enterprise-beans>
部署自行车应用程序时,GlassFish日志中提供了远程EJB的可移植JNDI名称(我称之为java:global/MyRemoteBeanModule/MyRemoteBean
)。
这篇关于如何从同一GlassFish服务器上的另一个应用程序注入EJB?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:如何从同一GlassFish服务器上的另一个应用程序注入EJB?
基础教程推荐
- 在螺旋中写一个字符串 2022-01-01
- 如何强制对超级方法进行多态调用? 2022-01-01
- Spring Boot Freemarker从2.2.0升级失败 2022-01-01
- 首次使用 Hadoop,MapReduce Job 不运行 Reduce Phase 2022-01-01
- 如何在不安装整个 WTP 包的情况下将 Tomcat 8 添加到 Eclipse Kepler 2022-01-01
- 由于对所需库 rt.jar 的限制,对类的访问限制? 2022-01-01
- 如何对 HashSet 进行排序? 2022-01-01
- Java 中保存最后 N 个元素的大小受限队列 2022-01-01
- 如何使用 Stream 在集合中拆分奇数和偶数以及两者的总和 2022-01-01
- 如何使用 Eclipse 检查调试符号状态? 2022-01-01