2009-09-16 49 views
3

我是GWT(1.7)的新手,並嘗試從servlet建立到我的MySQL數據庫的連接。因爲我有一些錯誤,所以我搜索了他們並發現,我必須在Jetty中配置一個DataSource以使其在託管模式下工作。我遵循本教程: TutorialGWT 1.7 - 在Jetty中配置數據源(託管模式)

我按照所述創建了自己的JettyLauncher類,並將相關參數添加到運行配置中。在那之後,我加入這個進入我的WEB-INF/web.xml文件:

<resource-ref>  
    <description>MySQl Connection</description> 
     <res-ref-name>jdbc/skyline</res-ref-name> 
     <res-type>javax.sql.DataSource</res-type> 
     <res-auth>Container</res-auth> 
    </resource-ref> 

之後,我創建了碼頭-env.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="skyline" class="org.mortbay.jetty.plus.naming.Resource"> 
    <Arg>jdbc/skyline</Arg> 
    <Arg> 
    <New class="com.mysql.jdbc.jdbc2.optional.MysqlConnectionPoolDataSource"> 
       <Set name="Url">jdbc:mysql://localhost:3306/skyline</Set> 
       <Set name="User">root</Set> 
       <Set name="Password">admin</Set> 
    </New> 
    </Arg> 
    </New> 

</Configure> 

當我現在嘗試啓動日食(伽利略,與GWT插件)的應用程序,我得到以下錯誤:

[WARN] Configuration problem at <resource-ref><description>MySQl Connection</description><res-ref-name>jdbc/skyline</res-ref-name><res-type>javax.sql.DataSource</res-type><res-auth>Container</res-auth></resource-ref> 
java.lang.ClassCastException: org.mortbay.jetty.plus.naming.Resource cannot be cast to org.mortbay.jetty.plus.naming.NamingEntry 
    at org.mortbay.jetty.plus.naming.NamingEntry.lookupNamingEntry(NamingEntry.java:211) 
    at org.mortbay.jetty.plus.naming.NamingEntry.bindToENC(NamingEntry.java:104) 
    at org.mortbay.jetty.plus.webapp.Configuration.bindResourceRef(Configuration.java:73) 
    at org.mortbay.jetty.plus.webapp.AbstractConfiguration.initResourceRef(AbstractConfiguration.java:262) 
    at org.mortbay.jetty.plus.webapp.AbstractConfiguration.initWebXmlElement(AbstractConfiguration.java:161) 
    at org.mortbay.jetty.webapp.WebXmlConfiguration.initialize(WebXmlConfiguration.java:289) 
    at org.mortbay.jetty.plus.webapp.AbstractConfiguration.initialize(AbstractConfiguration.java:133) 
    at org.mortbay.jetty.webapp.WebXmlConfiguration.configure(WebXmlConfiguration.java:222) 
    at org.mortbay.jetty.plus.webapp.AbstractConfiguration.configure(AbstractConfiguration.java:113) 
    at org.mortbay.jetty.webapp.WebXmlConfiguration.configureWebApp(WebXmlConfiguration.java:180) 
    at org.mortbay.jetty.plus.webapp.AbstractConfiguration.configureWebApp(AbstractConfiguration.java:96) 
    at org.mortbay.jetty.plus.webapp.Configuration.configureWebApp(Configuration.java:124) 
    at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1217) 
    at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:513) 
    at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:448) 
    at skyline.frontend.server.helper.CustomJettyLauncher$WebAppContextWithReload.doStart(CustomJettyLauncher.java:412) 
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:39) 
    at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130) 
    at org.mortbay.jetty.handler.RequestLogHandler.doStart(RequestLogHandler.java:115) 
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:39) 
    at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130) 
    at org.mortbay.jetty.Server.doStart(Server.java:222) 
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:39) 
    at skyline.frontend.server.helper.CustomJettyLauncher.start(CustomJettyLauncher.java:464) 
    at com.google.gwt.dev.HostedMode.doStartUpServer(HostedMode.java:365) 
    at com.google.gwt.dev.HostedModeBase.startUp(HostedModeBase.java:590) 
    at com.google.gwt.dev.HostedModeBase.run(HostedModeBase.java:397) 
    at com.google.gwt.dev.HostedMode.main(HostedMode.java:232) 

我用碼頭命名-6.1.11.jar和碼頭加6.1.11.jar 。兩者都在WEB-INF/lib目錄中。我已經嘗試了兩個庫的更新版本,結果相同。

是否可以告訴我,我哪裏出錯了?

回答

1

如果您收到ClassCastException S其中,你不應該(喜歡這裏,因爲org.mortbay.jetty.plus.naming.Resource延伸org.mortbay.jetty.plus.naming.NamingEntry),你有一個類路徑問題,意思也有org.mortbay.jetty.plus.naming.Resource兩個版本不同的類加載器飛來飛去從兩個不同的JAR文件加載在你的Jetty實例中。

我不知道關於GWT,但是你通常不需要在你的應用程序的WEB-INF/lib文件夾中包含任何Jetty JAR,因爲它們都存在於Jetty中。

+0

是的,這通常是原因。 – corydoras 2010-07-28 07:14:20

+1

這些.jar文件不包含在Jetty中,它們添加到插件中以啓用資源的JNDI查找 – 2011-03-16 20:02:48