一周前,我下载了Glassfish 4.1。进行了zip安装。尝试使用管理控制台创建JDBC连接池。收到此错误消息:
java.lang.IllegalStateException: getOutputStream() has already been called for this response
关于该错误的大量参考。许多人宣布它为“要求并回答”。但是我找不到任何关于该问题的参考,更不用说解决方案了。
但是,如果有人认为已解决问题,请确保添加指向该问题的解决方案的链接:全新安装。除了打开控制台外,什么都没有做,并尝试创建一个新的JDBC连接池。
Resource Type: javax.sql.DataSource. Vendor: MySql.
我已经将mysql-connector-java-5.1.35.jar存储在\ glassfish4 \ glassfish \ lib中
这是我找到的最接近解决方案的东西。但这是针对GF v3的。
我终于在我的domain.xml中找到了实际的问题: -Dorg.glassfish.web.rfc2109_cookie_names_enforced=false asupgrade创建的domain.xml中丢失了。我刚刚将其添加到domain.xml jvm-options中,GF v3现在可以正常工作了。添加: <jvm-options>-Dorg.glassfish.web.rfc2109_cookie_names_enforced=false</jvm- options>
-Dorg.glassfish.web.rfc2109_cookie_names_enforced=false
<jvm-options>-Dorg.glassfish.web.rfc2109_cookie_names_enforced=false</jvm- options>
试过了。没用 (我粘贴了GF日志条目,以显示推荐的行已添加到启动时使用的domain.xml GF中。)
我尝试从旧的v3服务器中挖掘domain.xml,并在新的v4中使用它。那没用。
涉及我的Exception消息的其他问题都与通过已部署的应用程序获取它有关-大多数是servlet。但这是一台干净的服务器。尚未安装任何应用程序。
我发现很多与作为GF错误的Exception一起工作的人的链接。大多数是前一阵子。没有人提供解决方法,甚至没有说他们已经解决了。
谁能提供解决方案? 还是让我知道这是否只是Oracle决定不修复的错误? 还是知道在哪里可以找到帮助?这真杀了我。
如果有帮助,可以使用GF日志进行干净的启动(在domain.xml中插入jvm)。它还显示失败的创建JDBC连接池的堆栈跟踪。
注意:我拔出所有[INFO]日志条目。剩下的[WARNING]条目似乎都与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) ]]
根据以下JIRA门票:
这仍然是一个未解决的问题。尽管自从Oracle放弃了对Glassfish的商业支持以来,我们可以预料到这样的事情,但这种基本功能不起作用仍然令人恐惧。
但是,如果您真的很绝望,则有一个非常讨厌的解决方法。Glassfish附带了一个预定义的JDBC池 DerbyPool ,您可能不需要它,除非您要处理Java DB。通过将Datasource类名更改为,com.mysql.jdbc.jdbc2.optional.MysqlDataSource并调整其他属性以指向MySQL Server实例,可以自由地对其进行编辑。在进行此黑客攻击之前,请确保将MySQL连接器放到Glassfish的lib文件夹中。
com.mysql.jdbc.jdbc2.optional.MysqlDataSource
更新
只是注意到有一个修补过的Glassfish版本,称为Payara,可在此处下载。根据文档,它是GlassFish 4.1克隆,由社区修补和进一步开发。