9 votes

Le déploiement d'une application maven EAR vers glassfish via netbeans échoue.

J'essaie de déployer une application maven EAR sur un serveur Glassfish 3 par le biais de Netbeans en utilisant le clic droit -> déboguer et cela échoue avec : GlassFish Server, deploy, Error writing request body to server, false

La sortie est :

BUILD SUCCESS
------------------------------------------------------------------------
Total time: 0.977 s
Finished at: 2017-10-02T21:00:19+03:00
Final Memory: 9M/393M
------------------------------------------------------------------------
Deploying on GlassFish Server
profile mode: false
debug mode: false
force redeploy: true

Distributing /path/to/ear.ear
GlassFish Server, deploy, Error writing request body to server, false

Le journal Glassfish ne contient aucune information de journalisation.

Le journal de l'IDE Netbeans contient les éléments suivants :

INFO [glassfish]: Requested Entity: public id = -//GlassFish.org//DTD GlassFish Application Server 3.1 Resource Definitions//EN, system id = http://glassfish.org/dtds/glassfish-resources_1_5.dtd
INFO [null]: Last record repeated again.
WARNING [glassfish-eecommon]: Deployment plan not supported in GlassfishConfiguration.save()
INFO [org.netbeans.modules.glassfish.tooling.admin.RunnerHttpDeploy]: IO exception caught in handleSend() method:
java.io.IOException: Error writing request body to server
    at sun.net.www.protocol.http.HttpURLConnection$StreamingOutputStream.checkError(HttpURLConnection.java:3518)
    at sun.net.www.protocol.http.HttpURLConnection$StreamingOutputStream.write(HttpURLConnection.java:3501)
    at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:82)
    at java.io.BufferedOutputStream.write(BufferedOutputStream.java:126)
    at java.util.zip.DeflaterOutputStream.deflate(DeflaterOutputStream.java:253)
    at java.util.zip.ZipOutputStream.closeEntry(ZipOutputStream.java:255)
    at java.util.zip.ZipOutputStream.finish(ZipOutputStream.java:360)
    at java.util.zip.DeflaterOutputStream.close(DeflaterOutputStream.java:238)
    at java.util.zip.ZipOutputStream.close(ZipOutputStream.java:377)
[catch] at org.netbeans.modules.glassfish.tooling.admin.RunnerHttpDeploy.handleSend(RunnerHttpDeploy.java:267)
    at org.netbeans.modules.glassfish.tooling.admin.Runner.handleHTTPConnection(Runner.java:828)
    at org.netbeans.modules.glassfish.tooling.admin.Runner.call(Runner.java:939)
    at org.netbeans.modules.glassfish.tooling.admin.Runner.call(Runner.java:73)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)
INFO [org.netbeans.modules.j2ee.deployment.devmodules.api.Deployment]
The module has not been deployed.
See the server log for details.
[catch] at org.netbeans.modules.j2ee.deployment.devmodules.api.Deployment.deploy(Deployment.java:259)
    at org.netbeans.modules.maven.j2ee.execution.DeploymentHelper.perform(DeploymentHelper.java:208)
    at org.netbeans.modules.maven.j2ee.execution.CoSAlternativeExecutorImpl.execute(CoSAlternativeExecutorImpl.java:90)
    at org.netbeans.modules.maven.cos.CoSAlternativeExecutor.execute(CoSAlternativeExecutor.java:87)
    at org.netbeans.modules.maven.cos.CosChecker.checkRunMainClass(CosChecker.java:209)
    at org.netbeans.modules.maven.cos.CosChecker.checkRunConfig(CosChecker.java:163)
    at org.netbeans.modules.maven.execute.MavenCommandLineExecutor.run(MavenCommandLineExecutor.java:225)
    at org.netbeans.core.execution.RunClassThread.run(RunClassThread.java:153)
INFO [glassfish]: Requested Entity: public id = -//GlassFish.org//DTD GlassFish Application Server 3.1 Resource Definitions//EN, system id = http://glassfish.org/dtds/glassfish-resources_1_5.dtd
INFO [null]: Last record repeated again.
WARNING [glassfish-eecommon]: Deployment plan not supported in GlassfishConfiguration.save()
INFO [org.netbeans.modules.glassfish.tooling.admin.RunnerHttpDeploy]: IO exception caught in handleSend() method:
java.io.IOException: Error writing request body to server
    at sun.net.www.protocol.http.HttpURLConnection$StreamingOutputStream.checkError(HttpURLConnection.java:3518)
    at sun.net.www.protocol.http.HttpURLConnection$StreamingOutputStream.write(HttpURLConnection.java:3501)
    at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:82)
    at java.io.BufferedOutputStream.write(BufferedOutputStream.java:126)
    at java.util.zip.DeflaterOutputStream.deflate(DeflaterOutputStream.java:253)
    at java.util.zip.ZipOutputStream.closeEntry(ZipOutputStream.java:255)
    at java.util.zip.ZipOutputStream.finish(ZipOutputStream.java:360)
    at java.util.zip.DeflaterOutputStream.close(DeflaterOutputStream.java:238)
    at java.util.zip.ZipOutputStream.close(ZipOutputStream.java:377)
[catch] at org.netbeans.modules.glassfish.tooling.admin.RunnerHttpDeploy.handleSend(RunnerHttpDeploy.java:267)
    at org.netbeans.modules.glassfish.tooling.admin.Runner.handleHTTPConnection(Runner.java:828)
    at org.netbeans.modules.glassfish.tooling.admin.Runner.call(Runner.java:939)
    at org.netbeans.modules.glassfish.tooling.admin.Runner.call(Runner.java:73)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)
INFO [org.netbeans.modules.j2ee.deployment.devmodules.api.Deployment]
The module has not been deployed.
See the server log for details.
[catch] at org.netbeans.modules.j2ee.deployment.devmodules.api.Deployment.deploy(Deployment.java:259)
    at org.netbeans.modules.maven.j2ee.execution.DeploymentHelper.perform(DeploymentHelper.java:208)
    at org.netbeans.modules.maven.j2ee.execution.ExecutionChecker.executionResult(ExecutionChecker.java:93)
    at org.netbeans.modules.maven.execute.MavenCommandLineExecutor.run(MavenCommandLineExecutor.java:315)
    at org.netbeans.core.execution.RunClassThread.run(RunClassThread.java:153)

Netbeans version: 8.2
Glassfish version: 3.1.2.2 (build 5)
Platform: reproducible on both Windows10 + Debian9
Maven version: 3.3.9
JDK: 1.7.0_80
Glassfish secure admin is enabled

Le EAR produit peut être normalement déployé sur Glassfish en utilisant la commande asadmin. Ce n'est qu'en essayant de le déployer via Netbeans qu'il échoue.

EDIT

Il semble que lorsque l'administration sécurisée est désactivée, je suis en mesure d'effectuer le déploiement via Netbeans. J'ai rencontré quelques problèmes avec l'administration sécurisée et le ssl.

C'est la meilleure réponse que j'ai pu trouver pour décrire le problème que je rencontre : https://intellij-support.jetbrains.com/hc/en-us/community/posts/206913035-Glassfish-3-1-remote-deploy-not-working (même si c'est pour un autre IDE).

Cette solution n'est cependant pas acceptée car le l'administration sécurisée est une exigence pour les travaux quotidiens de développement.


EDIT 2

Après avoir expérimenté un peu plus, j'ai observé ce qui suit :

Étant donné que les journaux de Glassfish sont vides et que le journal de l'IDE de Netbeans contient une erreur liée à HttpUrlConnection, je pense qu'une fois que Netbeans a terminé le processus de construction, il ne parvient pas à écrire l'EAR sur le socket.

  • J'ai expérimenté avec d'autres projets EAR (généré un nouveau EAR maven à partir de netbeans) et il se déploie correctement vers Glassfish.

  • Je suis tombé sur un article qui mentionne un bogue dans Netbeans qui ne parvient pas à écrire des archives d'une certaine taille. J'ai essayé de générer un nouveau projet maven avec une taille finale d'EAR importante mais il se déploie correctement. Ce bogue est assez ancien et a été corrigé depuis : https://netbeans.org/bugzilla/show_bug.cgi?id=206946


EDIT 3

Après avoir expérimenté avec le fichier POM, en supprimant toutes les dépendances et en essayant de les réintroduire une par une, il semble que ce problème soit déclenché par l'inclusion d'une dépendance EJB.

L'inclusion d'une dépendance de type ejb et sa déclaration en tant que ejbModule dans la section des modules du plugin maven ear semblent déclencher le problème.

<dependency>
    <groupId>com.foo</groupId>
    <artifactId>BAR</artifactId>
    <version>1.0</version>
    <type>ejb</type>
</dependency>
.
.
.
.
<ejbModule>
    <groupId>com.foo</groupId>
    <artifactId>BAR</artifactId>
    <altDeploymentDescriptor>AltDD.xml</altDeploymentDescriptor>
</ejbModule>

Je ne sais toujours pas pourquoi ce problème est déclenché. J'ai lu sur Internet qu'il pouvait y avoir un problème de taille de fichier, mais je n'ai pas pu le reproduire.

2voto

nullpointer Points 1135

Cela peut se produire sur Netbeans lorsqu'il est arrêté sur un point d'arrêt, et certains déploiements peuvent alors avoir tendance à échouer immédiatement.

El BUG-253630 mentionne un scénario reproductible pour un tel cas d'utilisation:-

1. Run app with DoS off (DoS state MODULE_NOT_DEPLOYED)
2. Debug it
3. App stopped at breakpoint
4. Change source (DoS state SERVER_STATE_UNSUPPORTED)
5. Continue with the app (release breakpoint, detach JPDA)
6. Change source (DoS state MODULE_UPDATED)

En outre, assurez-vous que pour l'administration à distance, vous devrez définir un mot de passe administrateur avant de procéder à l'activation proprement dite :

asadmin change-admin-password --domain_name [DOMAIN_NAME]
asadmin enable-secure-admin --port [PORT_NAME]

et à part cela, vous pouvez même essayer de définir le mot de passe comme vide si cela peut aider aussi.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X