4

Hawtio 和 Jolokia 非常陌生。我没有使用 JBOSS 或任何其他 RedHat 产品,只有 Tomcat。我下载了 Hawtio-default.war (ver. 1.4.21) 和 Jolokia.war (ver. 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"/>
  1. 将用户名/密码和角色添加到 tomcat-users.xml 文件中:
  2. 重新启动了两个 Tomcat 实例。
  3. 尝试直接转到 Jolokia http://localhost:38080/jolokia,它提示我输入用户名和密码。在我输入 admin 和 hawtorwhat 后,我​​在浏览器中显示了下面的消息。因此,直接远程连接到启用安全性的 Jolokia看起来是可以的。
  4. 启动http://localhost:18080/hawtio,单击“连接”选项卡,提供相同的信息以及 localhost 端口 38080(无代理)的用户名和密码,但未成功。错误总是相同的(不同浏览器的错误不同,奇怪,Chrome没有以前的hawtio插件):

在火狐中:

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 (ver. 9) 似乎不支持 html5,暂时不要使用它...

我阅读了 Hawio 和 Jolokia 的文档和其他互联网帖子,不确定我错过了什么。基于上面的#3 和#7,Jolokia 似乎运行良好。我还应该做什么?我需要在任何地方添加任何配置或其他文件吗?请帮忙。另外,我将如何调试这个?

谢谢,

---misterxy

4

0 回答 0