Java SQL数据源资源配置
在JavaSpring中,我试图将我的数据库设置保留在主应用程序之外,以便可以在其他服务器上以最小的工作量进行配置。我使用Tomcat7作为我的生产服务器,使用Jetty服务器(Jetty maven插件版本8.1.14.v20131031)进行开发 我遇到的主要问题是无法使用同一个类(javax.sql.DataSource)将正在工作的Tomcat7配置转换为Jetty。我从这个类开始,而不是一个更健壮的类,所以我从尽可能基本的东西开始 如果这是两台服务器之间没有直接翻译的情况,或者这只是一种不好的做法,那么我正在寻找一种好的做法或标准 例如,是一种使用不同类并与Jetty一起工作的替代配置。(但是,它没有回答为什么基本数据源类与Tomcat而不是Jetty一起工作。) 我在server.xml中有一个资源条目,如下所示:Java SQL数据源资源配置,java,maven-jetty-plugin,Java,Maven Jetty Plugin,在JavaSpring中,我试图将我的数据库设置保留在主应用程序之外,以便可以在其他服务器上以最小的工作量进行配置。我使用Tomcat7作为我的生产服务器,使用Jetty服务器(Jetty maven插件版本8.1.14.v20131031)进行开发 我遇到的主要问题是无法使用同一个类(javax.sql.DataSource)将正在工作的Tomcat7配置转换为Jetty。我从这个类开始,而不是一个更健壮的类,所以我从尽可能基本的东西开始 如果这是两台服务器之间没有直接翻译的情况,或者这只是一
<Context path="/" docBase="/var/lib/tomcat7/webapps/myapp" reloadable="true">
<Resource name="mysql-dataSource" auth="Container" type="javax.sql.DataSource"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/dbname"
username="dbuser"
password="dbuser" />
</Context>
jetty maven插件POM条目:
...
<plugins>
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>8.1.14.v20131031</version>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.29</version>
</dependency>
</dependencies>
<configuration>
<!-- <useProvidedScope>?</useProvidedScope> -->
<webApp>
<jettyEnvXml>${basedir}/jetty-env.xml</jettyEnvXml>
</webApp>
</configuration>
</plugin>
...
。。。
org.mortbay.jetty
jetty maven插件
8.1.14.v20131031
mysql
mysql连接器java
5.1.29
${basedir}/jetty-env.xml
...
这在Tomcat7中运行良好
对于Jetty,我使用Jetty-env.xml进行以下配置:
<?xml version="1.0"?>
<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://jetty.eclipse.org/configure.dtd">
<Configure id="Server" class="org.eclipse.jetty.webapp.WebAppContext">
<New id="ds" class="org.eclipse.jetty.plus.jndi.Resource">
<Arg>mysql-dataSource</Arg>
<Arg>
<New class="javax.sql.DataSource">
<Set name="driverClassName">com.mysql.jdbc.Driver</Set>
<Set name="url">jdbc:mysql://localhost:3306/dbname</Set>
<Set name="username">dbuser</Set>
<Set name="password">dbuser</Set>
</New>
</Arg>
</New>
</Configure>
mysql数据源
com.mysql.jdbc.Driver
jdbc:mysql://localhost:3306/dbname
数据库用户
数据库用户
由此我得到了这个错误:
java.lang.IllegalStateException: No Constructor: <New class="javax.sql.DataSource">...
java.lang.IllegalStateException:无构造函数:。。。
添加此
<Arg></Arg>
编辑:
您是否为Jetty的特定版本添加了范围提供的?您指的是“useProvidedScope”吗?在添加了缺少的内容之后,我尝试了真与假,但没有运气。我将用我的POM配置更新我的问题。我重新编写了这个问题,以便它更关注我真正想问的问题。也就是说,Tomcat和Jetty之间的一对一转换配置。与此相同的答案使用不同的类(envention vs Resource、MysqlConnectionPoolDataSource vs DataSource)。
<Arg>mysql-dataSource</Arg>