La définition des deux sources de données dans la jetée (jetty-env.xml)
Je suis en train de définir deux sources de données dans mon application web, à l'aide de la jetty-env.xml
fichier.
Cela fonctionne bien avec une seule source de données, mais j'ai cette erreur quand la deuxième source de données est ajouté:
java.lang.IllegalStateException: Nothing to bind for name javax.sql.DataSource/default
Voici ma configuration:
jetty-env.xml
<Configure class="org.eclipse.jetty.webapp.WebAppContext">
<New id="ds" class="org.eclipse.jetty.plus.jndi.Resource">
<Arg>jdbc/mybd1</Arg>
<Arg>
<New class="com.mchange.v2.c3p0.ComboPooledDataSource">
<Set name="driverClass">com.microsoft.sqlserver.jdbc.SQLServerDriver</Set>
<Set name="jdbcUrl">jdbc:jtds:sqlserver://url:1433/mybd1</Set>
<Set name="user">xx</Set>
<Set name="password">yy</Set>
</New>
</Arg>
</New>
<New id="ds2" class="org.eclipse.jetty.plus.jndi.Resource" >
<Arg>jdbc/mybd2</Arg>
<Arg>
<New class="com.mchange.v2.c3p0.ComboPooledDataSource">
<Set name="driverClass">com.microsoft.sqlserver.jdbc.SQLServerDriver</Set>
<Set name="jdbcUrl">jdbc:jtds:sqlserver://url:1433/mybd2</Set>
<Set name="user">xx</Set>
<Set name="password">yy</Set>
</New>
</Arg>
</New>
</Configure>
web.xml
<resource-ref>
<res-ref-name>jdbc/mybd1</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
<resource-ref>
<res-ref-name>jdbc/mybd2</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
hibernate.cfg.xml (il y a un autre hibernate.cfb.xml pour configurer la deuxième source de données)
<session-factory>
<property name="connection.datasource">jdbc/mybd1</property>
<!-- ... -->
La moindre idée?
OriginalL'auteur polypiel | 2012-07-04
Vous devez vous connecter pour publier un commentaire.
Je n'ai pas eu la chance de le tester, mais il me semble que votre problème est que vous êtes absent une
<Arg />
pour la portée.Votre DS doit être:
etc.
Ce premier "Arg" est la portée, et sans elle, le reste de vos arguments sont hors de position, et sont probablement à l'origine de votre problème.
J'ai eu un problème similaire, et cela a fonctionné pour moi. Mais maintenant j'ai un autre problème...
hehehe... Jamais regardé à la construction de jndi.Ressources? Ressource (la portée de l'Objet, de la Chaîne de jndiName, Objet objToBind) Ressource (String jndiName, Objet objToBind)... de sorte que vous pouvez également utiliser trois paramètres avec des valeurs vides 1er param portée avec deux autres params ou simplement à deux params
OriginalL'auteur Tim
Essayez d'activer la journalisation dans la Jetée.
Attention nom de l'enregistreur est "jndi".
Jetée aux développeurs de ne pas utiliser de nom de classe comme un enregistreur de-nom JNDI.
J'ai passé 2 jours à trouver la différence entre nom défini dans web.xml et jetty-env.xml.
OriginalL'auteur vlk32
Le paramètre id valeurs doivent correspondre à jetty-env.xml et web.xml
jetty-env.xml
web.xml
OriginalL'auteur janih
Prendre un coup d'oeil :
https://www.eclipse.org/jetty/documentation/9.4.x/using-jetty-jndi.html
Décider Où Déclarer les Ressources
Vous pouvez définir le nommage des ressources dans trois endroits:
jetty.xml
Nommage des ressources définies dans un jetty.xml de fichiers sont limités à la JVM de niveau ou de niveau du Serveur.
Les classes de la ressource doit être visible à la Jetée niveau du conteneur. Si les classes pour les ressources n'existent qu'à l'intérieur de votre application web, vous devez le déclarer dans un WEB-INF/jetty-env.xml fichier.
WEB-INF/jetty-env.xml
Nommage des ressources dans un WEB-INF/jetty-env.xml de fichiers sont limités à l'application web dans lequel se trouve le fichier. Alors que vous pouvez entrer JVM ou étendues du Serveur, si vous choisissez, nous ne recommandons pas de le faire. Les ressources définies ici peut utiliser des classes de l'intérieur de votre webapp. C'est une Jetée de mécanisme spécifique.
Contexte fichier xml
Les entrées dans un contexte fichier xml doit être portée au niveau de l'application web à laquelle ils s'appliquent, même si vous pouvez fournir une moins stricte portée au niveau du Serveur ou de la JVM si vous le souhaitez. Comme avec les ressources déclarées dans un jetty.xml fichier, de classes associé à la ressource doit être visible sur le conteneur du classpath.
Et de mettre un fichier comme ceci :
OriginalL'auteur Unoxiden