2014-09-25 85 views
0

我有一個在Java SE上運行的類,每秒都會通過線程調用它。一切正常。通過AJAX調用我的WebService更經常會導致服務器故障

但是,當我將其轉換爲WebService並每秒通過AJAX調用它時,我都會遇到SOAP服務器故障。但是,如果我每6秒鐘呼叫一次,一切都很好。

我以前撥打的方法無法執行此項工作。它實際上成功讀取和解析XML,但是當轉換爲WebService時,XML解析會崩潰。

當更頻繁地調用WebService時,會導致錯誤的原因是什麼?

這裏是扔在服務器端異常:

[Fatal Error] :1:7: A pseudo attribute name is expected. 
Sep 25, 2014 3:22:46 PM com.sun.xml.internal.ws.server.sei.TieHandler createResponse 
SEVERE: null 
java.lang.NullPointerException 
    at Targets.XML.TESXMLStringToArrays(XML.java:209) 
    at Navires.Vessel.allVessels(Vessel.java:137) 
    at sun.reflect.GeneratedMethodAccessor11.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
    at java.lang.reflect.Method.invoke(Unknown Source) 
    at sun.reflect.misc.Trampoline.invoke(Unknown Source) 
    at sun.reflect.GeneratedMethodAccessor7.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
    at java.lang.reflect.Method.invoke(Unknown Source) 
    at sun.reflect.misc.MethodUtil.invoke(Unknown Source) 
    at sun.reflect.GeneratedMethodAccessor6.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
    at java.lang.reflect.Method.invoke(Unknown Source) 
    at com.sun.xml.internal.ws.api.server.MethodUtil.invoke(Unknown Source) 
    at com.sun.xml.internal.ws.api.server.InstanceResolver$1.invoke(Unknown Source) 
    at com.sun.xml.internal.ws.server.InvokerTube$2.invoke(Unknown Source) 
    at com.sun.xml.internal.ws.server.sei.SEIInvokerTube.processRequest(Unknown Source) 
    at com.sun.xml.internal.ws.api.pipe.Fiber.__doRun(Unknown Source) 
    at com.sun.xml.internal.ws.api.pipe.Fiber._doRun(Unknown Source) 
    at com.sun.xml.internal.ws.api.pipe.Fiber.doRun(Unknown Source) 
    at com.sun.xml.internal.ws.api.pipe.Fiber.runSync(Unknown Source) 
    at com.sun.xml.internal.ws.server.WSEndpointImpl$2.process(Unknown Source) 
    at com.sun.xml.internal.ws.transport.http.HttpAdapter$HttpToolkit.handle(Unknown Source) 
    at com.sun.xml.internal.ws.transport.http.HttpAdapter.handle(Unknown Source) 
    at com.sun.xml.internal.ws.transport.http.server.WSHttpHandler.handleExchange(Unknown Source) 
    at com.sun.xml.internal.ws.transport.http.server.WSHttpHandler.handle(Unknown Source) 
    at com.sun.net.httpserver.Filter$Chain.doFilter(Unknown Source) 
    at sun.net.httpserver.AuthFilter.doFilter(Unknown Source) 
    at com.sun.net.httpserver.Filter$Chain.doFilter(Unknown Source) 
    at sun.net.httpserver.ServerImpl$Exchange$LinkHandler.handle(Unknown Source) 
    at com.sun.net.httpserver.Filter$Chain.doFilter(Unknown Source) 
    at sun.net.httpserver.ServerImpl$Exchange.run(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
    at java.lang.Thread.run(Unknown Source) 

這裏是扔在客戶端的例外:

Sep 25, 2014 3:22:39 PM org.apache.catalina.core.StandardWrapperValve invoke 
SEVERE: Servlet.service() for servlet [jsp] in context with path [/Map] threw exception [An exception occurred processing JSP page /targets.jsp at line 17 

14: 
15: Vessel M = V.getVesselPort() ; 
16: 
17: List<Vessel_Type> vessel =M.allVessels(); 
18: 
19: int j =0 ; 
20: k="{"+'"'+"vessels"+'"'+":[" ; 


Stacktrace:] with root cause 
com.sun.xml.internal.ws.fault.ServerSOAPFaultException: Client received SOAP Fault from server: java.lang.NullPointerException Please see the server log to find more detail regarding exact cause of the failure. 
    at com.sun.xml.internal.ws.fault.SOAP11Fault.getProtocolException(Unknown Source) 
    at com.sun.xml.internal.ws.fault.SOAPFaultBuilder.createException(Unknown Source) 
    at com.sun.xml.internal.ws.client.sei.StubHandler.readResponse(Unknown Source) 
    at com.sun.xml.internal.ws.db.DatabindingImpl.deserializeResponse(Unknown Source) 
    at com.sun.xml.internal.ws.db.DatabindingImpl.deserializeResponse(Unknown Source) 
    at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(Unknown Source) 
    at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(Unknown Source) 
    at com.sun.xml.internal.ws.client.sei.SEIStub.invoke(Unknown Source) 
    at com.sun.proxy.$Proxy35.allVessels(Unknown Source) 
    at org.apache.jsp.targets_jsp._jspService(targets_jsp.java:90) 
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:725) 
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432) 
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:391) 
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:335) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:725) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106) 
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) 
    at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:610) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:534) 
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1081) 
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:658) 
    at org.apache.coyote.http11.Http11NioProtocol$Http11ConnectionHandler.process(Http11NioProtocol.java:222) 
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1566) 
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1523) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 
    at java.lang.Thread.run(Unknown Source) 

它常有發生,當一個客戶端調用Web服務。但是,當2個客戶端調用Web服務時,它立即在服務器和客戶端崩潰。這些異常在執行Ajax調用時引發。

編輯:添加詳細信息。

問題來自應用程序體系結構。

這裏是它如何工作的:

1)服務器將打開一個套接字連接到另一臺服務器並獲取XML數據密切相關。

2)服務器將格式化XML數據陣列,並通過Web服務

3)客戶端調用web服務,以獲得陣列數據可用它。

所以,如果我嘗試使Ajax調用web服務少於6秒我得到我以前發佈的錯誤。

當我檢查登錄1)我可以看到,錯誤是因爲連接已關閉,所以2)會自動導致錯誤。

我可以通過調用多次觸發錯誤(通過Eclipse多次點擊運行java方法調用web服務),或者通過使用多個客戶端通過具有ajax的JSP頁面調用webservice,或者簡單地通過調用ajax調用快速。

在1)我可以使用許多客戶端打開連接,並獲取數據非常快速地沒有任何問題。

所以,我得到的錯誤可以解決,如果我宣佈webmethod作爲同步,沒有錯誤會出現,但它是非常非常慢,因爲多個電話將掛起直到處理。

我在哪裏我不明白的是爲什麼在SE我可以每秒調用2次並獲取數據,甚至更好我可以在不同的機器中同時做到這一點,沒有任何日誌錯誤和數據在webservice (EE)它失敗...我應該重新配置我的web服務?審查架構?

+0

好吧添加更多詳情。謝謝 – Java 2014-09-25 13:14:15

回答

0

的問題來自:

public class cnx { 

static Socket socket ; 

現在,它是通過從類屬性插座,並把它的內部類爲局部變量解決。在服務器端(我拉數據),我可以看到許多連接同時啓動,只有一個客戶端連接,這是由於多次調用(每秒和要處理的數據需要2秒)。

如果您有更好的選擇,請分享。