J'essaie de faire quelque chose apparemment simple: mettre en place un petit pool de connexions de base de données afin qu'une servlet (juste un) ne crée pas mon serveur à 1 connexion par seconde.jetty mysql connexion de base de données de connexion
Sur Ubuntu 10.04
, avec la dernière mise à jour/mise à jour, j'utilise Eclipse Jetty 8.1.5.v20120716
. J'essaie de me connecter à un serveur MySQL 5.1
.
Mon servlet est appelé gcm
, donc dans ${jetty}/contexts
, j'ai ce fichier gcm.xml
:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure.dtd">
<Configure id="wac" class="org.eclipse.jetty.webapp.WebAppContext">
<New id="jdbc/myds" class="org.eclipse.jetty.plus.jndi.Resource">
<Arg></Arg>
<Arg>jdbc/myds</Arg>
<Arg>
<New class="com.mysql.jdbc.jdbc2.optional.MysqlConnectionPoolDataSource">
<Set name="Url">jdbc:mysql://localhost:3306/chat</Set>
<Set name="User">root</Set>
<Set name="Password">sillyness</Set>
</New>
</Arg>
</New>
<Set name="contextPath">/</Set>
<Set name="war"><SystemProperty name="jetty.home" default="."/>/webapps/gcm</Set>
<Set name="extractWAR">true</Set>
</Configure>
Quand je commence la jetée avec java -jar start.jar -port=8080
, tout commence bien jusqu'à ce que je tente de frapper la base de données de mon servlet. La partie à manipuler le code de la demande ressemble à ceci:
public static List<String> getDevices()
throws javax.naming.NamingException, java.sql.SQLException {
synchronized (regIds) {
InitialContext ctx = new InitialContext();
DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/myds");
Connection conn = null;
Statement stmt = null;
try {
conn = ds.getConnection();
stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("select * from chatdevice");
//blah,blah,blah...
L'erreur que je reçois est:
javax.naming.NameNotFoundException; remaining name 'jdbc/myds'
at org.eclipse.jetty.jndi.NamingContext.lookup(NamingContext.java:500)
at org.eclipse.jetty.jndi.NamingContext.lookup(NamingContext.java:531)
at org.eclipse.jetty.jndi.NamingContext.lookup(NamingContext.java:531)
at org.eclipse.jetty.jndi.NamingContext.lookup(NamingContext.java:546)
at org.eclipse.jetty.jndi.java.javaRootURLContext.lookup(javaRootURLContext.java:112)
at javax.naming.InitialContext.lookup(InitialContext.java:409)
at com.google.android.gcm.demo.server.Datastore.getDevices(Datastore.java:98)
Comment obtenir la jetée pour trouver le code de base de données?
Salut Sumit, merci pour la réponse, mais si je mets cela dans un fichier appelé 'web.xml', ou n'importe où dans mon fichier gcm.xml, on me dit "Impossible d'atteindre le noeud target: started", et " Type de configuration inconnu: resource-ref dans " –
J'ai oublié de mentionner: si je frappe ma servlet à ce moment-là, je reçois toujours la même erreur NameNotFoundException. –