在不同于 localhost 的地址上使用 wildfly maven 插件部署应用程序

Posted

技术标签:

【中文标题】在不同于 localhost 的地址上使用 wildfly maven 插件部署应用程序【英文标题】:Deploy app using wildfly maven plugin on an address different than localhost 【发布时间】:2014-08-01 19:56:43 【问题描述】:

我对 maven 和 wildfly 有点陌生。我可以使用 eclipse 和 wildfly-maven-plugin 在 127.0.0.1:8080/myapp 上成功部署我的应用程序,但我想将它部署在我机器的 IP 地址(192.168.0.101)上,以便我可以从另一台计算机访问它.我的 POM 如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

    <modelVersion>4.0.0</modelVersion>
    <groupId>org.vch.apps</groupId>
    <artifactId>myapp-chat</artifactId>
    <packaging>war</packaging>
    <version>1.0</version>
    <name>vch-myapp</name>
    <url>http://maven.apache.org</url>

    <dependencies>
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-core</artifactId>
            <version>1.0.13</version>
        </dependency>
        <dependency>
            <groupId>org.codehaus.jackson</groupId>
            <artifactId>jackson-mapper-asl</artifactId>
            <version>1.9.3</version>
        </dependency>
    </dependencies>

    <profiles>
    <profile>
     <id>profileIP</id>
     <build>
        <finalName>myapp</finalName>
        <plugins>
            <plugin>
                <groupId>org.wildfly.plugins</groupId>
                <artifactId>wildfly-maven-plugin</artifactId>
                <version>1.0.1.Final</version>
                <configuration>
                    <jbossHome>/usr/local/wildfly-8.0.0.Final</jbossHome>
                    <!--hostname>192.168.0.101</hostname>
                    <port>8080</port-->
                </configuration>
            </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>
</project>

如果我从 Eclipse 执行 wilfly:run 并在 Eclipse 的 Profiles 框中指定 profileIP,我下载并解压到 '/usr/local/wildfly-8.0.0.Final' 的 wildfly 将从 127.0.0.1 开始: 8080 和我的应用程序将部署到这个地址。 如果我取消注释主机名和端口元素,我的应用程序仍部署在 localhost 上。

有没有办法使用 maven 插件在 hostname 元素中指定的 ip 上部署我的应用程序,或者我是否需要更改 wildfly 文件夹中的配置文件?我只下载了wildfly并解压,并没有在eclipse中添加任何wildlfy服务器。

【问题讨论】:

【参考方案1】:

您似乎想改用deploy 目标。正如您所说,run 目标确实可以选择下载 WildFly,启动它并部署您的应用程序。如果您使用指定的主机名和端口,它实际上也应该失败。如果不是,那听起来像是一个错误。

在 WildFly 方面,如果您想启动服务器以便它在不同的 IP 上运行或可供所有 IP 访问,您需要在启动独立服务器时使用 -b 选项。默认情况下可以通过系统属性jboss.http.port覆盖端口。

以下将启动 WildFly 侦听所有可用 IP 的端口 80。

$JBOSS_HOME/bin/standalone.sh -b 0.0.0.0 -Djboss.http.port=80

以上设置只是临时的,并且是仅限 HTTP 的设置。默认情况下,管理在 localhost 上的端口 9990 上侦听。您可以在documentation获取更多关于接口和端口的信息。

【讨论】:

感谢您的回答。我没有说当我执行运行目标时会下载wildfly。如果您没有在 POM.xml 中指定 就会发生这种情况,而这里不是这种情况。我的意思是我之前下载并安装到 POM.xml 的 元素中指定的路径的widlfy 将从 127.0.0.1:8080 开始,我的应用程序将部署在服务器上。不过,如果您想使用部署目标,您的解决方案将起作用。【参考方案2】:

我设法通过为 wildfly 用户控制台添加一个用户(使用 add-user.sh)来做我想做的事情:127.0.0.1:9990/console/

在控制台中,我转到 Porfile -> General COnfiguration -> Interfaces 并将公共接口的 Inet 地址更改为: $jboss.bind.address:192.168.0.101 这是我本地机器的网络 IP .我没有对我的 POM 进行任何更改,现在我可以执行 widlfy:run 并指定 profileIP 来启动我的 Wildfly 服务器并将我的应用程序部署在: 192.168.0.100:8080/myapp.

【讨论】:

【参考方案3】:

您必须使用配置文件和 pom.xml 正确配置 settings.xml 文件才能在命令行上读取配置文件。更多详情,请参阅post

【讨论】:

以上是关于在不同于 localhost 的地址上使用 wildfly maven 插件部署应用程序的主要内容,如果未能解决你的问题,请参考以下文章

在不同于使用 XQuery 处理的数据库上进行查询

如何在不同于“/”的路径中部署 Ganttlab

在本机开发的网站,localhost地址可用,本机IP地址不能访问,为啥?谢谢指点。

在不安全的域上允许 cookie

在不同于二进制文件的位置访问 App.config

WSO2 SSO始终重定向到localhost:9443 / samlsso