我的LdapService类是一个无状态EJB,默认无参数构造函数(此项目是一个EJB包)
@Stateless
public class LdapService {
@Inject
public LdapService() {
} ...
我试着把它注入到另一个类中,比如:
public class UserService {
private static final Logger logger = LoggerFactory.getLogger(UserService.class.getCanonicalName());
@Inject
private LdapService registerService;
@EJB(beanName = "Janus-session-1.0.jar#UserBean")
private TUserBean userBean;
...}
CDI可以识别带有@EJB注释的bean,但注入点向我抛出了关于@Inject的错误:
如果在LdapService中使用@named(“LdapService”),然后在注入点使用:
@Inject @Named("LdapService") private LdapService registerService;
然后我得到了这个错误:
部署失败。消息是:org.jboss.weld.exceptions.deploymentexception:WELD-001408类型[LdapService]在注入点[[field]@inject@named net.ab4cus.project.business.userservice.registerservice]未满足限定符[@named]的依赖项
我如何解决这个错误并消除歧义?或者对其他bean做@inject的正确方法是什么?
谢谢你。
编辑--------------------------------------------------------
java.lang.NullPointerException
at com.sun.jersey.server.impl.cdi.CDIComponentProviderFactory.<init>(CDIComponentProviderFactory.java:94)
at com.sun.jersey.server.impl.cdi.CDIComponentProviderFactoryInitializer.initialize(CDIComponentProviderFactoryInitializer.java:76)
at com.sun.jersey.spi.container.servlet.WebComponent.configure(WebComponent.java:572)
at com.sun.jersey.spi.container.servlet.ServletContainer$InternalWebComponent.configure(ServletContainer.java:314)
at com.sun.jersey.spi.container.servlet.WebComponent.load(WebComponent.java:604)
Truncated. see log file for complete stacktrace
如果我尝试使用前端,任何时候访问一个bean时,我都会得到这个错误(对于每个bean):
SEVERE:
java.lang.IllegalArgumentException: Can not set net.ab4cus.project.session.TUserBean field net.ab4cus.project.business.UserService.userBean to net.ab4cus.project.session.UserBean_o7pydo_NoIntfViewImpl
at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:164)
at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:168)
我正试图解决这个问题,但现在没有任何线索:/
我的第一个错误的解决方法是:
-从LdapService和默认构造函数中删除@stateless和@inject
public class LdapService {
}...
-为LdapService创建接口并@将此接口注入UserService
public class UserService {
private static final Logger logger = LoggerFactory.getLogger(UserService.class.getCanonicalName());
@Inject
private LdapServiceInterface registerService;
@EJB(beanName = "Janus-session-1.0.jar#UserBean")
private TUserBean userBean;
...}
在JBoss上部署我的Java应用程序时,我遇到了一个愚蠢的问题。在我使用接口类更改源代码之前,一切都很好。所以我的问题是: 10:05:34,838错误[org.jboss.MSC.service.fail](MSC服务线程1-6)MSC00001:无法启动服务jboss.deployment.unit。“MDK-Exchange-1.1.0.war”。WeldService:org.jboss
我有bean,它实现了两个接口(远程和本地)。我还添加了注释,用于使用无接口视图访问bean。 我使用的原因取自JBoss AS7快速入门示例: > WeatherDataBean具有: 资源具有:
我在JBoss上部署我的Java应用程序时遇到了一个愚蠢的问题。在我使用接口类更改源代码之前,一切都很好。所以这是我的问题: ... 在JBoss 7.1上部署时会出现以下错误: 10:05:34838错误[org.jboss.msc.service.fail](msc服务线程1-6)MSC00001:无法启动服务jboss。部署。单元“mdk-exchange-1.1.0.战争”。WeldSer
我在时出错。我不明白为什么。 我的应用服务器:GlassFish 4.1.2 当我创建我的类时,服务器给出一个错误 当我@Inject我创建的类时,服务器给出了一个错误 我想把它注入另一个类,比如: UserService实现java类 Maven pom xml文件
在部署到jboss arquilian服务器时,我遇到了以下问题(在部署本地jboss服务器时似乎没有这个问题 org.jboss.weld.exceptions.DeploymentException:WELD-001408类型[CarPolicyServiceWithContext]的依赖项不满足,其限定符为[@default],位于注入点[[field]@Inject com.athlon.
我确实遇到了与这里所解释的相同的问题:JBOSS7.1.3:@EJB工作而@Inject失败,这可能是相同的设置(Wildfly 8.0)。 尽管有一个带有producer的资源类,但我不能注入一个Logger实例。Neiter在控制器中,也不在EJB中。“问题1”如果我错了,请纠正我,我应该可以将它们注入@model bean和注有@stateless(EJB)的bean中,不是吗? 下面是我的