我正在尝试在JavaFX独立应用程序中执行EJB远程方法,但应用程序无限期挂起。此远程EJB部署在运行于Amazon AMI-EC2实例的Glassfish 3.1.2.2完整配置文件服务器上,该实例具有与之关联的弹性IP。
这是在客户端应用程序上调用远程EJB的代码:
Properties configuracion = new Properties();
configuracion.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.enterprise.naming.SerialInitContextFactory");
configuracion.setProperty("org.omg.CORBA.ORBInitialHost","ec2-54-213-19-89.us-west-2.compute.amazonaws.com");
configuracion.setProperty("org.omg.CORBA.ORBInitialPort", "3700");
contexto = new InitialContext(configuracion);
ejb = (T) contexto.lookup(nombre);
应用程序只挂起查找方法。没有异常抛出,没有发生超时,只是挂起,直到java进程停止。我不知道为什么会这样。我使用Wireshark来查看服务器和客户端之间是否存在任何类型的通信;我看到两个数据包(请求和回复)向我显示客户端确实可以到达服务器等等。
该代码适用于本地glassfish安装和内部网络环境,所以我认为问题应该是EC2环境,但我不清楚是什么导致这种无限期挂起。 EC2实例打开端口3700以接收连接,因此我认为这不是问题。
任何帮助都将不胜感激。