2010-03-23 31 views
0

我使用的是glassfish 2.1.1。我看過一個神祕的http/web服務調用處理。它接收一個http請求由兩個不同的線程處理。has glassfish 2.1.1處理http請求並處理它們兩次的錯誤?

http基本認證後,第一個線程更快。堅持一些數據結束,但玻璃魚內部寫入響應失敗。

第二個線程失敗,因爲它試圖持續相同的數據和有(唯一的)約束的故障。第二個線程的響應(失敗)已交付給客戶端。

我不不會討論與唯一約束失敗的行爲。我改進了webservice,因此它可以更好地處理這個問題,因爲它可能隨時發生,客戶端再次發送ws調用。

但我認爲,glassfish 2.1.1有一個錯誤處理http請求。有沒有什麼已知的問題?我犯了一個錯誤嗎?

[#|2010-03-22T10:40:54.150+0000|INFO|sun-appserver2.1|javax.enterprise.system.core|_ThreadID=10;_ThreadName=main;|Starting Sun GlassFish Enterprise Server v2.1.1 ((v2.1 Patch06)(9.1_02 Patch12)) (build b31g-fcs) ...|#] 
... 
[#|2010-03-22T11:18:44.220+0000|FINE|sun-appserver2.1|mypackage.module.security.auth.realm.YaJdbcRealm|_ThreadID=26;_ThreadName=httpSSLWorkerThread-8080-1;ClassName=mypackage.module.security.auth.realm.YaJdbcRealm;MethodName=authenticate;_RequestID=4d8f23e9-5106-4d64-b865-1638d7075bde;|JDBC authenticate successful for: 8002 groups:[roleUser]|#] 

[#|2010-03-22T11:18:44.220+0000|FINE|sun-appserver2.1|mypackage.module.security.auth.login.YaJdbcLoginModule|_ThreadID=26;_ThreadName=httpSSLWorkerThread-8080-1;ClassName=mypackage.module.security.auth.login.YaJdbcLoginModule;MethodName=authenticate;_RequestID=4d8f23e9-5106-4d64-b865-1638d7075bde;|JDBC login succeeded for: 8002 groups:[roleUser]|#] 

[#|2010-03-22T11:18:44.220+0000|FINE|sun-appserver2.1|mypackage.module.security.auth.realm.YaJdbcRealm|_ThreadID=39;_ThreadName=httpSSLWorkerThread-8080-2;ClassName=mypackage.module.security.auth.realm.YaJdbcRealm;MethodName=authenticate;_RequestID=4ca7e3e5-5ab7-41ec-b3c9-d9260b1164c9;|JDBC authenticate successful for: 8002 groups:[roleUser]|#] 

[#|2010-03-22T11:18:44.220+0000|FINE|sun-appserver2.1|mypackage.module.security.auth.login.YaJdbcLoginModule|_ThreadID=39;_ThreadName=httpSSLWorkerThread-8080-2;ClassName=mypackage.module.security.auth.login.YaJdbcLoginModule;MethodName=authenticate;_RequestID=4ca7e3e5-5ab7-41ec-b3c9-d9260b1164c9;|JDBC login succeeded for: 8002 groups:[roleUser]|#] 

[#|2010-03-22T11:18:44.220+0000|FINE|sun-appserver2.1|mypackage.MyWebService|_ThreadID=26;_ThreadName=httpSSLWorkerThread-8080-1;ClassName=mypackage.MyWebService;MethodName=enqueue;_RequestID=4d8f23e9-5106-4d64-b865-1638d7075bde;|Received WebService call to enqueue() from client 59|#] 

[#|2010-03-22T11:18:44.220+0000|FINE|sun-appserver2.1|mypackage.MyWebService|_ThreadID=39;_ThreadName=httpSSLWorkerThread-8080-2;ClassName=mypackage.MyWebService;MethodName=enqueue;_RequestID=4ca7e3e5-5ab7-41ec-b3c9-d9260b1164c9;|Received WebService call to enqueue() from client 59|#] 
... 
[#|2010-03-22T11:18:44.267+0000|FINE|sun-appserver2.1|mypackage.MyWebService|_ThreadID=26;_ThreadName=httpSSLWorkerThread-8080-1;ClassName=mypackage.MyWebService;MethodName=enqueue;_RequestID=4d8f23e9-5106-4d64-b865-1638d7075bde;|Successfully finished WebService call to enqueue() from client 59|#] 

[#|2010-03-22T11:18:44.329+0000|WARNING|sun-appserver2.1|javax.enterprise.system.container.ejb|_ThreadID=26;_ThreadName=httpSSLWorkerThread-8080-1;_RequestID=4d8f23e9-5106-4d64-b865-1638d7075bde;|invocation error on ejb endpoint MyWebService at /MyWebserviceService/MyWebservice : com.sun.xml.stream.XMLStreamException2 
javax.xml.ws.WebServiceException: com.sun.xml.stream.XMLStreamException2 
    at com.sun.xml.ws.encoding.StreamSOAPCodec.encode(StreamSOAPCodec.java:111) 
    at com.sun.xml.ws.encoding.SOAPBindingCodec.encode(SOAPBindingCodec.java:281) 
    at com.sun.xml.ws.transport.http.HttpAdapter.encodePacket(HttpAdapter.java:320) 
    at com.sun.xml.ws.transport.http.HttpAdapter.access$100(HttpAdapter.java:93) 
    at com.sun.xml.ws.transport.http.HttpAdapter$HttpToolkit.handle(HttpAdapter.java:454) 
    at com.sun.xml.ws.transport.http.HttpAdapter.handle(HttpAdapter.java:244) 
    at com.sun.xml.ws.transport.http.servlet.ServletAdapter.handle(ServletAdapter.java:135) 
    at com.sun.enterprise.webservice.Ejb3MessageDispatcher.handlePost(Ejb3MessageDispatcher.java:113) 
    at com.sun.enterprise.webservice.Ejb3MessageDispatcher.invoke(Ejb3MessageDispatcher.java:87) 
    at com.sun.enterprise.webservice.EjbWebServiceServlet.dispatchToEjbEndpoint(EjbWebServiceServlet.java:231) 
    at com.sun.enterprise.webservice.EjbWebServiceServlet.service(EjbWebServiceServlet.java:157) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:847) 
    at com.sun.enterprise.web.AdHocContextValve.invoke(AdHocContextValve.java:114) 
    at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:648) 
    at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:593) 
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:587) 
    at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:87) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:222) 
    at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:648) 
    at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:593) 
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:587) 
    at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1093) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:166) 
    at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:648) 
    at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:593) 
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:587) 
    at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1093) 
    at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:291) 
    at com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.invokeAdapter(DefaultProcessorTask.java:666) 
    at com.sun.enterprise.web.connector.grizzly.comet.CometEngine.executeServlet(CometEngine.java:616) 
    at com.sun.enterprise.web.connector.grizzly.comet.CometEngine.handle(CometEngine.java:362) 
    at com.sun.enterprise.web.connector.grizzly.comet.CometAsyncFilter.doFilter(CometAsyncFilter.java:84) 
    at com.sun.enterprise.web.connector.grizzly.async.DefaultAsyncExecutor.invokeFilters(DefaultAsyncExecutor.java:189) 
    at com.sun.enterprise.web.connector.grizzly.async.DefaultAsyncExecutor.interrupt(DefaultAsyncExecutor.java:164) 
    at com.sun.enterprise.web.connector.grizzly.async.AsyncProcessorTask.doTask(AsyncProcessorTask.java:92) 
    at com.sun.enterprise.web.connector.grizzly.TaskBase.run(TaskBase.java:264) 
    at com.sun.enterprise.web.connector.grizzly.ssl.SSLWorkerThread.run(SSLWorkerThread.java:106) 
Caused by: com.sun.xml.stream.XMLStreamException2 
    at com.sun.xml.stream.writers.XMLStreamWriterImpl.flush(XMLStreamWriterImpl.java:416) 
    at com.sun.xml.ws.encoding.StreamSOAPCodec.encode(StreamSOAPCodec.java:109) 
    ... 36 more 
Caused by: ClientAbortException: java.nio.channels.ClosedChannelException 
    at org.apache.coyote.tomcat5.OutputBuffer.doFlush(OutputBuffer.java:385) 
    at org.apache.coyote.tomcat5.OutputBuffer.flush(OutputBuffer.java:351) 
    at org.apache.coyote.tomcat5.CoyoteOutputStream.flush(CoyoteOutputStream.java:176) 
    at com.sun.xml.stream.writers.UTF8OutputStreamWriter.flush(UTF8OutputStreamWriter.java:153) 
    at com.sun.xml.stream.writers.XMLStreamWriterImpl.flush(XMLStreamWriterImpl.java:414) 
    ... 37 more 
Caused by: java.nio.channels.ClosedChannelException 
    at sun.nio.ch.SocketChannelImpl.ensureWriteOpen(SocketChannelImpl.java:126) 
    at sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:324) 
    at com.sun.enterprise.web.connector.grizzly.OutputWriter.flushChannel(OutputWriter.java:91) 
    at com.sun.enterprise.web.connector.grizzly.OutputWriter.flushChannel(OutputWriter.java:66) 
    at com.sun.enterprise.web.connector.grizzly.SocketChannelOutputBuffer.flushChannel(SocketChannelOutputBuffer.java:172) 
    at com.sun.enterprise.web.connector.grizzly.async.AsynchronousOutputBuffer.flushChannel(AsynchronousOutputBuffer.java:81) 
    at com.sun.enterprise.web.connector.grizzly.SocketChannelOutputBuffer.flushBuffer(SocketChannelOutputBuffer.java:205) 
    at com.sun.enterprise.web.connector.grizzly.async.AsynchronousOutputBuffer.flushBuffer(AsynchronousOutputBuffer.java:114) 
    at com.sun.enterprise.web.connector.grizzly.SocketChannelOutputBuffer.flush(SocketChannelOutputBuffer.java:183) 
    at com.sun.enterprise.web.connector.grizzly.async.AsynchronousOutputBuffer.flush(AsynchronousOutputBuffer.java:104) 
    at com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.action(DefaultProcessorTask.java:1100) 
    at org.apache.coyote.Response.action(Response.java:237) 
    at org.apache.coyote.tomcat5.OutputBuffer.doFlush(OutputBuffer.java:381) 
    ... 41 more 
|#] 

[#|2010-03-22T11:18:44.376+0000|WARNING|sun-appserver2.1|oracle.toplink.essentials.session.file:/mygf-211/domains/mydomain/applications/j2ee-apps/myear/myjar-myPu|_ThreadID=39;_ThreadName=httpSSLWorkerThread-8080-2;_RequestID=4ca7e3e5-5ab7-41ec-b3c9-d9260b1164c9;| 
Local Exception Stack: 
Exception [TOPLINK-4002] (Oracle TopLink Essentials - 2.1 (Build b31g-fcs (10/19/2009))): oracle.toplink.essentials.exceptions.DatabaseException 
Internal Exception: com.microsoft.sqlserver.jdbc.SQLServerException: Eine Zeile mit doppeltem Schlüssel kann in das 'dbo.MY_TABLE'-Objekt mit dem eindeutigen 'MY_INDEX'-Index nicht eingefügt werden. 

回答

1

我做了快速搜索在https://glassfish.dev.java.net/issues/query.cgi,並沒有看到那個樣子的,你遇到這裏的情況副本...雖然我可能已經錯過了它的報告。

你或許應該將此問題報告給了GlassFish開發者,通過他們的問題跟蹤:https://glassfish.dev.java.net/servlets/ProjectIssues

你可能誤解了日誌或做錯了你的代碼,但是這是真的很難說給你在這個問題上都給予信息的數量有限。但是,所以並沒有真正的工作爲一個問題分析/解決系統。 GF問題跟蹤器是一個更好的選擇。

+0

謝謝了很多。我創建了一個問題:https://glassfish.dev.java.net/issues/show_bug.cgi?id = 11720 – marabol 2010-03-24 11:03:10