+ -
当前位置:首页 → 问答吧 → Axis2客户端总是连接超时

Axis2客户端总是连接超时

时间:2009-12-10

来源:互联网

各位高手,小弟实在是无奈了。所以请各位老大们赐教!
我写了个WEB SERVICE接口,就是用OMElement传数据,使用的是IN-OUT。
可是每次测试的时候不超过三次,就会报连接超时
我都无奈了。没有任何大数据啊!请各位帮帮我
Server端
Java code

package sw.axis.ajk;
import org.apache.axiom.om.OMAbstractFactory;
import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.OMException;
import org.apache.axiom.om.OMFactory;
import org.apache.axiom.om.OMNamespace;

import org.apache.xmlbeans.xml.stream.XMLStreamException;
public class TReturnManager {
public OMElement sayHello(OMElement in){
              String name=in.getText();
              String info=name+"HelloWorld!";
              OMFactory fac=OMAbstractFactory.getOMFactory();
              OMNamespace omNs=fac.createOMNamespace("http://www.aijiankang.net/","hw");
              OMElement resp=fac.createOMElement("sayHelloResponse",omNs);
              resp.setText(info);
              return resp;
       }
}




Client端,用SERVLET写的
Java code

package Servlet;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.axiom.om.OMAbstractFactory;
import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.OMFactory;
import org.apache.axiom.om.OMNamespace;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.Options;
import org.apache.axis2.client.ServiceClient;

public class SendServlet extends HttpServlet {

     private static EndpointReference targetEPR=new EndpointReference("http://localhost:8080/axis2/services/TReturnManager");
       public static OMElement getSayHelloOMElement(){
        
              OMFactory fac=OMAbstractFactory.getOMFactory();

              OMNamespace omNs=fac.createOMNamespace("http://www.aijiankang.net/","hw");
       
              OMElement method=fac.createOMElement("sayHello",omNs);
        
              method.setText("ZJ");
              return method;
       }
   
    
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try {
            Options options=new Options();
                     options.setTo(targetEPR);
                     ServiceClient sender=new ServiceClient();
                     sender.setOptions(options);
                     OMElement sayHello=getSayHelloOMElement();
            
                     OMElement result=sender.sendReceive(sayHello);
            
            out.println("<html>");
            out.println("<head>");
            out.println("<title>Servlet SendServlet</title>");  
            out.println("</head>");
            out.println("<body>");
            out.println("<h1>Web Services is Working= " + result.toString() + "</h1>");
            out.println("</body>");
            out.println("</html>");
            
        }
        catch(Exception e){
         System.out.println("WEB ERROR++++++++++++++++++");
         e.printStackTrace();
        }
        finally {
            out.close();

        }
    } 

   
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    } 

   
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    }

    public String getServletInfo() {
        return "Short description";
    }

}


org.apache.axis2.AxisFault: Timeout waiting for connection
  at org.apache.axis2.AxisFault.makeFault(AxisFault.java:430)
  at org.apache.axis2.transport.http.HTTPSender.sendViaPost(HTTPSender.java:203)
  at org.apache.axis2.transport.http.HTTPSender.send(HTTPSender.java:76)
  at org.apache.axis2.transport.http.CommonsHTTPTransportSender.writeMessageWithCommons(CommonsHTTPTransportSender.java:400)
  at org.apache.axis2.transport.http.CommonsHTTPTransportSender.invoke(CommonsHTTPTransportSender.java:225)
  at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:435)
  at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:402)
  at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:229)
  at org.apache.axis2.client.OperationClient.execute(OperationClient.java:165)
  at org.apache.axis2.client.ServiceClient.sendReceive(ServiceClient.java:540)
  at org.apache.axis2.client.ServiceClient.sendReceive(ServiceClient.java:521)
  at Servlet.XMLServlet.processRequest(XMLServlet.java:102)
  at Servlet.XMLServlet.doGet(XMLServlet.java:131)
  at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
  at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
  at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
  at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
  at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
  at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
  at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
  at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
  at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
  at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
  at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
  at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
  at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
  at java.lang.Thread.run(Thread.java:619)
Caused by: org.apache.commons.httpclient.ConnectionPoolTimeoutException: Timeout waiting for connection
  at org.apache.commons.httpclient.MultiThreadedHttpConnectionManager.doGetConnection(MultiThreadedHttpConnectionManager.java:497)
  at org.apache.commons.httpclient.MultiThreadedHttpConnectionManager.getConnectionWithTimeout(MultiThreadedHttpConnectionManager.java:416)
  at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:153)
  at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:397)
  at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:346)
  at org.apache.axis2.transport.http.AbstractHTTPSender.executeMethod(AbstractHTTPSender.java:542)
  at org.apache.axis2.transport.http.HTTPSender.sendViaPost(HTTPSender.java:199)
  ... 27 more

作者: winsonnxl   发布时间: 2009-12-10

没人知道?

作者: winsonnxl   发布时间: 2009-12-11

都什么情况啊?没一个人知道?

作者: winsonnxl   发布时间: 2009-12-14

没人知道?

作者: winsonnxl   发布时间: 2009-12-16

我也出现了这个情况!很郁闷啊!楼主现在解决没啊!

作者: xinkgf   发布时间: 2010-02-26

每次使用完之后,调用sender.cleanupTransport();即可

作者: yufei_lgq   发布时间: 2010-03-09

感谢你的回复

作者: winsonnxl   发布时间: 2010-05-20

AXIS2 1.5升级到1.5.2出现了这样的问题,解决该问题的补丁已经有了,但是目前AXIS2目前最高的版本是1.5.1,降级到1.5试一下吧

作者: leoduzi   发布时间: 2010-10-16