Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javax.naming.NameNotFoundException:名称在此上下文中未绑定。找不到_Java_Jakarta Ee_Jpa_Orm - Fatal编程技术网

javax.naming.NameNotFoundException:名称在此上下文中未绑定。找不到

javax.naming.NameNotFoundException:名称在此上下文中未绑定。找不到,java,jakarta-ee,jpa,orm,Java,Jakarta Ee,Jpa,Orm,我试图找出我的web应用程序抛出错误的原因 javax.naming.NameNotFoundException: Name [flexeraDS] is not bound in this Context. Unable to find [flexeraDS]. 当我正在从中复制配置的姐妹服务器安静运行时 我有: 通过右键单击并选择“new persistence”,从netbeans创建一个新的持久性,我不关心我给出的实际值,但我只需要在正确的目录中创建persistence.xml文件

我试图找出我的web应用程序抛出错误的原因

javax.naming.NameNotFoundException: Name [flexeraDS] is not bound in this Context. Unable to find [flexeraDS].
当我正在从中复制配置的姐妹服务器安静运行时

我有:

  • 通过右键单击并选择“new persistence”,从netbeans创建一个新的持久性,我不关心我给出的实际值,但我只需要在正确的目录中创建persistence.xml文件
  • 编辑my context.xml,如下所示,与工作姐妹项目中的匹配
  • 编辑my web.xml以包含资源数据源,如下所示
  • 编辑my persistence.xml,如下所示,再次匹配姐妹项目上的相同值
  • 将其他项目中存在的所有库添加到我的lib文件夹中,并将它们也从NetBeans添加到war中
  • context.xml 其中PersistenceProvider类为:

    public final class PersistenceProvider
    {
    
        private static Map<String, Object> lOptions = new HashMap<String, Object>();
    
        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();
        }
    }
    
    公共最终类PersistenceProvider
    {
    private static Map lOptions=new HashMap();
    静止的
    {
    put(PersistenceUnitProperties.CACHE_SHARED_默认为“false”);
    }
    私有静态EntityManagerFactory工厂=持久性
    .CreateEntityManager工厂(“flexerajpa”,lOptions);
    私有PersistenceProvider()
    {
    }
    /**
    *@返回
    */
    公共静态EntityManager createEntityManager()
    {
    返回factory.createEntityManager();
    }
    /**
    *@返回
    */
    公共静态元模型getMetamodel()
    {
    返回factory.getMetamodel();
    }
    }
    
    我找不到可能的原因。。如果有人有任何建议。
    谢谢

    确定发现Tomcat file server.xml也必须配置,数据源才能工作。因此,只需添加:

    <Resource 
    auth="Container" 
    driverClassName="org.apache.derby.jdbc.EmbeddedDriver" 
    maxActive="20" 
    maxIdle="10" 
    maxWait="-1" 
    name="ds/flexeraDS" 
    type="javax.sql.DataSource" 
    url="jdbc:derby:flexeraDB;create=true" 
      />
    
    
    
    您还可以添加

    <Resource 
    auth="Container" 
    driverClassName="org.apache.derby.jdbc.EmbeddedDriver" 
    maxActive="20" 
    maxIdle="10" 
    maxWait="-1" 
    name="ds/flexeraDS" 
    type="javax.sql.DataSource" 
    url="jdbc:derby:flexeraDB;create=true" 
    /> 
    
    
    

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

    ugh,仅重复我自己的案例,它给出了大致相同的错误-在资源声明(server.xml)中,确保不要忽略driverClassName,例如,对于Oracle,它是“Oracle.jdbc.OracleDriver”,并且正确的JAR文件(例如,ojdbc14.jar)存在于Tomcat 8.0.44中的%CATALINA_HOME%/lib

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

    
    
    在我的例子中,关键的部分是它是
    java:/comp/env/
    我认为不建议直接将元素放在server.xml文件中,就像Apache文档中指定的那样?
    EntityManager entityManager = PersistenceProvider.createEntityManager();
    
    public final class PersistenceProvider
    {
    
        private static Map<String, Object> lOptions = new HashMap<String, Object>();
    
        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();
        }
    }
    
    <Resource 
    auth="Container" 
    driverClassName="org.apache.derby.jdbc.EmbeddedDriver" 
    maxActive="20" 
    maxIdle="10" 
    maxWait="-1" 
    name="ds/flexeraDS" 
    type="javax.sql.DataSource" 
    url="jdbc:derby:flexeraDB;create=true" 
      />
    
    <Resource 
    auth="Container" 
    driverClassName="org.apache.derby.jdbc.EmbeddedDriver" 
    maxActive="20" 
    maxIdle="10" 
    maxWait="-1" 
    name="ds/flexeraDS" 
    type="javax.sql.DataSource" 
    url="jdbc:derby:flexeraDB;create=true" 
    />