我正在将具有以下结构的耳朵部署到WildFly 9.0.2。
app.ear
|- app-ejb.jar
|- preferences-lib.jar
|- META-INF/jboss-deployment-structure.xml
preferences-lib.jar包含一个实现java.util.prefs.PreferencesFactory的自定义PreferencesFactory。还定义了META-INF / services / java.util.prefs.PreferencesFactory。
preferences-lib.jar
|- com/**
|- META-INF/services/java.util.prefs.PreferencesFactory
默认情况下,WildFly会忽略META-INF文件夹,但允许使用jboss-deployment-structure.xml导入它。我尝试了各种组合,但WildFly一直忽略META-INF文件夹,因此我无法在我的应用程序中使用自定义首选项工厂。
请帮我解决这个META-INF /服务导入问题。
代码:https://github.com/KiranMohan/wildfly-playground/tree/master/app-only-preference-factory
更新 事实证明问题在于Java Preferences类,它使用系统类加载器来加载服务提供者。 我通过编写自己的Preferences.systemRoot()函数实现来解决这个问题,它首先检查服务提供者而不使用系统类加载器。 该代码可在上面提到的github链接中找到。