javax.naming.NameNotFoundException:在此Context中未绑定Name。 无法找到

我试图找出我的网络应用程序抛出的原因

javax.naming.NameNotFoundException: Name [flexeraDS] is not bound in this Context. Unable to find [flexeraDS]. 

当我正在复制配置的姐妹悄然运行时。

我有:

  1. 通过右键单击并选择“新持久性”从netbeans创建一个新的持久性,我不关心我给出的实际值,但我只需要在正确的目录中创建persistence.xml文件。
  2. 编辑了我的context.xml,如下所示匹配工作姐妹项目中的一个
  3. 编辑我的web.xml以包含资源DataSource,如下所示
  4. 编辑我的persistence.xml如下所示再次匹配姐妹项目工作中的相同值。
  5. 添加了我的lib文件夹中的其他项目中存在的所有库,并从NetBeans中添加它们以正确地置于战争中。

的context.xml

     

web.xml中

    DB Connection ds/flexeraDS javax.sql.DataSource Container   

persistence.xml中

    org.eclipse.persistence.jpa.PersistenceProvider java:/comp/env/ds/flexeraDS         

现在我的syster项目有些如何设法在启动时在apache-tomcat-7.0.40 / bin / exampleDB中创建其数据库文件夹,而我的不创建它并抛出如上所述的错误。

抛出错误的代码是我第一次连接到数据库时:

 EntityManager entityManager = PersistenceProvider.createEntityManager(); 

PersistenceProvider类的位置是:

 public final class PersistenceProvider { private static Map lOptions = new HashMap(); static { lOptions.put(PersistenceUnitProperties.CACHE_SHARED_DEFAULT, "false"); } private static EntityManagerFactory factory = Persistence .createEntityManagerFactory("flexerajpa", lOptions); private PersistenceProvider() { } /** * @return */ public static EntityManager createEntityManager() { return factory.createEntityManager(); } /** * @return */ public static Metamodel getMetamodel() { return factory.getMetamodel(); } } 

我有可能的原因……如果有人有任何建议。 谢谢

好的,发现必须配置Tomcat文件server.xml以使数据源正常工作。 所以只需添加:

  

你也可以添加

  

META-INF/context.xml文件下(这将仅在应用程序级别)。

嗯,只是迭代我自己的情况,它给出了大致相同的错误 – 在资源声明(server.xml)中确保不要省略driverClassName,例如对于Oracle,它是“oracle.jdbc.OracleDriver”,并且在%CATALINA_HOME%/ lib中存在正确的JAR文件(例如ojdbc14.jar)

在Tomcat 8.0.44中我这样做:在Tomcat的server.xml上创建标记“GlobalNamingResources”之间的JNDI例如: