Pergunta

Eu gostaria de ser capaz de pacote de meu jpa-ejb-projeto da web como uma aplicação independente, usando o Glassfish incorporado API.

Para usar o APP camada, eu preciso implantar o sun-resource.xml a configuração, que deve ser possível com a asadmin comando add-resources path\to\sun-resources.xml.Eu tenho esse código para fazê-lo:

    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();

mas o Glassfish recusa com:

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

GRAVE:Algo deu errado em adicionar recursos

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.<init>(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)

e, de fato, não há lib diretório no caminho indicado ...

há algo de errado no meu código?(Eu uso glassfish-embedded-all-3.0.1.jar)

Obrigado

Foi útil?

Solução

Eu resolvi especificando um Arquivo Incorporado de Sistema para o Glassfish embedded, e preenchido o /path/to/my/glassfish/lib/dtds pasta com os arquivos que estavam faltando.

        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();

e pedindo Glassfish de não excluir a pasta no final da execução.

Outras dicas

Eu não tenho certeza se isso é possível, Execução asadmin Comandos Usando o Sun GlassFish Servidor Embutido da API não mencionar um caso de uso (a passagem de um sun-resources.xml).

Mas eu gostaria de usar um pré-configurados domain.xml em vez de tentar implantar uma sun-resource.xml arquivo, o resultado deve ser semelhante.Do Sun GlassFish Enterprise Server v3 Embedded Server Guia:

Usar uma já Existente domain.xml Arquivo

Usar uma já existente domain.xml arquivo evita a necessidade de configurar incorporado Enterprise Server através de programação no sua aplicação.A sua aplicação obtém os dados de configuração do domínio uma já existente domain.xml arquivo.Você pode criar este arquivo usando o interfaces administrativas de um instalação de nonembedded Empresa Server.Para especificar um existente domain.xml arquivo, invocar a installRoot, instanceRoot, ou configurationFile método de EmbeddedFileSystem.Builder de classe ou uma combinação destes métodos.

A documentação fornece exemplos de código mostrando como fazer isso (é bem simples).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top