Wildfly 8: Jolokia kann nicht auf einem anderen Port mit anderen Anwendungen unter derselben IP-Adresse bereitgestellt werden.

Zuerst ist dies kein Jolokia-Problem, sondern etwas, das mit Wildfly zu tun hat.

Ich möchte, dass eine meiner Anwendungen (Jolokia) in Wildfly einen anderen Port als die anderen Anwendungen überwacht (Überwachung am Standardport). Nach diesen beiden Hie undHie) Habe ich Folgendes getan: 1. jboss-web.xml im WEB-INF-Verzeichnis für den Jolokia-Krieg hinzugefügt (zusätzlich zu der web.xml, die sich am selben Ort befindet):

<?xml version="1.0" encoding="UTF-8"?>
<jboss-web xmlns="http://www.jboss.com/xml/ns/javaee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="
    http://www.jboss.com/xml/ns/javaee
    http://www.jboss.org/j2ee/schema/jboss-web_8_0.xsd">
        <context-root>/jolokia</context-root>
        <virtual-host>jolokia-host</virtual-host>
        <server-instance>jolokia-server</server-instance>
 </jboss-web>

Fügte den folgenden (Jolokia-Server) in standalone.xml hinzu. Ich möchte auf beide Anwendungen nur über localhost zugreifen (keine andere Domain).

<subsystem xmlns="urn:jboss:domain:undertow:1.2">
    <buffer-cache name="default"/>
    <server name="default-server">
        <http-listener name="default" socket-binding="http"/>
        <https-listener name="secure" socket-binding="https" security-realm="ssl-realm"/>
        <host name="default-host" alias="localhost">
            <location name="/" handler="welcome-content"/>
            <filter-ref name="server-header"/>
            <filter-ref name="x-powered-by-header"/>
        </host>
    </server>
    <server name="jolokia-server">
        <http-listener name="jolokia-listener" socket-binding="jolokia-manager"/>
        <host name="jolokia-host" alias="localhost">
            <location name="/" handler="welcome-content"/>
            <filter-ref name="server-header"/>
            <filter-ref name="x-powered-by-header"/>
        </host>
    </server>
    <servlet-container name="default">
        <jsp-config/>
        <websockets/>
    </servlet-container>
    <handlers>
        <file name="welcome-content" path="${jboss.home.dir}/welcome-content"/>
    </handlers>
    <filters>
        <response-header name="server-header" header-name="Server" header-value="WildFly/8"/>
        <response-header name="x-powered-by-header" header-name="X-Powered-By" header-value="Undertow/1"/>
    </filters>
</subsystem>

......

<socket-binding-group name="standard-sockets" default-interface="public" port-offset="${jboss.socket.binding.port-offset:0}">
    <socket-binding name="management-http" interface="management" port="${jboss.management.http.port:9990}"/>
    <socket-binding name="management-https" interface="management" port="${jboss.management.https.port:9993}"/>
    <socket-binding name="ajp" port="${jboss.ajp.port:8009}"/>
    <socket-binding name="http" port="${jboss.http.port:8080}"/>
    <socket-binding name="https" port="${jboss.https.port:8443}"/>
    <socket-binding name="jacorb" interface="unsecure" port="3528"/>
    <socket-binding name="jacorb-ssl" interface="unsecure" port="3529"/>
    <socket-binding name="messaging-group" port="0" multicast-address="${jboss.messaging.group.address:231.7.7.7}" multicast-port="${jboss.messaging.group.port:9876}"/>
    <socket-binding name="txn-recovery-environment" port="4712"/>
    <socket-binding name="txn-status-manager" port="4713"/>
    <socket-binding name="jolokia-manager" port="8282"/>
    <outbound-socket-binding name="mail-smtp">
        <remote-destination host="localhost" port="25"/>
    </outbound-socket-binding>
</socket-binding-group>

Mit diesen beginnt wildfly (und die Anwendung Jolokia) bei 8282 zu lauschen. Allerdings kann ich über localhost nur von derselben Box aus auf die Jolokia-Anwendung zugreifen:

curl -u admin:admin http://localhost:8282/jolokia

It gibt Erfolg zurück.

curl -u admin:admin http://10.104.245.67:8282/jolokia
<html><head><title>Error</title></head><body>404 - Not Found</body></html>

Die anderen Anwendungen überwachen jedoch den Standardport (in unserem Fall 8778) und sind sowohl mit localhost als auch mit realer IP (10.104.245.67) verfügbar. Beide Ports sind mit 0.0.0.0 verbunden.

#netstat -an | grep 8282
tcp        0      0 0.0.0.0:8282                0.0.0.0:*                   LISTEN

#netstat -an | grep 8778
tcp        0      0 0.0.0.0:8778                0.0.0.0:*                   LISTEN

** Update: ** Wie von ctomc bereits erwähnt, wurde das Problem durch Hinzufügen von "default-host" zum virtuellen Server behoben.

<server name="jolokia-server" default-host="jolokia-host">

Die vollständige Konfiguration finden SieHie.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage