私の参照によると、 @Local セッション Bean は、Bean がデプロイされている同じ JVM (同じ JVM で実行されているクライアントとサーバー) でアクセスできます。
シンプルな統計のないローカル セッション Bean を実装し、GlassFish サーバーにデプロイしました (JBoss サーバーでも試しました)。
セッション Bean をルックアップするスタンドアロン クライアントですが、このローカル セッションにはアクセスできません。アクセス可能な@Remoteで同じことを試しました。
この時点で、サーバーとクライアントの両方が同じ/単一の JVM (自分のマシン上) で実行されます。
スタンドアロン クライアント アプリからローカル セッション Bean にアクセスすることは可能ですか? アクセスする特定の方法はありますか?
私のコードは次のとおりです。
Statless Local Session Bean
@Stateless
public class TicketBookingImpl implements TicketBookingLocal {
public String doBooking(String name) {
return "Ticket Booked for " + name;
}
}
ルックアップ コード
public static void main(String[] args) {
try {
Properties props = new Properties();
props.setProperty("java.naming.factory.initial", "com.sun.enterprise.naming.SerialInitContextFactory");
props.setProperty("java.naming.factory.url.pkgs", "com.sun.enterprise.naming");
props.setProperty("java.naming.factory.state", "com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl");
props.setProperty("org.omg.CORBA.ORBInitialHost", "localhost");
props.setProperty("org.omg.CORBA.ORBInitialPort", "3700");
final Context context = new InitialContext(props);
System.out.println("Doing lookup");
TicketBooking ticketBooking = (TicketBooking) context.lookup("java:global/ejb-work-1/TicketBookingImpl");