0

我想将数据库连接信息存储在应用程序 web.xml 文件中并在应用程序中获取它。我在某处读到有可能我只是不知道怎么做。

有任何想法吗?

谢谢!

4

2 回答 2

4

1) 根据您的应用程序服务器或容器管理的服务器,创建一个连接池。

2) 在您的 web.xml 中链接您的资源池

例如(Tomcat 5.5 及更高版本)。

我的连接池中有一个 Example_DS(数据源),在这里我在我的web.xml中共享它

<resource-ref>
        <description>Database Connection for Example</description>
        <res-ref-name>jdbc/Example_DS</res-ref-name>
        <res-type>javax.sql.DataSource</res-type>
        <res-auth>Container</res-auth>
        <res-sharing-scope>Shareable</res-sharing-scope>
    </resource-ref>

这与我在 web 应用程序上的context.xml(在 META-INF 文件夹中找到)上创建的资源相匹配。仍在使用Tomcat。

<Resource name="jdbc/Example_DS" auth="Container" type="javax.sql.DataSource"
            maxActive="100" maxIdle="30" maxWait="10000"
            username="YOURUSERNAMEHERE" password="YOURPASSWORDHERE" driverClassName="com.mysql.jdbc.Driver"
            url="jdbc:mysql://localhost:3306/DATABASEHERE?autoReconnect=true" 
            removeAbandoned="true" removeAbandonedTimeout="60" logAbandoned="true"
            testOnBorrow="true" validationQuery="SELECT 1" />

显然,您可以看到我在这里使用的是 MySQL。

<Resource />允许您创建连接池(在 Tomcat 中)

在 JBoss....

1) 创建一个 Example_DS.xml 文件,其中 Example 是您的数据源的名称。

例如

<?xml version="1.0" encoding="UTF-8"?>
<datasources>
   <local-tx-datasource>
      <jndi-name>Example_DS</jndi-name>
      <connection-url>jdbc:mysql://localhost:3306/DATABASEHERE?autoReconnect=true</connection-url>
      <driver-class>com.mysql.jdbc.Driver</driver-class>
      <user-name>YOURUSERNAMEHERE</user-name>
      <password>YOURPASSWORDHERE</password>
      <min-pool-size>0</min-pool-size>
      <max-pool-size>100</max-pool-size>
      <idle-timeout-minutes>2</idle-timeout-minutes>
      <track-statements>false</track-statements>
   </local-tx-datasource>
</datasources>

然后使用<resource-ref>我之前放弃的将其映射到 Jboss 中的 DS。在 /server/default/deploy/ 文件夹中部署 DS.xml 文件并重新启动 JBoss。

完成后,您可以使用 Context 在 Java 中调用它。

于 2010-02-03T20:01:30.913 回答
1

您将它们添加为context-param您的 web.xml:

<context-param>
    <description>My variable</description>
    <param-name>variable.name</param-name>
    <param-value>value</param-value>
</context-param>

然后在您的 servlet 中,调用getInitParameter()您的 ServletContext:

String variable = getServletContext().getInitParameter("variable.name");
于 2010-02-03T19:57:15.297 回答