Скажите OpenEJB игнорировать MDB - PullRequest
1 голос
/ 02 февраля 2011

Я написал модульный тест для действия, которое, наконец, помещает сообщение в очередь. Как только сообщение помещается в эту очередь, bean-объект, управляемый сообщениями, начинает обрабатываться. Но я не хочу тестировать MDB в модульном тесте. Как я могу сказать OpenEJB игнорировать их?

Я установил OpenEJB с несколькими свойствами:

    p.setProperty(Context.INITIAL_CONTEXT_FACTORY,
            "org.apache.openejb.client.LocalInitialContextFactory");
    p.setProperty("openejb.deployments.classpath.include", ".*");
    p.setProperty("openejb.localcopy", "false");

    // Messaging
    p.put("MyJmsResourceAdapter",
            "new://Resource?type=ActiveMQResourceAdapter");
    // Do not start the ActiveMQ broker
    p.put("MyJmsResourceAdapter.BrokerXmlConfig", "");
    p.put("MyJmsConnectionFactory",
            "new://Resource?type=javax.jms.ConnectionFactory");
    p.put("MyJmsConnectionFactory.ResourceAdapter", "MyJmsResourceAdapter");
    p.put("queue/MyQueue",
            "new://Resource?type=javax.jms.Queue");

Я знаю, что должен установить openejb.deployments.classpath.exclude, но я не могу определить правильное значение:

    p.setProperty("openejb.deployments.classpath.exclude", "org.example.mdb.*");

Например, мой класс называется org.example.mdb.MyMDB.

Ответы [ 2 ]

1 голос
/ 20 марта 2011

У нас нет этой функции, но ее можно легко добавить, если вы захотите немного взломать - всегда рады новым публикациям и авторам.

Этот класс будет делать именно то, что вы хотите ... и некоторые вещи, которые вы, вероятно, не хотите :) Он удаляет все ссылки на ресурсы MDB и JMS (хорошая часть), и он удаляет все сущностные компоненты и ссылки на единицы персистентности (часть, которую вы, вероятно, не хотите). Мы написали это из-за некоторых проблем с отладкой, которые возникали у нас при загрузке ActiveMQ или OpenJPA. Если вы уберете его, мы с радостью возьмем его обратно и поддержим как функцию.

Существует аналогичная функция, которая удаляет все веб-сервисы . Он устанавливается в ConfigurationFactory , если задано определенное системное свойство. Должно быть легко подключить съемник "MDB & JMS" с использованием аналогичного флага в основном в том же месте в ConfigurationFactory

Фактически, поскольку в OpenEJB все аннотации и метаданные xml объединяются в одно дерево объектов (которое также является деревом JAXB), вы можете выполнить довольно мощные преобразования приложения до его фактического развертывания. Скажем, например, поменяйте местами конкретные компоненты для фиктивных версий.

Одна из тех вещей, которые, я думаю, сделают отличную функцию, но у меня еще не было времени поработать. То есть создание некоторого чистого крючка для людей, чтобы связываться с деревом непосредственно перед тем, как мы отправим его на развертывание Любой, кто читает это, может присоединиться и сделать удар (да, с открытым исходным кодом!).

1 голос
/ 21 февраля 2011

только мои 2 цента:

  • try ".*org/example/mdb.*" or ".*org.example.mdb.*"
  • из Загрузка развертываний из Classpath :

    Обратите внимание, что по умолчанию эти настройки влияют только на то, какие jar-файлы OpenEJB будет проверять на наличие аннотированных компонентов, когда дескриптор не найден.Если вы хотите использовать эти параметры также для фильтрации jar-файлов, содержащих дескрипторы, установите для свойства

    openejb.deployments.classpath.filter.descriptors

    значение true.По умолчанию установлено значение false

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...