有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java从远程EJB bean中获取URL

我已经创建了一个远程EJB bean,将其部署到EJB容器中,并且能够远程调用它的方法。现在我想从远程ejbbean中获取远程ejbbean所在的url

这里有一些代码。远程接口:

@Remote
public interface ExampleService {

void example();

}

EJB:

@Stateful
public class ExampleServiceImpl implements ExampleService {

   @Override
   public void example() {
       //get Remote Url When This Method Is Called
   }

}

例如:如果远程bean位于远程服务器上。豆通讯:8081 内部示例ServiceImpl。example()我想获取这个url(remote.bean.com:8081),而不直接将其作为输入参数传递

我一直在尝试从SessionContext获取一些信息:

InitialContext ic = new InitialContext();
SessionContext sctxLookup = (SessionContext)ic.lookup("java:comp/EJBContext");

,但那里没有什么有用的东西。 甚至有可能做到这一点吗

谢谢


共 (1) 个答案

  1. # 1 楼答案

    调用部署在weblogic上的远程EJB的示例

    private static Calculator getRemoteCalculator() {
        Hashtable<String, String> props = new Hashtable<String, String>();
    
        props.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
        props.put(Context.PROVIDER_URL, "t3://localhost:7001");    
    
    
        try {
            InitialContext ctx = new InitialContext(props);
            return (Calculator) ctx.lookup("myCalculator#com.javaee.Calculator");
        } catch (NamingException e) {
            throw new RuntimeException(e);
        }
    }
    

    计算器在哪里

    @Remote
    public interface Calculator {
    
        public int add(int a, int b);
    
    }
    

    而实施是必要的

    @Stateless(mappedName = "myCalculator")
    public class CalculatorImpl implements Calculator {
        @Override
        public int add(int a, int b) {
            return a + b;
        }   
    }