当前位置: 技术问答>java相关
关于调用EJB的疑问?
来源: 互联网 发布时间:2015-08-17
本文导语: 我现在总是这样调用的: private Context getInitialContext() throws Exception { String url = "t3://localhost:7001"; Properties properties = null; try { properties = new Properties(); properties.put(Context.INITIAL...
我现在总是这样调用的:
private Context getInitialContext() throws Exception {
String url = "t3://localhost:7001";
Properties properties = null;
try {
properties = new Properties();
properties.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
properties.put(Context.PROVIDER_URL, url);
return new InitialContext(properties);
}
catch(Exception e) {
System.out.println("Unable to connect to WebLogic server at " + url);
System.out.println("Please make sure that the server is running.");
throw e;
}
}
然后用以下语句找到ejb:
Context ctx = getInitialContext();
Object ref = ctx.lookup("SeqStuff");
其中SeqStuff是我发布的ejb的名字。
但是这中调用方法中有:
properties.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
那么如果我需要换服务器,假如是websphere,重新部署所有ejb,那么所有的客户端代码也都要重新修改(weblogic.jndi.WLInitialContextFactory肯定不能用了)?这问题如何解决?
private Context getInitialContext() throws Exception {
String url = "t3://localhost:7001";
Properties properties = null;
try {
properties = new Properties();
properties.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
properties.put(Context.PROVIDER_URL, url);
return new InitialContext(properties);
}
catch(Exception e) {
System.out.println("Unable to connect to WebLogic server at " + url);
System.out.println("Please make sure that the server is running.");
throw e;
}
}
然后用以下语句找到ejb:
Context ctx = getInitialContext();
Object ref = ctx.lookup("SeqStuff");
其中SeqStuff是我发布的ejb的名字。
但是这中调用方法中有:
properties.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
那么如果我需要换服务器,假如是websphere,重新部署所有ejb,那么所有的客户端代码也都要重新修改(weblogic.jndi.WLInitialContextFactory肯定不能用了)?这问题如何解决?
|
用EJB的SERVICE LOCATOR设计模式就是专门解决这个问题的。你可以去查一下这个模式的用法。
|
你可以把weblogic.jndi.WLInitialContextFactory写到properties或者是xml文件里,然后动态的去取。或者是你把getInitialContext();放到一个单独的class里,这样只需要改这一个class就行了。