La Console d'administration de Glassfish lance java.lang.IllegalStateException lors de la création du Pool JDBC

<!-Il y a une semaine, J'ai téléchargé Glassfish 4.1. Fait un zip installer. Tenté d'utiliser la Console D'administration pour créer un Pool de connexion 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 n'arrive pas à trouver une seule référence à ce problème, encore moins une solution.

mais si quelqu'un croit qu'il a été répondu, s'il vous plaît être sûr d'ajouter un lien vers la solution à ce problème: Nouveau installation. N'a rien fait d'autre que d'ouvrir la console et d'essayer de créer un nouveau Pool de connexion JDBC.

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

j'ai stocké mysql-connector-java-5.1.35.jar dans glassfish4glassfishlib

voici ce qui se rapproche le plus d'une solution que j'ai trouvée. Mais c'était pour GF v3.

j'ai enfin retrouvé le vrai problème dans mon domaine.XML: -Dorg.glassfish.web.rfc2109_cookie_names_enforced=false était manquant dans le domaine.xml créé par asupgrade. J'ai juste ajouté ça à du domaine.xml jvm-options et GF v3 fonctionne maintenant comme prévu. Ajouté:

<jvm-options>-Dorg.glassfish.web.rfc2109_cookie_names_enforced=false</jvm-options>

Essayé. N'a pas fonctionné. (J'ai collé l'entrée GF log pour montrer que la ligne recommandée est ajoutée au domaine.xml GF utilisé au démarrage.)

j'ai essayé de creuser domaine.xml de mon ancien serveur v3 et l'utiliser dans le nouveau v4. Cela ne fonctionne pas.

autres questions concernant mon message D'Exception toutes liées à l'obtention avec une application déployée -- surtout des servlets. Mais c'est un serveur propre. Aucun les applications ont été installées.

j'ai trouvé beaucoup de liens vers des personnes travaillant sur cette Exception comme un bogue de GF. La plupart sont y a quelques temps. Aucun n'a donné une solution de contournement ou même dit qu'ils avaient jamais résolu.

Quelqu'un peut-il offrir une solution?

Ou me faire savoir si C'est juste un oracle de bogue décidé de ne pas réparer?

Ou sait où je peux trouver de l'aide? Ce qui me tue.

dans le cas où il est utile ici est le GF log pour un démarrage propre (avec l'insertion jvm dans le domaine.XML.) Il montre également la trace de la pile pour la tentative ratée de créer un Pool de connexion JDBC.

NOTE: j'ai retiré toutes les entrées de journal [INFO]. Et les entrées qui restent 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 FilesJavajdk1.8.0_05binjava.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:glassfish4glassfishdomainsdomain1/config/cacerts.jks
-Djdk.corba.allowOutputStreamSubclass=true
-Dfelix.fileinstall.dir=C:glassfish4glassfish/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:glassfish4glassfish
-Dfelix.fileinstall.poll=5000
-Djava.endorsed.dirs=C:glassfish4glassfish/modules/endorsed;C:glassfish4glassfish/lib/endorsed
-Djava.security.policy=C:glassfish4glassfishdomainsdomain1/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:glassfish4glassfishdomainsdomain1/config/keystore.jks
-Djava.security.auth.login.config=C:glassfish4glassfishdomainsdomain1/config/login.conf
-Dfelix.fileinstall.disableConfigSave=false
-Dfelix.fileinstall.bundles.new.start=true
-Dcom.sun.aas.instanceRoot=C:glassfish4glassfishdomainsdomain1
-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 FilesJavajdk1.8.0_05/lib/ext;C:Program FilesJavajdk1.8.0_05/jre/lib/ext;C:glassfish4glassfishdomainsdomain1/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:glassfish4glassfishdomains,,,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.access0(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.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.access0(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)
]]
31
demandé sur Mark Rotteveel 2015-10-10 02:13:22

8 réponses

selon les billets JIRA suivants:

il s'agit toujours d'un problème non résolu. Même si nous pouvons nous attendre à de telles choses depuis Oracle a abandonné un support commercial pour le poisson-verre, il est encore horrible qu'une telle fonctionnalité de base ne fonctionne pas.

cependant, si vous êtes vraiment désespéré, il est très méchant solution de contournement. Glassfish arrive avec un pool JDBC prédéfini DerbyPool que vous n'aurez probablement pas besoin, sauf si vous avez affaire à Java DB. N'hésitez pas à l'éditer en changeant le nom de classe de Datasource en com.mysql.jdbc.jdbc2.optional.MysqlDataSource et en ajustant les propriétés supplémentaires pour pointer sur l'instance du serveur MySQL. Avant de faire ce piratage, assurez-vous de mettre MySQL connector dans le dossier lib de Glassfish.

UPDATE

je viens de remarquer qu'il y a une version Glassfish qui a été patché, il est appelé Payara et disponible pour le téléchargement ici. Selon la documentation, il s'agit d'un GlassFish 4.1 clone, patché et développé par la communauté.

30
répondu Miljen Mikic 2015-10-12 13:19:47

je viens de revenir à la 4.1.0 de 4.1.1-fonctionne très bien. Vraiment fou bug de GlassFish :(

18
répondu a.parfenov 2016-05-13 15:06:16

il est possible de gérer les connexions JDBC avec asadmin utility-AFAIK GUI admin n'est qu'une interface.

asadmin l'usage est décrit ici: https://docs.oracle.com/cd/E26576_01/doc.312/e24928/jdbc.htm#GSADG00420

E. G.

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

santé,

8
répondu JN01 2015-12-11 10:38:01

Ont le même problème, et ce sera sûrement me faire choisir un autre serveur d'application, pourquoi ne pas tomee, jboss, wildfly, ...

bref voici un autre workarround, il suffit de coller cette paix de xml dans le domaine.xml (entre autres le pool de connexion)

<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

7
répondu Pascal Fares 2015-11-09 13:42:57

si vous utilisez Oracle éditez simplement le fichier ..glassfish/domain/config/domain.XML. Rechercher la balise de ressources et ajouter:

<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 de changer L'URL à vos besoins. Prochain départ glassfish, allez dans les piscines de connexion JDBC et testez votre connexion.

3
répondu Fabian Agudelo 2015-11-10 01:55:46

j'ai dû faire cela dans mon affectation et j'ai eu la même erreur en créant des ressources JDBC (Java runtime exception) et des pools de connexion JDBC (java.lang.IllegalStateException: getOutputStream () a déjà été appelé pour cette réponse)

j'ai réalisé plus tard qu'il s'agissait d'une version buggy et notre professeur nous avait déjà dit d'utiliser Glassfish 4.1 (https://glassfish.java.net/download-archive.html