dans server.xml J'ai défini les ressources mondiales (j'utilise Tomcat 6):référence Tomcat JNDI dans persistence.xml
<GlobalNamingResources>
<Resource name="jdbc/myds" auth="Container"
type="javax.sql.DataSource"
maxActive="10" maxIdle="3" maxWait="10000"
username="sa" password=""
driverClassName="org.h2.Driver"
url="jdbc:h2:~/.myds/data/db"
/>
</GlobalNamingResources>
Je vois dans catalina.out que cela est lié, donc je suppose que c'est OK.
Dans mon application web j'ai le lien vers la source de données, je ne suis pas sûr que c'est OK:
<Context>
<ResourceLink global='jdbc/myds' name='jdbc/myds' type="javax.sql.Datasource"/>
</Context>
et en application il y a persistence.xml:
<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_2_0.xsd"
version="2.0">
<persistence-unit name="oam" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<non-jta-data-source>jdbc/myds</non-jta-data-source>
<!-- class definitions here, nothing else -->
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.H2Dialect"/>
</properties>
</persistence-unit>
</persistence>
Il devrait être OK, mais très probablement cette définition ou la définition ResourceLink est erronée parce que je reçois:
javax.naming.NameNotFoundException: Nom jdbc n'est pas lié dans ce contexte
Qu'est-ce qui ne va pas et pourquoi cela ne fonctionne pas?
MISE À JOUR:
J'ai essayé d'obtenir la source de données directement:
public class WebAppListener implements ServletContextListener
{
// ServletContextListener interface - start
public void contextInitialized(ServletContextEvent sce)
{
try
{
Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");
DataSource ds = (DataSource)
envCtx.lookup("jdbc/myds");
}
catch (NamingException ex)
{
System.out.println("!!!! Got NamingException:");
ex.printStackTrace(System.out);
}
}
public void contextDestroyed(ServletContextEvent sce) { }
}
mon web.xml:
<listener>
<display-name>Listener</display-name>
<listener-class>WebAppListener</listener-class>
</listener>
obtenir toujours la même erreur même si je vois la source de données dans la console JMX lorsque je me connecte au Tomcat (Catalina - Datasource - javax.sql.Datasource = "jdbc/myds": ObjectName = Catalina: type = DataSource, classe = javax.sql.DataSource, name = "jdbc/myds".)
avez-vous résolu votre problème? Si oui, comment? – artaxerxe
Malheureusement, en raison d'un changement de concept, il n'y a pas eu de demande supplémentaire. –