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发布时我也有同样的错误。 问题是数据源的命运是为部署应用程序而创建的服务器,而ec​​lipse是在AdminServer上发布的。 我将两个命运添加到数据源,它运行正常。

这是一个适合我的配置:

applicationContext.xml中

  

web.xml中

  jdbc/alias javax.sql.DataSource Container  

weblogic.xml中

  jdbc/alias jdbc/resource/weblogic