2013-05-24 2 views
14

Я пытаюсь выяснить, почему мой веб-приложение выдаетjavax.naming.NameNotFoundException: имя не связано в этом контексте. Не удалось найти

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

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

Я из возможных причин этого .. если у кого есть какие-то предложения. Спасибо

+0

В моем случае ключевой частью было то, что это 'Java:/сост/окр//' –

ответ

12

Хорошо, что файл 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" 
    /> 
+1

Я думал, НЕ рекомендуется размещать элементы непосредственно в server.xml файл, как указано в документе Apache? –

5

Вы также можете добавить

<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 файл (Это будет только на уровне приложений).

0

ugh, просто чтобы перебрать мой собственный случай, который выдавал примерно ту же ошибку - в объявлении ресурса (server.xml) обязательно НЕ опускайте имя driverClassName и т. Д. для Oracle это «oracle.jdbc.OracleDriver», и что правый JAR-файл (например, ojdbc14.баночка) существует в% CATALINA_HOME%/Lib

Смежные вопросы

 Смежные вопросы