2016-12-21 2 views
0

Je suis très confus pourquoi cela ne fonctionne pas. L'environnement est une instance de Liferay 6.1 avec Tomcat 7 et la base de données n'est PAS la base de données par défaut de Liferay. C'est un serveur secondaire utilisé pour les données. Donc, je ne suis pas sûr si cela compte avec Liferay ou non.Configuration de JNDI avec un environnement Tomcat 7 en utilisant Liferay 6.1

web.xml (situé dans webapps/conf dans Tomcat)

<web-app>... 
<resource-ref> 
    <description>My database</description> 
    <res-ref-name>jdbc/xxx</res-ref-name> 
    <res-type>javax.sql.DataSource</res-type> 
    <res-auth>Container</res-auth> 
</resource-ref> 
</web-app> 

server.xml (situé dans webapps/conf dans Tomcat)

<GlobalNamingResources> 
<Resource name="jdbc/xxx" auth="Container" type="javax.sql.DataSource" username="a" password="y" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/xxx" 
    maxActive="200" maxIdle="25" /> 
</GlobalNamingResources> 

context.xml (situé dans webapps/conf dans Tomcat)

<context> 
    <ResourceLink global="jdbc/xxx" name="jdbc/xxx" type="javax.sql.DataSource" /> 
</context> 

code:

 Context ctx = new InitialContext(); 
     DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/xxx"); 
     Connection conn = ds.getConnection(); 

Erreur:

2016-12-21 19:13:04 FATAL asdasdsd:128 - Exception thrown in (removed): 
javax.naming.NameNotFoundException: Name [java:comp/env/jdbc/xxx] is not bound in this Context. Unable to find [java:comp]. 
    at org.apache.naming.NamingContext.lookup(NamingContext.java:820) 
    at org.apache.naming.NamingContext.lookup(NamingContext.java:168) 

Qu'est-ce que je manque?

Modifier:

également confirmé ce qui suit:

  1. connecteur mysql est dans le chemin
  2. même pot est dans le classpath du portlet

Second Edition:

J'ai créé un tout nouveau projet d'application web dynamique avec la même configuration et la même couche DAO et cela a fonctionné à 100%. J'ai le sentiment que c'est lié à Liferay maintenant. Malheureusement ..

Troisième Edition:

tout Essayé, y compris cet article: http://www.journaldev.com/2513/tomcat-datasource-jndi-example-java

Cela ne fonctionne pas non plus. Même exception Le manque d'information sur ce sujet sur le site Liferay est incroyable pour moi. La documentation semble faire cruellement défaut.

+0

Avez-vous essayé sans donner java: comp/env /? –

+0

@RajkannanIyyappan Le 'java: comp/env /' est absolument nécessaire. –

+0

Je suppose que vous voulez dire tomcat/conf, pas webapps/conf. –

Répondre

0

L'autre solution serait (ça marche pour moi), Retirer la ressource-ref de web.xml, retirer la ressource du serveur. xml et supprime ResourceLink du fichier context.xml.

Ajouter la ressource seule au contexte.xml,

<Resource auth="Container" driverClassName="com.mysql.jdbc.Driver" maxActive="20" maxIdle="10" maxWait="-1" name="jdbc/xxx" password="" type="javax.sql.DataSource" url="jdbc:mysql://localhost:3306/xxx" username=""/> 

code (java: comp/env/est nécessaire dans ce cas):

Context ctx = new InitialContext(); 
DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/xxx"); 
Connection conn = ds.getConnection(); 
+0

Même exception. Merci pour votre réponse. – user2124871

+0

Cela a fini par être un problème de Liferay. Merci de votre aide! – user2124871