java - GlassFish 4.1 中的连接池

标签 java web-services connection-pooling

在一个旧的 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/

相关文章:

java - 在操作高度值时从 BufferedImage 获取像素

java - wsimport - 如何在单独的项目/文件夹中生成服务端点类和 JAXB 类

mysql - Spring GetHibernateTemplate() 或 GetSession()

c# - SqlConnection.ClearAllPools 问题

java - IntelliJ 中如何使用 Tomcat 类?

java - 使用 Google Web Toolkit GWT 开发 Palm WebOS Mojo 应用程序

java - Spring BeanNotOfRequiredTypeException

java - Spring Boot CRUD操作创建Web服务配置

.net - ServiceStack 遇到异常 : The underlying connection was closed: The message length limit was exceeded

java - 在 Java 中向上转换有问题吗?