第一次使用Hessian搭建简单Web应用,Tomcat长时间没有响应

时间:2022-02-28 17:00:33
因为工作的需要,小弟今天第一次接触Hessian这个东西,本想模拟网上的例子做一个简单的应用来熟悉一下Hessian这个东西,谁知道写完的东西一运行,Tomcat就长时间没有响应Eclipse的控制台报告如下:

严重: All threads (150) are currently busy, waiting. Increase maxThreads (150) or check the servlet status

在网上查询了一下关于这个问题的描述,好像是和连接池有关,可是我写的应用里根本没有关于数据库的东西啊~或许是我Hessian的应用写的不正确也说不定,这里把我写的代码附上,望有这方面经验的达人能够不吝赐教,只要别看完后骂我就行,我这里先谢谢了。

在附上代码之前交代一下我应用的包层次关系:
很简单,src目录下有service包,Hessian的server端文件和client端文件都放在下面。

以下是我写的测试代码:

接口文件: 
文件名:Hello.java
代码:
package service;

public interface Hello {
public String seeHello();
}

接口的实现:
文件名:HelloImpl.java
代码:
package service;

import com.caucho.hessian.server.HessianServlet;

public class HelloImpl extends HessianServlet implements Hello {
private String helloStr = "Hello World";

public void setHelloStr(String str){
helloStr = str;
}

public String seeHello() {
return helloStr;
}
}

客户端文件:
网上例子的client端文件多数都是使用一个带Main方法的类来实现的,我把其中主要的代码提取出来放到一个Servlet里了。(也不知道这样行不行)
文件名:HelloClient.java
代码:
package service;

import java.io.IOException;
import java.io.PrintWriter;
import java.net.MalformedURLException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.caucho.hessian.client.HessianProxyFactory;

public class HelloClient extends HttpServlet{

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String url = "http://localhost/HessianPro/hello";

HessianProxyFactory factory = new HessianProxyFactory();
Hello hello = (Hello)factory.create(Hello.class, url);
System.out.println("Hello:" + hello.seeHello());
request.setAttribute("success", "Hello World");
request.getRequestDispatcher("/hessian.jsp").forward(request, response);
}

public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String url = "http://localhost/HessianPro/hello";

HessianProxyFactory factory = new HessianProxyFactory();
Hello hello = (Hello)factory.create(Hello.class, url);
System.out.println("Hello:" + hello.seeHello());
request.setAttribute("success", "Hello World");
request.getRequestDispatcher("/hessian.jsp").forward(request, response);
}
}

web.xml文件配置:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" 
xmlns="http://java.sun.com/xml/ns/j2ee" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

<servlet>
    <servlet-name>hello</servlet-name>
    <servlet-class>service.HelloClient</servlet-class>
     <init-param>
       <param-name>home-class</param-name>
       <param-value>service.HelloImpl</param-value>
     </init-param>
     <init-param>
       <param-name>home-api</param-name>
       <param-value>service.Hello</param-value>
     </init-param>
   </servlet>

   <servlet-mapping>
     <servlet-name>hello</servlet-name>
     <url-pattern>/hello</url-pattern>
   </servlet-mapping>
</web-app>

以上就是我测试的所有代码了(说实话,刚接触Hessian,也不知道是不是这样就可以了,总之网上例子大部分都是这样的),以上的代码部署到Tomcat上运行,当我的请求提交到hello的servlet上的时候,Tomcat就长时间没有响应,并报告文章开始的信息。

小弟恳请哪位达人能够给于解释,这样的问题是我代码的问题?还是Tomcat的问题?如果是我代码的问题,那我的代码应该怎样写才是正确的?望达人赐教,不胜感激。

1 个解决方案

#1


补充说明:
以上代码工作环境:
开发工具Eclipse3.2+MyEclipse5.1
服务器:Tomcat5.5.20
操作系统:Windows XP SP2

P.S.:我只想知道基础的Hessian是怎样使用的,有关于Spring包装下的解决方案,就不要提出了。谢谢。

#2


该回复被版主删除

#1


补充说明:
以上代码工作环境:
开发工具Eclipse3.2+MyEclipse5.1
服务器:Tomcat5.5.20
操作系统:Windows XP SP2

P.S.:我只想知道基础的Hessian是怎样使用的,有关于Spring包装下的解决方案,就不要提出了。谢谢。

#2


该回复被版主删除