web-dev-qa-db-fra.com

La console d'administration Glassfish émet une exception Java.lang.IllegalStateException lors de la création d'un pool JDBC.

Il y a une semaine, j'ai téléchargé Glassfish 4.1. Avez-vous installé Zip? Vous avez tenté d'utiliser la console d'administration pour créer un pool de connexions JDBC. Reçu ce message d'erreur:

Java.lang.IllegalStateException: getOutputStream() has already been called for this response

Beaucoup de références à cette erreur. Beaucoup de gens l'ont déclaré "demandé et répondu". Mais je ne trouve nulle part une référence à ce problème, encore moins à une solution.

Mais si quelqu'un pense avoir obtenu une réponse, veillez à bien ajouter un lien vers la solution à ce problème: Nouvelle installation. N'a fait qu'ouvrir la console et essayer de créer un nouveau pool de connexions JDBC.

Resource Type: javax.sql.DataSource.  
Vendor: MySql. 

J'ai stocké mysql-connector-Java-5.1.35.jar dans\glassfish4\glassfish\lib

Voici la chose la plus proche d'une solution que j'ai trouvée. Mais c'était pour GF v3.

J'ai enfin trouvé le problème dans mon domain.xml: -Dorg.glassfish.web.rfc2109_cookie_names_enforced=false Manquait dans le domain.xml créé par asupgrade. Je viens de l'ajouter au domain.xml jvm-options et GF v3 fonctionne maintenant comme prévu. Ajoutée:
<jvm-options>-Dorg.glassfish.web.rfc2109_cookie_names_enforced=false</jvm-options>

J'ai essayé ça. N'a pas fonctionné (J'ai collé l'entrée de journal GF pour indiquer que la ligne recommandée est ajoutée au domaine.xml GF utilisé au démarrage.)

J'ai essayé d'extraire domain.xml de mon ancien serveur v3 et de l'utiliser dans la nouvelle v4. Ça n'a pas marché.

D'autres questions concernant mon message d'exception concernaient toutes l'obtention avec une application déployée - principalement des servlets. Mais ceci est un serveur propre. Aucune application n'a été installée.

J'ai trouvé beaucoup de liens vers des personnes travaillant sur cette exception sous forme de bogue GF. La plupart sont il y a quelque temps. Personne n'a donné de solution de rechange ni même déclaré qu'ils l'auraient jamais résolue.

Quelqu'un peut-il offrir une solution?
Ou laissez-moi savoir s'il s'agit simplement d'un bug que Oracle a décidé de ne pas corriger?
Ou savez-vous où je peux trouver de l'aide? Ça me tue.

Si cela vous aide, voici le journal GF pour un démarrage propre (avec l’insert jvm dans le fichier domain.xml.). Il affiche également le suivi de la pile pour la tentative infructueuse de création d’un pool de connexions JDBC.

REMARQUE: J'ai extrait toutes les entrées du journal [INFO]. Et les entrées [WARNING] laissées semblent toutes liées à Grizzly.

[2015-10-09T12:21:24.598-1000] [] [INFO] [NCLS-GFLAUNCHER-00005] [javax.enterprise.launcher] [tid: _ThreadID=1 _ThreadName=main] [timeMillis: 1444429284598] [levelValue: 800] [[
  JVM invocation command line:
C:\Program Files\Java\jdk1.8.0_05\bin\Java.exe
-cp
C:/glassfish4/glassfish/modules/glassfish.jar
-XX:+UnlockDiagnosticVMOptions
-XX:NewRatio=2
-XX:MaxPermSize=192m
-Xmx512m
-javaagent:C:/glassfish4/glassfish/lib/monitor/flashlight-agent.jar
-client
-Djavax.xml.accessExternalSchema=all
-Djavax.net.ssl.trustStore=C:\glassfish4\glassfish\domains\domain1/config/cacerts.jks
-Djdk.corba.allowOutputStreamSubclass=true
-Dfelix.fileinstall.dir=C:\glassfish4\glassfish/modules/autostart/
-Dorg.glassfish.additionalOSGiBundlesToStart=org.Apache.felix.Shell,org.Apache.felix.gogo.runtime,org.Apache.felix.gogo.Shell,org.Apache.felix.gogo.command,org.Apache.felix.Shell.remote,org.Apache.felix.fileinstall
-Dcom.Sun.aas.installRoot=C:\glassfish4\glassfish
-Dfelix.fileinstall.poll=5000
-Djava.endorsed.dirs=C:\glassfish4\glassfish/modules/endorsed;C:\glassfish4\glassfish/lib/endorsed
-Djava.security.policy=C:\glassfish4\glassfish\domains\domain1/config/server.policy
-Dosgi.Shell.telnet.maxconn=1
-Dfelix.fileinstall.bundles.startTransient=true
-Dcom.Sun.enterprise.config.config_environment_factory_class=com.Sun.enterprise.config.serverbeans.AppserverConfigEnvironmentFactory
-Dfelix.fileinstall.log.level=2
-Dorg.glassfish.web.rfc2109_cookie_names_enforced=false
-Djavax.net.ssl.keyStore=C:\glassfish4\glassfish\domains\domain1/config/keystore.jks
-Djava.security.auth.login.config=C:\glassfish4\glassfish\domains\domain1/config/login.conf
-Dfelix.fileinstall.disableConfigSave=false
-Dfelix.fileinstall.bundles.new.start=true
-Dcom.Sun.aas.instanceRoot=C:\glassfish4\glassfish\domains\domain1
-Dosgi.Shell.telnet.port=6666
-Dgosh.args=--nointeractive
-Dcom.Sun.enterprise.security.httpsOutboundKeyAlias=s1as
-Dosgi.Shell.telnet.ip=127.0.0.1
-DANTLR_USE_DIRECT_CLASS_LOADING=true
-Djava.awt.headless=true
-Dcom.ctc.wstx.returnNullForDefaultNamespace=true
-Djava.ext.dirs=C:\Program Files\Java\jdk1.8.0_05/lib/ext;C:\Program Files\Java\jdk1.8.0_05/jre/lib/ext;C:\glassfish4\glassfish\domains\domain1/lib/ext
-Djdbc.drivers=org.Apache.derby.jdbc.ClientDriver
-Djava.library.path=C:/glassfish4/glassfish/lib;C:/ProgramData/Oracle/Java/javapath;C:/Windows/Sun/Java/bin;C:/Windows/System32;C:/Windows;C:/glassfish4/glassfish/ C:/Program Files/Dell/Dell Data Protection/Drivers/TSS/bin;C:/Program Files (x86)/Common Files/Intuit/QBPOSSDKRuntime;C:/Program Files (x86)/QuickTime/QTSystem;D:/Bulletproof/bpMySql/bin;C:/glassfish4/glassfish
com.Sun.enterprise.glassfish.bootstrap.ASMain
-upgrade
false
-domaindir
C:/glassfish4/glassfish/domains/domain1
-read-stdin
true
-asadmin-args
--Host,,,localhost,,,--port,,,4848,,,--secure=false,,,--terse=false,,,--echo=false,,,--interactive=true,,,start-domain,,,--verbose=false,,,--watchdog=false,,,--debug=false,,,--domaindir,,,C:\glassfish4\glassfish\domains,,,domain1
-domainname
domain1
-instancename
server
-type
DAS
-verbose
false
-asadmin-classpath
C:/glassfish4/glassfish/lib/client/appserver-cli.jar
-debug
false
-asadmin-classname
com.Sun.enterprise.admin.cli.AdminMain]]

 [2015-10-09T12:21:27.864-1000] [glassfish 4.1] [WARNING] [] [org.glassfish.grizzly.config.Utils] [tid: _ThreadID=17 _ThreadName=RunLevelControllerThread-1444429287050] [timeMillis: 1444429287864] [levelValue: 900] [[
  Instance could not be initialized. Class=interface org.glassfish.grizzly.http.server.AddOn, name=http-listener-1, realClassName=org.glassfish.grizzly.http2.Http2AddOn]]

[2015-10-09T12:21:27.962-1000] [glassfish 4.1] [WARNING] [] [org.glassfish.grizzly.config.Utils] [tid: _ThreadID=17 _ThreadName=RunLevelControllerThread-1444429287050] [timeMillis: 1444429287962] [levelValue: 900] [[
  Instance could not be initialized. Class=interface org.glassfish.grizzly.http.server.AddOn, name=http-listener-2, realClassName=org.glassfish.grizzly.http2.Http2AddOn]]

[2015-10-09T12:21:27.970-1000] [glassfish 4.1] [WARNING] [] [org.glassfish.grizzly.config.Utils] [tid: _ThreadID=17 _ThreadName=RunLevelControllerThread-1444429287050] [timeMillis: 1444429287970] [levelValue: 900] [[
  Instance could not be initialized. Class=interface org.glassfish.grizzly.http.server.AddOn, name=admin-listener, realClassName=org.glassfish.grizzly.http2.Http2AddOn]]

[2015-10-09T12:21:31.120-1000] [glassfish 4.1] [WARNING] [] [org.glassfish.grizzly.config.Utils] [tid: _ThreadID=75 _ThreadName=pool-13-thread-1] [timeMillis: 1444429291120] [levelValue: 900] [[
  Instance could not be initialized. Class=interface org.glassfish.grizzly.http.server.AddOn, name=http-listener-1, realClassName=org.glassfish.grizzly.http2.Http2AddOn]]

[2015-10-09T12:21:31.135-1000] [glassfish 4.1] [WARNING] [] [org.glassfish.grizzly.config.Utils] [tid: _ThreadID=75 _ThreadName=pool-13-thread-1] [timeMillis: 1444429291135] [levelValue: 900] [[
  Instance could not be initialized. Class=interface org.glassfish.grizzly.http.server.AddOn, name=http-listener-2, realClassName=org.glassfish.grizzly.http2.Http2AddOn]]

[2015-10-09T12:21:37.895-1000] [glassfish 4.1] [WARNING] [] [javax.enterprise.system.container.web.com.Sun.web.security] [tid: _ThreadID=48 _ThreadName=admin-listener(4)] [timeMillis: 1444429297895] [levelValue: 900] [[
  Context path from ServletContext:  differs from path from bundle: /]]

 [2015-10-09T12:22:46.963-1000] [glassfish 4.1] [WARNING] [] [javax.enterprise.web] [tid: _ThreadID=48 _ThreadName=admin-listener(4)] [timeMillis: 1444429366963] [levelValue: 900] [[
  StandardWrapperValve[FacesServlet]: Servlet.service() for servlet FacesServlet threw exception
Java.lang.IllegalStateException: getOutputStream() has already been called for this response
    at org.Apache.catalina.connector.Response.getWriter(Response.Java:777)
    at org.Apache.catalina.connector.ResponseFacade.getWriter(ResponseFacade.Java:224)
    at com.Sun.faces.context.ExternalContextImpl.getResponseOutputWriter(ExternalContextImpl.Java:851)
    at com.Sun.faces.context.PartialViewContextImpl.createPartialResponseWriter(PartialViewContextImpl.Java:504)
    at com.Sun.faces.context.PartialViewContextImpl.access$300(PartialViewContextImpl.Java:79)
    at com.Sun.faces.context.PartialViewContextImpl$DelayedInitPartialResponseWriter.getWrapped(PartialViewContextImpl.Java:642)
    at javax.faces.context.PartialResponseWriter.startDocument(PartialResponseWriter.Java:120)
    at com.Sun.faces.context.AjaxExceptionHandlerImpl.handlePartialResponseError(AjaxExceptionHandlerImpl.Java:202)
    at com.Sun.faces.context.AjaxExceptionHandlerImpl.handle(AjaxExceptionHandlerImpl.Java:127)
    at javax.faces.context.ExceptionHandlerWrapper.handle(ExceptionHandlerWrapper.Java:100)
    at com.Sun.faces.lifecycle.Phase.doPhase(Phase.Java:119)
    at com.Sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.Java:219)
    at javax.faces.webapp.FacesServlet.service(FacesServlet.Java:659)
    at org.Apache.catalina.core.StandardWrapper.service(StandardWrapper.Java:1682)
    at org.Apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.Java:344)
    at org.Apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.Java:214)
    at com.Sun.webui.jsf.util.UploadFilter.doFilter(UploadFilter.Java:233)
    at org.Apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.Java:256)
    at org.Apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.Java:214)
    at org.Apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.Java:316)
    at org.Apache.catalina.core.StandardContextValve.invoke(StandardContextValve.Java:160)
    at org.Apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.Java:734)
    at org.Apache.catalina.core.StandardPipeline.doChainInvoke(StandardPipeline.Java:678)
    at com.Sun.enterprise.web.WebPipeline.invoke(WebPipeline.Java:97)
    at org.Apache.catalina.core.StandardHostValve.invoke(StandardHostValve.Java:174)
    at org.Apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.Java:416)
    at org.Apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.Java:283)
    at com.Sun.enterprise.v3.services.impl.ContainerMapper$HttpHandlerCallable.call(ContainerMapper.Java:459)
    at com.Sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.Java:167)
    at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.Java:206)
    at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.Java:180)
    at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.Java:235)
    at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.Java:119)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.Java:283)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.Java:200)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.Java:132)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.Java:111)
    at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.Java:77)
    at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.Java:536)
    at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.Java:112)
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.Java:117)
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.Java:56)
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.Java:137)
    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.Java:591)
    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.Java:571)
    at Java.lang.Thread.run(Thread.Java:745)
]]
32
George

Selon les billets JIRA suivants:

c'est toujours un problème non résolu. Même si nous pouvons nous attendre à de telles choses depuis Oracle a abandonné le support commercial de Glassfish , il est toujours horrible que de telles fonctionnalités de base ne fonctionnent pas.

Cependant, si vous êtes vraiment désespéré, il existe une solution de contournement très désagréable. Glassfish arrive avec un pool JDBC prédéfini DerbyPool dont vous n'aurez probablement pas besoin, à moins que vous n'ayez affaire à Java DB. N'hésitez pas à l'éditer en changeant le nom de la classe de source de données en com.mysql.jdbc.jdbc2.optional.MysqlDataSource et en ajustant des propriétés supplémentaires pour pointer sur une instance de serveur MySQL. Avant de procéder à ce piratage, assurez-vous de placer le connecteur MySQL dans le dossier lib de Glassfish.

[~ # ~] met à jour [~ # ~]

Je viens de remarquer qu’une version de Glassfish qui a été corrigée s’appelle Payara et peut être téléchargée ici . Selon la documentation, il s'agit d'un clone de GlassFish 4.1, corrigé et développé par la communauté.

30
Miljen Mikic

Je viens de revenir à la version 4.1.0 de 4.1.1 - fonctionne bien. Bug vraiment fou de GlassFish :(

18
a.parfenov

Il est possible de gérer les connexions JDBC avec l'utilitaire asadmin. AFAIK admin GUI n'est qu'une interface.

L'utilisation de asadmin est décrite ici: https://docs.Oracle.com/cd/E26576_01/doc.312/e24928/jdbc.htm#GSADG0042

Par exemple.

asadmin> create-jdbc-connection-pool --datasourceclassname org.Apache.derby.jdbc.ClientDataSource \\
  --restype javax.sql.XADataSource \\
  --property portNumber=1527:password=APP:user=APP:serverName=localhost:databaseName=Sun-appserv-samples:connectionAttributes=\;create\\=true \\
  sample_derby_pool

À votre santé,

8
JN01

Avoir le même problème, et cela me fera sûrement choisir un autre serveur d’applications, pourquoi pas tomee, jboss, wildfly, ...

Quoi qu'il en soit, voici une autre solution de contournement. Il vous suffit de coller cette paix de XML dans domain.xml (entre les autres pools de connexions).

<jdbc-connection-pool connection-validation-method="auto-commit" datasource-classname="com.mysql.jdbc.jdbc2.optional.MysqlDataSource" wrap-jdbc-objects="false" res-type="javax.sql.DataSource" name="mysql_dbuser_rootPool">
      <property name="URL" value="jdbc:mysql://localhost:3306/ANYDB?zeroDateTimeBehavior=convertToNull"></property>
      <property name="driverClass" value="com.mysql.jdbc.Driver"></property>
      <property name="Password" value="THEPASS"></property>
      <property name="portNumber" value="3306"></property>
      <property name="databaseName" value="ANYDB"></property>
      <property name="User" value="THEUSER"></property>
      <property name="serverName" value="localhost"></property>
    </jdbc-connection-pool>

J'espère que l'aide

8
Pascal Fares

C'était un bug dans GlassFish 4.1.1 comme frères ont été mentionnés, mais cela a été résolu dans GlassFish 4.1.2 afin que vous puissiez simplement y télécharger ici , et pour plus d’informations, allez ici

4
Anas

Si vous utilisez Oracle, éditez simplement le fichier ..glassfish/domains/domain1/config/domain.xml. Recherchez la balise resources et ajoutez:

<jdbc-connection-pool datasource-classname="Oracle.jdbc.pool.OracleConnectionPoolDataSource" name="MyPoolName" res-type="javax.sql.ConnectionPoolDataSource">
  <property name="User" value="UserName"></property>
  <property name="URL" value="jdbc:Oracle:thin:@//localhost:1521/xe"></property>
  <property name="Password" value="UserPassword"></property>
</jdbc-connection-pool>

N'oubliez pas de copier le pilote jdbc dans lib et modifiez l'URL selon vos besoins. Ensuite, démarrez Glassfish, accédez aux pools de connexion JDBC et testez votre connexion.

3
Fabian Agudelo

Je devais le faire dans mon affectation et la même erreur se produisait lors de la création de ressources JDBC (exception d'exécution Java) et de pools de connexion JDBC (Java.lang.IllegalStateException: getOutputStream () a déjà été appelé pour cette réponse).

J'ai par la suite réalisé qu'il s'agissait d'une version buggy et notre prof nous avait déjà dit d'utiliser Glassfish 4.1 ( https://glassfish.Java.net/download-archive.html ) et tout fonctionnait bien. Si vous n'êtes pas obligé d'utiliser 4.1.1. s'il vous plaît aller pour 4.1 à la place.

3
VIshu Kamble

La version de nuit contient le correctif! .Vous pouvez télécharger la version de nuit de Oracle

2
tury_nguyen