草庐IT

java - wildfly 数据源中的空闲超时后数据库连接未关闭

coder 2024-03-07 原文

我有一个在 wildfly 8.1 下运行的应用程序 应用程序中使用的数据库连接取自 standalone.xml 文件中定义的数据源。

问题:我不知道为什么,但是来自池的连接永远不会空闲并被释放。最终池被填满将所有 Activity 连接和应用程序开始抛出 javax.resource.ResourceException: IJ000453: Unable to get managed connection for java:/bo/datasource

同时查看数据库,大部分Connections都显示空闲。 (下面的配置和结果输出)

我已经在这个问题上待了一个星期了,但一直没能找出这个问题的根本原因。我还检查了所有创建连接的地方,并确保它们在之后关闭。

我应该研究哪些其他可能的地方?或者这是一个错误(或 Wildfly 数据源的已知问题)?

Wildfly 数据源定义:

    <subsystem xmlns="urn:jboss:domain:datasources:2.0">
        <datasources>
            <datasource jndi-name="java:/db/pool" pool-name="DBSource" enabled="true">
                <connection-url>jdbc:postgresql://<IP>:5432/DB</connection-url>
                <driver>postgres</driver>
                <new-connection-sql>select 1</new-connection-sql>
                <pool>
                    <min-pool-size>5</min-pool-size>
                    <max-pool-size>100</max-pool-size>
                </pool>
                <security>
                    <user-name>user</user-name>
                    <password>password</password>
                </security>
                <validation>
                    <check-valid-connection-sql>select 1</check-valid-connection-sql>
                    <background-validation>true</background-validation>
                    <background-validation-millis>60000</background-validation-millis>
                </validation>
                <timeout>
                    <idle-timeout-minutes>30</idle-timeout-minutes>
                </timeout>
                <statement>
                    <track-statements>true</track-statements>
                </statement>
            </datasource>
            <drivers>
                <driver name="h2" module="com.h2database.h2">
                    <xa-datasource-class>org.h2.jdbcx.JdbcDataSource</xa-datasource-class>
                </driver>
                <driver name="postgres" module="org.postgres">
                    <driver-class>org.postgresql.Driver</driver-class>
                </driver>
            </drivers>
        </datasources>
    </subsystem>

Wildfly 数据源池信息:

命令:

/subsystem=datasources/data-source=DBSource/statistics=pool:read-resource(recursive=false,proxies=false,include-runtime=true,include-defaults=true) 

响应:

{
    "outcome" => "success",
    "result" => {
        "ActiveCount" => "98",
        "AvailableCount" => "55",
        "AverageBlockingTime" => "1",
        "AverageCreationTime" => "125",
        "AverageGetTime" => "27",
        "BlockingFailureCount" => "0",
        "CreatedCount" => "98",
        "DestroyedCount" => "0",
        "IdleCount" => "3",
        "InUseCount" => "95",
        "MaxCreationTime" => "1382",
        "MaxGetTime" => "1382",
        "MaxUsedCount" => "97",
        "MaxWaitCount" => "0",
        "MaxWaitTime" => "1",
        "TimedOut" => "0",
        "TotalBlockingTime" => "71",
        "TotalCreationTime" => "12340",
        "TotalGetTime" => "12696",
        "WaitCount" => "0"
    },
    "response-headers" => {"process-state" => "reload-required"}
}

PostgreSQL 查询状态:

命令:

SELECT datname, pid, usename, waiting, state, (now()-query_start) AS since, (now() - state_change) AS since2, (now() - backend_start) as since3, (now() - xact_start) as since4, query FROM pg_stat_activity ORDER BY datname, state, usename, waiting, query, since, pid; 

响应:

    datname    | pid  |  usename   | waiting |        state        |      since      |      since2      |     since3      |     since4      |                                                                                                                                   
---------------+------+------------+---------+---------------------+-----------------+------------------+-----------------+-----------------+-----------------------------------------------------------------------------------------------------------------------------------
 BOIEDUDBV13R1 | 4871 | blueoptima | f       | active              | 00:00:00.176188 | 00:00:00.176179  | 01:37:21.045722 | 00:02:17.212346 | Query-1
 BOIEDUDBV13R1 | 4568 | blueoptima | f       | active              | 00:18:33.035399 | 00:18:33.035395  | 04:25:11.916388 | 00:18:33.473355 | Query-2
 BOIEDUDBV13R1 | 4564 | blueoptima | f       | active              | 00:10:10.599237 | 00:10:10.599232  | 04:25:11.943752 | 00:10:10.915048 | Query-3 
 BOIEDUDBV13R1 | 4498 | blueoptima | f       | active              | 00:03:25.861284 | 00:03:25.86128   | 05:09:51.735583 | 00:03:25.861823 | Query-4 
 BOIEDUDBV13R1 | 4535 | blueoptima | f       | active              | 00:01:16.612227 | 00:01:16.612222  | 04:34:01.668772 | 00:01:16.614149 | Query-5
 BOIEDUDBV13R1 | 4534 | blueoptima | f       | idle                | 00:00:04.72429  | 00:00:04.683504  | 04:35:21.78966  |                 | COMMIT
 BOIEDUDBV13R1 | 4519 | blueoptima | f       | idle                | 00:00:12.950041 | 00:00:12.913566  | 04:50:53.698877 |                 | COMMIT
 BOIEDUDBV13R1 | 4438 | blueoptima | f       | idle                | 00:00:25.82585  | 00:00:25.81036   | 05:34:41.528853 |                 | COMMIT
 BOIEDUDBV13R1 | 4425 | blueoptima | f       | idle                | 00:09:12.999537 | 00:09:12.9731    | 05:41:51.806148 |                 | COMMIT
 BOIEDUDBV13R1 | 4488 | blueoptima | f       | idle                | 00:56:04.709316 | 00:56:04.686439  | 05:14:45.445165 |                 | COMMIT
 BOIEDUDBV13R1 | 4501 | blueoptima | f       | idle                | 00:57:00.615919 | 00:57:00.61589   | 05:06:51.861328 |                 | COMMIT
 BOIEDUDBV13R1 | 4466 | blueoptima | f       | idle                | 04:11:54.8669   | 04:11:54.516947  | 05:25:03.079741 |                 | COMMIT
 BOIEDUDBV13R1 | 4419 | blueoptima | f       | idle                | 04:51:03.786294 | 04:51:03.749462  | 05:41:51.814577 |                 | COMMIT
 BOIEDUDBV13R1 | 4340 | blueoptima | f       | idle                | 04:52:19.772533 | 04:52:19.720537  | 06:31:51.758733 |                 | COMMIT
 BOIEDUDBV13R1 | 4502 | blueoptima | f       | idle                | 04:54:49.892553 | 04:54:49.85151   | 05:06:51.439101 |                 | COMMIT
 BOIEDUDBV13R1 | 4406 | blueoptima | f       | idle                | 05:09:20.675009 | 05:09:20.655038  | 06:00:50.160594 |                 | COMMIT
 BOIEDUDBV13R1 | 4489 | blueoptima | f       | idle                | 05:09:54.785706 | 05:09:54.751723  | 05:14:45.358108 |                 | COMMIT
 BOIEDUDBV13R1 | 4449 | blueoptima | f       | idle                | 05:16:58.881682 | 05:16:58.88074   | 05:26:50.728973 |                 | COMMIT
 BOIEDUDBV13R1 | 4450 | blueoptima | f       | idle                | 05:17:23.727614 | 05:17:23.726158  | 05:25:55.116657 |                 | COMMIT
 BOIEDUDBV13R1 | 4465 | blueoptima | f       | idle                | 05:22:32.475769 | 05:22:32.470301  | 05:25:03.230671 |                 | COMMIT
 BOIEDUDBV13R1 | 4421 | blueoptima | f       | idle                | 05:25:03.596961 | 05:25:03.596942  | 05:41:51.81487  |                 | COMMIT
 BOIEDUDBV13R1 | 4451 | blueoptima | f       | idle                | 05:25:29.373092 | 05:25:29.364467  | 05:25:52.433709 |                 | COMMIT
 BOIEDUDBV13R1 | 4448 | blueoptima | f       | idle                | 05:25:58.729039 | 05:25:58.724453  | 05:26:50.898318 |                 | COMMIT
 BOIEDUDBV13R1 | 4423 | blueoptima | f       | idle                | 05:26:13.2656   | 05:26:13.263502  | 05:41:51.814528 |                 | COMMIT
 BOIEDUDBV13R1 | 4426 | blueoptima | f       | idle                | 05:26:58.773981 | 05:26:58.765174  | 05:41:51.179333 |                 | COMMIT
 BOIEDUDBV13R1 | 4415 | blueoptima | f       | idle                | 05:29:07.123798 | 05:29:07.115682  | 05:47:36.740939 |                 | COMMIT
 BOIEDUDBV13R1 | 4394 | blueoptima | f       | idle                | 05:42:02.02632  | 05:42:01.994772  | 06:05:54.290575 |                 | COMMIT
 BOIEDUDBV13R1 | 4416 | blueoptima | f       | idle                | 05:45:52.799303 | 05:45:52.793004  | 05:47:36.701474 |                 | COMMIT
 BOIEDUDBV13R1 | 4408 | blueoptima | f       | idle                | 05:48:02.635413 | 05:48:02.630767  | 05:54:49.133404 |                 | COMMIT
 BOIEDUDBV13R1 | 4410 | blueoptima | f       | idle                | 05:49:09.631417 | 05:49:09.624039  | 05:49:47.440347 |                 | COMMIT
 BOIEDUDBV13R1 | 4392 | blueoptima | f       | idle                | 05:49:45.136111 | 05:49:45.124627  | 06:05:54.52666  |                 | COMMIT
 BOIEDUDBV13R1 | 4411 | blueoptima | f       | idle                | 05:49:45.208436 | 05:49:45.207393  | 05:49:46.326729 |                 | COMMIT
 BOIEDUDBV13R1 | 4399 | blueoptima | f       | idle                | 05:50:19.476105 | 05:50:19.465746  | 06:04:53.509647 |                 | COMMIT
 BOIEDUDBV13R1 | 4383 | blueoptima | f       | idle                | 05:54:04.625364 | 05:54:04.56991   | 06:09:43.004602 |                 | COMMIT
 BOIEDUDBV13R1 | 4382 | blueoptima | f       | idle                | 05:58:29.615594 | 05:58:29.608542  | 06:09:43.496538 |                 | COMMIT
 BOIEDUDBV13R1 | 4404 | blueoptima | f       | idle                | 06:00:48.381014 | 06:00:48.379175  | 06:00:50.352202 |                 | COMMIT
 BOIEDUDBV13R1 | 4393 | blueoptima | f       | idle                | 06:01:49.740445 | 06:01:49.733278  | 06:05:54.468595 |                 | COMMIT
 BOIEDUDBV13R1 | 4379 | blueoptima | f       | idle                | 06:02:12.00668  | 06:02:12.004878  | 06:11:37.044413 |                 | COMMIT
 BOIEDUDBV13R1 | 4396 | blueoptima | f       | idle                | 06:02:25.216415 | 06:02:25.202565  | 06:05:10.411017 |                 | COMMIT
 BOIEDUDBV13R1 | 4390 | blueoptima | f       | idle                | 06:03:48.651868 | 06:03:48.647211  | 06:06:05.443    |                 | COMMIT
 BOIEDUDBV13R1 | 4375 | blueoptima | f       | idle                | 06:04:51.760968 | 06:04:51.732155  | 06:11:37.545217 |                 | COMMIT
 BOIEDUDBV13R1 | 4353 | blueoptima | f       | idle                | 06:04:53.302492 | 06:04:53.252345  | 06:25:54.61252  |                 | COMMIT
 BOIEDUDBV13R1 | 4372 | blueoptima | f       | idle                | 06:05:08.158286 | 06:05:08.137553  | 06:11:49.797186 |                 | COMMIT
 BOIEDUDBV13R1 | 4397 | blueoptima | f       | idle                | 06:05:08.578854 | 06:05:08.544941  | 06:05:10.298185 |                 | COMMIT
 BOIEDUDBV13R1 | 4377 | blueoptima | f       | idle                | 06:08:34.443118 | 06:08:34.435299  | 06:11:37.432426 |                 | COMMIT
 BOIEDUDBV13R1 | 4378 | blueoptima | f       | idle                | 06:11:35.00451  | 06:11:34.946687  | 06:11:37.293523 |                 | COMMIT
 BOIEDUDBV13R1 | 4354 | blueoptima | f       | idle                | 06:12:01.816625 | 06:12:01.812458  | 06:25:50.247498 |                 | COMMIT
 BOIEDUDBV13R1 | 4344 | blueoptima | f       | idle                | 06:21:56.439509 | 06:21:56.438739  | 06:31:30.8968   |                 | COMMIT
 BOIEDUDBV13R1 | 4350 | blueoptima | f       | idle                | 06:22:20.125071 | 06:22:20.11839   | 06:29:37.465565 |                 | COMMIT
 BOIEDUDBV13R1 | 4343 | blueoptima | f       | idle                | 06:25:59.198819 | 06:25:59.197962  | 06:31:30.901491 |                 | COMMIT
 BOIEDUDBV13R1 | 4351 | blueoptima | f       | idle                | 06:27:23.950853 | 06:27:23.950081  | 06:29:37.456841 |                 | COMMIT
 BOIEDUDBV13R1 | 4348 | blueoptima | f       | idle                | 06:27:36.13192  | 06:27:36.131014  | 06:29:37.513979 |                 | COMMIT
 BOIEDUDBV13R1 | 4349 | blueoptima | f       | idle                | 06:27:42.332901 | 06:27:42.331326  | 06:29:37.491039 |                 | COMMIT
 BOIEDUDBV13R1 | 4352 | blueoptima | f       | idle                | 06:27:54.031819 | 06:27:54.02966   | 06:29:37.265193 |                 | COMMIT
 BOIEDUDBV13R1 | 4341 | blueoptima | f       | idle                | 06:28:14.444963 | 06:28:14.444105  | 06:31:31.858728 |                 | COMMIT
 BOIEDUDBV13R1 | 4337 | blueoptima | f       | idle                | 06:29:20.216685 | 06:29:20.215749  | 06:33:13.450564 |                 | COMMIT
 BOIEDUDBV13R1 | 4346 | blueoptima | f       | idle                | 06:29:28.524638 | 06:29:28.523906  | 06:30:51.904609 |                 | COMMIT
 BOIEDUDBV13R1 | 4342 | blueoptima | f       | idle                | 06:29:58.433751 | 06:29:58.432939  | 06:31:31.204896 |                 | COMMIT
 BOIEDUDBV13R1 | 4345 | blueoptima | f       | idle                | 06:30:28.819691 | 06:30:28.818747  | 06:31:26.849458 |                 | COMMIT
 BOIEDUDBV13R1 | 4355 | blueoptima | f       | idle                | 06:07:48.953452 | 06:07:48.947655  | 06:25:50.216644 |                 | INSERT
 BOIEDUDBV13R1 | 4409 | blueoptima | f       | idle                | 05:49:25.452863 | 05:49:25.435483  | 05:49:49.502884 |                 | INSERT-1
 BOIEDUDBV13R1 | 4424 | blueoptima | f       | idle                | 05:35:44.413808 | 05:35:44.381036  | 05:41:51.814529 |                 | INSERT-2
 BOIEDUDBV13R1 | 4398 | blueoptima | f       | idle                | 05:36:00.621836 | 05:36:00.598047  | 06:04:53.758915 |                 | INSERT-3
 BOIEDUDBV13R1 | 4417 | blueoptima | f       | idle                | 05:46:18.096148 | 05:46:18.07272   | 05:47:36.576677 |                 | INSERT-4
 BOIEDUDBV13R1 | 4395 | blueoptima | f       | idle                | 05:50:44.112353 | 05:50:44.074542  | 06:05:10.557776 |                 | INSERT-5
 BOIEDUDBV13R1 | 4388 | blueoptima | f       | idle                | 06:05:57.843694 | 06:05:57.832724  | 06:06:06.177483 |                 | INSERT-6
 BOIEDUDBV13R1 | 4339 | blueoptima | f       | idle                | 06:17:57.460712 | 06:17:57.459716  | 06:33:12.657432 |                 | INSERT-7
 BOIEDUDBV13R1 | 4487 | blueoptima | f       | idle                | 00:00:15.552081 | 00:00:15.552035  | 05:15:49.047066 |                 | select 1
 BOIEDUDBV13R1 | 4565 | blueoptima | f       | idle                | 00:00:15.553093 | 00:00:15.553037  | 04:25:11.942656 |                 | select 1
 BOIEDUDBV13R1 | 4420 | blueoptima | f       | idle                | 00:00:15.554958 | 00:00:15.55493   | 05:41:51.814789 |                 | select 1
 BOIEDUDBV13R1 | 4402 | blueoptima | f       | idle                | 02:16:15.871078 | 02:16:15.871048  | 06:00:52.663433 |                 | select 1
 BOIEDUDBV13R1 | 4384 | blueoptima | f       | idle                | 05:38:17.430042 | 05:38:17.43002   | 06:09:42.969186 |                 | select 1
 BOIEDUDBV13R1 | 4412 | blueoptima | f       | idle                | 05:46:47.263716 | 05:46:47.263518  | 05:49:45.575215 |                 | SELECT DISTINCT column  FROM table
 BOIEDUDBV13R1 | 4414 | blueoptima | f       | idle                | 05:49:41.773012 | 05:49:41.772712  | 05:49:45.435716 |                 | SELECT DISTINCT column  FROM table
 BOIEDUDBV13R1 | 4405 | blueoptima | f       | idle                | 05:51:32.2168   | 05:51:32.216636  | 06:00:50.160309 |                 | SELECT DISTINCT column  FROM table
 BOIEDUDBV13R1 | 4400 | blueoptima | f       | idle                | 05:52:44.966233 | 05:52:44.965626  | 06:02:28.601245 |                 | SELECT DISTINCT column  FROM table
 BOIEDUDBV13R1 | 4401 | blueoptima | f       | idle                | 06:01:07.430069 | 06:01:07.429643  | 06:02:28.599077 |                 | SELECT DISTINCT column  FROM table
 BOIEDUDBV13R1 | 4389 | blueoptima | f       | idle                | 06:05:52.187161 | 06:05:52.187081  | 06:06:05.801733 |                 | SELECT DISTINCT column  FROM table
 BOIEDUDBV13R1 | 4376 | blueoptima | f       | idle                | 06:06:04.447668 | 06:06:04.447527  | 06:11:37.448819 |                 | SELECT DISTINCT column  FROM table
 BOIEDUDBV13R1 | 4422 | blueoptima | f       | idle                | 04:48:59.446162 | 04:48:59.446103  | 05:41:51.814892 |                 | SELECT
 BOIEDUDBV13R1 | 4385 | blueoptima | f       | idle                | 05:28:13.718473 | 05:28:13.643871  | 06:09:42.799857 |                 | SELECT
 BOIEDUDBV13R1 | 4536 | blueoptima | f       | idle                | 04:29:42.4528   | 04:29:42.429103  | 04:34:01.664679 |                 | SELECT
 BOIEDUDBV13R1 | 4381 | blueoptima | f       | idle                | 06:05:51.131506 | 06:05:51.131429  | 06:11:35.758195 |                 | SELECT
 BOIEDUDBV13R1 | 4338 | blueoptima | f       | idle                | 06:28:31.658157 | 06:28:31.658105  | 06:33:12.953437 |                 | SELECT
 BOIEDUDBV13R1 | 4566 | blueoptima | f       | idle                | 00:00:25.8479   | 00:00:25.835864  | 04:25:11.94033  |                 | UPDATE-1
 BOIEDUDBV13R1 | 4391 | blueoptima | f       | idle                | 03:52:25.755736 | 03:52:25.73571   | 06:06:05.300207 |                 | UPDATE-2
 BOIEDUDBV13R1 | 4512 | blueoptima | f       | idle                | 04:56:03.247543 | 04:56:03.232923  | 04:56:44.188961 |                 | UPDATE-3
 BOIEDUDBV13R1 | 4511 | blueoptima | f       | idle                | 04:56:34.70146  | 04:56:34.691303  | 04:57:00.191291 |                 | UPDATE-4
 BOIEDUDBV13R1 | 4347 | blueoptima | f       | idle                | 05:32:30.754975 | 05:32:30.732481  | 06:29:46.312612 |                 | UPDATE-5
 BOIEDUDBV13R1 | 4439 | blueoptima | f       | idle                | 05:32:55.742867 | 05:32:55.741539  | 05:34:41.519884 |                 | UPDATE-6
 BOIEDUDBV13R1 | 4407 | blueoptima | f       | idle                | 05:37:36.461115 | 05:37:36.451762  | 05:54:49.133383 |                 | UPDATE-7
 BOIEDUDBV13R1 | 4371 | blueoptima | f       | idle                | 05:53:02.986092 | 05:53:02.830753  | 06:11:55.240785 |                 | UPDATE-8
 BOIEDUDBV13R1 | 4403 | blueoptima | f       | idle                | 05:59:57.870442 | 05:59:57.865218  | 06:00:52.646267 |                 | UPDATE-9
 BOIEDUDBV13R1 | 4356 | blueoptima | f       | idle                | 06:09:18.560294 | 06:09:18.559498  | 06:25:50.216061 |                 | UPDATE-10
 BOIEDUDBV13R1 | 4380 | blueoptima | f       | idle                | 06:09:38.951985 | 06:09:38.924395  | 06:11:36.494018 |                 | UPDATE-11
 BOIEDUDBV13R1 | 4863 | postgres   | f       | idle                | 01:21:12.135105 | 01:21:12.052383  | 02:01:39.736693 |                 | select a                                                     
               |      |            |         |                     |                 |                  |                 |                 | ;
 BOIEDUDBV13R1 | 4988 | postgres   | f       | idle                | 00:11:16.272964 | 00:11:16.145621  | 00:13:26.234094 |                 | select b                 
               |      |            |         |                     |                 |                  |                 |                 |
 BOIEDUDBV13R1 | 4437 | blueoptima | f       | idle in transaction | 05:29:11.490837 | 05:29:11.490825  | 05:34:41.52984  | 05:29:11.490949 | select 1
 BOIEDUDBV13R1 | 4413 | blueoptima | f       | idle in transaction | 05:36:47.417173 | 05:36:47.417148  | 05:49:45.5742   | 05:36:47.417257 | select 1
 BOIEDUDBV13R1 | 4567 | blueoptima | f       | idle in transaction | 00:49:38.844059 | 00:49:38.844027  | 04:25:11.936358 | 00:49:40.950629 | Query 
(100 rows)

最佳答案

事实证明,Hibernate 正在保持连接并且没有将它们释放到池中。不管我们使用线程本地上下文的事实如何。但是在添加 <property name="hibernate.connection.release_mode">after_transaction</property> 之后到 hibernate 配置。问题解决了。

PS:我仍然不明白为什么我们需要明确定义它以及为什么自动 Release模式在 session 关闭后不会释放连接。

关于java - wildfly 数据源中的空闲超时后数据库连接未关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28645435/

有关java - wildfly 数据源中的空闲超时后数据库连接未关闭的更多相关文章

  1. ruby - 如何从 ruby​​ 中的字符串运行任意对象方法? - 2

    总的来说,我对ruby​​还比较陌生,我正在为我正在创建的对象编写一些rspec测试用例。许多测试用例都非常基础,我只是想确保正确填充和返回值。我想知道是否有办法使用循环结构来执行此操作。不必为我要测试的每个方法都设置一个assertEquals。例如:describeitem,"TestingtheItem"doit"willhaveanullvaluetostart"doitem=Item.new#HereIcoulddotheitem.name.shouldbe_nil#thenIcoulddoitem.category.shouldbe_nilendend但我想要一些方法来使用

  2. ruby - 其他文件中的 Rake 任务 - 2

    我试图在一个项目中使用rake,如果我把所有东西都放到Rakefile中,它会很大并且很难读取/找到东西,所以我试着将每个命名空间放在lib/rake中它自己的文件中,我添加了这个到我的rake文件的顶部:Dir['#{File.dirname(__FILE__)}/lib/rake/*.rake'].map{|f|requiref}它加载文件没问题,但没有任务。我现在只有一个.rake文件作为测试,名为“servers.rake”,它看起来像这样:namespace:serverdotask:testdoputs"test"endend所以当我运行rakeserver:testid时

  3. ruby-on-rails - Ruby net/ldap 模块中的内存泄漏 - 2

    作为我的Rails应用程序的一部分,我编写了一个小导入程序,它从我们的LDAP系统中吸取数据并将其塞入一个用户表中。不幸的是,与LDAP相关的代码在遍历我们的32K用户时泄漏了大量内存,我一直无法弄清楚如何解决这个问题。这个问题似乎在某种程度上与LDAP库有关,因为当我删除对LDAP内容的调用时,内存使用情况会很好地稳定下来。此外,不断增加的对象是Net::BER::BerIdentifiedString和Net::BER::BerIdentifiedArray,它们都是LDAP库的一部分。当我运行导入时,内存使用量最终达到超过1GB的峰值。如果问题存在,我需要找到一些方法来更正我的代

  4. ruby-on-rails - Rails 3 中的多个路由文件 - 2

    Rails2.3可以选择随时使用RouteSet#add_configuration_file添加更多路由。是否可以在Rails3项目中做同样的事情? 最佳答案 在config/application.rb中:config.paths.config.routes在Rails3.2(也可能是Rails3.1)中,使用:config.paths["config/routes"] 关于ruby-on-rails-Rails3中的多个路由文件,我们在StackOverflow上找到一个类似的问题

  5. ruby - 解析 RDFa、微数据等的最佳方式是什么,使用统一的模式/词汇(例如 schema.org)存储和显示信息 - 2

    我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i

  6. ruby-on-rails - Rails - 一个 View 中的多个模型 - 2

    我需要从一个View访问多个模型。以前,我的links_controller仅用于提供以不同方式排序的链接资源。现在我想包括一个部分(我假设)显示按分数排序的顶级用户(@users=User.all.sort_by(&:score))我知道我可以将此代码插入每个链接操作并从View访问它,但这似乎不是“ruby方式”,我将需要在不久的将来访问更多模型。这可能会变得很脏,是否有针对这种情况的任何技术?注意事项:我认为我的应用程序正朝着单一格式和动态页面内容的方向发展,本质上是一个典型的网络应用程序。我知道before_filter但考虑到我希望应用程序进入的方向,这似乎很麻烦。最终从任何

  7. ruby-on-rails - Rails 3.2.1 中 ActionMailer 中的未定义方法 'default_content_type=' - 2

    我在我的项目中添加了一个系统来重置用户密码并通过电子邮件将密码发送给他,以防他忘记密码。昨天它运行良好(当我实现它时)。当我今天尝试启动服务器时,出现以下错误。=>BootingWEBrick=>Rails3.2.1applicationstartingindevelopmentonhttp://0.0.0.0:3000=>Callwith-dtodetach=>Ctrl-CtoshutdownserverExiting/Users/vinayshenoy/.rvm/gems/ruby-1.9.3-p0/gems/actionmailer-3.2.1/lib/action_mailer

  8. ruby-on-rails - Rails 应用程序中的 Rails : How are you using application_controller. rb 是新手吗? - 2

    刚入门rails,开始慢慢理解。有人可以解释或给我一些关于在application_controller中编码的好处或时间和原因的想法吗?有哪些用例。您如何为Rails应用程序使用应用程序Controller?我不想在那里放太多代码,因为据我了解,每个请求都会调用此Controller。这是真的? 最佳答案 ApplicationController实际上是您应用程序中的每个其他Controller都将从中继承的类(尽管这不是强制性的)。我同意不要用太多代码弄乱它并保持干净整洁的态度,尽管在某些情况下ApplicationContr

  9. ruby-on-rails - form_for 中不在模型中的自定义字段 - 2

    我想向我的Controller传递一个参数,它是一个简单的复选框,但我不知道如何在模型的form_for中引入它,这是我的观点:{:id=>'go_finance'}do|f|%>Transferirde:para:Entrada:"input",:placeholder=>"Quantofoiganho?"%>Saída:"output",:placeholder=>"Quantofoigasto?"%>Nota:我想做一个额外的复选框,但我该怎么做,模型中没有一个对象,而是一个要检查的对象,以便在Controller中创建一个ifelse,如果没有检查,请帮助我,非常感谢,谢谢

  10. ruby - rspec 需要 .rspec 文件中的 spec_helper - 2

    我注意到像bundler这样的项目在每个specfile中执行requirespec_helper我还注意到rspec使用选项--require,它允许您在引导rspec时要求一个文件。您还可以将其添加到.rspec文件中,因此只要您运行不带参数的rspec就会添加它。使用上述方法有什么缺点可以解释为什么像bundler这样的项目选择在每个规范文件中都需要spec_helper吗? 最佳答案 我不在Bundler上工作,所以我不能直接谈论他们的做法。并非所有项目都checkin.rspec文件。原因是这个文件,通常按照当前的惯例,只

随机推荐