我有以下设置
- tokenmanager.jar
- SecurityService.class
- MyService.class (@Inject SecurityService)
- META-INF
- beans.xml
- MyApplication.war
- SecurityServiceProducer.class
- WEB-INF
- beans.xml
- web.xml
- lib
- tokenmanager.jar
我们的想法是,应用程序可以决定如何组成SecurityService并注入tokenmanager的类中。 所以tokenmanager.jar可以被多个团队使用,并注入自己的依赖关系。 然而SecurityServiceProducer在启动时从不使用。 我使用 liberty 20.0.0.0.x 作为服务器环境(附加说明是所有的东西都需要在 WAS 8.5.5.9 上运行)。 因此,我仍然被迫使用beans 1.0。
beans.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
</beans>
制片人
import javax.inject.Inject;
import javax.ws.rs.Produces;
public class SecurityServiceProducer {
@Inject
@RedisTokenStoreQualifier
private TokenStoreDao tokenStoreDao;
@Inject
@AdfsIdentityProviderServiceQualifier
private IdentityProviderService identityProviderService;
@Inject
private SecurityServiceFactory securityServiceFactory;
@Produces
public SecurityService producer() {
return securityServiceFactory.produce(tokenStoreDao, identityProviderService);
}
}
我已经试了几个步骤
有谁能指点我一下我还忽略了什么?
对于 @Produces
注解,您使用的是 javax.ws.rs.Produces
而不是 javax.enterprise.inject.Produces