Saya mencoba mengakses EJB3 dari aplikasi klien Java EE, tetapi tidak mendapatkan apa pun selain kegagalan pencarian. Aplikasi klien berjalan dalam Kontainer Klien Aplikasi Java EE.
Aplikasi Java EE saya 'CoreServer' memperlihatkan sejumlah kacang dengan antarmuka jarak jauh. Saya tidak punya masalah mengaksesnya dari Aplikasi Web yang digunakan pada Glassfish v3.0.1 yang sama.
Sekarang saya mencoba mengaksesnya dari aplikasi klien:
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);
}
}
}
}
Ketika saya menjalankan penerapannya ke Glassfish dan menjalankannya dari klien aplikasi, saya mendapatkan kesalahan ini:
Lookup failed for 'java:global/CoreServer/CampaignController' in SerialContext targetHost=localhost,targetPort=3700,orb'sInitialHost=localhost,orb'sInitialPort=3700
Namun, itu nama JNDI yang sama persis dengan yang saya gunakan ketika saya mencari kacang dari WebApplication (melalui SessionContext, bukan InitialContext - apakah itu penting?). Juga, ketika saya menggunakan 'CoreServer', Glassfish melaporkan:
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]
Saya mencoba keempat nama, tidak ada yang berhasil. Apakah klien aplikasi tidak dapat mengakses kacang dengan (hanya) antarmuka jarak jauh?