当前位置: 首页 > 面试题库 >

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

厍光霁
2023-03-14
问题内容

我试图找出为什么我的Web应用程序抛出一个

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

当我从中复制配置的一个姐妹悄悄地运行时。

我有:

  1. 通过右键单击并选择“新的持久性”从nethtml" target="_blank">beans创建一个新的持久性,我不在乎我提供的实际值,但只需要在正确的目录中创建persistence.xml文件即可。
  2. 如下编辑我的context.xml,以匹配工作姐妹项目中的那个
  3. 编辑了我的web.xml以包含资源DataSource,如下所示
  4. 如下编辑我的persistence.xml,再次匹配在姐妹项目上工作的相同值。
  5. 在我的lib文件夹中添加了另一个项目中存在的所有库,还从NetBeans中添加了它们,以正确放入war。
<?xml version="1.0" encoding="UTF-8"?>
<Context antiJARLocking="true" path="/PetLogin">
  <ResourceLink global="ds/flexeraDS" name="ds/flexeraDS" type="javax.sql.DataSource"/>
</Context>

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app ....>
<resource-ref>
        <description>DB Connection</description>
        <res-ref-name>ds/flexeraDS</res-ref-name>
        <res-type>javax.sql.DataSource</res-type>
        <res-auth>Container</res-auth>
    </resource-ref>
</web-app>

persistence.xml

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.0"
             xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd ">
    <persistence-unit name="flexerajpa">
        <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
        <non-jta-data-source>java:/comp/env/ds/flexeraDS</non-jta-data-source>
        <properties>

            <property name="eclipselink.ddl-generation" value="create-tables" />
            <property name="eclipselink.ddl-generation.output-mode"
                      value="database" />
            <property name="eclipselink.weaving" value="static" />
            <property name="eclipselink.logging.level" value="WARNING" />
        </properties>
    </persistence-unit>
</persistence>

现在,我的系统项目以某种方式设法在启动时在apache-tomcat-7.0.40 / bin /
exampleDB内创建其数据库文件夹,而我的系统未创建它并引发如上所述的错误。

引发错误的代码是我第一次连接数据库:

EntityManager entityManager = PersistenceProvider.createEntityManager();

其中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();
    }
}

我没有这个可能的原因..如果有人有任何建议。谢谢


问题答案:

确定发现Tomcat文件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" 
  />


 类似资料:
  • 我正在开发一个使用tomcat服务器管理的连接池的spring应用程序。 我在上下文中的标记中定义了数据源。tomcat的xml:(我在上下文中使用Spring2.0.7)。xml: 在我的应用程序上下文中。xml(即在spring配置文件中),代码为: 当应用程序启动时,出现以下错误: 请帮我解决这个问题。

  • 我正在开发一个Java Web应用程序,并将其部署在Websphere Application Server中,

  • 我正试图为Facebook通知创建绑定。aar库。 然而,我得到了编译错误: 严重性代码说明项目文件行抑制状态错误CS0103名称'CreateAsset'在当前上下文中不存在FBNotificationsC:\users\Jakub\Documents\Visual studio 2015\Projects\FBNotifications\FBNotifications\OBJ\Release\

  • 冬眠5.2.12.1决赛 我想用CriteriaBuilder替换depreracted session.createCriteria(参见org.hibernate.Criteria),我有以下异常 在此ManagedType[com…DonneReference]上找不到具有给定名称[filtre]的属性 上: 其中(builder.equal(root.get(“filter”),filte

  • 我对一个问题感到沮丧,我花了几个小时试图解决它!问题是。我试图查找一个已经在我的jboss服务器中声明的主题(MyBestTopic ),但是我有这个异常 在我的java代码中,我试图像这样检索主题: 查看jboss server的启动,我可以看到主题与正确的名称绑定得很好: 最后,当我在jmx控制台上看到jndiView树时,该主题也得到了很好的部署: 相同的java在具有相同部署主题和数据源的

  • 我有一个实体叫做 我正在尝试使用criteriaBuilder和谓词进行搜索 我在这里得到了例外 我曾提出一些类似的问题,但我没有得到任何解决办法。