2010-03-16 17 views
14

Ho cercato di ottenere un pool di connessioni c3p0 db configurato per Jetty, ma io continuo a ricevere un ClassNotFoundException:Molo 7 + MySQL Config [java.lang.ClassNotFoundException: org.mortbay.jetty.webapp.WebAppContext]

2010-03-14 19:32:12.028:WARN::Failed startup of context [email protected]@fccada/phpMyAdmin,file:/usr/local/jetty/webapps/phpMyAdmin/,file:/usr/local/jetty/webapps/phpMyAdmin/ 
java.lang.ClassNotFoundException: org.mortbay.jetty.webapp.WebAppContext 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:200) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:188) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:307) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:252) 
    at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:313) 
    at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:266) 
    at org.eclipse.jetty.util.Loader.loadClass(Loader.java:90) 
    at org.eclipse.jetty.xml.XmlConfiguration.nodeClass(XmlConfiguration.java:224) 
    at org.eclipse.jetty.xml.XmlConfiguration.configure(XmlConfiguration.java:187) 
    at org.eclipse.jetty.webapp.JettyWebXmlConfiguration.configure(JettyWebXmlConfiguration.java:77) 
    at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:975) 
    at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:586) 
    at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:349) 
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:55) 
    at org.eclipse.jetty.server.handler.HandlerCollection.doStart(HandlerCollection.java:165) 
    at org.eclipse.jetty.server.handler.ContextHandlerCollection.doStart(ContextHandlerCollection.java:162) 
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:55) 
    at org.eclipse.jetty.server.handler.HandlerCollection.doStart(HandlerCollection.java:165) 
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:55) 
    at org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:92) 
    at org.eclipse.jetty.server.Server.doStart(Server.java:228) 
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:55) 
    at org.eclipse.jetty.xml.XmlConfiguration$1.run(XmlConfiguration.java:990) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at org.eclipse.jetty.xml.XmlConfiguration.main(XmlConfiguration.java:955) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at org.eclipse.jetty.start.Main.invokeMain(Main.java:394) 
    at org.eclipse.jetty.start.Main.start(Main.java:546) 
    at org.eclipse.jetty.start.Main.parseCommandLine(Main.java:208) 
    at org.eclipse.jetty.start.Main.main(Main.java:75) 

Sono nuovo di Jetty e voglio ottenere phpMyAdmin e WordPress per eseguirlo su Quercus e una connessione JDBC. Ecco i miei file web.xml e jetty-web.xml nella mia directory WEB-INF.

molo-web.xml:

<?xml version="1.0"?> 
<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://jetty.mortbay.org/configure.dtd"> 
<Configure class="org.mortbay.jetty.webapp.WebAppContext"> 
    <New id="mysql" class="org.mortbay.jetty.plus.naming.Resource"> 
     <Arg>jdbc/mysql</Arg> 
     <Arg> 
      <New class="com.mchange.v2.c3p0.ComboPooledDataSource"> 
       <Set name="Url">jdbc:mysql://localhost:3306/mysql</Set> 
       <Set name="User">user</Set> 
       <Set name="Password">pw</Set> 
      </New> 
     </Arg> 
    </New> 
</Configure> 

web.xml:

<?xml version="1.0"?> 
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN" "http://java.sun.com/j2ee/dtds/web-app_2_2.dtd"> 
<web-app> 
    <description>Caucho Technology's PHP Implementation</description> 
    <resource-ref> 
     <description>My DataSource Reference</description> 
     <res-ref-name>jdbc/mysql</res-ref-name> 
     <res-type>javax.sql.DataSource</res-type> 
     <res-auth>Container</res-auth> 
    </resource-ref> 

    <servlet> 
     <servlet-name>Quercus Servlet</servlet-name> 
     <servlet-class>com.caucho.quercus.servlet.QuercusServlet</servlet-class> 

     <!-- 
      Specifies the encoding Quercus should use to read in PHP scripts. 
     --> 
     <init-param> 
      <param-name>script-encoding</param-name> 
      <param-value>UTF-8</param-value> 
     </init-param> 

     <!-- 
      Tells Quercus to use the following JDBC database and to ignore the 
      arguments of mysql_connect(). 
     --> 
     <init-param> 
      <param-name>database</param-name> 
      <param-value>jdbc/mysql</param-value> 
     </init-param> 

     <init-param> 
      <param-name>ini-file</param-name> 
      <param-value>WEB-INF/php.ini</param-value> 
     </init-param> 

    </servlet> 

    <servlet-mapping> 
     <servlet-name>Quercus Servlet</servlet-name> 
     <url-pattern>*.php</url-pattern> 
    </servlet-mapping> 

    <welcome-file-list> 
     <welcome-file>index.php</welcome-file> 
    </welcome-file-list> 
</web-app> 

Sto indovinando che mi manca un paio di barattoli o qualcosa del genere. Attualmente ho messo i seguenti vasi nel mio WEB-INF/lib:

c3p0-0.9.1.2.jar
commons-DBCP-1.4.jar
commons-pool-1.5.4.jar
mysql-connector-java-5.1.12-bin.jar

ho anche provato a mettere questi vasi in MOLO-HOME/lib/ext, ma senza alcun risultato ... qualcuno per favore mi dica che cosa è sbagliato con la mia configurazione. Sono stufo di scavare nella documentazione schifosa di Jetty.

risposta

22

A partire da Jetty 7, Jetty è diventato un progetto di Eclipse Foundation. Durante la migrazione di Jetty 6 a Eclipse Molo 7, una nuova struttura pacchetto è stato adottato (vedere pagina Jetty 7 Refactoring):

  • Corsi da org.mortbay.jetty.webapp sono ora in org.eclipse.jetty.webapp
  • Corsi da org.mortbay.jetty.plus.naming sono adesso org.eclipse.jetty.plus.jndi

Così provare con i seguenti jetty-web.xml (non testato):

<?xml version="1.0"?> 
<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://jetty.mortbay.org/configure.dtd"> 
<Configure class="org.eclipse.jetty.webapp.WebAppContext"> 
    <New id="mysql" class="org.eclipse.jetty.plus.jndi.Resource"> 
     <Arg>jdbc/mysql</Arg> 
     <Arg> 
      <New class="com.mchange.v2.c3p0.ComboPooledDataSource"> 
       <Set name="Url">jdbc:mysql://localhost:3306/mysql</Set> 
       <Set name="User">user</Set> 
       <Set name="Password">pw</Set> 
      </New> 
     </Arg> 
    </New> 
</Configure> 

Ma se non hai bisogno di cose fantastiche da Jetty 7, il mio suggerimento sarebbe quello di restare con Jetty 6 (più stabile, più documentazione, più risorse su Internet, meno complicato, ecc., In altre parole, meno dolore).

+0

Ahh ... mi sono uno schiaffo in fronte dopo la lettura Questo. Grazie mille amico. Darò un vortice adesso. Scott –

4

Ho ottenuto la configurazione per funzionare ora. Sto postando il pontile-web.xml corretto per Jetty 7.

<?xml version="1.0"?> 
<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://jetty.mortbay.org/configure.dtd"> 
<Configure class="org.eclipse.jetty.webapp.WebAppContext"> 
    <New id="mysql" class="org.eclipse.jetty.plus.jndi.Resource"> 
     <Arg>jdbc/mysql</Arg> 
     <Arg> 
      <New class="com.mchange.v2.c3p0.ComboPooledDataSource"> 
       <Set name="driverClass">com.mysql.jdbc.Driver</Set> 
       <Set name="jdbcUrl">jdbc:mysql://localhost:3306/mysql</Set> 
       <Set name="user">user</Set> 
       <Set name="password">pw</Set> 
      </New> 
     </Arg> 
    </New> 
</Configure> 

Con i seguenti vasi in WEB-INF/lib

c3p0-0.9.1.2.jar
commons-DBCP -1.4.jar
commons-pool-1.5.4.jar
mysql-connector-java-5.1.12-bin.jar

+0

puoi mostrare il tuo codice nella classe. Usi "DriverManager.getConnection"? – Timo

1

controllo per assicurarsi che la VECCHIOjetty-env.xml non è nel classpath - Nel molo 6 del jetty-env.xml inizia con questo:

<Configure class="org.mortbay.jetty.webapp.WebAppContext"> 
Problemi correlati