使用说明:这个是在基于[WebLogic调用EJB3.0服务的异常]和[synchronized对静态类与实例的区别]基础上的问题,因为我们在各种环境下weblogic10.3版本上都调试通了,但一移到11版本就报错。
部分代码:
public static GISElectricService getEJBResultByMethodNames() throws WebException {
InitialContext ctx = null;
Properties props = new Properties();
props.setProperty(javax.naming.Context.INITIAL_CONTEXT_FACTORY,
"weblogic.jndi.WLInitialContextFactory");
props.setProperty(javax.naming.Context.PROVIDER_URL,
context_provider_url);
try {
ctx = new InitialContext(props);
beanObj = (GISElectricService) ctx.lookup(JNDI_NAME);//抛异常位置,每次lookup时都报错,并且jndiname是找到的。
} catch (NamingException e) {
logger.error("Exception:", e);
//捕获远程上抛的异常信息
String errorMeg = e.getCause().getMessage() ;
logger.error("拓扑分析的异常----->"+errorMeg) ;
throw new WebException(ExceptionConstants.Code_3500,errorMeg);
}
return beanObj;
}
分析:初开始抛的异常是找不到JNDI目录树,当时发布的环境不是WebLogic,怀疑里面的容器不支持,但后来发布到weblogic环境下依然报错,报的是lookup封装的一些异常,而且在10.3下没有任何问题,最终只能定位为坑爹的版本问题。
结论:有时间对WebLogic11作一些了解,感觉它底层的初始化机制都不一样了。