web-dev-qa-db-ja.com

JDBCプールの作成時にGlassfish管理コンソールがJava.lang.IllegalStateExceptionをスローする

1週間前にGlassfish 4.1をダウンロードしました。 Zipをインストールしました。管理コンソールを使用してJDBC接続プールを作成しようとしました。このエラーメッセージを受け取りました:

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

そのエラーへの多くの参照。多くの人がそれを「質問と回答」と宣言しました。しかし、解決策は言うまでもなく、その問題への単一の参照は見つかりません。

しかし、誰かが答えられたと信じているなら、この問題の解決策へのリンクを必ず追加してください:新規インストール。コンソールを開いて、新しいJDBC接続プールを作成しようとしました。

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

Myglass-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>

それを試しました。うまくいきませんでした。 (推奨される行がdomain.xmlに追加されることを示すためにGFログエントリを貼り付けましたGF起動時に使用されます。)

古いv3サーバーからdomain.xmlを掘り出して、新しいv4で使用してみました。それはうまくいきませんでした。

例外メッセージに関連するその他の質問はすべて、デプロイされたアプリ(ほとんどがサーブレット)で取得することに関連しています。しかし、これはクリーンなサーバーです。アプリはインストールされていません。

GFバグとしてこの例外に取り組んでいる人々への多くのリンクを見つけました。ほとんどはしばらく前です。回避策を与えたり、解決したことはありませんでした。

誰でも解決策を提供できますか?
または、これがオラクルが修正しないことを決定した単なるバグかどうかを教えてください。
または私がどこで助けを見つけることができるか知っていますか?これは私を殺している。

ここで役立つ場合は、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)
]]
32
George

次のJIRAチケットによると:

これはまだ未解決の問題です。 OracleはGlassfishの商用サポートを放棄したため なので、そのようなことが期待できますが、そのような基本的な機能が動作しないことは恐ろしいことです。

ただし、本当に必死なら、非常に厄介な回避策があります。 Glassfishには、定義済みのJDBCプールが付属していますDerbyPoolは、Java DB。Datasource classnameをcom.mysql.jdbc.jdbc2.optional.MysqlDataSourceおよび追加のプロパティを調整してMySQL Serverインスタンスを指すこのハックを行う前に、GlassfishのlibフォルダーにMySQLコネクターを配置してください。

[〜#〜] update [〜#〜]

パッチが適用されたGlassfishバージョンがあり、Payaraと呼ばれ、ダウンロードできる here があることに注意してください。ドキュメントによると、これはGlassFish 4.1クローンであり、コミュニティによってパッチが適用され、さらに開発されています。

30
Miljen Mikic

4.1.1から4.1.0にロールバックしました-正常に動作します。 GlassFishの本当に非常識なバグ:(

18
a.parfenov

asadminユーティリティを使用してJDBC接続を管理することができます-AFAIK管理GUIはそのフロントエンドにすぎません。

asadminの使用法は次のとおりです。 https://docs.Oracle.com/cd/E26576_01/doc.312/e24928/jdbc.htm#GSADG0042

例えば。

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

乾杯、

8
JN01

同じ問題があり、これは確かに他のアプリケーションサーバーを選択するようになります、なぜtomee、jboss、wildfly、...

とにかく、ここに他の回避策があります、この平和のxmlをdomain.xmlに貼り付けてください(他の接続プールの間)

<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>

その助けを願っています

8
Pascal Fares

これは兄弟が言及されているようにGlassFish 4.1.1のバグでしたが、GlassFish 4.1.2で解決されたため、単純にダウンロードできます here 、および詳細は- ここ

4
Anas

Oracleを使用している場合は、ファイル..glassfish/domains/domain1/config/domain.xmlを編集するだけです。リソースタグを探して追加します。

<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>

Libのjdbcドライバーをコピーし、URLを必要に応じて変更することを忘れないでください。次にglassfishを起動し、JDBC接続プールに移動して接続をテストします。

3
Fabian Agudelo

割り当てでこれを行う必要があり、JDBCリソース(Javaランタイム例外)およびJDBC接続プール(Java.lang.IllegalStateException:getOutputStream()がこの応答に対して既に呼び出されています)の作成中に同じエラーが発生していました

後でバグだらけのバージョンであることに気づき、教授は既にGlassfish 4.1( https://glassfish.Java.net/download-archive.html )を使用するように言っていたので、すべて正常に機能しました。 4.1.1を使用する必要がない場合。代わりに4.1に進んでください。

3
VIshu Kamble

ナイトリービルドには修正が含まれています!ナイトリービルドはOracleからダウンロードできます。

2
tury_nguyen