référence à la source de données JNDI de Tomcat dans persistence.xml
dans server.xml j'ai défini des ressources mondiales (je suis en utilisant Tomcat 6):
<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.que c'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 dans l'application, il est 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 plus probablement le présent ou le ResourceLink définition est faux, parce que je suis arriver:
javax.de nommage.NameNotFoundException:
Nom jdbc n'est pas lié, dans ce Contexte,
Quel est le problème 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>
Toujours obtenir la même erreur même si je vois la source de données dans la console JMX lorsque je connecte le Tomcat
(Catalina - Datasource - javax.sql.Source de données = "jdbc/myds" :
ObjectName = Catalina:type=source de données,la classe=javax.sql.Source de données,name="jdbc/myds". )
source d'informationauteur Rostislav Matl
Vous devez vous connecter pour publier un commentaire.
La
<non-jta-data-source>
danspersistence.xml
devrait êtrejava:comp/env/jdbc/myds
que par la réponse dans http://forums.oracle.com/forums/thread.jspa?messageID=1899677
Et est également à votre pilote de base de données dans
$CATALINA_HOME/lib
(Im en utilisant Apache OpenJPA bibliothèque dans Tomcat7 ne peuvent donc pas correspondre à Hibernate trucs)
Je n'ai jamais utilisé un réseau mondial de jdbc pour mon OpenJPA webapps, mais lui a donné un essai. Il a travaillé et c'est ma configuration. Voir le dossier où persistence.xml est enregistré, c'est probablement openjpa problème, mais sans elle, rien ne fonctionne.
myapp/WEB-INF/classes/META-INF/persistence.xml
c'est à l'aide de openjpa fournisseur de classe de la liste peuvent ne pas être nécessaires dans hibernate.
tomcat/conf/server.xml
Ajouter mondial de ressources jdbc.
tomcat/conf/Catalina/localhost/myapp.xml
ce mon de développement de la zone donc j'utilise docBase accéder directement au dossier de projets. Vous devriez trouver de l'insertion de cette guerre paquet (META-INF/context.xml) lorsqu'il est déployé à la boîte de production.
myapp/WEB-INF/web.xml
Ajouter la référence de ressource à la fin du fichier.
Parce que Im en utilisant OpenJPA+Tomcat7 (pas en taille réelle conteneur j2ee) cela peut sembler overengineering mais c'est comment il fonctionne. Les résultats sont bons et le développement de db-conscient webapps est très facile. Pas besoin de manuel requête sql coder en dur et oldskool classes DAO.
Avez-vous fait que des ressources disponibles pour l'application par le déclarant dans votre
web.xml
?