Консоль администратора Glassfish выбрасывает java.ленг.IllegalStateException при создании пула JDBC
неделю назад я скачал Glassfish 4.1. Сделал установку zip. Попытка использовать консоль администратора для создания пула соединений JDBC. Получено это сообщение об ошибке:
java.lang.IllegalStateException: getOutputStream() has already been called for this response
много ссылок на эту ошибку. Многие люди заявили, что"спросили и ответили". Но я не могу найти ни одной ссылки на эту проблему, не говоря уже о решении.
но если кто-то считает, что на него ответили, обязательно добавьте ссылку на решение этой проблемы: New установка. Ничего не сделал, но открыл консоль и попытался создать новый пул соединений JDBC.
Resource Type: javax.sql.DataSource.
Vendor: MySql.
Я сохранил mysql-connector-java-5.1.35.банка в glassfish4glassfishlib
вот самое близкое к решению, которое я нашел. Но это было для GF v3.
я, наконец, отследил фактическую проблему в моем домене.XML:
-Dorg.glassfish.web.rfc2109_cookie_names_enforced=false
отсутствовал в домене.xml, созданный asupgrade. Я просто добавил его в домен.xml jvm-параметры и GF v3 теперь работает, как ожидалось. Добавлено:<jvm-options>-Dorg.glassfish.web.rfc2109_cookie_names_enforced=false</jvm-options>
пробовал. Не получилось. (Я вставил запись журнала GF, чтобы показать, что рекомендуемая строка добавлена в домен.xml GF используется при запуске.)
Я попытался выкопать домен.xml с моего старого сервера v3 и использование его в новом v4. Это не сработало.
другие вопросы, связанные с моим сообщением об исключении, все связанные с его получением с развернутым приложением-в основном сервлеты. Но это чистый сервер. Нет приложений установлена.
я нашел много ссылок на людей, работающих над этим исключением как ошибка GF. Большинство уже давно. Никто не дал обходного пути или даже не сказал, что они когда-либо решали его.
может ли кто-нибудь предложить решение?
Или дайте мне знать, если это просто ошибка в Oracle решили не исправлять?
Или знаете, где я могу найти помощь? Это убивает меня.
в случае, если это помогает, вот журнал GF для чистого запуска (с вставкой jvm в домене.XML.) Он также показывает трассировка стека для неудачной попытки создания пула соединений JDBC.
примечание: Я вытащил все записи журнала [INFO]. И [предупреждение] записи, которые остались, похоже, связаны с гризли.
[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)
]]
8 ответов
согласно следующим билетам JIRA:
- не удается создать ресурс JDBC или пул соединений в консоли администратора
- не удается создать пул соединений JDBC
это все еще нерешенная проблема. Даже если мы можем ожидать таких вещей с Oracle отказалась от коммерческой поддержки Glassfish, это все еще ужасно, что такая базовая функциональность не работает.
однако, если вы действительно отчаянные, есть очень неприятный обходной путь. Glassfish прибывает с предопределенным бассейном JDBC DerbyPool что вам, вероятно, не понадобится, если вы не имеете дело с Java DB. Не стесняйтесь редактировать его, изменив имя класса источника данных на com.mysql.jdbc.jdbc2.optional.MysqlDataSource
и настройка дополнительных свойств для указания на экземпляр сервера MySQL. Перед выполнением этого взлома убедитесь, что вы поместили MySQL connector в папку lib Glassfish.
обновление
просто заметил, что есть версия Glassfish, которая была исправлена, она называется Payara и доступна для скачивания здесь. Согласно документации, это клон GlassFish 4.1, исправленный и дополнительно разработанный сообществом.
Я только что вернулся к 4.1.0 из 4.1.1-отлично работает. Действительно безумная ошибка GlassFish : (
можно управлять соединениями JDBC с asadmin
utility - AFAIK admin GUI - это просто интерфейс для него.
на asadmin
использование описано здесь:
https://docs.oracle.com/cd/E26576_01/doc.312/e24928/jdbc.htm#GSADG00420
Э. Г.
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
спасибо,
имеют ту же проблему, и это, безусловно, заставит меня выбрать другие серверы приложений, почему бы не tomee, jboss, wildfly,...
во всяком случае, вот другой workarround, просто вставьте этот мир xml в домен.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>
надеюсь, что поможет
Если вы используете Oracle просто отредактируйте файл ..glassfish / Домены / domain1 / config / домен.XML. Найдите тег resources и добавьте:
<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>
Не забудьте скопировать драйвер jdbc в lib и изменить URL-адрес в соответствии с вашими потребностями. Затем запустите glassfish, перейдите в пулы соединений JDBC и проверьте соединение.
Я должен был сделать это в своем задании и получал ту же ошибку при создании ресурсов JDBC (исключение среды выполнения Java) и пулов соединений JDBC (java.ленг.IllegalStateException: getOutputStream() уже был вызван для этого ответа)
позже я понял, что это багги версия, и наш профессор уже сказал нам использовать Glassfish 4.1 (https://glassfish.java.net/download-archive.html) и все работало нормально. Если вам не нужно использовать 4.1.1. пожалуйста, перейдите на 4.1 вместо этого.