GWT中数据库连接的初始化参数

时间:2011-05-25 11:33:19

标签: database gwt initialization

我正在使用MySQL在GWT应用程序中建立数据库连接。我希望数据库读取一组'init'参数,因此我不需要'手动编码'DB URL和用户名和密码。 我搜索了一段时间以寻找可能的解决方案,但可能的解决方案让我有点不知所措。他们中的一些人谈到JNDI作为解决方案,但没有人明白如何做到这一点。

此外,在开发/调试模式(在Jetty中)运行Eclipse应用程序并最终在Tomcat中部署应用程序的差异使我更加困惑。

是否可以在web.xml中指定一组Init参数?我怎么读它们?

如果要使用JNDI?我是否可以逐步简明地总结如何完成这项任务?

1 个答案:

答案 0 :(得分:1)

您正在寻找的是网络应用上下文设置 -

在Web应用程序上下文中添加数据库信息

要配置jetty,您还必须使用jetty-web.xml配置 -

要在您的应用中建立连接,请在服务器端使用以下内容 -

        Context ctx = new InitialContext();

        DataSource  ds = (DataSource) ctx.lookup("java:comp/env/{Res Name in context.xml}");
        Connection conn = ds.getConnection();

注意 - 要让您的应用程序同时使用jetty和tomcat运行,请同时拥有这两个文件,并确保您的资源名称为 -

context.xml : {resourceName}

jetty-web.xml: java:comp/env/{resourceName}

不确定jetty-web.xml是否也适用于{resourcename}

编辑 - 示例context.xml代码 -

<Resource name="jdbc/myDatabaseServer" auth="Container" type="javax.sql.DataSource"
    maxActive="100" maxIdle="30" maxWait="10000" username="USER"
    password="PWD" driverClassName="com.mysql.jdbc.Driver"
    url="jdbc:mysql://myUrl:3306/myDB?autoReconnect=true" removeAbandoned="true"
    removeAbandonedTimeout="60" logAbandoned="true" autoReconnect="true" validationQuery="select 1" testOnBorrow="true"
    testOnReturn="true" testWhileIdle="true" timeBetweenEvictionRunsMillis="1800000"
    numTestsPerEvictionRun="3" minEvictableIdleTimeMillis="1800000"/>

相同的示例jetty-web.xml代码 -

<New id="someid" class="org.mortbay.jetty.plus.naming.Resource">
    <Arg>java:comp/env/jdbc/myDatabaseServer</Arg>
    <Arg>
        <New class="org.apache.commons.dbcp.BasicDataSource">
            <Set name="driverClassName">com.mysql.jdbc.Driver</Set>
            <Set name="url">jdbc:mysql://myUrl:3306/myDB?autoReconnect=true</Set>
            <Set name="username">USER</Set>
            <Set name="password">PWD</Set>
            <Set name="maxActive">100</Set>
            <Set name="maxIdle">30</Set>
            <Set name="minIdle">0</Set>
            <Set name="maxWait">10000</Set>
            <Set name="minEvictableIdleTimeMillis">1800000</Set>
            <Set name="timeBetweenEvictionRunsMillis">1800000</Set>
            <Set name="numTestsPerEvictionRun">3</Set>
            <Set name="testOnBorrow">true</Set>
            <Set name="testWhileIdle">true</Set>
            <Set name="testOnReturn">true</Set>
            <Set name="validationQuery">SELECT 1</Set>
        </New>
    </Arg>
</New>

您可以阅读每个部分的含义。