2015-10-09 16 views
31

Tydzień temu pobrałem Glassfish 4.1. Zip zainstalował. Podjęto próbę użycia Konsoli administracyjnej do utworzenia puli połączeń JDBC. Otrzymano ten komunikat o błędzie:Konsola administracyjna Glassfish zgłasza wyjątek java.lang.IllegalStateException podczas tworzenia puli JDBC

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

Wiele odnośników do tego błędu. Wiele osób zadeklarowało, że "odpowiedziano na pytanie" & ". Ale nigdzie nie mogę znaleźć żadnego odniesienia do tego problemu, nie mówiąc już o rozwiązaniu.

Jeśli jednak ktoś uważa, że ​​odpowiedź na to pytanie, należy dodać łącze do rozwiązania tego problemu: Nowa instalacja. Nie zrobił nic, tylko otwórz konsolę i spróbuj utworzyć nową pulę połączeń JDBC.

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

Mam przechowywane mysql-connector-java-5.1.35.jar w \ glassfish4 \ GlassFish \ lib

Oto najbliższą rzeczą do rozwiązania znalazłem. Ale to było dla GF v3.

I wreszcie nie wytropił rzeczywisty problem w moim domain.xml: -Dorg.glassfish.web.rfc2109_cookie_names_enforced=false brakowało w domain.xml stworzonej przez asupgrade. Właśnie dodałem go do jvm-options domain.xml, a GF v3 działa teraz zgodnie z oczekiwaniami. Dodano:
<jvm-options>-Dorg.glassfish.web.rfc2109_cookie_names_enforced=false</jvm-options>

Tried to. Nie działa. (Wkleiłem wpis w dzienniku GF, aby pokazać, że zalecana linia jest dodawana do pliku domain.xml GF używanego przy starcie).

Próbowałem wykopać plik domain.xml z mojego starego serwera v3 i użyć go w nowym v4. To nie zadziałało.

Inne pytania dotyczące mojego komunikatu o wyjątku związane są z uzyskaniem go za pomocą wdrożonej aplikacji - głównie serwletów. Ale to jest czysty serwer. Żadne aplikacje nie zostały zainstalowane.

Znalazłem wiele linków do osób pracujących nad tym Wyjątkiem jako błąd GF. Większość jest dawno temu. Żaden nie dał obejścia, ani nawet nie powiedział, że kiedykolwiek go rozwiązali.

Czy ktoś może zaoferować rozwiązanie?
Albo daj mi znać, jeśli to tylko błąd, który Oracle postanowił nie naprawić?
Czy wiesz, gdzie mogę znaleźć pomoc? To mnie zabija.

Jeśli pomaga tutaj dziennik GF dla czystego rozruchu (z wstawką jvm w domenie .xml.) Pokazuje również ślad stosu dla nieudanej próby utworzenia puli połączeń JDBC.

UWAGA: Wyciągnąłem wszystkie wpisy w dzienniku [INFO]. A wszystkie pozostałe wpisy [OSTRZEŻENIE] wydają się być związane z 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) 
]] 
+0

czynienia także Obawiam się, że jest to nadal nierozwiązany problem: https://java.net/jira/browse/GLASSFISH-21353. Ponieważ Oracle porzuciło komercyjne wsparcie Glassfish, można się tego spodziewać, ale jest to tak podstawowa funkcjonalność, która sprawia, że bardzo rozczarowany –

Odpowiedz

29

Zgodnie z następującymi biletów Jira:

to wciąż nierozwiązana kwestia.Mimo że możemy spodziewać się takich rzeczy od Oracle abandoned a commercial support for Glassfish, wciąż jest straszne, że taka podstawowa funkcjonalność nie działa.

Jednakże, jeśli jesteś naprawdę zdesperowany, istnieje bardzo nieprzyjemne obejście. Glassfish przybywa z predefiniowaną pulą JDBC DerbyPool, której prawdopodobnie nie będziesz potrzebować, chyba że masz do czynienia z Java DB. Możesz go edytować, zmieniając nazwę klasy Datasource na com.mysql.jdbc.jdbc2.optional.MysqlDataSource i dostosowując dodatkowe właściwości, aby wskazywały na instancję serwera MySQL. Zanim zrobisz ten hack, upewnij się, że umieściłeś złącze MySQL w folderze lib Glassfish.

UPDATE

Właśnie zauważyłem, że istnieje GlassFish wersja, która została załatana, nazywa Payara i dostępny do pobrania here. Zgodnie z dokumentacją jest to klon GlassFish 4.1, poprawiany i rozwijany przez społeczność.

+0

To może być nieprzyjemne, ale dla mnie wydaje się eleganckie.Niestety potrzebuję również fabryki połączeń JMS (myślę, że twoja sugestia rozwiązuje to również, ponieważ istnieje jms/_defaultConnectionFactory) ALE ... wtedy potrzebuję wartość docelową miejsca docelowego JMS, dla którego nic nie jest skonfigurowane i przy użyciu konsoli administratora, aby utworzyć jeden rzut klasy java.lang.RuntimeException. Więc jeśli problem polega na korzystaniu z GF 4 w/JMS, nadal nie jest on rozwiązany. – George

+0

@George Pod drugim biletem JIRA znajduje się komentarz "Pamiętaj, że nie tylko Pula połączeń JDBC jest zepsuta, z powodu tego problemu nie możemy utworzyć żadnego z następujących zasobów ..". Niestety wygląda na to, że jest to bardzo poważny problem. –

+0

@George Trudno mi to powiedzieć, odkąd spędziłem wiele cudownych lat z Glassfish, ale czy rozważałeś przejście na np. Dzika Mucha ? Bóg wie, kiedy to się naprawi. Spójrz na ten komentarz pod hasłem: "Przykro mi, że nie odpowiedziałem wcześniej (* byłem zajęty projektami szkolnymi i egzaminami końcowymi * ..?) –

7

mają ten sam problem, a to z pewnością sprawi mi wybrać inne serwery aplikacyjne, dlaczego nie tomee, JBoss, JBoss Application Server, ...

Zresztą tutaj jest inny workarround, po prostu wklej ten spokój w xml domain.xml (między inni puli połączeń)

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

nadzieja, że ​​pomoże

+0

Dziękuję wszystkim, ale przyjąłem ostatnią sugestię Przeniesiono mnie do WildFly Kochałem podejście Glassfish, a Wildfly jest strasznie nie-user-freindly. musiałem się poddać, potrzebowałem JMS ... i mnie nienawidzę "obejść. PS: Próbowałem Payara po drodze. Myślałem, że to lepsze niż Glassfish, ale też nie mogłem tam znaleźć pomocy. Za młody jestem. – George

+0

@George Myślę, że możesz oznaczyć tę jako zaakceptowaną odpowiedź, ponieważ działa ona dla twojego pytania. – orezvani

3

Jeśli używasz Oracle tylko edytować ..glassfish plik/domains/domena1/config/domain.xml. Sprawdzić znacznika zasobów i dodać:

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

Nie zapomnij skopiować sterownik JDBC w lib i zmień adres URL do swoich potrzeb. Następnie uruchom glassfish, przejdź do puli połączeń JDBC i przetestuj połączenie.

+0

Fabian, dzięki za pomoc, ale ja jestem za późno.Zrobiłem wcześniejszą sugestię, aby przenieść się do wildfly i nie ma odwrotu. Mam nadzieję, że to pomaga innym. Merrry Christmas – George

8

Możliwe jest zarządzanie połączeniami JDBC za pomocą narzędzia asadmin - Interfejs GUI administratora AFAIK to tylko frontend do niego.

Zastosowanie asadmin opisano poniżej: https://docs.oracle.com/cd/E26576_01/doc.312/e24928/jdbc.htm#GSADG00420

Np

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 

Cheers,

+0

Oto przykład, który działa dla mnie: asadmin create-jdbc-connection-pool --datasourceclassname oracle.jdbc.pool.OracleDataSource --restype javax.sql.DataSource --property portNumber = 1521: password = supergeheim: user = onlineshop_user: serverName = localhost Onlineshop // wartości nie mają znaczenia tak bardzo, jak nie ma wyjątków w konsoli administracyjnej, jeśli edytujesz źródło danych. –

2

Nocna kompilacja zawiera poprawkę! Ty możesz pobrać nightly build z Oracle

+0

czy mógłbyś podać link? czy to działa dla ciebie? – moldovean

+0

@moldovean http://download.oracle.com/glassfish/5.0/nightly/index.html –

3

musiałem zrobić to w moim przeznaczeniem i był już ten sam błąd przy tworzeniu JDBC zasoby (wyjątek środowiska wykonawczego Java) i pule połączeń JDBC (java.lang.IllegalStateException: getOutputStream() został już wywołany dla tej odpowiedzi)

Później zorientowałem się, że jest to wersja błędna, a nasz prof. powiedział już nam, aby używać Glassfish 4.1 (https://glassfish.java.net/download-archive.html) i wszystko działało dobrze. Jeśli nie musisz używać 4.1.1. zamiast tego proszę przejść do wersji 4.1.

17

Właśnie wróciłem do wersji 4.1.0 z 4.1.1 - działa dobrze.Naprawdę szalony bug z GlassFish :(

+0

To jest najlepsza odpowiedź – bademba

+0

dzięki :) pracował dla mnie też – moldovean

+0

Dzięki za udostępnienie !!! –

3

To był błąd w GlassFish 4.1.1 jak bracia zostały wymienione, ale został rozwiązany w GlassFish 4.1.2 więc można po prostu ściągnąć do niego here i więcej informacji można znaleźć here

+0

Powiedziałbym, że jest to najlepsza odpowiedź i najodpowiedniejsze rozwiązanie. Po prostu zaktualizuj swój GlassFish. W moim przypadku pomogło (4.1.1 -> 4.1.2). – disable1992

Powiązane problemy