我们正在开发glassfish V3上的基于Web的应用程序。 我们有2个应用程序作为客户端(GWT + Servlets)和服务(Spring + Hibernate + Restful Webservices)
GWT调用servlet和servlet连接到服务层。获得一个请求的一个人运行良好但是当GUI开始获取更多请求或更多人登录并从服务器获取数据时,Servlet开始等待服务连接并最终在下面收到错误消息。
“内部连接器错误(1002) - 调用线程在等待时超时 为了解锁它。“
在这种情况下,我们是否应该放弃在客户端和服务之间使用restful webservices? 或者有什么方法可以解决这个问题吗? 或者EJB可以更有效地开发这种架构吗?
提前致谢。
答案 0 :(得分:0)
我们注意到当同一台机器(同一服务器,域)上的客户端层(Servlet)和服务层时出现此问题。
连接到Web服务时出现循环。
所以解决方案很简单。 我们创建了2个域,将部署的客户端部署到第一个域,并将服务部署到第二个域。所以没有更多的等待队列和上面的错误消失了。
我希望在同样的情况下帮助其他人。
答案 1 :(得分:0)
当您在客户端代码中使用ClientResource RestLet类时,只要注意始终包含以下内容,就不会出现此类错误:
ClientResource cr = new ClientResource(uri);
//please substitute the line below with any other kind of request you need to forward
Representation response = cr.put(json);
if (response != null) {
try {
<something>
}finally {
response.exhaust();
response.release();
cr.release();
}
此外,在服务器端,您可能希望检查在没有设置连接超时的情况下创建的外部资源没有进一步的HTTP连接(否则会导致服务器花费更长的时间进行回复)