Incrustado Glassfish v3:la implementación de sun-resources.xml mediante programación falla
-
16-09-2020 - |
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
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
ArchivoUsar 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 existentedomain.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 existentedomain.xml
archivo de invocar elinstallRoot
,instanceRoot
, oconfigurationFile
método de laEmbeddedFileSystem.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).