Impossible de déployer mon application web
ddoriii
-
ddoriii -
ddoriii -
Bonjour,
J'ai récupérer un projet la semaine dernière et impossible de le déployer sur tomcat.
Lorsque j'essaie de démarrer le war sous tomcat l'erreur suivante apparait:
Caused by: org.springframework.beans.factory.BeanDefinitionStoreException: Factory method [public javax.sql.DataSource com.****.project.config.DaoConfig.dataSource()] threw exception; nested exception is org.springframework.jdbc.datasource.lookup.DataSourceLookupFailureException: Failed to look up JNDI DataSource with name 'java:comp/env/jdbc/project'; nested exception is javax.naming.NameNotFoundException: Le Nom jdbc/project n'est pas lié à ce Contexte
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:188)
at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:581)
... 69 more
Caused by: org.springframework.jdbc.datasource.lookup.DataSourceLookupFailureException: Failed to look up JNDI DataSource with name 'java:comp/env/jdbc/project'; nested exception is javax.naming.NameNotFoundException: Le Nom jdbc/project n'est pas lié à ce Contexte
at org.springframework.jdbc.datasource.lookup.JndiDataSourceLookup.getDataSource(JndiDataSourceLookup.java:48)
at com.*****.project.config.DaoConfig.dataSource(DaoConfig.java:39)
at com.*****.project.config.DaoConfig$$EnhancerByCGLIB$$e2f88985.CGLIB$dataSource$3(<generated>)
at com.*****.project.config.DaoConfig$$EnhancerByCGLIB$$e2f88985$$FastClassByCGLIB$$52b3541f.invoke(<generated>)
at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:228)
at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:326)
at com.*****.project.config.DaoConfig$$EnhancerByCGLIB$$e2f88985.dataSource(<generated>)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:166)
... 70 more
Caused by: javax.naming.NameNotFoundException: Le Nom jdbc/project n'est pas lié à ce Contexte
at org.apache.naming.NamingContext.lookup(NamingContext.java:820)
at org.apache.naming.NamingContext.lookup(NamingContext.java:154)
at org.apache.naming.NamingContext.lookup(NamingContext.java:831)
at org.apache.naming.NamingContext.lookup(NamingContext.java:154)
at org.apache.naming.NamingContext.lookup(NamingContext.java:831)
at org.apache.naming.NamingContext.lookup(NamingContext.java:168)
at org.apache.naming.SelectorContext.lookup(SelectorContext.java:158)
at javax.naming.InitialContext.lookup(InitialContext.java:411)
at org.springframework.jndi.JndiTemplate$1.doInContext(JndiTemplate.java:155)
at org.springframework.jndi.JndiTemplate.execute(JndiTemplate.java:87)
at org.springframework.jndi.JndiTemplate.lookup(JndiTemplate.java:152)
at org.springframework.jndi.JndiTemplate.lookup(JndiTemplate.java:179)
at org.springframework.jndi.JndiLocatorSupport.lookup(JndiLocatorSupport.java:95)
at org.springframework.jdbc.datasource.lookup.JndiDataSourceLookup.getDataSource(JndiDataSourceLookup.java:45)
... 81 more
juil. 25, 2016 12:02:22 PM org.apache.catalina.core.ApplicationContext log
Infos: Closing Spring root WebApplicationContext
J'ai donc chercher dans les fichiers de configuration et dans mon context.xml j'ai ça au niveau de la bdd
Pour le fichier DaoConfig j'ai
Voilà. Du coup j'ai bien vérifié les paramètres de connexion à la base de données et les informations de connexions sont correctes à priori.
Quelqu'un pourrait-il m'aider, ça fait un moment que je cherche sans rien trouver qui débloque la situation
Merci à vous.
J'ai récupérer un projet la semaine dernière et impossible de le déployer sur tomcat.
Lorsque j'essaie de démarrer le war sous tomcat l'erreur suivante apparait:
Caused by: org.springframework.beans.factory.BeanDefinitionStoreException: Factory method [public javax.sql.DataSource com.****.project.config.DaoConfig.dataSource()] threw exception; nested exception is org.springframework.jdbc.datasource.lookup.DataSourceLookupFailureException: Failed to look up JNDI DataSource with name 'java:comp/env/jdbc/project'; nested exception is javax.naming.NameNotFoundException: Le Nom jdbc/project n'est pas lié à ce Contexte
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:188)
at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:581)
... 69 more
Caused by: org.springframework.jdbc.datasource.lookup.DataSourceLookupFailureException: Failed to look up JNDI DataSource with name 'java:comp/env/jdbc/project'; nested exception is javax.naming.NameNotFoundException: Le Nom jdbc/project n'est pas lié à ce Contexte
at org.springframework.jdbc.datasource.lookup.JndiDataSourceLookup.getDataSource(JndiDataSourceLookup.java:48)
at com.*****.project.config.DaoConfig.dataSource(DaoConfig.java:39)
at com.*****.project.config.DaoConfig$$EnhancerByCGLIB$$e2f88985.CGLIB$dataSource$3(<generated>)
at com.*****.project.config.DaoConfig$$EnhancerByCGLIB$$e2f88985$$FastClassByCGLIB$$52b3541f.invoke(<generated>)
at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:228)
at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:326)
at com.*****.project.config.DaoConfig$$EnhancerByCGLIB$$e2f88985.dataSource(<generated>)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:166)
... 70 more
Caused by: javax.naming.NameNotFoundException: Le Nom jdbc/project n'est pas lié à ce Contexte
at org.apache.naming.NamingContext.lookup(NamingContext.java:820)
at org.apache.naming.NamingContext.lookup(NamingContext.java:154)
at org.apache.naming.NamingContext.lookup(NamingContext.java:831)
at org.apache.naming.NamingContext.lookup(NamingContext.java:154)
at org.apache.naming.NamingContext.lookup(NamingContext.java:831)
at org.apache.naming.NamingContext.lookup(NamingContext.java:168)
at org.apache.naming.SelectorContext.lookup(SelectorContext.java:158)
at javax.naming.InitialContext.lookup(InitialContext.java:411)
at org.springframework.jndi.JndiTemplate$1.doInContext(JndiTemplate.java:155)
at org.springframework.jndi.JndiTemplate.execute(JndiTemplate.java:87)
at org.springframework.jndi.JndiTemplate.lookup(JndiTemplate.java:152)
at org.springframework.jndi.JndiTemplate.lookup(JndiTemplate.java:179)
at org.springframework.jndi.JndiLocatorSupport.lookup(JndiLocatorSupport.java:95)
at org.springframework.jdbc.datasource.lookup.JndiDataSourceLookup.getDataSource(JndiDataSourceLookup.java:45)
... 81 more
juil. 25, 2016 12:02:22 PM org.apache.catalina.core.ApplicationContext log
Infos: Closing Spring root WebApplicationContext
J'ai donc chercher dans les fichiers de configuration et dans mon context.xml j'ai ça au niveau de la bdd
<Resource minIdle="10" initialSize="10" password="*****" username="****" url="jdbc:oracle:thin:@server:port" type="javax.sql.DataSource" name="jdbc/project" maxWait="10000" maxIdle="30" maxActive="100" driverClassName="oracle.jdbc.OracleDriver" auth="Container"/>
Pour le fichier DaoConfig j'ai
package com.****.project.config; import java.util.Properties; import javax.annotation.Resource; import javax.sql.DataSource; import org.hibernate.ejb.HibernatePersistence; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Profile; import org.springframework.core.env.Environment; import org.springframework.data.jpa.repository.config.EnableJpaRepositories; import org.springframework.jdbc.datasource.lookup.JndiDataSourceLookup; import org.springframework.orm.jpa.JpaTransactionManager; import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean; import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter; @Configuration @EnableJpaRepositories("com.****.project.dao") @Profile(value = { "!dev" }) public class DaoConfig { private static final String PROPERTY_NAME_HIBERNATE_DIALECT = "hibernate.dialect"; private static final String PROPERTY_NAME_HIBERNATE_SHOW_SQL = "hibernate.show_sql"; private static final String PROPERTY_NAME_HIBERNATE_DDL_AUTO = "hibernate.hbm2ddl.auto"; private static final String PROPERTY_NAME_ENTITYMANAGER_PACKAGES_TO_SCAN = "entitymanager.packages.to.scan"; @Resource private Environment environment; @Bean @Resource(name = "jdbc/project") public DataSource dataSource() { final JndiDataSourceLookup dsLookup = new JndiDataSourceLookup(); dsLookup.setResourceRef(true); DataSource dataSource = dsLookup.getDataSource("java:comp/env/jdbc/project"); return dataSource; } @Bean public JpaTransactionManager transactionManager() throws ClassNotFoundException { JpaTransactionManager transactionManager = new JpaTransactionManager(); transactionManager.setEntityManagerFactory(entityManagerFactory() .getObject()); return transactionManager; } @Bean public LocalContainerEntityManagerFactoryBean entityManagerFactory() throws ClassNotFoundException { LocalContainerEntityManagerFactoryBean entityManagerFactoryBean = new LocalContainerEntityManagerFactoryBean(); entityManagerFactoryBean.setDataSource(dataSource()); entityManagerFactoryBean .setPackagesToScan(environment .getRequiredProperty(PROPERTY_NAME_ENTITYMANAGER_PACKAGES_TO_SCAN)); entityManagerFactoryBean .setPersistenceProviderClass(HibernatePersistence.class); Properties jpaProperties = new Properties(); jpaProperties.put(PROPERTY_NAME_HIBERNATE_SHOW_SQL, environment .getRequiredProperty(PROPERTY_NAME_HIBERNATE_SHOW_SQL)); jpaProperties.put(PROPERTY_NAME_HIBERNATE_DDL_AUTO, getHbm2DdlMode()); HibernateJpaVendorAdapter adapter = new HibernateJpaVendorAdapter(); adapter.setDatabasePlatform(this.getDialect()); adapter.setGenerateDdl(false); entityManagerFactoryBean.setJpaVendorAdapter(adapter); entityManagerFactoryBean.setJpaProperties(jpaProperties); return entityManagerFactoryBean; } /** * @return the hibernate dialect */ protected String getDialect() { return environment.getRequiredProperty(PROPERTY_NAME_HIBERNATE_DIALECT); } /** * @return the HBM to DDL mode (create/update...) */ protected String getHbm2DdlMode() { return environment .getRequiredProperty(PROPERTY_NAME_HIBERNATE_DDL_AUTO); } }
Voilà. Du coup j'ai bien vérifié les paramètres de connexion à la base de données et les informations de connexions sont correctes à priori.
Quelqu'un pourrait-il m'aider, ça fait un moment que je cherche sans rien trouver qui débloque la situation
Merci à vous.
A voir également:
- Impossible de déployer mon application web
- Web office - Guide
- Nommez une application d'appel vidéo ou de visioconférence - Guide
- Desinstaller application windows - Guide
- Creation de site web - Guide
- Application pour voir qui regarde mon profil facebook gratuit - Guide
1 réponse
Bonjour,
Tomcat n'est pas un Java EE donc faire de l'hibernate ça risque d'être un peu trop pour lui...
Essayes de déployer ton war sur un serveur Java EE (wildfly par exemple) ce serait déjà un début.
Ensuite il faudrait regarder le java:comp/env, parfois faut le mettre, d'autres fois non, il faudrait être sûr que le lien se fasse.
Tomcat n'est pas un Java EE donc faire de l'hibernate ça risque d'être un peu trop pour lui...
Essayes de déployer ton war sur un serveur Java EE (wildfly par exemple) ce serait déjà un début.
Ensuite il faudrait regarder le java:comp/env, parfois faut le mettre, d'autres fois non, il faudrait être sûr que le lien se fasse.
En fait je suis au boulot, impossible de changer d'environnement :/
Après un update maven l'erreur lié au jdbc a disparue. Je n'ai pas vraiment compris pourquoi, mais il s'agissait d'un mise à jour spring.framework dans le pom à priori. Maintenant il me dit clairement que c'est le java:comp/env qui pose problème:
je vais essayer de voir ce que ça donne sans.
Merci encore de ta réponse.