У меня есть следующие ситуации, в приложении клиента уха есть CDI @ApplicationScoped
боб, который выполняет удаленный поиск SLSB на @PostConstruct
обратного вызова и кэширует полученный прокси:Wildfly 8: безопасна ли прокси-сервер ejb?
@ApplicationScoped
@Typed({ ServiceInterface.class })
public class RemoteServiceProxy implements ServiceInterface
{
/**
* Remote service.
*/
private RemoteService remoteService;
/**
* Default constructor.
*/
public RemoteServiceProxy()
{
super();
}
/**
* PostConstruct callback.
*
* @throws RuntimeException
* Error while looking up remote proxy
*/
@PostConstruct
protected void onPostConstruct()
{
try
{
remoteService = serviceLocator.lookup(ActivityRemoteEntityService.class);
Properties jndiProps = new Properties();
jndiProps.put(Context.URL_PKG_PREFIXES, "org.jboss.ejb.client.naming");
jndiProps.put(Context.PROVIDER_URL, "http-remoting://localhost:8080");
jndiProps.put(Context.INITIAL_CONTEXT_FACTORY, "org.jboss.naming.remote.client.InitialContextFactory");
jndiProps.put("jboss.naming.client.ejb.context", "true");
Context context = new InitialContext(jndiProps);
remoteService = (RemoteService) context.lookup(
"application.backend/application.backend-service//RemoteServiceImpl!com.application.remote.RemoteService");
} catch (NamingException e)
{
throw new RuntimeException(e);
}
}
...
}
Я хотел бы знать, если в кэше прокси в поле remoteService
является потокобезопасным, поэтому RemoteServiceProxy
можно аннотировать с помощью @ApplicationScoped
, или мне нужно выполнить новый прокси-поиск для каждого вызова? Или лучше использовать @Stateless
?
Заранее спасибо
Спасибо за ответ, я сомневаюсь в том, что безопасно хранить ссылку прокси-сервера wildfly в одноэлементном компоненте (CDI ApplicationScoped), к которому одновременно обращаются, другими словами, реализация прокси-сервера wildfly поточно-безопасна? – landal79
Я добавил дополнительную информацию в ответ –
Это не @Singleton, который контролирует параллелизм, это сеансовый компонент. Одна ссылка на сеанс (ваш прокси) => Один экземпляр компонента сеанса –