gpt4 book ai didi

java - 从远程客户端获取初始上下文

转载 作者:行者123 更新时间:2023-12-02 03:19:48 25 4
gpt4 key购买 nike

请参阅下面的代码:

Context ctx = null;
ctx=new InitialContext();
TestEJBRemote t = (TestEJBRemote) ctx.lookup("java:global/EJBTest/EJBTest-ejb/TestEJB");
System.out.println(t.getName("Ian"));

输出是我所期望的,即 Hello Ian。

上面的代码假设客户端与 Glassfish 实例安装在同一台计算机上。如何从远程应用程序客户端获得相同的结果。我已经尝试过:

Context ic = new InitialContext();
TestEJBRemote t = (TestEJBRemote) ic.lookup("corbaname:computer:4848#/a/b/TestEJB");
System.out.println(t.getName("Ian"));

这会产生错误。我假设该端口是 Glassfish 安装的端口。

最佳答案

对于连接到 GlassFish 和 Payara 的远程客户端,我通常使用以下内容:

Properties props = new 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", "127.0.0.1");
props.setProperty("org.omg.CORBA.ORBInitialPort", "3700");
InitialContext ctx = new InitialContext(props);

MyBeanRemote bean = (MyBeanRemote) ctx.lookup("com.example.MyBean");

根据您的示例,我想您的原始查找将在这种情况下工作:

TestEJBRemote t = (TestEJBRemote) ctx.lookup("java:global/EJBTest/EJBTest-ejb/TestEJB");

如果您有多个远程端点,您可以使用以下方法在它们之间进行负载平衡:

Hashtable env = new Hashtable();
env.put("com.sun.appserv.iiop.endpoints","host1:port1,host2:port2,...");
InitialContext ctx = new InitialConext(env);
<小时/>

引用号:https://docs.oracle.com/cd/E26576_01/doc.312/e24930/java-clients.htm#GSDVG00075

关于java - 从远程客户端获取初始上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39768754/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com