从远程EJB bean中获取URL

时间:2016-09-27 15:00:03

标签: java java-ee ejb

我创建了一个远程EJB bean,将其部署到ejb-container中,并且我可以远程调用它的方法。现在我想从远程EJB bean中获取远程EJB bean所在的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位于remote.bean.com:8081上,那么 在ExampleServiceImpl.example()中我想得到这个url(remote.bean.com:8081)而不直接将它作为输入参数传递。

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

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

,但那里没有任何用处。 甚至可以这样做吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

调用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;
    }   
}