JBoss7在战争中的部署问题
我们使用JBoss7和jboss作为maven插件来自动部署war文件。我们有一个web.xml,其contextRoot设置为我们的应用程序名。在插件中,我们将文件名配置为${project.build.finalName}.${project.packaging}。它部署得很好,但问题是当我们更改发布号时,war文件名会发生变化 例如,当我们准备发布下一个版本时,war从myproject-v1.0.1.war更改为myproject-v1.0.2.war。问题是当maven jboss插件运行并尝试部署war文件时。注意,我们将force设置为true,因此它应该取消部署旧应用程序并部署新应用程序 问题在于,在确定应用程序当前是否已部署时,它似乎要关闭war文件名,而不是webContext。因此,新版本无法部署,因为旧版本仍在运行。我们必须进入并手动取消部署以前的版本,然后重新部署。似乎旧应用程序的强制取消部署是基于war名称的,由于版本号发生变化,它不认为自己已部署,而让旧版本继续运行。这会导致它失败,因为webContext已被使用JBoss7在战争中的部署问题,jboss,jboss7.x,Jboss,Jboss7.x,我们使用JBoss7和jboss作为maven插件来自动部署war文件。我们有一个web.xml,其contextRoot设置为我们的应用程序名。在插件中,我们将文件名配置为${project.build.finalName}.${project.packaging}。它部署得很好,但问题是当我们更改发布号时,war文件名会发生变化 例如,当我们准备发布下一个版本时,war从myproject-v1.0.1.war更改为myproject-v1.0.2.war。问题是当maven jboss插件
我们试图将插件中的配置更改为通用的,并且可以正常工作(运行时名称和名称显示此名称,而不再显示war文件名)。但唯一的问题是,这似乎影响了jboss上的某些东西,尽管它说它已部署,但webContext是无效的,我们无法访问我们的应用程序。这很奇怪,因为webContext是在web.xml中设置的,但插件中的配置似乎会破坏它。您可以定义一个
名称
配置属性。这将覆盖部署名称。如果未设置,则使用文件名
...
...
...
org.jboss.as.plugins
jboss作为maven插件
7.3.3最终版本
你的应用程序
...
...
...
因此,在玩了一段时间之后,我们找不到任何原因来解释为什么我们使用了它将部署的配置,但没有设置webContext。但当我们手动部署同一场战争时,它设置了webContext
所以最后。我们最后做的是把战争的名字改成一个通用的名字。所以我们把它改成了myapp.war,而不是myapp.war。这是一种痛苦,因为现在我们仅仅通过查看控制台就不知道部署了什么版本。我们需要点击显示版本号的应用程序。但通过这样做,它解决了我们取消部署旧应用程序的问题,但却产生了一个新问题,即通过控制台部署的版本不那么容易确定。本文似乎回答了您的问题。 我在我自己的项目上尝试过,效果很好!基本上,创建一个jboss-web.xml(现在您的项目是特定的,一次编写就可以部署到任何地方)。让jboss-web.xml看起来像
<?xml version="1.0" encoding="UTF-8"?>
<jboss-web>
<context-root>/rmbMavenCounter</context-root>
</jboss-web>
这是从我的jboss web服务器控制台进行的部署
08:12:42,413 INFO [org.jboss.as.server.deployment] (MSC service thread 1-16) JBAS015876: Starting deployment of "mavenCounter2-0.0.1-SNAPSHOT.war"
08:12:42,606 INFO [javax.enterprise.resource.webcontainer.jsf.config] (MSC service thread 1-4) Initializing Mojarra 2.1.5 (SNAPSHOT 20111202) for context '/rmbMavenCounter'
08:12:42,663 INFO [javax.enterprise.resource.webcontainer.jsf.config] (MSC service thread 1-4) Monitoring jndi:/default-host/rmbMavenCounter/WEB-INF/faces-config.xml for modifications
08:12:42,665 INFO [org.jboss.web] (MSC service thread 1-4) JBAS018210: Registering web context: /rmbMavenCounter
08:12:42,678 INFO [org.jboss.as.server] (management-handler-threads - 30) JBAS018559: Deployed "mavenCounter2-0.0.1-SNAPSHOT.war"
我面临同样的问题:我想使用版本和内部版本号上传war,以便于识别,但同时根据其名称覆盖以前的服务(没有版本/内部版本号) 这似乎是maven Jboss插件的一个限制:。目前只支持“name”参数,该参数将覆盖JBoss管理控制台中的名称和运行时名称
<plugin>
<groupId>org.jboss.as.plugins</groupId>
<artifactId>jboss-as-maven-plugin</artifactId>
<configuration>
<port>${JBOSS_PORT}</port>
<username>${JBOSS_USERNAME}</username>
<password>${JBOSS_PASSWORD}</password>
<force>true</force>
<ignoreMissingDeployment>true</ignoreMissingDeployment>
</configuration>
<executions>
<execution>
<id>undeploy-MyProject</id>
<phase>install</phase>
<goals>
<goal>undeploy</goal>
</goals>
<configuration>
<hostname>${HOSTNAME}</hostname>
<matchPattern>myproject.*\.war</matchPattern>
</configuration>
</execution>
<execution>
<id>deploy-MyProject</id>
<phase>install</phase>
<goals>
<goal>deploy</goal>
</goals>
<configuration>
<hostname>${HOSTNAME}</hostname>
<name>myproject-${project.version}.war</name>
<filename>target/myproject-${project.version}.war</filename>
</configuration>
</execution>
</executions>
</plugin>
org.jboss.as.plugins
jboss作为maven插件
${JBOSS_PORT}
${JBOSS_USERNAME}
${JBOSS_密码}
真的
真的
取消部署MyProject
安装
解除部署
${HOSTNAME}
myproject.*\.战争
部署MyProject
安装
部署
${HOSTNAME}
myproject-${project.version}.war
target/myproject-${project.version}.war
是的,我已经尝试过了,并部署了它,但它同时更改了运行时名称和新名称。我可以在jboss控制台中看到它与I set一起部署,控制台显示它正在运行。问题是,尽管jboss说它现在已经部署,但它没有注册webContext,我也不能再使用webContext通过浏览器访问应用程序了。在jboss-web.xml文件中设置。如果我从配置中删除该字段,它将以war文件名部署,并且我可以访问它。我在日志中没有看到任何错误。我确实对日志进行了grep。我看到,当未配置时,控制台会显示它正确注册了webContext,并且一切正常。我使用相同的war文件,但现在我在配置部分添加了,它使用这个名称部署它,但日志从未显示webContext的配置。这就像是因为某种原因而弄乱了网络内容。这很奇怪。您使用的是最新版本的插件7.3.Final吗?这可能不会真的有什么不同,但也许。我明天也会看一看,你可以做的一个选择是为旧版本添加一个取消部署的目标。我意识到这不太理想,但你至少可以保留版本号。是的,我也这么认为,但我们需要跟踪以前的版本,这也是一种痛苦。但如果我们这样做了,那也行。我继续为它创造了一个JIRA,我很高兴
08:12:42,413 INFO [org.jboss.as.server.deployment] (MSC service thread 1-16) JBAS015876: Starting deployment of "mavenCounter2-0.0.1-SNAPSHOT.war"
08:12:42,606 INFO [javax.enterprise.resource.webcontainer.jsf.config] (MSC service thread 1-4) Initializing Mojarra 2.1.5 (SNAPSHOT 20111202) for context '/rmbMavenCounter'
08:12:42,663 INFO [javax.enterprise.resource.webcontainer.jsf.config] (MSC service thread 1-4) Monitoring jndi:/default-host/rmbMavenCounter/WEB-INF/faces-config.xml for modifications
08:12:42,665 INFO [org.jboss.web] (MSC service thread 1-4) JBAS018210: Registering web context: /rmbMavenCounter
08:12:42,678 INFO [org.jboss.as.server] (management-handler-threads - 30) JBAS018559: Deployed "mavenCounter2-0.0.1-SNAPSHOT.war"
<plugin>
<groupId>org.jboss.as.plugins</groupId>
<artifactId>jboss-as-maven-plugin</artifactId>
<configuration>
<port>${JBOSS_PORT}</port>
<username>${JBOSS_USERNAME}</username>
<password>${JBOSS_PASSWORD}</password>
<force>true</force>
<ignoreMissingDeployment>true</ignoreMissingDeployment>
</configuration>
<executions>
<execution>
<id>undeploy-MyProject</id>
<phase>install</phase>
<goals>
<goal>undeploy</goal>
</goals>
<configuration>
<hostname>${HOSTNAME}</hostname>
<matchPattern>myproject.*\.war</matchPattern>
</configuration>
</execution>
<execution>
<id>deploy-MyProject</id>
<phase>install</phase>
<goals>
<goal>deploy</goal>
</goals>
<configuration>
<hostname>${HOSTNAME}</hostname>
<name>myproject-${project.version}.war</name>
<filename>target/myproject-${project.version}.war</filename>
</configuration>
</execution>
</executions>
</plugin>