Jetty 配置:MySQL JNDI 问题

Jetty configuration: problems with MySQL JNDI

嵌入式 Jetty 有一个 jetty.xml 的配置。此配置有一个 mysql jndi 连接。

当我 运行 使用 gradle 码头时,它抛出异常:

Caused by: java.lang.ClassNotFoundException: com.mysql.jdbc.jdbc2.optional.MysqlConnectionPoolDataSource
at org.eclipse.jetty.util.Loader.loadClass(Loader.java:86)
at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.nodeClass(XmlConfiguration.java:364)
at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.newObj(XmlConfiguration.java:754)
at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.itemValue(XmlConfiguration.java:1125)
at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.value(XmlConfiguration.java:1030)
at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.newObj(XmlConfiguration.java:775)
at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.configure(XmlConfiguration.java:423)
at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.configure(XmlConfiguration.java:298)
at org.eclipse.jetty.xml.XmlConfiguration.configure(XmlConfiguration.java:248)
at org.eclipse.jetty.xml.XmlConfiguration$configure.call(Unknown Source)
at com.sahlbach.gradle.plugins.jettyEclipse.JettyEclipseRun.applyJettyXml(JettyEclipseRun.groovy:533)
at com.sahlbach.gradle.plugins.jettyEclipse.JettyEclipseRun.startJetty(JettyEclipseRun.groovy:318)

这是抛出异常的jetty.xml行:

<New id="relevante" class="org.eclipse.jetty.plus.jndi.Resource">
    <Arg></Arg>
    <Arg>jdbc/Relevante</Arg>
    <Arg>
        <New id="relevanteDataSource" class="com.mysql.jdbc.jdbc2.optional.MysqlConnectionPoolDataSource">
           <Set name="url">jdbc:mysql://localhost:3306/xxxx</Set>
           <Set name="user">xxxx</Set>
           <Set name="password">xxxx</Set>
        </New>
     </Arg>
</New>

MySQL 连接器是 gradle 的依赖项,我不知道是否需要将连接器放入本地地址(除了作为 gradle 中的依赖项).

jettyEclipse {
     additionalRuntimeJars = files( new File("$rootDir/src/main/webapp/WEB-INF/lib/mysql-connector-java-5.0.8-bin.jar") )
     warFile = file("$rootDir/build/libs/relevanteme.war")  
     jettyConfig = file("$rootDir/jetty.xml")
     contextPath = ""
     automaticReload = "true"
     scanIntervalInSeconds = 5
     webDefaultXml = file("$rootDir/webdefault.xml")
}

谢谢!!

去 运行 码头的任务是什么?你知道是否有一个单独的配置,它是否从编译扩展?

解决方案是有两个 xml 文件用于服务器配置。这两个文件之一将是 jetty.xml,它将包含所有服务器配置。另一个文件是 jetty-env.xml,带有 webApp 配置和数据库连接(这个文件必须在 webapp/WEB-INF/)。

更多信息见this repository