PHPRPC出现500:Internal Server Error的错误

Jack8211 2014-02-26 09:24:12
我在利用PHPRPC访问远程服务器的时候,总是出现500:Internal Server Error这个错误。
错误如下:

接口维持心跳:1
Exception in thread "main" java.lang.reflect.UndeclaredThrowableException
at com.sun.proxy.$Proxy0.getOrders(Unknown Source)
at com.dih.pmpf.dev.CB.test.CurrentThread1.run(CurrentThread1.java:14)
at com.dih.pmpf.dev.CB.test.TestCB.main(TestCB.java:23)
Caused by: 500:Internal Server Error
at org.phprpc.PHPRPC_Client.__readResponseHeader(PHPRPC_Client.java:759)
at org.phprpc.PHPRPC_Client.__readResponseHeader(PHPRPC_Client.java:720)
at org.phprpc.PHPRPC_Client.__post(PHPRPC_Client.java:859)
at org.phprpc.PHPRPC_Client.invoke(PHPRPC_Client.java:488)
at org.phprpc.PHPRPC_Client.invoke(PHPRPC_Client.java:410)
at org.phprpc.PHPRPC_Client.invoke(PHPRPC_Client.java:406)
at org.phprpc.PHPRPC_InvocationHandler.invoke(PHPRPC_Client.java:121)
... 3 more
...全文
267 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Jack8211 2014-02-26
  • 打赏
  • 举报
回复
有这种情况,但是出现错误的几率会降低。
Defonds 2014-02-26
  • 打赏
  • 举报
回复
你单独用一个客户端调用,就没有这种情况了?
Jack8211 2014-02-26
  • 打赏
  • 举报
回复
get 和 set 方法都生成了,也加入了空的构造函数。而且有时候是没有问题,正确响应的。我这里有多个客户端都用PHPRPC来远程访问服务端,会不会是出现了Socket阻塞呢?
Defonds 2014-02-26
  • 打赏
  • 举报
回复
one to one 的那个对象的 get 和 set 方法有没有生成
Jack8211 2014-02-26
  • 打赏
  • 举报
回复
之所以出现这样的错误,是因为在服务器端只创建了一个PHPRPC_Server实例。而作为Servlet的static成员,并不是每个连接请求都创建一个Server实例,所以就导致了当用多线程调用时,发生了连接的冲突,进而产生了错误。

view plaincopy to clipboardprint?
private static PHPRPC_Server server;  
static {  
 ...//初始化server  
}  
doPost(req, resp){  
    server.start(req,resp);  
}  
解决办法:采用 AddGlobal 方式添加发布方法(在 Servlet 的 init() 中调用 PHPRPC_Server 的 AddGlobal 静态方法),在 Servlet 的 service 中直接创建 PHPRPC_Server 对象并启动服务(例如:new PHPRPC_Server().start(req, resp); ),这样可以有效的提高并发的效率,减少错误的发生,但要保证发布的方法必须是线程安全的才行。

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧