我创建了一个远程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");
,但那里没有任何用处。 甚至可以这样做吗?
谢谢!
答案 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;
}
}