2017-02-07 2 views
0

J'ai effectué la configuration ci-dessous pour la connexion JNDI DataSource pour Spring Boot Application qui utilise un tomcat externe.Impossible de rechercher la source de données JNDI dans l'application de démarrage Spring

configuration server.xml de Tomcat comme

  <GlobalNamingResources> 
      <!-- Editable user database that can also be used by 
       UserDatabaseRealm to authenticate users 
      --> 

      <Resource name="jdbc/MyPostgresDB" 
       global="jdbc/MyPostgresDB" 
       auth="Container" 
       type="javax.sql.DataSource" 
       driverClassName="org.postgresql.Driver" 
       url="jdbc:postgresql://localhost:5432/postgres" 
       username="postgres" 
       password="postgres" 

       maxActive="100" 
       maxIdle="20" 
       minIdle="5" 
       maxWait="10000"/> 

context.xml comme

 <Context> 

      <!-- Default set of monitored resources --> 
      <WatchedResource>WEB-INF/web.xml</WatchedResource> 

      <ResourceLink name="jdbc/MyPostgresDB" 
         global="jdbc/MyPostgresDB” 
         auth="Container" 
         type="javax.sql.DataSource" /> 

défini par les application.properties pour le démarrage du printemps dans le bon sens comme

spring.datasource.jndi-name=java:comp/env/jdbc/MyPostgres 

Mis à jour le web .xml comme

 <?xml version="1.0" encoding="UTF-8"?> 
    <web-app id="WebApp_ID" version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"> 

    <resource-ref> 
     <description>JNDI LookUp</description> 
     <res-ref-name>jdbc/MyPostgresDB</res-ref-name> 
     <res-type>javax.sql.DataSource</res-type> 
     <res-auth>Container</res-auth> 
     <!-- <res-sharing-scope>Shareable</res-sharing-scope> --> 
    </resource-ref> 

    </web-app> 

obtenir encore l'exception comme

org.springframework.jdbc.datasource.lookup.DataSourceLookupFailureException: Impossible de rechercher DataSource JNDI avec le nom 'java: comp/env/jdbc/MyPostgres'

(Full Stacktrace pas donné comme tout où il est donné)

Alors quelle est la solution ou pourquoi je reçois cette exception.

Ne venez pas avec l'idée du serveur Tomcat embarqué pour le démarrage à ressort. S'il vous plaît aidez-moi.

+0

Défini les applications.properties pour le démarrage du printemps dans le droit chemin comme spring.datasource.jndi-name = java: comp/env/jdbc/MyPostgresDB Toujours obtenir l'exception (Dans le message original, il était faute de frappe désolé pour que) – 008ak89

Répondre

-1

devrait être

spring.datasource.jndi-name = java: comp/env/jdbc/MyPostgres DB

de ce que vous avez écrit ci-dessus dans vos définitions.

+0

Désolé c'est exactement ce que vous avez dit que je l'ai posté mal, mais toujours obtenir l'erreur – 008ak89

+0

S'il vous plaît lire [Comment puis-je écrire e une bonne réponse?] (http://stackoverflow.com/help/how-to-answer) avant d'essayer de répondre à d'autres questions. –

1

il faut ajouter usine = « org.apache.tomcat.jdbc.pool.DataSourceFactory » dans la balise de ressources server.xml et assurez-vous de mettre JndiDatasource dans la classe où vous Prolonge SpringBootServletInitializer classe

Pour toute réponse élaborée s'il vous plaît se référer here

+0

Veuillez lire [Comment écrire une bonne réponse?] (Http://stackoverflow.com/help/how-to-answer) avant d'essayer de répondre à d'autres questions. –