Встроенный Glassfish v3: развертывание sun-resources.xml программно перестало работать

Я хотел бы смочь упаковать свой jpa-ejb-web как автономное приложение, при помощи Glassfish, встроенного API.

Для использования уровня JPA я должен развернуть конфигурацию sun-resource.xml, которая должна быть возможной с командой asadmin add-resources path\to\sun-resources.xml. У меня есть этот код, чтобы сделать это:

    String command = "add-resources";
    ParameterMap params = new ParameterMap();
    params.add("", "...\sun-resources.xml" );
    CommandRunner runner = server.getHabitat().getComponent(CommandRunner.class);
    ActionReport report = server.getHabitat().getComponent(ActionReport.class);
    runner.getCommandInvocation(command, report).parameters(params).execute();

но Glassfish отказывается от него с:

15-Jul-2010 16:34:12 org.glassfish.admin.cli.resources.AddResources execute

СЕРЬЕЗНЫЙ: Что-то пошло не так, как надо в добавлять-ресурсах

java.lang.Exception: ...\gfembed6930201441546233570tmp\lib\dtds\sun-resources_1_4.dtd (The system cannot find the path specified)
        at org.glassfish.admin.cli.resources.ResourcesXMLParser.initProperties(ResourcesXMLParser.java:163)
        at org.glassfish.admin.cli.resources.ResourcesXMLParser.(ResourcesXMLParser.java:109)
        at org.glassfish.admin.cli.resources.ResourcesManager.createResources(ResourcesManager.java:67)
        at org.glassfish.admin.cli.resources.AddResources.execute(AddResources.java:106)
        at com.sun.enterprise.v3.admin.CommandRunnerImpl$1.execute(CommandRunnerImpl.java:305)
        at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:320)
        at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1176)
        at com.sun.enterprise.v3.admin.CommandRunnerImpl.access$900(CommandRunnerImpl.java:83)
        at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1235)
        at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1224)
        at javaapplication4.Main.main(Main.java:55)

и действительно, существует нет lib каталог на обозначенном пути...

есть ли в моем коде что-то не так? (Я использую glassfish-embedded-all-3.0.1.jar),

Спасибо

1
задан Pascal Thivent 17 July 2010 в 21:27
поделиться

2 ответа

Я решил эту проблему, указав встроенную файловую систему для встроенной Glassfish и предварительно заполнив папку / path / to / my / glassfish / lib / dtds отсутствующими файлами.

        EmbeddedFileSystem.Builder efsb = new EmbeddedFileSystem.Builder();
        efsb.autoDelete(false);
        efsb.installRoot(new File("/path/to/my/glassfish"), true);

        EmbeddedFileSystem efs = efsb.build();
        Server.Builder builder = new Server.Builder("test");
        builder.embeddedFileSystem(efs);

        builder.logger(true);
        Server server = builder.build();
        server.addContainer(ContainerBuilder.Type.all);
        server.start();

и просят Glassfish не удалять папку в конце выполнения.

1
ответ дан 2 September 2019 в 23:02
поделиться

Я не уверен, что это возможно, Running asadmin Commands Using the Sun GlassFish Embedded Server API не упоминает такой случай использования (передача sun-resources.xml).

Но я бы использовал предварительно настроенный domain.xml вместо того, чтобы пытаться развернуть файл sun-resource.xml, результат должен быть аналогичным. Из Sun GlassFish Enterprise Server v3 Embedded Server Guide:

Использование существующего domain.xml файла

Использование существующего domain.xml файла позволяет избежать необходимости конфигурировать встроенный Enterprise Server программно в вашем приложении. Ваше приложение получает данные конфигурации домена из существующего файла domain.xml. Вы можете создать этот файл с помощью административных интерфейсов установки не встроенного Enterprise Server. Чтобы указать существующий domain.xml файл, вызовите команды installRoot, instanceRoot, or configurationFile метода EmbeddedFileSystem.Builder класса или комбинацию этих методов.

В документации приведены примеры кода, показывающие, как это сделать (должно быть довольно просто).

1
ответ дан 2 September 2019 в 23:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: