我试图从Java EE客户机应用程序访问EJB3,但一直只能查找失败。客户端应用程序在Java EE应用程序客户端容器中运行。Java EE应用程序客户机中的EJB3 JNDI查找失败
我的Java EE应用程序'CoreServer'公开了一些带有远程接口的bean。从部署在同一个GlassFish v3.0.1上的Web应用程序访问它们时,我没有任何问题。
现在,我试图从一个客户端应用程序访问:
public class Main {
public static void main(String[] args) {
CampaignControllerRemote bean = null;
try {
InitialContext ctx = new InitialContext();
bean = (CampaignControllerRemote) ctx.lookup("java:global/CoreServer/CampaignController");
} catch (Exception e) {
System.out.println(e.getMessage());
}
if (bean != null) {
Campaign campaign = bean.get(361);
if (campaign != null) {
System.out.println("Got "+ campaign);
}
}
}
}
当我运行部署到GlassFish和从appclient运行它,我得到这个错误:
Lookup failed for 'java:global/CoreServer/CampaignController' in SerialContext targetHost=localhost,targetPort=3700,orb'sInitialHost=localhost,orb'sInitialPort=3700
但是,当我从WebApplication查找bean(通过SessionContext,而不是InitialContext - 这很重要吗?)时,我使用的是完全相同的JNDI名称。另外,当我部署'CoreServer'时,Glassfish报告:
Portable JNDI names for EJB CampaignController : [java:global/CoreServer/CampaignController!mvs.api.CampaignControllerRemote, java:global/CoreServer/CampaignController]
Glassfish-specific (Non-portable) JNDI names for EJB CampaignController : [mvs.api.CampaignControllerRemote, mvs.api.CampaignControllerRemote#mvs.api.CampaignControllerRemote]
我尝试了所有四个名字,都没有工作。 appclient是否无法使用(仅)远程接口访问bean?
我会建议您切换到使用依赖注入两个用例...(你的web应用程序和应用程序客户端)。 – vkraemer 2010-05-12 05:13:38
在应用程序客户机上依靠注入完成CORBA查找是如何完成的?你可以说得更详细点吗? – Thufir 2015-03-11 15:43:10