将 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 一起使用的主要内容,如果未能解决你的问题,请参考以下文章
将 JMX Exporter 与 Wildfly 15 一起使用时出现 NoClassDefFoundError
无法将 mysql 驱动程序与 Wildfly 9.0.2 一起使用,但它似乎已正确加载