Tomcat 是含一个很简单的HTTP Server,一般只能Debug 用,不能作为服务器用。请用Apache 或 IIS 作HTTP Server就不会有问题

解决方案 »

  1.   

    谢谢关注,以下是servlet程序, 接受请求后,分析参数调用中间件处理,应该没问题吧package jEnableServer.servlet;import java.io.*;
    import java.net.Socket;
    import java.util.*;
    import javax.servlet.*;
    import javax.servlet.http.*;public class JESerializeServlet extends HttpServlet
    {    public JESerializeServlet()
        {
        }    private void loadParams()
        {
            if(host != null)
                return;
            String s = null;
            for(Enumeration enumeration = getInitParameterNames(); enumeration.hasMoreElements();)
            {
                String s1 = (String)enumeration.nextElement();
                if(s1.equals("jenable.system.servlet.host"))
                    host = getInitParameter(s1);
                else
                if(s1.equals("jenable.system.servlet.port"))
                    s = getInitParameter(s1);
            }        if(host == null)
            {
                System.out.println("<JESerializeServlet Log>Error occurs while trying to retrieve j/Enable Server host, use default");
                host = "localhost";
            }
            try
            {
                port = Integer.parseInt(s);
            }
            catch(Exception exception)
            {
                System.out.println("<JESerializeServlet Log>" + exception.toString());
                System.out.println("<JESerializeServlet Log>Error occurs while trying to retrieve j/Enable Server port, use default");
                port = 5999;
            }
            System.out.println("<JESerializeServlet Log>j/Enable Server Host: " + host);
            System.out.println("<JESerializeServlet Log>j/Enable Server Port: " + port);
        }    public void doGet(HttpServletRequest httpservletrequest, HttpServletResponse httpservletresponse)
            throws IOException, ServletException
        {
            processRequest(httpservletrequest, httpservletresponse, "GET");
        }    public void doPost(HttpServletRequest httpservletrequest, HttpServletResponse httpservletresponse)
            throws IOException, ServletException
        {
            processRequest(httpservletrequest, httpservletresponse, "POST");
        }    private void processRequest(HttpServletRequest httpservletrequest, HttpServletResponse httpservletresponse, String s)
            throws IOException, ServletException
        {
            loadParams();
            httpservletresponse.setContentType("text/html;charset=GB2312");
            PrintWriter printwriter = httpservletresponse.getWriter();
            try
            {
                Hashtable hashtable = new Hashtable();
                String s1;
                String s3;
                for(Enumeration enumeration = httpservletrequest.getHeaderNames(); enumeration.hasMoreElements(); hashtable.put(s1, s3))
                {
                    s1 = (String)enumeration.nextElement();
                    s3 = httpservletrequest.getHeader(s1);
                }            hashtable.put("REQUEST_METHOD", s);
                if(s.equals("GET"))
                {
                    String s2 = httpservletrequest.getQueryString();
                    if(s2 != null)
                    {
                        s2 = new String(s2.getBytes("8859_1"), "GB2312");
                        StringTokenizer stringtokenizer = new StringTokenizer(s2, "&");
                        Object obj = null;
                        while(stringtokenizer.hasMoreTokens()) 
                        {
                            String s5 = stringtokenizer.nextToken();
                            StringTokenizer stringtokenizer1 = new StringTokenizer(s5, "=");
                            String s6 = null;
                            s6 = stringtokenizer1.nextToken();
                            if(stringtokenizer1.hasMoreTokens())
                                hashtable.put(s6, stringtokenizer1.nextToken());
                        }
                    }
                } else
                if(s.equals("POST"))
                {
                    for(Enumeration enumeration1 = httpservletrequest.getParameterNames(); enumeration1.hasMoreElements();)
                    {
                        String s4 = (String)enumeration1.nextElement();
                        String as[] = httpservletrequest.getParameterValues(s4);
                        if(as != null)
                        {
                            for(int j = 0; j < as.length; j++)
                                hashtable.put(new String(s4.getBytes("8859_1"), "GB2312"), new String(as[j].getBytes("8859_1"), "GB2312"));                    }
                    }            }
                StringBuffer stringbuffer = new StringBuffer();
                Cookie acookie[] = httpservletrequest.getCookies();
                if(acookie != null)
                {
                    for(int i = 0; i < acookie.length; i++)
                    {
                        stringbuffer.append(acookie[i].getName()).append("=").append(acookie[i].getValue()).append(";");
                        hashtable.put(acookie[i].getName(), acookie[i].getValue());
                    }            }
                if(stringbuffer.length() > 0)
                    hashtable.put("HTTP_COOKIE", stringbuffer.toString());
                Socket socket = new Socket(host, port);
                ObjectOutputStream objectoutputstream = new ObjectOutputStream(socket.getOutputStream());
                objectoutputstream.writeObject(hashtable);
                objectoutputstream.flush();
                BufferedReader bufferedreader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
                String s7 = null;
                boolean flag = true;
                while((s7 = bufferedreader.readLine()) != null) 
                    if(flag)
                    {
                        if(s7.equals(""))
                            flag = false;
                        if(s7.startsWith("Set-Cookie"))
                        {
                            String s8 = s7.substring(12);
                            StringTokenizer stringtokenizer2 = new StringTokenizer(s8, "=;");
                            String s9 = null;
                            if(stringtokenizer2.hasMoreTokens())
                                s9 = stringtokenizer2.nextToken();
                            if(stringtokenizer2.hasMoreTokens())
                                httpservletresponse.addCookie(new Cookie(s9, stringtokenizer2.nextToken()));
                        }
                    } else
                    {
                        printwriter.println(s7);
                    }
                socket.close();
            }
            catch(Exception exception)
            {
                exception.printStackTrace();
                printwriter.println("<html><head></head>");
                printwriter.println("<body><h1>\u7CFB\u7EDF\u9519\u8BEF</h1></body></html>");
            }
        }    private static int requestId = 0;
        private static String host = null;
        private static int port = 0;    static 
        {
            Locale.setDefault(Locale.CHINA);
        }
    }
      

  2.   

    客户端看不出什么问题.凭感觉应该是在SOCKET通讯那里出了问题
    你的中间件是如何实现的?有可能是你的中间层出了问题,资源耗尽,
    而客户端还在等待中间层的应答而导致CUP过忙.建议检查一下中间层的代码
      

  3.   

    中间层服务关闭后(只运行tomcat),服务器锻cpu占用率还是100%,
    谢谢大家关注,请继续给些提示
      

  4.   

    我们用TOMCAT时也老死。但那是因为连接池的连接没有释放!
      

  5.   

    不是TOMCAT的问题,我用了这么多都是好的
      

  6.   

    to : Michael_zp(抛弃懒惰)
    你指的连接池的连接是与数据库的连接吗?能详细描述一下问题的现象,原因和解决办法吗,谢谢。
      

  7.   

    多谢大家的帮助,问题原因基本查明,是与此系统集成的公用tomcat的系统造成的错误。
    送分
      

  8.   

    这是tomcat3.2的固有问题,升级到4.0侯问题解决。
    在错误输入url后tomcat3.2酒会拼命计算???