2010-03-16 55 views
14

Tôi đã cố gắng để có được một hồ bơi kết nối db c3p0 được cấu hình cho Jetty, nhưng tôi tiếp tục nhận được một ClassNotFoundException:Cầu cảng 7 + Cấu hình MySQL [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) 

Tôi mới tham gia Jetty và tôi muốn cuối cùng nhận phpMyAdmin và WordPress để chạy trên nó thông qua Quercus và kết nối JDBC. Dưới đây là các tệp web.xml và jetty-web.xml của tôi trong thư mục WEB-INF của tôi.

cầu cảng-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> 

Tôi đoán rằng tôi đang thiếu một vài lọ hoặc một cái gì đó. Hiện nay tôi đã đặt các lọ sau trong WEB-INF/lib thư mục của tôi:

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

tôi cũng đã cố gắng để đưa những lọ trong Jetty-HOME/lib/ext, nhưng không có kết quả ... có người xin vui lòng cho tôi biết là những gì sai với cấu hình của tôi. Tôi bị bệnh khi đào bới tài liệu crappy của Jetty.

Trả lời

22

Bắt đầu với Jetty 7, Jetty đã trở thành một dự án của Quỹ Eclipse. Trong quá trình di cư của Jetty 6 đến Eclipse Jetty 7, một cấu trúc gói mới đã được áp dụng (xem trang Jetty 7 Refactoring):

  • Lớp học từ org.mortbay.jetty.webapp đang trong org.eclipse.jetty.webapp
  • Lớp học từ org.mortbay.jetty.plus.naming đang trong org.eclipse.jetty.plus.jndi

Vì vậy, cố gắng với những sản phẩm sau jetty-web.xml (không kiểm tra):

<?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> 

Nhưng nếu bạn không cần những thứ ưa thích từ Jetty 7, gợi ý của tôi là gắn bó với Jetty 6 (ổn định hơn, tài liệu nhiều hơn, nhiều tài nguyên trên Internet, ít phức tạp hơn, vv, nói cách khác, ít đau hơn).

+0

Ahh ... Tôi vỗ bản thân mình trong trán sau khi đọc điều này. Cảm ơn một triệu người bạn đời. Tôi sẽ cung cấp cho một whirl ngay bây giờ. Scott –

4

Tôi đã có cấu hình để hoạt động ngay bây giờ. Tôi gửi bài sửa lại cầu cảng-web.xml cho 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> 

Với lọ sau trong 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

bạn có thể hiển thị mã của mình trong lớp học không. Bạn có sử dụng "DriverManager.getConnection" không? – Timo

1

kiểm tra để chắc chắn rằng các OLDjetty-env.xml không có trong classpath của bạn - Trong cầu cảng 6 jetty-env.xml bắt đầu với điều này:

<Configure class="org.mortbay.jetty.webapp.WebAppContext"> 
Các vấn đề liên quan