Встроенный контейнер GlassFish для сессионных компонентов модульного тестирования в NetBeans, указывающих на неправильный домен - PullRequest
2 голосов
/ 13 июля 2011

Я написал модульные тесты для нескольких сессионных компонентов, которые я создал.Однако при попытке их запустить NetBeans выдает следующую ошибку:

Нет доступного поставщика EJBContainer.Следующие поставщики: org.glassfish.ejb.embedded.SEVERE: EJB6004: Указанное место установки сервера приложений [C: \ Development \ GlassFish \ 3.1 \ glassfish \ domains \ domain1] не существует.

Это верно.Домен1 не существует.Я сам создал домен «разработки» и удалил domain1, но, похоже, есть давняя ссылка, о которой я понятия не имею, где его изменить.Не встроенный контейнер, на который ссылается встроенный контейнер, также зарегистрирован в NetBeans и правильно подключен к домену разработки.Нет проблем с регулярным развертыванием проекта.

Любая помощь очень ценится!

Ответы [ 2 ]

3 голосов
/ 05 марта 2012

Я считаю, что ScatteredWar устарел. После долгих поисков я обнаружил невероятно полезный пост Краткое введение в Embeddability GlassFish Open Source Edition 3.1 , в котором приведен этот фрагмент:

Если ваш архив предварительно не собран, а его компоненты разбросаны по нескольким каталогам, тогда вас может заинтересовать использование API разбросанных архивов:

import org.glassfish.embeddable. ; import org.glassfish.embeddable.archive. ;

Deployer deployer = glassfish.getDeployer();
// Create a scattered web application.
ScatteredArchive archive = new ScatteredArchive("testapp", ScatteredArchive.Type.WAR);
// target/classes directory contains my complied servlets
archive.addClassPath(new File("target", "classes"));
// resources/sun-web.xml is my WEB-INF/sun-web.xml
archive.addMetadata(new File("resources", "sun-web.xml"));
// resources/MyLogFactory is my META-INF/services/org.apache.commons.logging.LogFactory
archive.addMetadata(new File("resources", "MyLogFactory"), "META-INF/services/org.apache.commons.logging.LogFactory");
deployer.deploy(archive.toURI())

Другие документы: Руководство по встроенному серверу Oracle GlassFish Server 3.1 и обновленный API .

1 голос
/ 14 июля 2011

Адам Бьен и Арун Гупта рассказывают о способах встраивания GlassFish для модульного тестирования.

Основная часть такова:

        GlassFish glassfish = new GlassFish(port);
        ScatteredWar war = new ScatteredWar(NAME,
            new File("src/main/resources"),
            new File("src/main/resources/WEB-INF/web.xml"),
            Collections.singleton(new File("build/classes").toURI().toURL()));
        glassfish.deploy(war);

Альтернативным подходом было бы использование OpenEJB для проведения модульного тестирования, поскольку это обеспечит соблюдение стандартов. Адам Ас имеет запись при настройке.

...