2010-02-25 3 views
0

J'essaye de configurer la jetée intégrée fournie avec le plugin Eclipse GWT (2.0.3) pour utiliser un pool de connexion JNDI qui fonctionne parfaitement sous Tomcat, sans succès. Maintenant, depuis que j'ai lu certaines choses concernant le problème, j'ai réussi à faire ce qui suit: Inclus la fabrique de contexte initial nommant Jetty au classpath en lançant le jvm avec le paramètre suivant: -Djava.naming.factory.initial=org.mortbay.naming.InitialContextFactory. J'ai aussi créé un jetty-web.xml qui ressemble à ceci:GWT eclispe embedded jetty et la connexion DBCP pooling

<New id="mysqltest" class="org.mortbay.jetty.plus.naming.Resource"> 
    <Arg>java:comp/env/jdbc/mysqldb</Arg> 
    <Arg> 
    <New class="com.mysql.jdbc.jdbc2.optional.MysqlConnectionPoolDataSource"> 
    <Set name="Url">jdbc:mysql://192.168.0.5:3306/mydb</Set> 
    <Set name="User">testuser</Set> 
    <Set name="Password">testpass</Set> 
    </New> 
    </Arg> 
</New> 
<New id="db2test" class="org.mortbay.jetty.plus.naming.Resource"> 
    <Arg>java:comp/env/jdbc/db2db</Arg> 
    <New class="org.apache.commons.dbcp.BasicDataSource"> 
    <Set name="driverClassName">com.ibm.db2.jcc.DB2Driver</Set> 
    <Set name="url">jdbc:db2://192.168.0.6:50000/mydb2</Set> 
    <Set name="username">testuser</Set> 
    <Set name="password">testpass</Set> 
    </New> 
</New> 
</Configure> 

et inclus les fichiers neccessary dans mon chemin de construction. Comme vous pouvez le voir, il y a deux ressources JNDI déclarées ici, un handle à une base de données MySQL utilisant MysqlConnectionPoolDataSource (j'ai vu cela sur un blog) qui fonctionne bien sous mon environnement et utilisé pour s'assurer que jetty analysait jetty-web. xml correctement et un deuxième qui tente d'utiliser DBCP pour se connecter à une base de données DB2. Le problème est que chaque fois que je tente d'utiliser la ressource DBCP je reçois l'erreur suivante lorsque la jetée démarre:

[WARN] Config error at <New id="db2test" class="org.mortbay.jetty.plus.naming.Resource"><Arg>java:comp/env/jdbc/db2db</Arg>... 
[WARN] Failed startup of context com.g[email protected]7a74db2c{/,/home/..} 
java.lang.IllegalStateException: No Constructor <New id="db2test" class="org.mortbay.jetty.plus.naming.Resource"><Arg>java:comp/env/jdbc/db2db</Arg>... 

Comme je l'ai dit, ces travaux bien sous Tomcat et le problème n'est pas spécifique à DB2, je ne peux pas une source de données MySQL utilisant également DBCP. En regardant le message d'erreur, il semble que les fichiers DBCP ne sont pas dans le classpath mais je n'ai aucune idée sur la façon de les mettre là (ils sont bien sûr dans le chemin de construction des projets mais cela ne semble pas pertinent pour Jetty). Je dois probablement ajouter un autre paramètre à Djava.naming.factory.initial mais je ne suis pas sûr que ce soit le bon pour que DBCP fonctionne.

Vive

+0

Toute raison pour laquelle vous devez utiliser la jetée intégrée? Comme vous le savez peut-être, il y a de nombreux problèmes, en particulier avec des projets plus complexes. Je vous recommande d'utiliser un serveur externe (puisque vous semblez déjà avoir Tomcat): http://code.google.com/webtoolkit/doc/latest/FAQ_DebuggingAndCompiling.html#How_do_I_use_my_own_server_in_hosted_mode_instead_of_GWT%27s –

+0

Je suppose que vous avez raison, la chose C'est que j'espérais éviter encore une autre procédure de configuration ... – nvrs

+0

Eh bien, si vous le regardez comme un moyen d'éviter un PITA majeur avec la configuration de Jetty dans le futur (ou maintenant, comme il semble), ce n'est pas si mal;) –

Répondre

0

Je pense que vous manquez une étiquette 'Arg'.

Essayez:

<New id="db2test" class="org.mortbay.jetty.plus.naming.Resource"> 
    <Arg>java:comp/env/jdbc/db2db</Arg> 
    <Arg> 
     <New class="org.apache.commons.dbcp.BasicDataSource"> 
     <Set name="driverClassName">com.ibm.db2.jcc.DB2Driver</Set> 
     <Set name="url">jdbc:db2://192.168.0.6:50000/mydb2</Set> 
     <Set name="username">testuser</Set> 
     <Set name="password">testpass</Set> 
     </New> 
    </Arg> 
</New>