Nano Hash - криптовалюты, майнинг, программирование

Как создать экземпляр объекта EJB в классе, отличном от EJB?

Я использую структуру Maven для создания своего проекта, а EJB 3.0 - это спецификация EJB. У меня есть интерфейс EJB A и соответствующий ему класс EJB B, который реализует A. Тело класса B показано ниже:

@Stateless
@TransactionAttribute(value = TransactionAttributeType.REQUIRES_NEW)
class B implements A{

      @PersistenceContext(unitName = "Draco-PU", type = PersistenceContextType.TRANSACTION)
  EntityManager entityManager;  

      //called post construct
      @PostConstruct
      public init(){

            //body of init method

      }

У меня есть не-EJB-класс в другом пакете в рамках того же проекта. Я хочу создать экземпляр класса B в этом классе, чтобы метод init() и другие аннотации автоматически ссылались, и я мог явно вызывать другие методы в классе EJB. Пожалуйста помоги.

24.10.2012

Ответы:


1

Вы не можете этого сделать. Либо вызывающая сторона NonEJBClass.someMethod() должна передать A в someMethod (поскольку вызывающая сторона внедрила или искала ее), либо someMethod должен сам выполнить поиск (возможно, в одном из пространств имен "java:"). В противном случае вам нужно изменить свой компонент, чтобы его мог использовать неуправляемый клиент, например:

Бин:

@Stateless
@TransactionAttribute(value = TransactionAttributeType.REQUIRES_NEW)
class B implements A {
    private EntityManager entityManager;  

    @PersistenceContext(unitName = "Draco-PU", type = PersistenceContextType.TRANSACTION)
    public void setEntityManager(EntityManager em) {
        entityManager = em;
    }

    @PostConstruct
    public init() {
        //body of init method
    }
}

Неуправляемый клиент:

B obj = new B();
obj.setEntityManager(...);
obj.init();

Таким образом, вы либо позволяете контейнеру создать объект (и он заботится обо всех инъекциях и инициализации), либо создаете объект самостоятельно (а затем вы заботитесь обо всех вызовах сеттера и инициализации).

24.10.2012
  • Разве нельзя выполнить поиск в классе, отличном от EJB? 25.10.2012
  • Вы могли бы сделать это, но тогда вы окажетесь в неудобном положении, когда EJB выполняет поиск в своем собственном java:comp (управляемом) и вызывающем java:comp (сервлете?). Я думаю, это было бы слишком запутанно. 25.10.2012
  • Извините, я неправильно понял: да, класс, не относящийся к EJB, может искать EJB. Если, например, не-EJB-класс всегда вызывается из сервлета, вы можете объявить ссылку EJB в сервлете, а затем не-EJB-класс сможет найти ссылку EJB из java:comp. 25.10.2012
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..