Hawtio和Jolokia非常新。我不使用JBOSS或任何其他RedHat产品,只使用Tomcat。我下载了Hawtio-default.war(版本1.4.21)和Jolokia.war(版本1.2.2)。我的本地计算机(localhost)上有两个Tomcat(7.0.39)实例,分别在端口18080和38080上运行。
问题:如果我没有为Jolokia启用安全性,我可以毫无问题地从Hawtio(端口18080)连接到Jolokia(端口38080)。但是,如果我启用了Jolokia的安全性,我无法连接并始终遇到以下错误(在FF和Chrome中都尝试过):
这是我所做的细节:
1.将Hawtio.war部署到运行在端口18080上的Tomcat
2.将Jolokia.war部署到运行在38080端口的Tomcat
3.在没有为Jolokia启用安全性的情况下,我能够从没有代理的Hawtio(端口18080)连接到Jolokia(端口38080)。成功。
4.然后,我尝试通过取消注释其web.xml中的部分来启用Jolokia的安全性,使其看起来像这样:
<login-config>
<auth-method>BASIC</auth-method>
<realm-name>UserDatabase</realm-name>
</login-config>
<security-constraint>
<web-resource-collection>
<web-resource-name>Jolokia-Agent Access</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>Jolokia</role-name>
</auth-constraint>
</security-constraint>
<security-role>
<role-name>Jolokia</role-name>
</security-role>
在tomcat / conf / user-tomat.xml文件中,我添加了:
<role rolename="Jolokia"/>
<user username="admin" password="hawtorwhat" roles="Jolokia"/>
http://localhost:38080/jolokia
,它提示我输入用户名和密码。输入admin和hawtorwhat之后,我在浏览器中显示了以下消息。因此,直接远程连接到启用安全性的Jolokia就好了。 http://localhost:18080/hawtio
,点击“连接”标签,提供相同信息以及localhost端口38080(无代理)的用户名和密码,取消成功。错误始终是相同的(不同浏览器的错误,奇怪,以前没有Chrome的hawtio插件):在FireFox中:
Cannot Connect: [Exception... "Failure" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: http://localhost:18080/hawtio/app/app.js?6f7be3a9a9f2ffe8 :: .send :: line 8" data: no]
在Chrome中:
Cannot Connect: NetworkError: Failed to execute 'send' on 'XMLHttpRequest': Failed to load 'http://localhost:38080/jolokia-war-1.2.2/?maxDepth=2&maxCollectionSize=500&ignoreErrors=true&canonicalNaming=false'.
我也尝试检查'使用代理',无论是否启用安全性,它都无法正常工作。错误消息如下:
java.net.UnknownHostException: http
java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:178)
java.net.PlainSocketImpl.connect(PlainSocketImpl.java:157)
java.net.SocksSocketImpl.connect(SocksSocketImpl.java:391)
java.net.Socket.connect(Socket.java:579)
java.net.Socket.connect(Socket.java:528)
java.net.Socket.<init>(Socket.java:425)
java.net.Socket.<init>(Socket.java:208)
io.hawt.web.OpenShiftProtocolSocketFactory.createSocket(OpenShiftProtocolSocketFactory.java:36)
org.apache.commons.httpclient.protocol.DefaultProtocolSocketFactory.createSocket(DefaultProtocolSocketFactory.java:122)
org.apache.commons.httpclient.HttpConnection.open(HttpConnection.java:707)
org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:387)
org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:171)
org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:397)
org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:323)
io.hawt.web.ProxyServlet.executeProxyRequest(ProxyServlet.java:418)
io.hawt.web.ProxyServlet.doPost(ProxyServlet.java:273)
javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
io.hawt.web.RedirectFilter.process(RedirectFilter.java:66)
io.hawt.web.RedirectFilter.doFilter(RedirectFilter.java:38)
我的IE(第9版)似乎不支持html5,现在就把它留下来......
我阅读了Hawio和Jolokia的文档和其他网络帖子,不确定我错过了什么。基于上面的#3和#7,Jolokia似乎运行良好。我还该怎么办?我需要在任何地方添加任何配置或其他文件吗?请帮忙。另外,我该如何调试呢?
谢谢,
--- misterxy