代码之家  ›  专栏  ›  技术社区  ›  Jacky

如何在Firebird中为Tomcat连接定义“远程进程”

  •  2
  • Jacky  · 技术社区  · 1 年前

    我正在用Eclipse编写一个web服务项目,使用Tomcat 8服务器连接到Firebird数据库。问题是在IBExpert工具中,来自Tomcat的连接在“远程进程”列中显示空值,所以我不知道哪个连接来自Tomcat。

    enter image description here

    在那里命名Tomcat的连接有什么意义吗?也许显示Tomcatexe文件的路径,或者只是给它一个文本?

    这里是我用来创建与HirakiCP库连接的代码。

    public class DBConnection {
        private static final int READ_ONLY = 0;
        private static final int READ_WRITE = 1;
        private static final int CREATE_NEW = 2;
    
        private static HikariConfig config;
        private static HikariDataSource datasource;
    
        public static DataSource getDataSource(String dbIP, String dbName,
                String dbUsername, String dbPassword) {
            if (datasource == null) {
                config = new HikariConfig();
    
                config.setDriverClassName(Constants.DB_DRIVER);
                config.setJdbcUrl(Constants.DB_URL + dbIP + "/" + dbName
                        + "?dialect=3&lc_ctype=UNICODE_FSS");
                config.setUsername(dbUsername);
                config.setPassword(Utility.dbDecrypt(dbPassword));
    
                config.addDataSourceProperty("cachePrepStmts", "true");
                config.addDataSourceProperty("prepStmtCacheSize", "250");
                config.addDataSourceProperty("prepStmtCacheSqlLimit", "2048");
                config.setMaximumPoolSize(5);
                config.setMinimumIdle(2);
                config.setConnectionTimeout(TimeUnit.SECONDS.toMillis(30));
                config.setLeakDetectionThreshold(TimeUnit.SECONDS.toMillis(10));
    
                datasource = new HikariDataSource(config);
            }
            return datasource;
        }
    
        /*
         * Method to create DB connection
         * 
         * @param dbIP
         * 
         * @param dbName
         * 
         * @param dbUsername
         * 
         * @param dbPassword
         * 
         * @return connection
         */
    
        @SuppressWarnings("finally")
        public static Connection createConnection(String dbIP, String dbName,
                String dbUsername, String dbPassword, int conType) {
            Connection con = null;
    
            if (datasource == null) {
    
                // Create new datasource
                datasource = (HikariDataSource) getDataSource(dbIP, dbName,
                        dbUsername, dbPassword);
            }
    
            try {
    
                // Use existing datasource
                con = datasource.getConnection();
    
                if (conType == READ_ONLY) {
                    con.setReadOnly(true);
                } else {
                    con.setReadOnly(false);
                }
            } finally {
                return con;
            }
        }
    }
    
    1 回复  |  直到 1 年前
        1
  •  2
  •   Mark Rotteveel    1 年前

    这不是IB Expert特有的(这也是我从你的问题中删除该标签的原因)。这是由 MON$ATTACHMENTS 火鸟的桌子。

    使用Jaybird(Firebird JDBC驱动程序)时,您有许多选项可以设置进程名称:

    1. 设置系统属性 org.firebirdsql.jdbc.processName 例如,通过:
      • 设置 -Dorg.firebirdsql.jdbc.processName=Tomcat 在Tomcat的启动脚本中
      • 使用 System.setProperty("org.firebirdsql.jdbc.processName", "Tomcat") 在初始化连接池之前。
    2. 指定连接属性 processName 例如,通过:
      • 添加 processName=Tomcat 在JDBC URL中
      • 专门针对HikariCP,配置如下 config.addDataSourceProperty("processName", "Tomcat")

    另请参见 Process information Jaybird JDBC驱动程序Java程序员手册 .

    披露:我维护Jaybird驱动程序,并编写了我链接的部分文档。

    推荐文章