Pregunta

Me gustaría ser capaz de paquete de mi jpa-ejb-proyecto web como una aplicación independiente, mediante el uso de Glassfish incorporado API.

El uso de la JPA capa, necesito implementar el sun-resource.xml de configuración, que debe ser posible con el comando asadmin add-resources path\to\sun-resources.xml.Tengo este código para hacerlo:

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

pero Glassfish se niega con:

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

SEVERO:Algo salió mal en complemento de los 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)

y, de hecho, no hay ninguna lib directorio en el camino indicado ...

hay algo mal en mi código?(Yo uso glassfish-embedded-all-3.0.1.jar)

Gracias

¿Fue útil?

Solución

Lo resuelto por la especificación de un Archivo Incrustado Sistema para el Glassfish embebido, y rellena el /path/to/my/glassfish/lib/dtds carpeta con los archivos que faltan.

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

y pidiendo Glassfish no borrar la carpeta en el final de la ejecución.

Otros consejos

No estoy seguro de que esto es posible, Ejecución asadmin Comandos de Uso de la Sun GlassFish Incrustado en el Servidor de la API no se menciona un caso de uso (pasando de un sun-resources.xml).

Pero me gustaría utilizar una preconfigurado domain.xml en lugar de tratar de implementar un sun-resource.xml archivo, el resultado debe ser similar.A partir de la Sun GlassFish Enterprise Server v3 Incrustado en el Servidor de Guía:

Usar una ya Existente domain.xml Archivo

Usar una ya existente domain.xml archivo evita la necesidad de configurar incrustado Enterprise Server mediante programación en de su aplicación.Su aplicación obtiene los datos de configuración de dominio una ya existente domain.xml archivo.Usted puede crear este archivo mediante el uso de la interfaces administrativas de un instalación de nonembedded Empresa Servidor.Para especificar una ya existente domain.xml archivo de invocar el installRoot, instanceRoot, o configurationFile método de la EmbeddedFileSystem.Builder clase o una combinación de estos métodos.

La documentación proporciona ejemplos de código que muestra cómo hacer esto (debería ser bastante sencillo).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top