Domanda

Vorrei essere in grado di confezionare il mio progetto JPA-EJB-Web come un'applicazione standalone, utilizzando API incorporato di Glassfish

Per utilizzare il livello JPA, ho bisogno di distribuire la configurazione Sun-Resource.xml, che dovrebbe essere possibile con Asadmin Command add-resources path\to\sun-resources.xml.Ho questo codice per farlo:

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

Ma il pesce Glassfish lo rifiuta con:

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

Grave: qualcosa è andato storto nelle risorse aggiuntive

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 in effetti, non esiste una directory lib sul percorso indicato ...

C'è qualcosa di sbagliato nel mio codice?(Io uso Glassfish-Embedded-ALL-3.0.1.jar )

Grazie

È stato utile?

Soluzione

L'ho risolto specificando un file system incorporato per il Glassfish incorporato e prepopopolate la cartella /path/to/my/glassfish/lib/dtds con i file che mancano.

        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 chiedendo Glassfish non eliminare la cartella alla fine dell'esecuzione.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top