有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Maven可以将模块部署到JBoss吗?

我们有一个Maven项目,用于将多个WAR部署到JBoss服务器。我们最近注意到,我们的几场战争所依赖的一个罐子使用了Xerial。当Xerial启动时,它尝试加载本机驱动程序,但只有第一个驱动程序成功加载本机驱动程序,其余的驱动程序失败并返回纯Java实现,因为本机驱动程序已经在类加载器中。我们真的希望通过在所有的WAR中加载本机驱动程序来重新获得性能

在我看来,最好的方法是将我们所依赖的jar作为一个模块添加到JBoss服务器,然后让服务依赖它

我的问题是,有没有办法让我们的Maven构建实现这一点?还是我们的做法完全错了


共 (5) 个答案

  1. # 1 楼答案

    我知道这个问题已经被标记为已回答,答案是这目前是不可能的,但我想提供另一种观点。我目前正在将Jboss模块部署到EAP6.1,Maven在我的工作中。我们所做的是使用maven-wago插件将模块scp到jboss服务器上的tmp目录。然后,我使用maven Vang插件向服务器发出ssh命令,以调用jboss cli。sh脚本并告诉它执行模块安装。以下是一个示例配置:

    &13; 第13部分,;
    <profile>
    			<id>uat</id>
    			<activation>
    				<activeByDefault>false</activeByDefault>
    				<property>
    					<name>switchEnv</name>
    					<value>uat</value>
    				</property>
    			</activation>
    			<build>
    				<plugins>
    					<plugin>
    						<groupId>org.codehaus.mojo</groupId>
    						<artifactId>wagon-maven-plugin</artifactId>
    						<version>1.0-beta-5</version>
    						<executions>
    							<execution>
    								<id>upload-file-qa-server-one</id>
    								<phase>deploy</phase>
    								<goals>
    									<goal>upload-single</goal>
    								</goals>
    								<configuration>
    									<fromFile>${project.build.directory}/${project.build.finalName}.${project.packaging}</fromFile>
    									<url>scp://jboss@jboss-server-1/tmp/</url>
    									<toFile>${project.name}.${project.packaging}</toFile>
    								</configuration>
    							</execution>
    							<execution>
    								<id>upload-file-qa-server-two</id>
    								<phase>deploy</phase>
    								<goals>
    									<goal>upload-single</goal>
    								</goals>
    								<configuration>
    									<fromFile>${project.build.directory}/${project.build.finalName}.${project.packaging}</fromFile>
    									<url>scp://jboss@jboss-server-2/tmp/</url>
    									<toFile>${project.name}.${project.packaging}</toFile>
    								</configuration>
    							</execution>
    							<execution>
    								<id>install-module-qa-server-one</id>
    								<phase>deploy</phase>
    								<goals>
    									<goal>sshexec</goal>
    								</goals>
    								<configuration>
    									<serverId>jboss-server-1</serverId>
                						<url>scp://jboss@jboss-server-1/tmp</url>
    									<commands>
    										<command>/opt/jboss/bin/jboss-cli.sh -c --command="module add --name=${project.name} --resources=/tmp/${project.name}.${project.packaging} --dependencies=javax.api,javax.transaction.api"</command>
    										<command>sleep 5</command>
    										<command>rm -f /tmp/${project.build.finalName}.${project.packaging}</command>
    									</commands>
    								</configuration>
    							</execution>
    							<execution>
    								<id>install-module-qa-server-two</id>
    								<phase>deploy</phase>
    								<goals>
    									<goal>sshexec</goal>
    								</goals>
    								<configuration>
    									<serverId>jboss-server-2</serverId>
                						<url>scp://jboss@jboss-server-2/tmp</url>
    									<commands>
    										<command>/opt/jboss/bin/jboss-cli.sh -c --command="module add --name=${project.name} --resources=/tmp/${project.name}.${project.packaging} --dependencies=javax.api,javax.transaction.api"</command>
    										<command>sleep 5</command>
    										<command>rm -f /tmp/${project.build.finalName}.${project.packaging}</command>
    									</commands>
    								</configuration>
    							</execution>
    						</executions>
    					</plugin>
    				</plugins>
    			</build>
    		</profile>
    		<profile>
    和#13;
    和#13;
  • # 2 楼答案

    这是不可能的,因为您必须使用OSGI方法。 要使用maven,请尝试在EAP中使用OSGI,但这取决于您需要什么。OSGI从JBoss EAP 6.1开始就受到支持

    如果您试图使用EAI,请尝试使用JBoss Fuse而不是EAP。 然后,您将使用maven存储库、nexus或类似工具、热部署和所有OSGI捆绑包

  • # 4 楼答案

    经过几天的观察,并与几个比我更熟悉JBoss Maven交互的人交谈,我的问题的答案是目前无法实现。没有Maven插件能够将模块部署到JBoss。这在很大程度上是因为JBoss在启动时只加载模块,尽管如果有人特别有雄心壮志,想编写自己的Maven插件,理论上可以解决这个问题

    Robert Scholet left的答案很好,我从中吸取了教训,但它并没有真正回答我的问题