Сессионные компоненты EJB 3.1 не отображаются в дереве JNDI WebLogic 12c - PullRequest
0 голосов
/ 14 декабря 2018

Ниже приведен пример EJB, который я создал для своего веб-приложения.На моем сервере WebLogic 12c EJB-компоненты отображаются в java: global, но не в какой-либо другой части дерева JNDI.Думаю, из-за этого у меня возникают проблемы с поиском этих EJB.

Q1: Достаточны ли правильные аннотации к моим занятиям?Q2: Должен ли я видеть мои EJB-компоненты, перечисленные в java: app и java: module или где-либо еще?

@TransactionManagement(value = TransactionManagementType.CONTAINER)
@TransactionAttribute(value = TransactionAttributeType.REQUIRED)
@Transactional
@Stateless
@Interceptors(SpringBeanAutowiringInterceptor.class)
@Service("adminService")
public class AdminServiceImpl extends AbstractServiceImpl
    implements LocalAdminService, AdminServiceRemote
{
...
}

Вот мои jndi.properties

java.naming.factory.initial=weblogic.jndi.WLInitialContextFactory
java.naming.provider.url=t3://localhost:7001
java.naming.security.principal=weblogic
java.naming.security.credentials=xyz
weblogic.rmi.clientTimeout=120000

1 Ответ

0 голосов
/ 14 декабря 2018

Достаточно ли правильны аннотации к моим классам?

Вы используете слишком много аннотаций.когда вы аннотируете бин с помощью Stateless, транзакция по умолчанию будет CONTAINER, а TransactionAttribute по умолчанию будет Required. поэтому вам не нужны эти две аннотации.также вы аннотируете компонент с помощью @service.но вы не должны определять bean-компонент как bean-компонент, управляемый Spring, и как сеанс EJB3.https://docs.spring.io/spring/docs/4.3.20.RELEASE/javadoc-api/org/springframework/ejb/interceptor/SpringBeanAutowiringInterceptor.html говорит:

ВНИМАНИЕ: Не определяйте тот же bean-компонент, что и bean-компонент, управляемый Spring, и как сессионный EJB3-компонент в одном и том же модуле развертывания.В частности, будьте осторожны при использовании этой функции в сочетании с развертыванием сессионных EJB3-компонентов на основе Spring: убедитесь, что сессионные EJB3-компоненты также не определяются автоматически как управляемые Spring-компоненты, используя соответствующие ограничения пакетов.

вам также не нужна транзакционная аннотация.

Должен ли я видеть мои EJB-компоненты, перечисленные в java: app и java: module или где-либо еще?

Тогда вы можете увидеть java: global в дереве JNDI WebLogic.но вы можете использовать другие пространства имен для поиска.это зависит от местоположения компонента, который ищет (приложение и модуль), и местоположения компонента, который вы ищете.если у вас есть какие-либо проблемы, пожалуйста, проверьте расположение ваших бобов.вы можете взглянуть на javax.naming.NameNotFoundException: при попытке поиска 'abc' не удалось найти подконтекст 'abc' для получения дополнительной информации.

...