javax.naming.NameNotFoundException:在此Context中未绑定Name。 无法找到
我试图找出我的网络应用程序抛出的原因
javax.naming.NameNotFoundException: Name [flexeraDS] is not bound in this Context. Unable to find [flexeraDS].
当我正在复制配置的姐妹悄然运行时。
我有:
- 通过右键单击并选择“新持久性”从netbeans创建一个新的持久性,我不关心我给出的实际值,但我只需要在正确的目录中创建persistence.xml文件。
- 编辑了我的context.xml,如下所示匹配工作姐妹项目中的一个
- 编辑我的web.xml以包含资源DataSource,如下所示
- 编辑我的persistence.xml如下所示再次匹配姐妹项目工作中的相同值。
- 添加了我的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例如: