当没有这样的值时,Resin 说 `@Named('dpa') is a duplicate name for ...` 的原因是什么?
What is the cause of Resin saying `@Named('dpa') is a duplicate name for ...` when there is no such value?
我有一个现有的 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 开头的键。
这是什么意思?是什么原因?我该如何解决?
在 InjectManager.java
class 文件中找到消息“@Named('{0}') is a duplicate name for\n {1}\n {2}
”。
相关源码:
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 中找不到它。
我有一个现有的 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 开头的键。
这是什么意思?是什么原因?我该如何解决?
在 InjectManager.java
class 文件中找到消息“@Named('{0}') is a duplicate name for\n {1}\n {2}
”。
相关源码:
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 中找不到它。