NameNotFoundException:尝试仅在从Eclipse Kepler发布而不是Indigo时才查找’jdbc’
我可以使用oepe 12.1.1.1.1将我的web-app从Eclipse Indigo 3.7.2发布到Oracle Weblogic 12c(12.1.1)AdminServer
但是,使用oepe 12.1.2.2导入到Eclipse Kepler 4.3.1中的完全相同的web-app无法使用以下(相当完善的例程)exception发布,并且我正在尝试找出原因?…
NameNotFoundException:尝试查找’jdbc.oraclexe’时没有找到子上下文’jdbc’。 解决 ”; 剩余名称’jdbc / oraclexe’]; 链接剩余名称:’jdbc / oraclexe’
Weblogic 12c数据源肯定是可用的,我必须假设它正确配置,因为应用程序部署并运行时从Indigo发布没有任何问题。
我还假设applicationContext.xml中的映射,web.xml和weblogic.xml都是正确的,因为从Indigo发布时没有问题。 映射如下……
SRC \主\ web应用\ WEB-INF \弹簧\ applicationContext.xml中
SRC \主\ web应用\ WEB-INF \ web.xml中
Oracle Weblogic Connection Pool (oraclexe) jdbc/oraclexe javax.sql.DataSource Container jdbc/oraclexe
建立\ weboutput \ WEB-INF \ weblogic.xml中
jdbc/oraclexe oraclexe
我想知道weblogic.xml是否在部署期间不可用(即它没有被复制到src \ main \ webapp \ WEB-INF文件夹)而不是jndiName / resource-ref / res之间的映射问题-ref-name自己? 我已经尝试将weblogic.xml直接放在src \ main \ webapp \ WEB-INF文件夹中,但我得到了同样的exception。
我唯一的另一个想法是Indigo oepe 12.1.1.1.1很高兴发布到Weblogic 12.1.1但Kepler oepe 12.1.2不是,我应该发布到Weblogic 12.1.2服务器?
经过一周左右的试验和错误/消除过程后,我设法解决了这个问题并更好地理解了必要的映射。 正如Elliott怀疑这是JNDI查找的问题。 当它从Indigo发布到weblogic 12.1.1(我仍然不确定为什么会这样)时,它(无意中)按预期工作更加复杂。
我最初尝试解决这个问题的重点是weblogic.xml中的映射。 当我发布到weblogic服务器时,我错误地认为在解析数据源时引用了它。 事实certificate情况并非如此,我的配置不需要weblogic.xml资源描述。
applicationContext.xml保持不变……
但是,java:comp / env / jdbc / oraclexe的jndiName值映射到web.xml res-ref-name值jdbc / oraclexe (而不是我错误地假设的weblogic.xml res-ref-name)。 ..
web.xml映射名称已被修改…
Oracle Weblogic console JDBC Data Source jdbc/oraclexe javax.sql.DataSource Container oraclexe
…然后映射到Weblogic控制台JDBC数据源JNDI名称的映射名称值oraclexe 。
weblogic.xml中的资源描述节点现在已完全省略,因为在此特定配置中未引用该节点。
在我的例子中,配置是Weblogic 12.1.3和Eclipse Mars 4.5.0; 耳朵工作得很好,但是从elipse发布时我也有同样的错误。 问题是数据源的命运是为部署应用程序而创建的服务器,而eclipse是在AdminServer上发布的。 我将两个命运添加到数据源,它运行正常。
这是一个适合我的配置:
applicationContext.xml中
web.xml中
jdbc/alias javax.sql.DataSource Container
weblogic.xml中
jdbc/alias jdbc/resource/weblogic