我正在使用fusemq,ActiveMQ-CPP的C封装。
问题是我正在使用Apache服务器模块的代理。 它应该向代理发送消息,以便另一个程序可以使用它。 我有一个脚本,testing所有这一切,我已经login我的模块,告诉我,如果消息发送成功。 当Apache以root用户身份正常启动,并以root身份启动ActiveMQ时,我的脚本被卡住了。 回溯说,它仍在等待回应。 我注意到在我的日志中,该模块被困在与代理创build默认会话。 在这种情况下,当我遍历GDB中的模块时,消息成功发送,pipe理面板显示我的队列中有消息。 当模块运行时,它做所有的apache用户,所以我认为这是问题。 所以我正常启动服务器并运行ActiveMQ作为Apache。 当我这样做时,我的日志告诉我的消息发送成功,脚本完成,但我无法访问pipe理面板。
activemq.log从503输出:
2013-05-28 13:47:51,823 | WARN | Committed before 503 null | org.eclipse.jetty.server.Response | qtp1146944158-23 2013-05-28 13:47:51,824 | WARN | /admin/ | org.eclipse.jetty.server.AbstractHttpConnection | qtp1146944158-23 java.lang.IllegalStateException: Committed at org.eclipse.jetty.server.Response.resetBuffer(Response.java:1126) at org.eclipse.jetty.server.Response.sendError(Response.java:313) at org.eclipse.jetty.server.Response.sendError(Response.java:415) at org.eclipse.jetty.server.handler.ContextHandler.checkContext(ContextHandler.java:820) at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:916) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135) at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:154) at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:521) at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:154) at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116) at org.eclipse.jetty.server.Server.handle(Server.java:363) at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:483) at org.eclipse.jetty.server.AbstractHttpConnection.headerComplete(AbstractHttpConnection.java:920) at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.headerComplete(AbstractHttpConnection.java:982) at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:635) at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:235) at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82) at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:627) at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:51) at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608) at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543) at java.lang.Thread.run(Thread.java:722)
编辑:我现在重新运行我的脚本对服务器,而ActiveMQ作为Apache运行,服务器是根,脚本挂起。 它在创build默认会话时陷入困境。 当我在GDB中通过时,它仍然可以工作,但是…
编辑:我跑setenforce 0,一切工作。 不知道为什么会这样。 有任何想法吗?
时间 – >星期二6月4日08:47:40 2013
type=SYSCALL msg=audit(1370357260.183:29896): arch=c000003e syscall=21 success=no exit=-13 a0=c050b0 a1=7 a2=20 a3=a0 items=0 ppid=2618 pid=2633 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=(none) ses=2 comm="gdm-session-wor" exe="/usr/libexec/gdm-session-worker" subj=system_u:system_r:xdm_t:s0-s0:c0.c1023 key=(null) type=AVC msg=audit(1370357260.183:29896): avc: denied { read } for pid=2633 comm="gdm-session-wor" name="root" dev=dm-0 ino=1835009 scontext=system_u:system_r:xdm_t:s0-s0:c0.c1023 tcontext=system_u:object_r:admin_home_t:s0 tclass=dir
好吧,我设法弄清楚这个问题,以防止任何人绊倒在这个好奇的地方。
我再次启用了selinux,并将端口61616(用于openwire连接的端口),61613(用于stomp连接的端口)和8161(用于pipe理控制台的端口)添加到http_port_t的允许列表中。
我用了这个命令:
semanage port -a -t http_port_t -p tcp [port number]