将 WildFly 应用程序服务器与 NetBeans IDE 一起使用

Posted

技术标签:

【中文标题】将 WildFly 应用程序服务器与 NetBeans IDE 一起使用【英文标题】:Using the WildFly application server with NetBeans IDE 【发布时间】:2014-12-14 08:45:55 【问题描述】:

我一直习惯于使用 GlassFish 服务器。我正在将一个 Java EE 应用程序从 GlassFish (4.0) 迁移到 WildFly 8.1.0 final。

我尝试在 NetBeans 8.0 上使用 WildFly 8.1.0 final,使用 this plugin 作为服务器,因为服务器没有内置插件。

与 GlassFish 不同的是,即使启用了 IDE 上的 deploy on save 选项,应用程序也不会在保存项目数据时进行部署。该应用程序导致非常奇怪/未知/不寻常的问题。例如,this question 充满了(仅)其中一些问题。

我将 NetBeans 升级到 8.0.1(JSF 升级到 2.2.8-02),它有一个内置的 WildFly-Plugin,但它也带来了与之前版本的 IDE 几乎没有区别。

在错误报告的this comment 中,提到通过更改/添加一些与JDBC 驱动程序对应的XML 来进行修复,如下所示,

<driver name="mysql" module="com.mysql">
  <xa-datasource-class>
    com.mysql.jdbc.jdbc2.optional.MysqlDataSource
  </xa-datasource-class>
</driver>

我还对standalone-full.xml 文件进行了此更改。该特定部分如下所示。

<subsystem xmlns="urn:jboss:domain:datasources:2.0">
    <datasources>
        <datasource jndi-name="java:jboss/datasources/ExampleDS" pool-name="ExampleDS" enabled="true" use-java-context="true">
            <connection-url>jdbc:h2:mem:test;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE</connection-url>
            <driver>h2</driver>
            <security>
                <user-name>sa</user-name>
                <password>sa</password>
            </security>
        </datasource>

        <datasource jta="false" jndi-name="java:/jdbc/project_datasource" pool-name="project_datasource" enabled="true" use-ccm="false">
            <connection-url>jdbc:mysql://localhost:3306/projectdb</connection-url>
            <driver-class>com.mysql.jdbc.Driver</driver-class>
            <driver>mysql</driver>
            <pool>
                <min-pool-size>5</min-pool-size>
                <max-pool-size>15</max-pool-size>
            </pool>
            <security>
                <user-name>root</user-name>
                <password>root</password>
            </security>
            <validation>
                <validate-on-match>false</validate-on-match>
                <background-validation>false</background-validation>
            </validation>
            <statement>
                <share-prepared-statements>false</share-prepared-statements>
            </statement>
        </datasource>
        <drivers>
            <driver name="h2" module="com.h2database.h2">
                <xa-datasource-class>org.h2.jdbcx.JdbcDataSource</xa-datasource-class>
            </driver>
            <driver name="mysql" module="com.mysql">
                <xa-datasource-class>com.mysql.jdbc.jdbc2.optional.MysqlDataSource</xa-datasource-class>
            </driver>
        </drivers>
    </datasources>
</subsystem>

但一切都是徒劳的。这样做并没有什么新鲜事。

无论如何,现在是否可以将 WildFly(8.1.0 或更高版本,只要可用)与 NetBeans 一起使用(也许通过在某处进行一些更改)?

现在看来,我几乎只能与 WildFly 保持距离了。是吗? :)

我不确切知道插件是否是问题所在。可能会有所不同。


更新:

我至少花了三个星期才遇到这种情况。所以,请不要认为我在这里写的整件事都是错误的/毫无意义的,如果你不能在一瞬间重现同样的事情(如链接中提到的question - 包括删除线文本) - 我只是不能再说什么了。

其中一件可重现的事情:如果对现有应用程序进行了一些更改,则应用程序不会(自动)部署到服务器,如果这些更改被保存(更不用说 保存时部署 选项已在 IDE 中启用)——但这只是一件最简单的事情,即使发生正确,也不能依赖它。

显然,该插件没有以应有的方式与 IDE 进行交互/通信(例如,在使用 GlassFish Server 时发生的情况是正确的)。

【问题讨论】:

【参考方案1】:

只是一个警告,因为我错过了这个并且为此撕毁了我的头发。 Wildfly 默认使用端口 9990 进行调试管理,但是如果您有 Nvidia 设备,这会导致问题,因为 Nvidia 网络服务也使用 9990。

为了解决这个问题,我已经停止了 Nvidia 网络服务(在任务管理器中),我的 Netbeans (8.1) 现在可以连接到 wildfly 服务器并且不再崩溃。

您还可以更改 wildfly 使用的端口,以停止冲突。如果您使用的是standalone.xml 文件,请更改以下行:

<socket-binding name="management-http"
    interface="management"
    port="$jboss.management.http.port:9990"/>

并将端口号更改为您的选择。现在在 NetBeans 中,当您选择添加服务器并进入实例属性时,请确保将管理端口设置为与您在配置文件中设置的相同。我选择了 9991,到目前为止没有任何问题。

(我在此处发布,因为这是我在寻找解决问题时不断出现的第一个结果)

【讨论】:

WildFly 正常运行,除非有一个复杂的大型应用程序要运行(具有多个依赖项)。无论如何,我无法对此发表任何评论,因为我放弃了该服务器并且从那以后没有尝试任何事情。 使用 NetBeans 8.1 / WildFly 9.0.2 final 时“部署保存”是否正确发生?我看到 IDE 不会自动部署项目,只要更改至少保存在标准 NetBeans 项目(不使用 Apache Maven 作为构建和依赖项管理工具)中。插件似乎无法与服务器通信。 (我刚刚使用 NetBeans 8.1 / WildFly 9.0.2 final 创建了一个简单的测试应用程序,它只有一个 Xhtml 文件,除了 PrimeFaces 之外没有其他依赖项。IDE 上启用了“保存时部署”选项)。 单页 EE 应用程序在此测试应用程序上正常运行,但它会导致如 linked question 中所述的长期运行问题,当应用程序变得更加复杂时,具有多个依赖项。 (我也做了你在standalone.xml文件中提到的更改) 我在 WildFly 9.0.2 final 中创建了一个 JDBC 连接池。它通过使用 EJB/JPA (Hibernate) 和 JSF 作为客户端的 EE 应用程序成功地与相关数据库通信。问题出现了,当项目中添加了多个依赖项时,插件肯定无法与服务器正确通信。其中,“保存时部署”在这两种情况下都不会发生。它总是需要硬部署。【参考方案2】:

首先,wildFly 插件与 Netbeans IDE 8.0.1 一起分发,因此您使用的插件可能已被弃用。 就像 Arun 说的,用 netbeans 日志/wildfly 日志和你的配置填充一个错误。 当驱动程序由其驱动程序类在数据源中定义时,解析中存在 NPE。

【讨论】:

我使用了与 Netbeans IDE 8.0.1 捆绑在一起的插件(不是我刚刚在 Netbeans IDE 8.0 中尝试过的流浪插件)。【参考方案3】:

我鼓励您在以下位置提交错误:

https://netbeans.org/bugzilla/enter_bug.cgi?product=serverplugins

并使用 WildFly 作为类别。

您是否尝试过使用 CLI 运行 WildFly 并查看与 IDE 相关的问题是否消失?

【讨论】:

Done。 CLI 有一个陡峭的学习曲线。我第一次尝试使用 WildFly。因此,我无法使用 CLI 执行此操作(我只是从您的 blog 复制/粘贴了一些 CLI 命令)。谢谢你:) 谢谢!关于 jboss-cli 的更详细的教程位于:github.com/arun-gupta/wildfly-lab/blob/master/docs/chapters/…

以上是关于将 WildFly 应用程序服务器与 NetBeans IDE 一起使用的主要内容,如果未能解决你的问题,请参考以下文章

JBoss AS 与 WildFly 8

将 JMX Exporter 与 Wildfly 15 一起使用时出现 NoClassDefFoundError

无法将 mysql 驱动程序与 Wildfly 9.0.2 一起使用,但它似乎已正确加载

WildFly 8 的简单 REST API

使用 JDK11 设置的 Wildfly 服务器中的日志记录问题

Dockerize Wildfly 和 ssh