在一个旧的 Web 应用程序中,我使用了 tomcat 服务器。为了配置 Web 应用程序的连接池,我修改了应用程序的 context.xml 文件。我没有对服务器文件做任何事情。这样我就可以在同一服务器上为不同的应用程序拥有不同的池。我现在正在开发一个新的 Web 应用程序,但这次使用 glassfish 4.1 服务器。根据我执行的互联网搜索,我似乎必须修改服务器文件本身才能设置连接池服务器。有没有一种方法可以仅在 Web 应用程序中修改文件并让服务器读取该文件,就像 context.xml 文件适用于 tomcat 一样?谢谢。
最佳答案
您不必修改任何服务器文件。您可以从管理控制台创建连接池,您可以通过 http://localhost:4848
然后导航到“资源”>“JDBC”>“JDBC 连接池”以创建新的连接池。
您还可以使用 Ping 按钮测试连接。
要在应用程序中使用连接,您需要执行如下 JNDI 查找
InitialContext ctx = new InitialContext();
DataSource ds = (DataSource) ctx.lookup("datasource jndi name");
Connection connection = ds.getConnection();
更新 您正在寻找的是应用程序范围的资源。对于特定于您的应用程序的资源,您需要创建 WEB-INF/glassfish-resources.xml 文件,该文件将在部署 war 时创建资源,并在取消部署时删除它们。
glassfish-resources.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE resources PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Resource Definitions//EN" "http://glassfish.org/dtds/glassfish-resources_1_5.dtd">
<resources>
<jdbc-connection-pool name="java:app/appConnectionPool" res-type="javax.sql.ConnectionPoolDataSource"
datasource-classname="com.mysql.jdbc.jdbc2.optional.MysqlDataSource">
<property name="ServerName" value="localhost"/>
<property name="Port" value="3306" />
<property name="DatabaseName" value="demojpa" />
<property name="User" value="demojpa" />
<property name="Password" value="password"/>
<property name="Url" value="jdbc:mysql://localhost:3306/demojpa"/>
<!-- property name="driverClass" value="com.mysql.jdbc.Driver"/ not required -->
</jdbc-connection-pool>
<jdbc-resource enabled="true" jndi-name="java:app/jdbc/appDataSource" object-type="user"
pool-name="java:app/appConnectionPool"/>
</resources>
使用“java:app/jdbc/appDataSource”jndi 名称查找数据源。已为此创建了一篇博客文章:Glassfish application scoped resources
关于java - GlassFish 4.1 中的连接池,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27800201/