问题描述
我正在为 jboss 应用程序更新一些遗留代码,但遇到了一些问题。我有两个 ejb bean,PersonBean 和 ClientBean。 ClientBean 负责处理客户端特定的服务。 ClientBean 被注入一个 PersonBean 的实例,它用作委托将请求传递给服务器端服务。我遇到的问题是这两个 bean 还实现了一个同样需要注入的 LoginService 接口。我想要的是将 PersonBean 的一个实例作为 loginService 注入到 ClientBean 中,但我最终将 ClientBean 注入到自身中。
我需要做什么才能正确定义这个 ejb 映射?
ClientServiceProviderBean:
@Stateless(name = "ClientServiceProvider")
@Local({ ClientServiceProvider.class,LoginService.class })
public class ClientServiceProviderBean implements ClientServiceProvider,LoginService
{
@EJB(name = "personService")
protected PersonService personService;
@EJB(name = "loginService")
protected LoginService loginService;
@Override
public LoginDTO getLoggedInUser()
{
LoginDTO loginDTO = loginService.getLoggedInUser();
return loginDTO;
}
@Override
public Long activateSession(String applicationName,String ipAddress)
{
return personService.activateSession(applicationName,ipAddress);
}
}
PersonServiceBean:
@Stateless(name = "PersonService")
@Local({ PersonService.class })
@Remote({ RemotePersonService.class })
public class PersonServiceBean implements PersonService,RemotePersonService,LoginService
{
@Override
@RolesAllowed({ "authenticated" })
public Long activateSession(String applicationName,String ipAddress)
{
Person p = getCallerAsPerson(entityManager,context.getCallerPrincipal());
SessionActivity sessionActivity = new SessionActivity(p.getId(),applicationName,true,ipAddress);
sessionActivity = save(entityManager,sessionActivity);
return sessionActivity.getId();
}
@Override
@PermitAll
public LoginDTO getLoggedInUser()
{
Principal p = context.getCallerPrincipal();
if (p != null && !"unauthenticated".equals(p.getName()))
{
try
{
Person person = getCallerAsPerson(entityManager,p);
if (person != null)
{
return createLoginDTO(person);
}
}
catch (javax.persistence.NoResultException e)
{
}
}
return null;
}
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)