Question

J'aimerais pouvoir packager mon projet jpa-ejb-web en tant qu'application autonome, en utilisant l'API intégrée de Glassfish.

Pour utiliser la couche JPA, je dois déployer la configuration sun-resource.xml, ce qui devrait être possible avec le commande asadmin add-resources path\to\sun-resources.xml.J'ai ce code pour le faire :

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

mais Glassfish le refuse avec :

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

GRAVE:Une erreur s'est produite dans l'ajout de ressources

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)

et en effet, il n'y a pas lib répertoire sur le chemin indiqué...

y a-t-il quelque chose qui ne va pas dans mon code ?(J'utilise glassfish-embedded-all-3.0.1.jar)

Merci

Était-ce utile?

La solution

Je l'ai résolu en spécifiant un système de fichiers intégré pour le Glassfish intégré, et j'ai prérempli le /path/to/my/glassfish/lib/dtds dossier avec les fichiers manquants.

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

et demandant à Glassfish de ne pas supprimer le dossier à la fin de l'exécution.

Autres conseils

Je ne suis pas sûr que ce soit possible, En cours d'exécution asadmin Commandes utilisant l'API du serveur intégré Sun GlassFish ne mentionne pas un tel cas d'utilisation (passer un sun-resources.xml).

Mais j'utiliserais un préconfiguré domain.xml au lieu d'essayer de déployer un sun-resource.xml fichier, le résultat devrait être similaire.Du Guide du serveur intégré Sun GlassFish Enterprise Server v3:

Utiliser un existant domain.xml Déposer

Utiliser un existant domain.xml Le fichier évite la nécessité de configurer le serveur d'entreprise embarqué par programme dans votre application.Votre application obtient des données de configuration de domaine à partir d'un domain.xml déposer.Vous pouvez créer ce fichier en utilisant les interfaces administratives d'une installation d'un serveur d'entreprise non emballé.Pour spécifier un existant domain.xml fichier, invoquez le installRoot, instanceRoot, ou configurationFile méthode du EmbeddedFileSystem.Builder classe ou une combinaison de ces méthodes.

La documentation fournit des exemples de code montrant comment procéder (cela devrait être assez simple).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top