问题标签 [apr]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
892 浏览

c - 在 D 中使用 apr_array_push 追加数组

我正在使用 svn 在 D 中编写一个程序,但遇到了一些我无法弄清楚如何转换为 D 语法的东西。我尝试了一下,但它出现了段错误。

我试图在 C 中完成的示例:

据我所知,这段代码工作得很好。我发现几个例子几乎完全相同。这是我在 D 中复制它的尝试:

这会在 svn_auth_open 上引发分段错误。我最好的猜测是 provider 的内容并没有以 newSlot 持有的指针结束。我不确定为什么会这样。

补充代码:

我最好的猜测是段错误发生在 APR_ARRAY_IDX 中。其他所有东西都有一个有效的内存地址。

附加信息:这也不起作用:

所以这排除了我的理论,即数据没有到达正确的位置。但是,如果我注释掉数组推送线并将数组发送为空,它就可以正常工作。所以,这不是段错误:

我也知道它不是 svn_auth_get_simple_provider2 因为这个段错误也......

0 投票
2 回答
1090 浏览

linux - Apache模块中内存映射文件的过度同步

我目前正在研究一个使用大型 mmap 文件在进程之间共享数据的 Apache 模块。这是在启动时创建并在服务器关闭时删除(可以选择在稍后阶段保留它)。我已经使用 Apache APR 库实现了这一点,它运行良好,至少对于较小的文件。

然而,当内存映射文件的大小增加时(当服务器运行时仍有足够的 RAM 来缓存它),系统有时实际上会停止运行,因为看起来操作系统(在我的例子中是 Linux)消耗了很多将文件与磁盘同步的资源。有没有办法控制/减少这种同步?

由于我目前不需要将内容同步到磁盘,因此我可能应该使用共享内存段,并且会尝试使用它。然而,我仍然对控制内存映射文件同步的方法感兴趣。

0 投票
1 回答
1486 浏览

tomcat - NIO 连接器 + gzip 压缩

我很长一段时间都是 tomcat 用户,现在想开始玩 tomcat 7 以升级

我们使用 tomcat 独立使用 BIO 服务许多静态资源......所以这篇文章在你的“2010 年十大” http://www.tomcatexpert.com/blog/2010/03/24/myth-or-truth-one- should-always-use-apache-httpd-front-apache-tomcat-improve-perform引起了极大的兴趣

但是我们当前的用法(Tomcat 6 + BIO)使用 gzip 压缩,例如:

但是,我在阅读文档时注意到 APR 和 NIO 连接器都没有参数 / 用于压缩。有人可以详细说明如何通过 server.xml / 连接器以类似的方式设置压缩吗?如果它不可用,是否有计划加入此功能?

我知道我们可以使用自己的 gzip 过滤器等自己编写;然而,连接器方法更简单、更优雅,因为 gzip 过滤器必须应用于我们所有的 webapps(SOA 架构中的 10+ webapps)

谢谢

0 投票
1 回答
347 浏览

apache-flex - 在 JBoss 中同时加载 Apache APR 库时,不会加载 Solaris 上的 Flash SWF

更新+解决方案================================

很抱歉在这里而不是在评论中发布解决方案,但是关于我的工作过滤的某些内容不允许评论功能为我工作。

我最终使用 jboss 中的 -b 0.0.0.0 属性绑定到所有地址,因此我可以尝试以机器 B 作为客户端访问机器 A 的服务器,反之亦然。我发现它在机器 B 上运行时总是无法加载,无论我是从 A 还是 B 连接。

我在同一网络上的 Windows 机器上启动了 Wireshark,并观察了正在加载网页的 TCP 连接。我看到在失败的情况下对.swf的请求的内容长度为200万左右,当我右键单击wireshark日志并选择“查看对话”或类似的东西时,总对话的大小获得 .swf 文件只有 130,000。查看 about:cache,这大约等于它在页面上说“完成”之前最终缓存的内容。

我最终发现 useSendFile 属性存在错误。(http://community.jboss.org/thread/148651?tstart=0)。如果内核内存不足,这将导致它仅发送部分文件。在我们的 server.xml 中使用 useSendFile="false" 似乎可以解决问题。

====================================================

原始问题

我有一个 JBoss (5.1.0.GA) 应用服务器。我正在使用 GraniteDS 连接应用程序服务器和客户端。客户端是基于闪存的。

Granite DS 需要使用 APR 库(apache 本机库),所以我正在加载它。我在 JBoss 日志中看到它说它加载了 apache 本机库就好了(版本 1.18,虽然我也尝试过 1.20)。

问题是,当我拥有它以便 APR 库成功加载时,应用程序的 Flash 端通常不会加载。我必须多次刷新,最终它通常会加载,但通常我会看到一个黑色的网页,上面写着“完成”,或者加载进度条永远不会移动。只有反复点击刷新才能加载页面。它最终会通过足够的刷新来加载,但它并不一致,这显然不适用于我们每次都必须清除浏览器缓存的客户。

此问题仅存在于 Solaris 上,我们的应用程序在 Windows 上运行良好。我们已经尝试了多个补丁级别的 solaris,并使用“ldd”命令验证了需要加载的库在其中具有所有依赖项。

我们通过测试验证了它不是我们的 swf 文件的大小: 1) 我们的常规 SWF (1660 kb)。2) 一个随机的大型 SWF (950 kb)。3) 一个带有一个标签组件的小型 SWF,上面写着“测试”(277 kb)。

当 JBoss 也在加载本机库时,所有 3 个都无法加载,没有它就可以正常加载。我们需要成功加载本机库,以便 Granite 在客户端和服务器之间进行连接,因此不加载它不是一种选择(除非有某种方法可以将 NIO 连接器与 JBoss 一起使用,但它似乎不受支持)......如果有办法使用 NIO 连接器,那么我们不需要 APR 库。

有没有人遇到过这个?有人有什么想法或建议吗?

0 投票
2 回答
963 浏览

c++ - 如何让 APR 线程休眠?

我正在使用 APR 库在 C++ 中创建可移植的多线程程序。问题是我需要在不需要时休眠一个线程,但手册中没有提到这样做的功能。

你现在有一种方法可以让 APR 线程休眠而不需要使用本机系统函数吗?我想避免任何特定于操作系统的代码。谢谢你。

0 投票
1 回答
2120 浏览

c - 如何使用 apr_file_open() 创建文件

我正在对 Apache Portable Runtime 库(1.4 版)进行以下调用:

pathname包含字符串/tmp/tempfile20110614091201

我不断收到错误“权限被拒绝”(结果代码APR_EACCES),但我有权读取/写入/tmp- 可能导致这种情况的原因是什么?

0 投票
4 回答
2418 浏览

eclipse - Eclipse Tomcat 四月

我独立使用 Tomcat 6.0.32 - APR 加载没有问题。但是当在 Eclipse 中安装相同并运行时 - 找不到 apr。可能是什么原因?谢谢。

0 投票
1 回答
1296 浏览

tomcat - 如何使用 APR 和 OpenSSL 测试 Tomcat 是否正在缓存 SSL 会话?

我们有一个在 Tomcat 6.0.32 上运行并使用 JSSE (Java 1.6.0_26) 进行加密通信 (HTTPS) 的应用程序。最近,我们正在测试 APR 连接器和 OpenSSL。

使用 APR 时,我们如何验证 SSL 会话是否在每个连接上被缓存/重用或生成?APR 是否将 SSL 相关信息写入某个日志文件?

使用 JSSE 时,我们可以通过传递-Djavax.net.debug=all -Djavax.net.ssl=ssl.handshake给 JVM 在 tomcat 日志文件 (catalina.out) 中查看 SSL 握手和会话信息。但是,这些标志在使用 APR 时不起作用。

0 投票
1 回答
106 浏览

c++ - 当 mod_dbd 不支持我的驱动程序时,我应该如何处理 DB Conn 在 Apache 中的持久性?

我正在使用从 Linux Apache 2.x 主机到 SQL Server 的 ODBTP 接口。mod_dbm 不支持这一点,我需要能够将代码移动到任何支持 Apache 的主机。

关于我的环境的说明:我使用的是 Apache 2.2.17、用 C 包装的 C++ for Apache、ODBTP 1.14、SQL Server 2008。

我已经成功实现了 ODBTP 连接,并且我能够充分使用模块本身中的数据,但我希望保持连接而不是持续连接、断开连接,然后重新开始使用本地 HTTP 调用来检索数据的应用程序以 JSON 格式。

问题是我需要在我不信任纯文本编写应用程序的安全性的环境中部署此应用程序和模块,以安全地保护数据库凭据。当应用程序通过 HTTP 连接时,它只提供我的模块在发送到数据库之前解密的加密凭据。

我目前正在为数据库创建一个句柄并将其存储在模块定义中的键控 apr_hash_t 表中。应用程序连接后,模块会查找应用程序在 URL 中指定的每个请求的唯一令牌,以查找该应用程序的连接。这有效,但只有一次。

哈希键是 32 位键,最初是从池中创建的 char *,并与 ODBTP 句柄一起存储为哈希表中的一行。不知何故,调用之间的密钥正在被修改,原始密钥现在是一个截断的版本。

示例:1)我从我的应用程序中拨打 1 次电话以启动持久连接。这行得通。2)我从我的应用程序中进行了 3 次背靠背调用以执行 sql 字符串。(/stars/execute_sql/unique/<>/sql/<>) x 3

第一个电话很完美,我检索了数据。下一次调用保存为密钥的令牌被截断,模块找不到关联的密钥。下一次调用令牌处于与尝试 2 相同的截断状态。

我不确定我是否正在覆盖内存?我写了一个简短的循环函数来吐出哈希表的内容,这样我就可以在我的代码中的每个点都粘贴这个函数来找出数据可能被破坏的地方,但我的发现没有任何意义。我必须拆分 uri 才能找到嵌入在 uri 中的数据。我在这个函数中跟踪内存转移到一行,如“raw = apr_psprintf(apache->pool,"%s", subject);" 在下面的代码中。

它在通话 1 上完美运行,但在通话 2 上却不行,因为密钥正在以某种方式移动。

有任何想法吗?甚至是关于如何使用 APR_RESLIST 更好地完成此任务的一些想法?

提前致谢!

0 投票
0 回答
709 浏览

tomcat - 为什么Tomcat7总是抱怨旧版本APR 1.1.20?

我在 Windows 上安装了 Tomcat 7.0.22,放入 lib tcnative_1.dll。它的版本 1.2.22。但是当我启动tomcat - 总是这个抱怨。为什么?

2011 年 10 月 26 日 18:49:25 org.apache.catalina.core.AprLifecycleListener init INFO:安装了基于 APR 的 Apache Tomcat 本机库的旧版本 1.1.20,而 Tomcat 建议最低版本为 1.1.22