apache + mod_cluster 1.2.0 + jboss-5.1.0.GA

本文详细介绍了如何将mod_cluster模块整合到JBoss环境中,并通过调整配置参数来优化ModClusterService的性能。具体步骤包括将mod_cluster.sar文件部署到特定目录,修改mod_cluster-jboss-beans.xml文件中的ContainerEventHandler,从而实现更高效的负载均衡。

本文基于上一篇

将mod_cluster.sar拷贝到JBOSS_HOME/server/default/deploy目录下

将mod_cluster.sar\META-IN\mod_cluster-jboss-beans.xml里面ModClusterListener的ContainerEventHandler由HAModClusterService改为ModClusterService

<!-- Entry point: catalina lifecycle listener -->

  <bean name="ModClusterListener" class="org.jboss.modcluster.container.jbossweb.JBossWebEventHandlerAdapter">

    <constructor>

      <parameter class="org.jboss.modcluster.container.ContainerEventHandler">

      <!-- <inject bean="HAModClusterService"/> -->

       <inject bean="ModClusterService"/>

      </parameter>

      <parameter class="javax.management.MBeanServer"><inject bean="JMXKernel" property="mbeanServer"/></parameter>

    </constructor>

    <depends>WebServer</depends>

  </bean>

<bean name="ModClusterService" class="org.jboss.modcluster.ModClusterService" mode="On Demand">

    <annotation>@org.jboss.aop.microcontainer.aspects.jmx.JMX(name="jboss.web:service=ModCluster",exposedInterface=org.jboss.modcluster.ModClusterServiceMBean.class)</annotation>

    <constructor>

      <parameter class="org.jboss.modcluster.config.impl.ModClusterConfig"><inject bean="ModClusterConfig"/></parameter>

      <parameter class="org.jboss.modcluster.load.LoadBalanceFactorProvider"><inject bean="DynamicLoadBalanceFactorProvider"/></parameter>

    </constructor>

</bean>

org.jboss.modcluster.config.ModClusterConfig 修改为
org.jboss.modcluster.config.impl.ModClusterConfig
本文参考:https://developer.jboss.org/message/763783

> Task :app:mergeDebugJavaResource FAILED [Incubating] Problems report is available at: file:///D:/android%20project/EasyEdge-Android-YoloV3_MobileNetV3_large-arm-SDK/build/reports/problems/problems-report.html FAILURE: Build completed with 3 failures. 1: Task failed with an exception. ----------- * What went wrong: Execution failed for task ':app:checkDebugDuplicateClasses'. > A failure occurred while executing com.android.build.gradle.internal.tasks.CheckDuplicatesRunnable > Duplicate class javax.activation.ActivationDataFlavor found in modules jakarta.activation-api-1.2.1.jar -> jakarta.activation-api-1.2.1 (jakarta.activation-api-1.2.1.jar) and javax.activation-1.2.0.jar -> javax.activation-1.2.0 (javax.activation-1.2.0.jar) Duplicate class javax.activation.CommandInfo found in modules jakarta.activation-api-1.2.1.jar -> jakarta.activation-api-1.2.1 (jakarta.activation-api-1.2.1.jar) and javax.activation-1.2.0.jar -> javax.activation-1.2.0 (javax.activation-1.2.0.jar) Duplicate class javax.activation.CommandInfo$Beans found in modules jakarta.activation-api-1.2.1.jar -> jakarta.activation-api-1.2.1 (jakarta.activation-api-1.2.1.jar) and javax.activation-1.2.0.jar -> javax.activation-1.2.0 (javax.activation-1.2.0.jar) Duplicate class javax.activation.CommandInfo$Beans$1 found in modules jakarta.activation-api-1.2.1.jar -> jakarta.activation-api-1.2.1 (jakarta.activation-api-1.2.1.jar) and javax.activation-1.2.0.jar -> javax.activation-1.2.0 (javax.activation-1.2.0.jar) Duplicate class javax.activation.CommandMap found in modules jakarta.activation-api-1.2.1.jar -> jakarta.activation-api-1.2.1 (jakarta.activation-api-1.2.1.jar) and javax.activation-1.2.0.jar -> javax.activation-1.2.0 (javax.activation-1.2.0.jar) Duplicate class javax.activation.CommandObject found in modules jakarta.activation-api-1.2.1.jar -> jakarta.activation-api-1.2.1 (jakarta.activation-api-1.2.1.jar) and javax.activation-1.2.0.jar -> javax.activation-1.2.0 (javax.activation-1.2.0.jar) Duplicate class javax.activation.DataContentHandler found in modules jakarta.activation-api-1.2.1.jar -> jakarta.activation-api-1.2.1 (jakarta.activation-api-1.2.1.jar) and javax.activation-1.2.0.jar -> javax.activation-1.2.0 (javax.activation-1.2.0.jar) Duplicate class javax.activation.DataContentHandlerFactory found in modules jakarta.activation-api-1.2.1.jar -> jakarta.activation-api-1.2.1 (jakarta.activation-api-1.2.1.jar) and javax.activation-1.2.0.jar -> javax.activation-1.2.0 (javax.activation-1.2.0.jar) Duplicate class javax.activation.DataHandler found in modules jakarta.activation-api-1.2.1.jar -> jakarta.activation-api-1.2.1 (jakarta.activation-api-1.2.1.jar) and javax.activation-1.2.0.jar -> javax.activation-1.2.0 (javax.activation-1.2.0.jar) Duplicate class javax.activation.DataHandler$1 found in modules jakarta.activation-api-1.2.1.jar -> jakarta.activation-api-1.2.1 (jakarta.activation-api-1.2.1.jar) and javax.activation-1.2.0.jar -> javax.activation-1.2.0 (javax.activation-1.2.0.jar) Duplicate class javax.activation.DataHandlerDataSource found in modules jakarta.activation-api-1.2.1.jar -> jakarta.activation-api-1.2.1 (jakarta.activation-api-1.2.1.jar) and javax.activation-1.2.0.jar -> javax.activation-1.2.0 (javax.activation-1.2.0.jar) Duplicate class javax.activation.DataSource found in modules jakarta.activation-api-1.2.1.jar -> jakarta.activation-api-1.2.1 (jakarta.activation-api-1.2.1.jar) and javax.activation-1.2.0.jar -> javax.activation-1.2.0 (javax.activation-1.2.0.jar) Duplicate class javax.activation.DataSourceDataContentHandler found in modules jakarta.activation-api-1.2.1.jar -> jakarta.activation-api-1.2.1 (jakarta.activation-api-1.2.1.jar) and javax.activation-1.2.0.jar -> javax.activation-1.2.0 (javax.activation-1.2.0.jar) Duplicate class javax.activation.FileDataSource found in modules jakarta.activation-api-1.2.1.jar -> jakarta.activation-api-1.2.1 (jakarta.activation-api-1.2.1.jar) and javax.activation-1.2.0.jar -> javax.activation-1.2.0 (javax.activation-1.2.0.jar) Duplicate class javax.activation.FileTypeMap found in modules jakarta.activation-api-1.2.1.jar -> jakarta.activation-api-1.2.1 (jakarta.activation-api-1.2.1.jar) and javax.activation-1.2.0.jar -> javax.activation-1.2.0 (javax.activation-1.2.0.jar) Duplicate class javax.activation.MailcapCommandMap found in modules jakarta.activation-api-1.2.1.jar -> jakarta.activation-api-1.2.1 (jakarta.activation-api-1.2.1.jar) and javax.activation-1.2.0.jar -> javax.activation-1.2.0 (javax.activation-1.2.0.jar) Duplicate class javax.activation.MailcapCommandMap$1 found in modules jakarta.activation-api-1.2.1.jar -> jakarta.activation-api-1.2.1 (jakarta.activation-api-1.2.1.jar) and javax.activation-1.2.0.jar -> javax.activation-1.2.0 (javax.activation-1.2.0.jar) Duplicate class javax.activation.MimeType found in modules jakarta.activation-api-1.2.1.jar -> jakarta.activation-api-1.2.1 (jakarta.activation-api-1.2.1.jar) and javax.activation-1.2.0.jar -> javax.activation-1.2.0 (javax.activation-1.2.0.jar) Duplicate class javax.activation.MimeTypeParameterList found in modules jakarta.activation-api-1.2.1.jar -> jakarta.activation-api-1.2.1 (jakarta.activation-api-1.2.1.jar) and javax.activation-1.2.0.jar -> javax.activation-1.2.0 (javax.activation-1.2.0.jar) Duplicate class javax.activation.MimeTypeParseException found in modules jakarta.activation-api-1.2.1.jar -> jakarta.activation-api-1.2.1 (jakarta.activation-api-1.2.1.jar) and javax.activation-1.2.0.jar -> javax.activation-1.2.0 (javax.activation-1.2.0.jar) Duplicate class javax.activation.MimetypesFileTypeMap found in modules jakarta.activation-api-1.2.1.jar -> jakarta.activation-api-1.2.1 (jakarta.activation-api-1.2.1.jar) and javax.activation-1.2.0.jar -> javax.activation-1.2.0 (javax.activation-1.2.0.jar) Duplicate class javax.activation.MimetypesFileTypeMap$1 found in modules jakarta.activation-api-1.2.1.jar -> jakarta.activation-api-1.2.1 (jakarta.activation-api-1.2.1.jar) and javax.activation-1.2.0.jar -> javax.activation-1.2.0 (javax.activation-1.2.0.jar) Duplicate class javax.activation.ObjectDataContentHandler found in modules jakarta.activation-api-1.2.1.jar -> jakarta.activation-api-1.2.1 (jakarta.activation-api-1.2.1.jar) and javax.activation-1.2.0.jar -> javax.activation-1.2.0 (javax.activation-1.2.0.jar) Duplicate class javax.activation.SecuritySupport found in modules jakarta.activation-api-1.2.1.jar -> jakarta.activation-api-1.2.1 (jakarta.activation-api-1.2.1.jar) and javax.activation-1.2.0.jar -> javax.activation-1.2.0 (javax.activation-1.2.0.jar) Duplicate class javax.activation.SecuritySupport$1 found in modules jakarta.activation-api-1.2.1.jar -> jakarta.activation-api-1.2.1 (jakarta.activation-api-1.2.1.jar) and javax.activation-1.2.0.jar -> javax.activation-1.2.0 (javax.activation-1.2.0.jar) Duplicate class javax.activation.SecuritySupport$2 found in modules jakarta.activation-api-1.2.1.jar -> jakarta.activation-api-1.2.1 (jakarta.activation-api-1.2.1.jar) and javax.activation-1.2.0.jar -> javax.activation-1.2.0 (javax.activation-1.2.0.jar) Duplicate class javax.activation.SecuritySupport$3 found in modules jakarta.activation-api-1.2.1.jar -> jakarta.activation-api-1.2.1 (jakarta.activation-api-1.2.1.jar) and javax.activation-1.2.0.jar -> javax.activation-1.2.0 (javax.activation-1.2.0.jar) Duplicate class javax.activation.SecuritySupport$4 found in modules jakarta.activation-api-1.2.1.jar -> jakarta.activation-api-1.2.1 (jakarta.activation-api-1.2.1.jar) and javax.activation-1.2.0.jar -> javax.activation-1.2.0 (javax.activation-1.2.0.jar) Duplicate class javax.activation.SecuritySupport$5 found in modules jakarta.activation-api-1.2.1.jar -> jakarta.activation-api-1.2.1 (jakarta.activation-api-1.2.1.jar) and javax.activation-1.2.0.jar -> javax.activation-1.2.0 (javax.activation-1.2.0.jar) Duplicate class javax.activation.URLDataSource found in modules jakarta.activation-api-1.2.1.jar -> jakarta.activation-api-1.2.1 (jakarta.activation-api-1.2.1.jar) and javax.activation-1.2.0.jar -> javax.activation-1.2.0 (javax.activation-1.2.0.jar) Duplicate class javax.activation.UnsupportedDataTypeException found in modules jakarta.activation-api-1.2.1.jar -> jakarta.activation-api-1.2.1 (jakarta.activation-api-1.2.1.jar) and javax.activation-1.2.0.jar -> javax.activation-1.2.0 (javax.activation-1.2.0.jar) Go to the documentation to learn how to <a href="d.android.com/r/tools/classpath-sync-errors">Fix dependency resolution errors</a>. * Try: > Run with --stacktrace option to get the stack trace. > Run with --info or --debug option to get more log output. > Run with --scan to get full insights. > Get more help at https://help.gradle.org. ============================================================================== 2: Task failed with an exception. ----------- * What went wrong: Execution failed for task ':app:processDebugResources'. > A failure occurred while executing com.android.build.gradle.internal.res.LinkApplicationAndroidResourcesTask$TaskAction > Android resource linking failed error: resource style/ThemeOverlay.AppCompat.Dark.ActionBar (aka com.baidu.ai.easyaimobile.demo:style/ThemeOverlay.AppCompat.Dark.ActionBar) not found. error: resource style/Theme.AppCompat.Light.DarkActionBar (aka com.baidu.ai.easyaimobile.demo:style/Theme.AppCompat.Light.DarkActionBar) not found. com.baidu.ai.edge.demo.app-mergeDebugResources-2:/values/values.xml:14: error: style attribute 'attr/colorPrimary (aka com.baidu.ai.easyaimobile.demo:attr/colorPrimary)' not found. com.baidu.ai.edge.demo.app-mergeDebugResources-2:/values/values.xml:15: error: style attribute 'attr/colorPrimaryDark (aka com.baidu.ai.easyaimobile.demo:attr/colorPrimaryDark)' not found. com.baidu.ai.edge.demo.app-mergeDebugResources-2:/values/values.xml:16: error: style attribute 'attr/colorAccent (aka com.baidu.ai.easyaimobile.demo:attr/colorAccent)' not found. error: resource style/ThemeOverlay.AppCompat.Light (aka com.baidu.ai.easyaimobile.demo:style/ThemeOverlay.AppCompat.Light) not found. error: failed linking references. * Try: > Run with --stacktrace option to get the stack trace. > Run with --info or --debug option to get more log output. > Run with --scan to get full insights. > Get more help at https://help.gradle.org. ============================================================================== 3: Task failed with an exception. ----------- * What went wrong: Execution failed for task ':app:mergeDebugJavaResource'. > A failure occurred while executing com.android.build.gradle.internal.tasks.MergeJavaResWorkAction > 3 files found with path 'META-INF/DEPENDENCIES' from inputs: - D:\android project\EasyEdge-Android-YoloV3_MobileNetV3_large-arm-SDK\app\libs\httpclient-4.5.14.jar - D:\android project\EasyEdge-Android-YoloV3_MobileNetV3_large-arm-SDK\app\libs\httpcore-4.4.16.jar - D:\android project\EasyEdge-Android-YoloV3_MobileNetV3_large-arm-SDK\app\libs\httpmime-4.5.6.jar Adding a packagingOptions block may help, please refer to https://developer.android.com/reference/tools/gradle-api/8.2/com/android/build/api/dsl/ResourcesPackagingOptions for more information * Try: > Run with --stacktrace option to get the stack trace. > Run with --info or --debug option to get more log output. > Run with --scan to get full insights. > Get more help at https://help.gradle.org. ============================================================================== Deprecated Gradle features were used in this build, making it incompatible with Gradle 9.0. You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins. For more on this, please refer to https://docs.gradle.org/8.12/userguide/command_line_interface.html#sec:command_line_warnings in the Gradle documentation. BUILD FAILED in 16s 26 actionable tasks: 3 executed, 23 up-to-date error: resource style/ThemeOverlay.AppCompat.Dark.ActionBar (aka com.baidu.ai.easyaimobile.demo:style/ThemeOverlay.AppCompat.Dark.ActionBar) not found. error: resource style/Theme.AppCompat.Light.DarkActionBar (aka com.baidu.ai.easyaimobile.demo:style/Theme.AppCompat.Light.DarkActionBar) not found. error: resource style/ThemeOverlay.AppCompat.Light (aka com.baidu.ai.easyaimobile.demo:style/ThemeOverlay.AppCompat.Light) not found. error: failed linking references.
07-10
### 三级标题:解决 Android 构建失败问题(重复类文件冲突和资源链接错误) 在 Android 构建过程中,如果出现 **`duplicate classes`** 冲突以及 **`resource linking errors`**,通常是因为依赖库版本不一致或模块化冲突导致的。以下是针对这两个问题的解决方案: #### 1. 处理 `jakarta.activation-api` 和 `javax.activation` 的重复类文件冲突 当构建工具提示 `Duplicate class` 错误时,这通常是由于不同依赖库引入了相同包名和类名的 JAR 文件。例如,在 `jakarta.activation-api` 和 `javax.activation` 中可能存在相同的类定义。 要解决此类冲突,可以使用 Gradle 的 `exclude` 机制来排除特定的依赖模块。例如,在 `build.gradle` 文件中添加以下代码以排除冲突的依赖项: ```gradle configurations { all { exclude group: 'javax.activation', module: 'activation' exclude group: 'jakarta.activation', module: 'jakarta.activation-api' } } ``` 此外,也可以检查项目的 `build.gradle` 文件中的 `dependencies` 块,查看哪些库引用了这些冲突的 JAR 文件,并尝试更新它们到兼容的版本[^4]。 #### 2. 解决 AppCompat 主题和属性相关的资源链接错误 资源链接错误(Resource Linking Errors)通常发生在主题、样式或属性引用无法正确解析的情况下。如果错误信息涉及 AppCompat 相关的主题或属性,比如: - `error: style attribute '@attr/colorPrimary' not found` - `error: failed linking references` ##### 可能的原因及解决方案: - **确保使用统一的 AppCompat 版本** 检查 `build.gradle` 文件中的 `dependencies` 部分,确保所有与 AppCompat 相关的依赖都使用相同的版本号。例如: ```gradle implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'com.google.android.material:material:1.9.0' ``` 如果有多个版本共存,可能会导致资源冲突。 - **启用 Jetifier 并迁移到 AndroidX** 在 `gradle.properties` 文件中设置以下选项以启用 Jetifier 并强制项目使用 AndroidX: ```properties android.useAndroidX=true android.enableJetifier=true ``` 这将自动转换所有支持库依赖为 AndroidX 格式,避免新旧库之间的冲突[^2]。 - **清理项目并重建** 有时,缓存文件可能导致资源链接失败。运行以下命令清理项目并重新构建: ```bash ./gradlew clean ./gradlew build --refresh-dependencies ``` - **检查 `themes.xml` 和 `styles.xml` 文件** 确保在 `res/values/styles.xml` 或 `res/values-vXX/styles.xml` 中定义的主题继承自正确的 AppCompat 主题,例如: ```xml <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> <!-- Customize your theme here --> <item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryVariant">@color/colorPrimaryDark</item> <item name="colorOnPrimary">@color/white</item> </style> ``` 如果引用了不存在的属性或主题,Gradle 构建系统会报错。 #### 3. 使用依赖树分析工具排查冲突 可以通过运行以下命令查看当前项目的依赖树,识别出哪些库引入了冲突的 JAR 包: ```bash ./gradlew dependencies ``` 此命令将列出所有依赖关系及其子依赖,便于定位具体的冲突来源。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值