Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java SQL数据源资源配置_Java_Maven Jetty Plugin - Fatal编程技术网

Java SQL数据源资源配置

Java SQL数据源资源配置,java,maven-jetty-plugin,Java,Maven Jetty Plugin,在JavaSpring中,我试图将我的数据库设置保留在主应用程序之外,以便可以在其他服务器上以最小的工作量进行配置。我使用Tomcat7作为我的生产服务器,使用Jetty服务器(Jetty maven插件版本8.1.14.v20131031)进行开发 我遇到的主要问题是无法使用同一个类(javax.sql.DataSource)将正在工作的Tomcat7配置转换为Jetty。我从这个类开始,而不是一个更健壮的类,所以我从尽可能基本的东西开始 如果这是两台服务器之间没有直接翻译的情况,或者这只是一

在JavaSpring中,我试图将我的数据库设置保留在主应用程序之外,以便可以在其他服务器上以最小的工作量进行配置。我使用Tomcat7作为我的生产服务器,使用Jetty服务器(Jetty maven插件版本8.1.14.v20131031)进行开发

我遇到的主要问题是无法使用同一个类(javax.sql.DataSource)将正在工作的Tomcat7配置转换为Jetty。我从这个类开始,而不是一个更健壮的类,所以我从尽可能基本的东西开始

如果这是两台服务器之间没有直接翻译的情况,或者这只是一种不好的做法,那么我正在寻找一种好的做法或标准

例如,是一种使用不同类并与Jetty一起工作的替代配置。(但是,它没有回答为什么基本数据源类与Tomcat而不是Jetty一起工作。)

我在server.xml中有一个资源条目,如下所示:

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