Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 排除基于PropertyFileConfig(DeltaSpike,WebSphere 8.5.5)的CDIBean_Java_Jakarta Ee_Cdi_Deltaspike - Fatal编程技术网

Java 排除基于PropertyFileConfig(DeltaSpike,WebSphere 8.5.5)的CDIBean

Java 排除基于PropertyFileConfig(DeltaSpike,WebSphere 8.5.5)的CDIBean,java,jakarta-ee,cdi,deltaspike,Java,Jakarta Ee,Cdi,Deltaspike,我试图使用DeltaSpike 1.0@exclude-注释排除Bean实现。排除应基于如下属性值: @Exclude(onExpression = "providerimplementation!=mock") 我创建了一个PropertyFileConfig返回我的.properties文件名,让DeltaSpike获取配置的值,并在两个不同的实现bean中使用这个@Exclude,每个bean都像上面一样被排除 配置作为.jar文件包含在EAR中,两种实现都位于EAR中不同的.jar文件

我试图使用DeltaSpike 1.0
@exclude
-注释排除Bean实现。排除应基于如下属性值:

@Exclude(onExpression = "providerimplementation!=mock")
我创建了一个
PropertyFileConfig
返回我的
.properties
文件名,让DeltaSpike获取配置的值,并在两个不同的实现bean中使用这个
@Exclude
,每个bean都像上面一样被排除

配置作为
.jar
文件包含在EAR中,两种实现都位于EAR中不同的
.jar
文件中

我试图将整个归档部署到WebSphere8.5.5服务器上,在启动时,我得到了一个用于注入点的
javax.enterprise.inject.AmbiguousResolutionException

在我看来,
PropertyFileConfig
在表达式解析之前没有被提取,尽管我发现了对这种模式的引用(和),所以我想知道我的设置有什么问题。

第一个答案:

不幸的是,通过PropertyFileConfig工具定义的属性不能与@Exclude一起使用

这是因为扩展只在容器初始化结束时注册PropertyFileConfig(这可能是强制性的,因为PropertyFileConfig类用作CDIBean)

相反,您必须使用默认的ConfigSource实现: 或者创建自己的自定义配置源

这里的一个快速解决方法是在默认属性文件中定义属性:
META-INF/apache deltaspike.properties
而不是自定义属性文件

编辑:

事实上,我之前的回答是不完整的(至少对于DeltaSpike的最新版本(今天是1.3.0)): javadoc for PropertyFileConfig现在记录了这一限制,并展示了使用serviceloader工具配置自定义属性文件的另一种方法:

使用战争是一种选择吗?由于各种类加载器问题,我们目前在DeltaSpike中对EAR没有很好的支持。据我所知,WebSphere(至少完整的概要文件)不支持单独部署WAR文件。我们目前在部署中使用“skinny WAR”设置,因此每个依赖JAR都直接放在EAR中。这个设置可能是问题所在吗?正常注射效果很好。