Search code examples
jboss7.xwildflywildfly-8wildfly-9wildfly-10

Accessing Multiple web applications on Jboss7 or Wildfly


I know we can deploy multiple web applications on JBoss 7 or Wildfly. But how can we access different web application with a different port? Where do we set that port for a web application?

For example,

  • application1 is accessible on x.x.x.x:8080
  • application2 is accessible on x.x.x.x:30000
  • application3 is accessible on x.x.x.x:35000

Solution

  • In your standalone you have to set up a different server and host for each application.

    <subsystem xmlns="urn:jboss:domain:undertow:1.2">
        <server name="server1">
            <http-listener name="default" socket-binding="http-server1"/>
            <host name="webapp1" default-web-module="webapp1.war" alias="webapp1.com">
            </host>
        </server>
        <server name="server2">
            <http-listener name="default" socket-binding="http-server2"/>
            <host name="webapp2" default-web-module="webapp2.war" alias="webapp2.com">
            </host>
        </server>
    
        <!-- Other Settings -->
    </subsystem>
    

    For the socketbinding:

    <socket-binding-group name="standard-sockets" default-interface="public" port-offset="${jboss.socket.binding.port-offset:0}">
        <socket-binding name="http-server1" port="${jboss.http.port:8080}"/>
        <socket-binding name="http-server2" port="${jboss.http.port:8081}"/>
    
        <!-- Other ports -->
    </socket-binding-group>
    

    And then finally, you can have your .war files in the deployments directory but for configurations like this I sometimes find it easier to set the runtime names explicitly:

    <deployments>
        <deployment name="webapp1" runtime-name="webapp1.war">
                <fs-archive path="/path/to/webapp1.war" />
        </deployment>
    
        <deployment name="webapp2" runtime-name="webapp2.war">
                <fs-archive path="/path/to/webapp2.war" />
        </deployment>
    </deployments>