我有一个现有的Java EE 7 webprofile Web应用程序,可用于TomEE和Glassfish。我现在尝试在Resin 4.0.55开源版上部署它。我使用@Named("key") String
使用CDI注入配置字符串的机制失败了:
/home/tra/Hentet/resin-4.0.55/conf/app-default.xml:55: @Named('dpa') is
a duplicate name for
ProducesMethodBean[String, IngesterModule.provideDestinationPath(), {@javax.inject.Named(value=dpa.putfile.destinationpath), @Default(), @Any()}, name=dpa.putfile.destinationpath]
ProducesMethodBean[String, IngesterModule.provideDeliveriesFolder(), {@javax.inject.Named(value=dpa.deliveries.folder), @Default(), @Any()}, name=dpa.deliveries.folder]
我的源中没有@Named("dpa")
,但错误消息中列出的名称包含以dpa开头的键。
这是什么意思?原因是什么?以及如何修复它?
答案 0 :(得分:2)
在@Named('{0}') is a duplicate name for\n {1}\n {2}
类文件中找到消息“InjectManager.java
”。
相关源代码:
private void addBeanByName(String name, Bean<?> bean)
{
...
// ioc/0g31
int p = name.indexOf('.');
if (p > 0) {
addBeanByName(name.substring(0, p), bean);
}
}
使用句点字符('.'
)作为分隔符分割给定名称,并且递归地将给定的bean添加到每个部分的上下文中。必须在CDI 1.0(JSR-299)中描述此行为,或者实现可能是错误的。
ioc/0g31
评论看起来像是对问题的引用,但我在bug tracking system中找不到它。