ฉันกำลังพยายามเข้าถึง EJB3 จากแอปพลิเคชันไคลเอนต์ Java EE แต่ไม่ได้รับอะไรเลยนอกจากการค้นหาล้มเหลว แอปพลิเคชันไคลเอ็นต์กำลังทำงานภายใน Java EE Application Client Container
แอปพลิเคชัน Java EE ของฉัน 'CoreServer' กำลังเปิดเผยถั่วจำนวนหนึ่งด้วยอินเทอร์เฟซระยะไกล ฉันไม่มีปัญหาในการเข้าถึงจาก Web Application ที่ใช้งานบน Glassfish v3.0.1 เดียวกัน
ตอนนี้ฉันกำลังพยายามเข้าถึงจากแอปพลิเคชันไคลเอนต์:
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
อย่างไรก็ตาม นั่นเป็นชื่อ JNDI เดียวกับที่ฉันใช้เมื่อค้นหา bean จาก WebApplication (ผ่าน SessionContext ไม่ใช่ InitialContext - สำคัญไหม) นอกจากนี้ เมื่อฉันปรับใช้ '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 ด้วยอินเทอร์เฟซระยะไกล (เท่านั้น) หรือไม่