Ne peut pas créer d'instance de la ressource en Tomcat7
Je suis en train de configurer un pool de connexion à Tomcat 7. Voici le code:
une partie de server.xml:
<GlobalNamingResources>
<!-- Editable user database that can also be used by
UserDatabaseRealm to authenticate users
-->
<Resource name="UserDatabase" auth="Container"
type="org.apache.catalina.UserDatabase"
description="User database that can be updated and saved"
factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
pathname="conf/tomcat-users.xml" />
<Resource
name="jdbc/testDataSource"
auth="Container"
type="javax.sql.DataSource"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/delta_server"
username="test" password="test"
validationQuery="select count (*) from session_contexts"
/>
web.xml configuration:
<resource-ref>
<description>
Sample JNDI DataSource resource reference
</description>
<res-ref-name>jdbc/testDataSource</res-ref-name>
<res-type>java.sql.DatSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
et l'accès de page jsp:
Context initialContext = new InitialContext();
Context envContext = (Context) initialContext.lookup("java:/comp/env");
conn = (Connection) envContext.lookup("jdbc/testDataSource");
Mais malheureusement je reçois exception:
javax.naming.NamingException: Cannot create resource instance
org.apache.naming.factory.ResourceFactory.getObjectInstance(ResourceFactory.java:146)
javax.naming.spi.NamingManager.getObjectInstance(NamingManager.java:321)
org.apache.naming.NamingContext.lookup(NamingContext.java:826)
org.apache.naming.NamingContext.lookup(NamingContext.java:145)
org.apache.naming.NamingContext.lookup(NamingContext.java:814)
org.apache.naming.NamingContext.lookup(NamingContext.java:159)
org.apache.jsp.index_jsp._jspService(index_jsp.java:91)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:433)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:389)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:333)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
Comment puis-je résoudre ce problème?
Je vous remercie.
OriginalL'auteur user1379574 | 2012-07-16
Vous devez vous connecter pour publier un commentaire.
Votre configuration semble assez bien OK (sauf pour les quelques fautes de frappe dans votre
web.xml
fichier; le<res-type>java.sql.DatSource</res-type>
devrait être<res-type>javax.sql.DataSource</res-type>
).Mais le problème je pense c'est le fait que vous devez déclarer la base de données de ressources à l'intérieur de la
server.xml
fichier.Normalement les ressources de l'application doivent être déclarés dans le
context.xml
dossier de la demande et ne peuvent être déclarés dansserver.xml
que si elles sont partagées entre les applications. Donc, ma suggestion est de déclarer lajdbc/testDataSource
ressource dans votrecontext.xml
fichier. Qui devrait être une façon de le faire fonctionner.Si vous devez absolument avoir une ressource mondiale puis dans votre
context.xml
fichier vous devez ajouter une ressource, un lien ou il ne sera pas visible par défaut.De sorte que le deuxième façon de le faire fonctionner est de laisser la ressource déclarée dans
server.xml
mais ensuite ajouter quelque chose comme ceci dans votrecontext.xml
fichier:OriginalL'auteur Bogdan