Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > JPA and Spring


Автор: Bandit 24.4.2008, 09:51
Доброго времени суток.
Проблема меня гложит уже 2ые сутки. Работа просто стоит и все.

INFO: Server startup in 3390 ms
Apr 24, 2008 9:21:15 AM org.apache.struts.tiles.TilesRequestProcessor initDefinitionsMapping
INFO: Tiles definition factory found for request processor ''.
javax.persistence.PersistenceException: No Persistence provider for EntityManager named news
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:56)
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:34)
    at by.testapp.database.dao.utilDAO.InitEntityManagerFactory.createEntityManager(InitEntityManagerFactory.java:13)
    at by.epam.testapp.database.dao.JpaNewsDAO.saveAdd(JpaNewsDAO.java:72)
    at by.epam.testapp.presentation.action.NewsAction.saveAdd(NewsAction.java:95)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)

applicationContext.xml
Код

        <!-- JPA JPA JPA JPA JPA JPA JPA JPA JPA JPA JPA JPA JPA JPA JPA JPA -->
    
    <bean id="initEntityManagerFactory" 
        class="by.testapp.database.dao.utilDAO.InitEntityManagerFactory"
        singleton="true"
        >
        <property name="namePersistenceXML">
            <value>news</value>    <!--METE-INF persistence.xml -->
        </property>
    </bean>
    
    <bean id="jpaNewsDAO"
        class="by.testapp.database.dao.JpaNewsDAO"
        singleton="true">
        <property name="factoryManagerEntity">
            <ref local="initEntityManagerFactory"/>
        </property>
    </bean>
    
    <!-- ACTION ACTION ACTION ACTION ACTION ACTION ACTION ACTION ACTION -->
    
    <bean name="/news" 
        class="by.testapp.presentation.action.NewsAction" 
        singleton="false"> 
        <property name="newsDAO">    
         <ref bean="jpaNewsDAO"/>    
        </property> 
    </bean>


InitEntityManagerFactory.java

Код

public class InitEntityManagerFactory {
    private EntityManagerFactory entityManagerFactory = null;
    private String namePersistenceXML;
    
    public void createEntityManager(){
        this.entityManagerFactory = Persistence.
                                createEntityManagerFactory(namePersistenceXML);                                                          
    }    
    
    public void destroyEntityManagerFactory(){
        if(entityManagerFactory.isOpen() == true && entityManagerFactory != null){
            entityManagerFactory.close();
        }
    }
    
    public EntityManagerFactory getEntityManagerFactory(){
        return this.entityManagerFactory;
    }
    
    public String getNamePersistenceXML(){
        return this.namePersistenceXML;
    }
    public void setNamePersistenceXML(String namePersistenceXML){
        this.namePersistenceXML = namePersistenceXML;
    }
}


JpaNewsDAO.java
Код

public class JpaNewsDAO implements INewsDAO {
    private InitEntityManagerFactory factoryManagerEntity;
***
       public boolean saveAdd(News news) {    
        EntityManager entityManager = null;
        try{
            factoryManagerEntity.createEntityManager();
              EntityManagerFactory entityManagerFactory=factoryManagerEntity.getEntityManagerFactory();
            entityManager = entityManagerFactory.createEntityManager();
            entityManager.persist(news);
            return true;
        }catch (Exception e) {
            e.printStackTrace();
            return false;
        }finally{
            this.closeEntityManager(entityManager);
        }
    }
***
}


NewsAction.java
Код

         public ActionForward saveAdd(ActionMapping mapping, ActionForm form,
                                HttpServletRequest request,
                                HttpServletResponse response){
        NewsForm newsForm = (NewsForm)form;
        News news = newsForm.getNewsMessage();
        newsDAO.saveAdd(news);
        return list(mapping, form, request, response); 
    }


News.java
Код

@Entity        
@Table(name= "NEWS")    
public class News {
        @Id                                
        @Column(name= "IDNEWS")        
        @GeneratedValue(strategy = GenerationType.AUTO)
    private Integer idNews;
        
        @Column(name= "TITLE", length=200)
    private String titleNews;
    
        @Column(name= "NEWS_DATE")
        @Temporal(value=TemporalType.DATE)
    private Date dateNews;
    
        @Column(name= "BRIEF", length=600)
    private String brief;            
    
        @Column(name= "CONTENT", length=2200)
    private String content;
    
    public News(){
        
    }
/*прописаны все get,set*/


persistence.xml в папке META-INF
Код

<?xml version="1.0" encoding="UTF-8"?>
<persistence 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"
    version="1.0">
    <persistence-unit name="news" transaction-type="RESOURCE_LOCAL">
        <provider>
            oracle.toplink.essentials.PersistenceProvider
        </provider>
        <class>com.testapp.model.News</class>
        <properties>
            <property name="toplink.jdbc.driver"
                value="oracle.jdbc.driver.OracleDriver" />
            <property name="toplink.jdbc.url"
                value="jdbc:oracle:thin:@localhost:1522:XE" />
            <property name="toplink.jdbc.password" value="bandit" />
            <property name="toplink.jdbc.user" value="bandit" />
        </properties>
    </persistence-unit>
</persistence>


Смотрел похожую тему:
http://forum.vingrad.ru/forum/topic-196811/unread-1/hl/createentitymanagerfactory/index.html
пробовал делать, что написано:
"шаманил" с расположением проекта. теперь лежит на C:\project

Буду благодарен за любые, самые любые предложения по этому вопросу. Спасибо.

Автор: Bandit 24.4.2008, 12:12
 smile  
Расскажите где должен лежать persistence.xml
в папке src/META-INF или Web-Content/META-INF????

Автор: Bandit 24.4.2008, 13:13
Код

INFO: Server startup in 8141 ms
Apr 24, 2008 12:46:58 PM org.apache.struts.tiles.TilesRequestProcessor initDefinitionsMapping
INFO: Tiles definition factory found for request processor ''.
[TopLink Info]: 2008.04.24 12:47:55.498--ServerSession(18968410)--TopLink, version: Oracle TopLink Essentials - 2.0.1 (Build b09d-fcs (12/06/2007))
Local Exception Stack: 
Exception [TOPLINK-4002] (Oracle TopLink Essentials - 2.0.1 (Build b09d-fcs (12/06/2007))): oracle.toplink.essentials.exceptions.DatabaseException
Internal Exception: java.sql.SQLException: Io exception: The Network Adapter could not establish the connection
Error Code: 17002
    at oracle.toplink.essentials.exceptions.DatabaseException.sqlException(DatabaseException.java:305)
    at oracle.toplink.essentials.sessions.DefaultConnector.connect(DefaultConnector.java:102)
    at oracle.toplink.essentials.sessions.DatasourceLogin.connectToDatasource(DatasourceLogin.java:184)
    at oracle.toplink.essentials.internal.sessions.DatabaseSessionImpl.loginAndDetectDatasource(DatabaseSessionImpl.java:582)
    at oracle.toplink.essentials.ejb.cmp3.EntityManagerFactoryProvider.login(EntityManagerFactoryProvider.java:280)
    at oracle.toplink.essentials.internal.ejb.cmp3.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:229)
    at oracle.toplink.essentials.internal.ejb.cmp3.base.EntityManagerFactoryImpl.getServerSession(EntityManagerFactoryImpl.java:93)
    at oracle.toplink.essentials.internal.ejb.cmp3.base.EntityManagerFactoryImpl.createEntityManagerImpl(EntityManagerFactoryImpl.java:126)
    at oracle.toplink.essentials.internal.ejb.cmp3.base.EntityManagerFactoryImpl.createEntityManagerImpl(EntityManagerFactoryImpl.java:120)
    at oracle.toplink.essentials.internal.ejb.cmp3.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:91)
    at by.epam.testapp.database.dao.JpaNewsDAO.getList(JpaNewsDAO.java:46)


Ребят! может кто-нибудь объяснит, что это такое? Пробую гуглить, выдает непонятно что... 

Автор: Kangaroo 24.4.2008, 14:00
Цитата(Bandit @  24.4.2008,  13:13 Найти цитируемый пост)
Ребят! может кто-нибудь объяснит, что это такое? Пробую гуглить, выдает непонятно что...  

Вроде как не может к Ораклу приконнектится.

Автор: Bandit 24.4.2008, 14:06
Kangaroo,  благодарю за ответ. Если есть идеи как это можно исправить?

Автор: Kangaroo 24.4.2008, 14:10
Цитата(Bandit @  24.4.2008,  14:06 Найти цитируемый пост)
Если есть идеи как это можно исправить? 

Сервер запущен? Адрес, СИД правильные? Попробуй из чего нибудь другого приконнектится.

Автор: hanabi 25.4.2008, 03:09
Цитата(Bandit @ 24.4.2008,  12:12)
smile  
Расскажите где должен лежать persistence.xml
в папке src/META-INF или Web-Content/META-INF????

в META-INF в jar файле, где у вас все EJB лежат
http://java.sun.com/blueprints/code/projectconventions.html

Автор: Bandit 25.4.2008, 12:16
Ошибка вылетает когда создается entityManager

JpaNewsDAO.java

Код

public class JpaNewsDAO implements INewsDAO {
    private InitEntityManagerFactory factoryManagerEntity;
***
       public boolean saveAdd(News news) {    
        EntityManager entityManager = null;
        try{
            factoryManagerEntity.createEntityManager();
              EntityManagerFactory   entityManagerFactory=factoryManagerEntity.getEntityManagerFactory();

            entityManager = entityManagerFactory.createEntityManager();
 
Код
           entityManager.persist(news);
            return true;
        }catch (Exception e) {
            e.printStackTrace();
            return false;
        }finally{
            this.closeEntityManager(entityManager);
        }
    }
***
}

Автор: tux 25.4.2008, 15:04
Цитата(Kangaroo @  24.4.2008,  14:10 Найти цитируемый пост)
Сервер запущен? Адрес, СИД правильные? Попробуй из чего нибудь другого приконнектится. 

Цитата(Bandit @  25.4.2008,  12:16 Найти цитируемый пост)
Ошибка вылетает когда создается entityManager

Bandit, объясни на милость, каким образом это отвечает на поставленный вопрос?

Автор: Bandit 28.4.2008, 08:49
Цитата(tux @  25.4.2008,  15:04 Найти цитируемый пост)
Сервер запущен? Адрес, СИД правильные? Попробуй из чего нибудь другого приконнектится. 

Цитата(Bandit @  25.4.2008,  12:16 Найти цитируемый пост)
Ошибка вылетает когда создается entityManager

Bandit, объясни на милость, каким образом это отвечает на поставленный вопрос? 


Извиняюсь, обещаю исправится. smile

Сервак стартует. Url, user , password верные (без проблем коннекчусь через JDBC, Hibernate, а JPA ступор и все).

Автор: Bandit 28.4.2008, 12:07
Ребята!  smile  smile  smile Иногда я себя просто ненавижу за глупые ошибки(опечатки)  smile  .
Вы были правы! Все вы были правы!

 value="jdbc:oracle:thin:@localhost:1522:XE" />

 value="jdbc:oracle:thin:@localhost:1521:XE" />

Разница в один символ. Это просто ужастно...
Спасибо за терпение. smile

Добавлено через 22 секунды
smile

Автор: anti_snayper 5.3.2010, 13:24
///

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)